1 #ifndef _XMNG_H_ 2 #define _XMNG_H 3 #define RGB_SIZE 3 4 #define CANVAS_RGB8_SIZE 3 5 #define CANVAS_RGBA8_SIZE 4 6 #define CANVAS_ARGB8_SIZE 4 7 #define CANVAS_RGB8_A8_SIZE 4 8 #define CANVAS_BGR8_SIZE 3 9 #define CANVAS_BGRA8_SIZE 4 10 #define CANVAS_BGRA8PM_SIZE 4 11 #define CANVAS_ABGR8_SIZE 4 12 13 #define MNG_MAGIC "\x8aMNG\x0d\x0a\x1a\x0a" 14 #define JNG_MAGIC "\x8bJNG\x0d\x0a\x1a\x0a" 15 #define PNG_MAGIC "\x89PNG\x0d\x0a\x1a\x0a" 16 #define PSEUDOCOLOR 1 17 #define TRUECOLOR 2 18 19 #define MNG_TYPE 1 20 #define JNG_TYPE 2 21 #define PNG_TYPE 3 22 23 #define SPACE_X 10 24 #define SPACE_Y 10 25 #define BUT_ENTRY_BORDER 0 26 #define FRAME_SHADOW_WIDTH 2 27 #define ANY_WIDTH 4 28 29 #define OK MNG_NOERROR 30 #define MAX_COLORBUF 64 31 32 typedef struct 33 { 34 unsigned int frozen:1; 35 unsigned int restarted:1; 36 unsigned int stopped:1; 37 unsigned int single_step_wanted:1; 38 unsigned int single_step_served:1; 39 unsigned int has_bg_color:1; 40 unsigned int has_bg_pixel:1; 41 unsigned int x11_init:1; 42 unsigned int timer_active:1; 43 44 mng_handle user_handle; 45 Widget canvas; 46 int type; 47 XtIntervalId timeout_ID; 48 mng_uint32 counter; 49 mng_uint32 delay; 50 mng_uint32 img_width, img_height; 51 mng_uint32 read_len; 52 mng_uint32 read_pos; 53 unsigned char *read_buf; 54 unsigned char *mng_buf; 55 unsigned char *dither_line; 56 57 Window external_win; 58 Window frame_win; 59 Window control_win; 60 GC gc; 61 Display *dpy; 62 Window win; 63 unsigned short mng_rgb_size; 64 unsigned short mng_bytes_per_line; 65 XImage *ximage; 66 int src_x, src_y; 67 int dst_x, dst_y; 68 unsigned int frame_w, frame_h; 69 70 void *shm; 71 int gray; 72 int display_depth, display_type; 73 int have_shmem; 74 Pixel bg_pixel; 75 unsigned short xbg_red, xbg_green, xbg_blue; 76 unsigned char bg_red, bg_green, bg_blue; 77 Visual *visual; 78 unsigned int depth; 79 /* do not free */ 80 struct timeval timer_start; 81 struct timeval timer_end; 82 83 char *read_idf; 84 FILE *reader; 85 int *argc_ptr; 86 char **argv; 87 char bg_color[MAX_COLORBUF]; 88 } ImageInfo; 89 90 #define XPUTIMAGE(dpy,dr,gc,xi,a,b,c,d,w,h) \ 91 if (have_shmem) \ 92 XShmPutImage(dpy,dr,gc,xi,a,b,c,d,w,h,True); \ 93 else \ 94 XPutImage(dpy,dr,gc,xi,a,b,c,d,w,h) 95 96 extern void Viewer_postlude(void); 97 extern XImage *x11_create_ximage(ImageInfo *data); 98 extern void x11_destroy_ximage(ImageInfo *data); 99 extern void x11_init_color(ImageInfo *data); 100 extern void viewer_renderline(ImageInfo *data, unsigned char *scanline, 101 unsigned int row, unsigned int x, unsigned int width); 102 103 #endif 104