Changeset 2837
- Timestamp:
- Sep 28, 2008, 7:07:57 AM (13 years ago)
- Location:
- libpipi/trunk/pipi
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
libpipi/trunk/pipi/codec.c
r2767 r2837 29 29 pipi_image_t *pipi_load(char const *name) 30 30 { 31 pipi_image_t *ret = NULL; 32 31 33 if(!strncmp(name, "random:", 7) || 32 34 !strncmp(name, "ediff:", 6) || 33 35 !strncmp(name, "halftone:", 6) || 34 36 !strncmp(name, "bayer:", 6)) 35 ret urnpipi_load_stock(name);37 ret = pipi_load_stock(name); 36 38 37 39 #if USE_IMLIB2 38 return pipi_load_imlib2(name); 39 #elif USE_OPENCV 40 return pipi_load_opencv(name); 41 #elif USE_SDL 42 return pipi_load_sdl(name); 43 #else 44 # error "No imaging library" 40 if(!ret) 41 ret = pipi_load_imlib2(name); 45 42 #endif 43 #if USE_OPENCV 44 if(!ret) 45 ret = pipi_load_opencv(name); 46 #endif 47 #if USE_SDL 48 if(!ret) 49 ret = pipi_load_sdl(name); 50 #endif 51 52 return ret; 46 53 } 47 54 … … 55 62 56 63 if(img->codec_priv) 57 #if USE_IMLIB2 58 pipi_free_imlib2(img); 59 #elif USE_OPENCV 60 pipi_free_opencv(img); 61 #elif USE_SDL 62 pipi_free_sdl(img); 63 #endif 64 img->codec_free(img); 64 65 65 66 free(img); 66 67 } 67 68 68 voidpipi_save(pipi_image_t *img, const char *name)69 int pipi_save(pipi_image_t *img, const char *name) 69 70 { 71 int ret = -1; 72 70 73 #if USE_IMLIB2 71 return pipi_save_imlib2(img, name); 72 #elif USE_OPENCV 73 return pipi_save_opencv(img, name); 74 #elif USE_SDL 75 return pipi_save_sdl(img, name); 74 if(ret < 0) 75 ret = pipi_save_imlib2(img, name); 76 76 #endif 77 #if USE_OPENCV 78 if(ret < 0) 79 ret = pipi_save_opencv(img, name); 80 #endif 81 #if USE_SDL 82 if(ret < 0) 83 ret = pipi_save_sdl(img, name); 84 #endif 85 86 return ret; 77 87 } 78 88 -
libpipi/trunk/pipi/codec/imlib.c
r2772 r2837 29 29 #include "pipi_internals.h" 30 30 31 static int pipi_free_imlib2(pipi_image_t *); 32 31 33 pipi_image_t *pipi_load_imlib2(const char *name) 32 34 { … … 50 52 img->codec_priv = (void *)priv; 51 53 img->codec_format = PIPI_PIXELS_RGBA_C; 54 img->codec_free = pipi_free_imlib2; 52 55 53 56 img->wrap = 0; … … 57 60 } 58 61 59 void pipi_free_imlib2(pipi_image_t *img) 60 { 61 imlib_context_set_image(img->codec_priv); 62 imlib_free_image(); 63 } 64 65 void pipi_save_imlib2(pipi_image_t *img, const char *name) 62 int pipi_save_imlib2(pipi_image_t *img, const char *name) 66 63 { 67 64 if(!img->codec_priv) … … 98 95 imlib_context_set_image(img->codec_priv); 99 96 imlib_save_image(name); 97 98 return 0; 100 99 } 101 100 101 /* 102 * XXX: The following functions are local. 103 */ 104 105 static int pipi_free_imlib2(pipi_image_t *img) 106 { 107 imlib_context_set_image(img->codec_priv); 108 imlib_free_image(); 109 110 return 0; 111 } 112 -
libpipi/trunk/pipi/codec/opencv.c
r2814 r2837 32 32 /* FIXME: this whole file is broken until we support BGR24 images */ 33 33 34 static int pipi_free_opencv(pipi_image_t *); 35 34 36 pipi_image_t *pipi_load_opencv(const char *name) 35 37 { … … 53 55 img->codec_priv = (void *)priv; 54 56 img->codec_format = PIPI_PIXELS_BGR_C; 57 img->codec_free = pipi_free_opencv; 55 58 56 59 img->wrap = 0; … … 60 63 } 61 64 62 void pipi_free_opencv(pipi_image_t *img) 63 { 64 IplImage *iplimg; 65 iplimg = (IplImage *)img->codec_priv; 66 cvReleaseImage(&iplimg); 67 } 68 69 void pipi_save_opencv(pipi_image_t *img, const char *name) 65 int pipi_save_opencv(pipi_image_t *img, const char *name) 70 66 { 71 67 if(!img->codec_priv) … … 98 94 pipi_getpixels(img, img->codec_format); 99 95 cvSaveImage(name, img->codec_priv); 96 97 return 0; 100 98 } 101 99 100 /* 101 * XXX: The following functions are local. 102 */ 103 104 static int pipi_free_opencv(pipi_image_t *img) 105 { 106 IplImage *iplimg; 107 iplimg = (IplImage *)img->codec_priv; 108 cvReleaseImage(&iplimg); 109 110 return 0; 111 } 112 -
libpipi/trunk/pipi/codec/sdl.c
r2772 r2837 29 29 #include "pipi_internals.h" 30 30 31 static int pipi_free_sdl(pipi_image_t *); 31 32 static SDL_Surface *create_32bpp_surface(int w, int h); 32 33 … … 59 60 img->codec_priv = (void *)priv; 60 61 img->codec_format = PIPI_PIXELS_RGBA_C; 62 img->codec_free = pipi_free_sdl; 61 63 62 64 img->wrap = 0; … … 66 68 } 67 69 68 void pipi_free_sdl(pipi_image_t *img) 69 { 70 SDL_FreeSurface(img->codec_priv); 71 } 72 73 void pipi_save_sdl(pipi_image_t *img, const char *name) 70 int pipi_save_sdl(pipi_image_t *img, const char *name) 74 71 { 75 72 if(!img->codec_priv) … … 101 98 pipi_getpixels(img, img->codec_format); 102 99 SDL_SaveBMP(img->codec_priv, name); 100 101 return 0; 103 102 } 104 103 105 104 /* 106 * The following functions are local.105 * XXX: The following functions are local. 107 106 */ 107 108 static int pipi_free_sdl(pipi_image_t *img) 109 { 110 SDL_FreeSurface(img->codec_priv); 111 112 return 0; 113 } 108 114 109 115 static SDL_Surface *create_32bpp_surface(int w, int h) -
libpipi/trunk/pipi/pipi.h
r2814 r2837 117 117 extern pipi_image_t *pipi_copy(pipi_image_t *); 118 118 extern void pipi_free(pipi_image_t *); 119 extern voidpipi_save(pipi_image_t *, const char *);119 extern int pipi_save(pipi_image_t *, const char *); 120 120 121 121 extern pipi_pixels_t *pipi_getpixels(pipi_image_t *, pipi_format_t); -
libpipi/trunk/pipi/pipi_internals.h
r2809 r2837 57 57 pipi_format_t codec_format; 58 58 void *codec_priv; 59 int (*codec_free)(pipi_image_t *); 59 60 }; 60 61 … … 67 68 #ifdef USE_IMLIB2 68 69 pipi_image_t *pipi_load_imlib2(const char *name); 69 pipi_image_t *pipi_new_imlib2(int width, int height); 70 void pipi_free_imlib2(pipi_image_t *img); 71 void pipi_save_imlib2(pipi_image_t *img, const char *name); 70 int pipi_save_imlib2(pipi_image_t *img, const char *name); 72 71 #endif 73 72 74 73 #ifdef USE_OPENCV 75 74 pipi_image_t *pipi_load_opencv(const char *name); 76 pipi_image_t *pipi_new_opencv(int width, int height); 77 void pipi_free_opencv(pipi_image_t *img); 78 void pipi_save_opencv(pipi_image_t *img, const char *name); 75 int pipi_save_opencv(pipi_image_t *img, const char *name); 79 76 #endif 80 77 81 78 #ifdef USE_SDL 82 79 pipi_image_t *pipi_load_sdl(const char *name); 83 pipi_image_t *pipi_new_sdl(int width, int height); 84 void pipi_free_sdl(pipi_image_t *img); 85 void pipi_save_sdl(pipi_image_t *img, const char *name); 80 int pipi_save_sdl(pipi_image_t *img, const char *name); 86 81 #endif 87 82
Note: See TracChangeset
for help on using the changeset viewer.