X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgifload.c;h=f7bb514671aec7b31f08332468d3896adf24e6a0;hp=360cd0e327634b8f229aef301835cdbe527aa5ec;hb=cfd77b3698baacb01dff3853c96d0be117db1d30;hpb=333896e44bae70515b2d82877dd14e7e28338977 diff --git a/src/gifload.c b/src/gifload.c index 360cd0e3..f7bb5146 100644 --- a/src/gifload.c +++ b/src/gifload.c @@ -16,136 +16,4 @@ #include "image.h" -#ifdef DEBUG -/* -#define DEBUG_TIMING -*/ -#endif - - - -extern long Counter(void); - - -int Read_GIF_to_Pixmaps(Display *display, Window window, char *filename, - Pixmap *pixmap, Pixmap *pixmap_mask) -{ - Image *image, *image_mask; - XImageInfo *ximageinfo, *ximageinfo_mask; - int screen; - Visual *visual; - unsigned int depth; - -#ifdef DEBUG_TIMING - long count1, count2; - count1 = Counter(); -#endif - - /* load GIF file */ - if (!(image = Read_PCX_to_Image(filename))) - { - printf("Loading GIF image failed -- maybe no GIF...\n"); - exit(1); - } - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" LOADING '%s' IN %.2f SECONDS\n", - filename, (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - if (image->depth > 8) - { - printf("Sorry, GIFs with more than 256 colors are not supported.\n"); - exit(1); - } - - /* minimize colormap */ - compress(image); - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" COMPRESSING IMAGE COLORMAP IN %.2f SECONDS\n", - (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - screen = DefaultScreen(display); - visual = DefaultVisual(display, screen); - depth = DefaultDepth(display, screen); - - /* convert internal image structure to X11 XImage */ - if (!(ximageinfo = Image_to_XImage(display, screen, visual, depth, image))) - { - fprintf(stderr, "Cannot convert Image to XImage.\n"); - exit(1); - } - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" CONVERTING IMAGE TO XIMAGE IN %.2f SECONDS\n", - (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - if (ximageinfo->cmap != DefaultColormap(display, screen)) - XSetWindowColormap(display, window, ximageinfo->cmap); - - /* convert XImage to Pixmap */ - if ((*pixmap = XImage_to_Pixmap(display, window, ximageinfo)) == None) - { - fprintf(stderr, "Cannot convert XImage to Pixmap.\n"); - exit(1); - } - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" CONVERTING IMAGE TO PIXMAP IN %.2f SECONDS\n", - (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - /* create mono image for masking */ - image_mask = monochrome(image); - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" CONVERTING IMAGE TO MASK IN %.2f SECONDS\n", - (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - /* convert internal image structure to X11 XImage */ - if (!(ximageinfo_mask = Image_to_XImage(display, screen, visual, depth, - image_mask))) - { - fprintf(stderr, "Cannot convert Image to XImage.\n"); - exit(1); - } - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" CONVERTING MASK TO XIMAGE IN %.2f SECONDS\n", - (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - /* convert XImage to Pixmap */ - if ((*pixmap_mask = XImage_to_Pixmap(display, window, ximageinfo_mask)) == None) - { - fprintf(stderr, "Cannot convert XImage to Pixmap.\n"); - exit(1); - } - -#ifdef DEBUG_TIMING - count2 = Counter(); - printf(" CONVERTING MASK TO PIXMAP IN %.2f SECONDS\n", - (float)(count2-count1)/1000.0); - count1 = Counter(); -#endif - - return(GIF_Success); -} - #endif