#ifndef _GDK_IMLIB_PRIVATE_H #define _GDK_IMLIB_PRIVATE_H #ifndef CONVERT_PATH #define CONVERT_PATH "/usr/local/bin" #endif #ifndef NETPBM_PATH #define NETPBM_PATH "/usr/local/bin" #endif #ifndef CJPEG_PROG #define CJPEG_PROG "/usr/bin/cjpeg" #endif #ifndef DJPEG_PROG #define DJPEG_PROG "/usr/local/bin/djpeg" #endif #include #include #include #include #include #include #include #include #ifdef HAVE_IPC_H #include #endif #ifdef HAVE_SHM_H #include #endif #include #ifdef _HAVE_STRING_H #include #elif _HAVE_STRINGS_H #include #endif #include #include #include #include #ifdef HAVE_XSHM_H #include #endif #include #include #include #include #define BYTE_ORD_24_RGB 0 #define BYTE_ORD_24_RBG 1 #define BYTE_ORD_24_BRG 2 #define BYTE_ORD_24_BGR 3 #define BYTE_ORD_24_GRB 4 #define BYTE_ORD_24_GBR 5 struct image_cache { gchar *file; GdkImlibImage *im; gint refnum; gchar dirty; struct image_cache *prev; struct image_cache *next; }; struct pixmap_cache { GdkImlibImage *im; gchar *file; gchar dirty; gint width, height; GdkPixmap *pmap; GdkBitmap *shape_mask; XImage *xim, *sxim; gint refnum; struct pixmap_cache *prev; struct pixmap_cache *next; }; typedef struct _xdata { Display *disp; gint screen; Window root; Visual *visual; gint depth; gint render_depth; Colormap root_cmap; gchar shm; gchar shmp; gint shm_event; XImage *last_xim; XImage *last_sxim; Window base_window; GdkWindow *gdk_win; GdkColormap *gdk_cmap; gint byte_order, bit_order; #ifdef HAVE_SHM XShmSegmentInfo last_shminfo; XShmSegmentInfo last_sshminfo; #endif } Xdata; typedef struct _imlibdata { gint num_colors; GdkImlibColor *palette; GdkImlibColor *palette_orig; unsigned char *fast_rgb; gint *fast_err; gint *fast_erg; gint *fast_erb; gint render_type; gint max_shm; gint byte_order; struct _cache { gchar on_image; gint size_image; gint num_image; gint used_image; struct image_cache *image; gchar on_pixmap; gint size_pixmap; gint num_pixmap; gint used_pixmap; struct pixmap_cache *pixmap; } cache; gchar fastrend; gchar hiq; GdkImlibColorModifier mod, rmod, gmod, bmod; unsigned char rmap[256], gmap[256], bmap[256]; gchar fallback; gchar ordered_dither; Xdata x; } ImlibData; extern ImlibData *_gdk_imlib_data; gint _gdk_imlib_index_best_color_match(gint * r, gint * g, gint * b); void gdk_imlib_load_default_colors__private (void); void _gdk_imlib_dirty_pixmaps(GdkImlibImage * im); void _gdk_imlib_dirty_images(GdkImlibImage * im); void _gdk_imlib_find_pixmap(GdkImlibImage * im, int width, int height, GdkPixmap ** pmap, GdkBitmap ** mask); GdkImlibImage *_gdk_imlib_find_image(char *file); void _gdk_imlib_free_pixmappmap(GdkPixmap * pmap); void _gdk_imlib_free_image(GdkImlibImage * im); void _gdk_imlib_flush_image(GdkImlibImage * im); void _gdk_imlib_add_image(GdkImlibImage * im, char *file); void _gdk_imlib_add_pixmap(GdkImlibImage * im, int width, int height, XImage * xim, XImage * sxim); void _gdk_imlib_clean_caches(void); void _gdk_imlib_nullify_image(GdkImlibImage * im); /* char *g_SplitID(char *file); */ char *_gdk_imlib_GetExtension(char *file); int _gdk_imlib_ispnm(FILE *f); int _gdk_imlib_isjpeg(FILE *f); int _gdk_imlib_ispng(FILE *f); int _gdk_imlib_istiff(FILE *f); int _gdk_imlib_iseim(FILE *f); int _gdk_imlib_isgif(FILE *f); int _gdk_imlib_isxpm(FILE *f); int _gdk_imlib_isbmp(FILE *f); void * _gdk_malloc_image(unsigned int, unsigned int); GdkPixmap *gdk_imlib_pixmap_foreign_new(gint width, gint height, gint depth, Pixmap pmap); void _gdk_imlib_calc_map_tables(GdkImlibImage * im); FILE *_gdk_imlib_open_helper(const char *, const char *, const char *); int _gdk_imlib_close_helper(FILE *); #define INDEX_RGB(r,g,b) id->fast_rgb[(r<<10)|(g<<5)|(b)] #define COLOR_INDEX(i) id->palette[i].pixel #define COLOR_RGB(r,g,b) id->palette[INDEX_RGB(r,g,b)].pixel #define ERROR_RED(rr,i) rr-id->palette[i].r; #define ERROR_GRN(gg,i) gg-id->palette[i].g; #define ERROR_BLU(bb,i) bb-id->palette[i].b; #define DITHER_ERROR(Der1,Der2,Dex,Der,Deg,Deb) \ ter=&(Der1[Dex]);\ (*ter)+=(Der*7)>>4;ter++;\ (*ter)+=(Deg*7)>>4;ter++;\ (*ter)+=(Deb*7)>>4;\ ter=&(Der2[Dex-6]);\ (*ter)+=(Der*3)>>4;ter++;\ (*ter)+=(Deg*3)>>4;ter++;\ (*ter)+=(Deb*3)>>4;ter++;\ (*ter)+=(Der*5)>>4;ter++;\ (*ter)+=(Deg*5)>>4;ter++;\ (*ter)+=(Deb*5)>>4;ter++;\ (*ter)+=Der>>4;ter++;\ (*ter)+=Deg>>4;ter++;\ (*ter)+=Deb>>4; typedef unsigned char *(*gdk_imlib_loader_fn) (FILE *, int *w, int *h, int *transp); typedef unsigned char *(*gdk_imlib_loader_fn2)(FILE *, char *fname, int *w, int *h, int *trans); extern gdk_imlib_loader_fn _gdk_imlib_LoadBMP; extern gdk_imlib_loader_fn _gdk_imlib_LoadXPM; extern gdk_imlib_loader_fn _gdk_imlib_LoadGIF; extern gdk_imlib_loader_fn2 _gdk_imlib_LoadTIFF; extern gdk_imlib_loader_fn _gdk_imlib_LoadJPEG; extern gdk_imlib_loader_fn _gdk_imlib_LoadPNG; extern gdk_imlib_loader_fn _gdk_imlib_LoadPPM; typedef gint (*gdk_imlib_saver_fn)(GdkImlibImage *im, char *file, GdkImlibSaveInfo *info); extern gdk_imlib_saver_fn _gdk_imlib_SavePNG; extern gdk_imlib_saver_fn _gdk_imlib_SaveTIFF; extern gdk_imlib_saver_fn _gdk_imlib_SavePNG; extern gdk_imlib_saver_fn _gdk_imlib_SaveJPEG; extern gdk_imlib_saver_fn _gdk_imlib_SavePS; extern gdk_imlib_saver_fn _gdk_imlib_SavePPM; typedef GdkImlibImage * (*gdk_imlib_inline_fn)(unsigned char *data, int data_size); extern gdk_imlib_inline_fn _gdk_imlib_inlined_png_to_image; typedef GdkImlibImage *(*gdk_imlib_load_alpha_fn)(char *file); extern gdk_imlib_load_alpha_fn _gdk_imlib_load_alpha_png; #endif