38
38
private_st_device_X();
40
40
/* Forward references */
41
private int x_copy_image(gx_device_X * xdev, const byte * base, int sourcex,
41
static int x_copy_image(gx_device_X * xdev, const byte * base, int sourcex,
42
42
int raster, int x, int y, int w, int h);
43
private int set_tile(gx_device *, const gx_strip_bitmap *);
44
private void free_cp(gx_device *);
43
static int set_tile(gx_device *, const gx_strip_bitmap *);
44
static void free_cp(gx_device *);
46
46
/* Screen updating machinery */
47
private void update_init(gx_device_X *);
48
private void update_do_flush(gx_device_X *);
47
static void update_init(gx_device_X *);
48
static void update_do_flush(gx_device_X *);
50
50
#define flush_text(xdev)\
51
51
if (IN_TEXT(xdev)) do_flush_text(xdev)
52
private void do_flush_text(gx_device_X *);
52
static void do_flush_text(gx_device_X *);
54
54
/* Driver procedures */
55
55
/* (External procedures are declared in gdevx.h.) */
56
56
/*extern int gdev_x_open(gx_device_X *);*/
57
private dev_proc_open_device(x_open);
58
private dev_proc_get_initial_matrix(x_get_initial_matrix);
59
private dev_proc_sync_output(x_sync);
60
private dev_proc_output_page(x_output_page);
57
static dev_proc_open_device(x_open);
58
static dev_proc_get_initial_matrix(x_get_initial_matrix);
59
static dev_proc_sync_output(x_sync);
60
static dev_proc_output_page(x_output_page);
61
61
/*extern int gdev_x_close(gx_device_X *);*/
62
private dev_proc_close_device(x_close);
62
static dev_proc_close_device(x_close);
63
63
/*extern dev_proc_map_rgb_color(gdev_x_map_rgb_color);*/
64
64
/*extern dev_proc_map_color_rgb(gdev_x_map_color_rgb);*/
65
private dev_proc_fill_rectangle(x_fill_rectangle);
66
private dev_proc_copy_mono(x_copy_mono);
67
private dev_proc_copy_color(x_copy_color);
65
static dev_proc_fill_rectangle(x_fill_rectangle);
66
static dev_proc_copy_mono(x_copy_mono);
67
static dev_proc_copy_color(x_copy_color);
68
68
/*extern dev_proc_get_params(gdev_x_get_params);*/
69
69
/*extern dev_proc_put_params(gdev_x_put_params);*/
70
70
/*extern dev_proc_get_xfont_procs(gdev_x_get_xfont_procs);*/
71
private dev_proc_get_page_device(x_get_page_device);
72
private dev_proc_strip_tile_rectangle(x_strip_tile_rectangle);
73
private dev_proc_begin_typed_image(x_begin_typed_image);
74
private dev_proc_get_bits_rectangle(x_get_bits_rectangle);
71
static dev_proc_get_page_device(x_get_page_device);
72
static dev_proc_strip_tile_rectangle(x_strip_tile_rectangle);
73
static dev_proc_begin_typed_image(x_begin_typed_image);
74
static dev_proc_get_bits_rectangle(x_get_bits_rectangle);
75
75
/*extern dev_proc_get_xfont_procs(gdev_x_finish_copydevice);*/
77
77
/* The device descriptor */
236
236
/* If XPutImage doesn't work, do it ourselves. */
237
private int alt_put_image(gx_device * dev, Display * dpy, Drawable win,
237
static int alt_put_image(gx_device * dev, Display * dpy, Drawable win,
238
238
GC gc, XImage * pi, int sx, int sy, int dx, int dy, unsigned w, unsigned h);
240
240
#define put_image(dpy,win,gc,im,sx,sy,x,y,w,h)\
242
if ( xdev->useXPutImage ) {\
243
if (XInitImage(im) == 0)\
244
return_error(gs_error_unknownerror);\
242
if ( xdev->useXPutImage && !(XInitImage(im) == 0) ) {\
245
243
XPutImage(dpy,win,gc,im,sx,sy,x,y,w,h);\
247
245
int code_ = alt_put_image(dev,dpy,win,gc,im,sx,sy,x,y,w,h);\
607
605
/* Get the page device. We reimplement this so that we can make this */
608
606
/* device be a page device conditionally. */
610
608
x_get_page_device(gx_device * dev)
612
610
return (((gx_device_X *) dev)->IsPageDevice ? dev : (gx_device *) 0);
615
613
/* Tile a rectangle. */
617
615
x_strip_tile_rectangle(gx_device * dev, const gx_strip_bitmap * tiles,
618
616
int x, int y, int w, int h,
619
617
gx_color_index zero, gx_color_index one,
698
696
/* Implement ImageType 2 using CopyArea if possible. */
699
697
/* Note that since ImageType 2 images don't have any source data, */
700
698
/* this procedure does all the work. */
702
700
x_begin_typed_image(gx_device * dev,
703
701
const gs_imager_state * pis, const gs_matrix * pmat,
704
702
const gs_image_common_t * pic, const gs_int_rect * prect,
1181
1179
* around an apparent bug in some X servers. It only works with the
1182
1180
* specific parameters (bit/byte order, padding) used above.
1185
1183
alt_put_image(gx_device *dev, Display *dpy, Drawable win, GC gc, XImage *pi,
1186
1184
int sx, int sy, int dx, int dy, unsigned w, unsigned h)