sl@0: /* sl@0: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #include sl@0: #include "liboil/liboilcolorspace.h" sl@0: #include "jpeg.h" sl@0: sl@0: #define LOG_FILE "c:\\logs\\examples_jpeg_rgb_log1.txt" sl@0: #include "std_log_result.h" sl@0: #define LOG_FILENAME_LINE __FILE__, __LINE__ sl@0: sl@0: void create_xml(int result) sl@0: { sl@0: if(result) sl@0: assert_failed = 1; sl@0: sl@0: testResultXml("examples_jpeg_rgb"); sl@0: close_log_file(); sl@0: } sl@0: sl@0: /* getfile */ sl@0: sl@0: void *getfile (char *path, int *n_bytes); sl@0: static void dump_pnm (uint32_t *ptr, int rowstride, int width, int height); sl@0: sl@0: int sl@0: main (int argc, char *argv[]) sl@0: { sl@0: unsigned char *data; sl@0: int len; sl@0: char *fn = "c:\\data\\liboil\\test.jpg"; sl@0: uint32_t *image = NULL; sl@0: int width; sl@0: int height; sl@0: int ret; sl@0: std_log(LOG_FILENAME_LINE, "Test Started examples_jpeg_rgb"); sl@0: sl@0: /*if (argc < 2) { sl@0: printf("jpeg_rgb_test \n"); sl@0: std_log(LOG_FILENAME_LINE,"jpeg_rgb_test "); sl@0: exit(1); sl@0: }*/ sl@0: if(argc > 1){ sl@0: fn = argv[1]; sl@0: } sl@0: std_log(LOG_FILENAME_LINE,"fn = %s",fn); sl@0: data = getfile (fn, &len); sl@0: sl@0: if (data == NULL) { sl@0: printf("cannot read file %s\n", fn); sl@0: exit(1); sl@0: } sl@0: sl@0: ret = jpeg_decode_argb (data, len, &image, &width, &height); sl@0: if (ret) { sl@0: dump_pnm (image, width*4, width, height); sl@0: } sl@0: sl@0: if (image) free (image); sl@0: sl@0: free (data); sl@0: sl@0: std_log(LOG_FILENAME_LINE, "Test Successful"); sl@0: create_xml(0); sl@0: return 0; sl@0: } sl@0: sl@0: sl@0: sl@0: /* getfile */ sl@0: sl@0: void * sl@0: getfile (char *path, int *n_bytes) sl@0: { sl@0: int fd; sl@0: struct stat st; sl@0: void *ptr = NULL; sl@0: int ret; sl@0: std_log(LOG_FILENAME_LINE, "getfile ENTER"); sl@0: fd = open (path, O_RDONLY); sl@0: if (!fd) sl@0: return NULL; sl@0: sl@0: ret = fstat (fd, &st); sl@0: if (ret < 0) { sl@0: close (fd); sl@0: return NULL; sl@0: } sl@0: sl@0: ptr = malloc (st.st_size); sl@0: if (!ptr) { sl@0: close (fd); sl@0: return NULL; sl@0: } sl@0: sl@0: ret = read (fd, ptr, st.st_size); sl@0: if (ret != st.st_size) { sl@0: free (ptr); sl@0: close (fd); sl@0: return NULL; sl@0: } sl@0: sl@0: if (n_bytes) sl@0: *n_bytes = st.st_size; sl@0: sl@0: close (fd); sl@0: std_log(LOG_FILENAME_LINE, "getfile EXIT"); sl@0: return ptr; sl@0: } sl@0: sl@0: static void sl@0: dump_pnm (uint32_t *ptr, int rowstride, int width, int height) sl@0: { sl@0: int x, y; sl@0: sl@0: printf ("P3\n"); sl@0: printf ("%d %d\n", width, height); sl@0: printf ("255\n"); sl@0: std_log(LOG_FILENAME_LINE, "P3"); sl@0: std_log(LOG_FILENAME_LINE, "%d %d",width, height); sl@0: std_log(LOG_FILENAME_LINE, "255"); sl@0: sl@0: for (y = 0; y < height; y++) { sl@0: for (x = 0; x < width; x++) { sl@0: printf ("%d ", oil_argb_R(ptr[x])); sl@0: printf ("%d ", oil_argb_G(ptr[x])); //Extracts the green component from color.Evaluates to the green component sl@0: printf ("%d ", oil_argb_B(ptr[x])); sl@0: std_log(LOG_FILENAME_LINE, "%d ",oil_argb_R(ptr[x])); sl@0: std_log(LOG_FILENAME_LINE, "%d ",oil_argb_G(ptr[x])); sl@0: std_log(LOG_FILENAME_LINE, "%d ",oil_argb_B(ptr[x])); sl@0: if ((x & 15) == 15) { sl@0: printf ("\n"); sl@0: } sl@0: } sl@0: printf ("\n"); sl@0: ptr += rowstride/4; sl@0: } sl@0: }