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