summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'base/gxdevice.h')
-rw-r--r--base/gxdevice.h161
1 files changed, 76 insertions, 85 deletions
diff --git a/base/gxdevice.h b/base/gxdevice.h
index c757fa2d..ce69c72d 100644
--- a/base/gxdevice.h
+++ b/base/gxdevice.h
@@ -98,8 +98,8 @@
* Note also that the macro does not initialize procs, which is
* the next element of the structure.
*/
- #define std_device_part1_(devtype, ptr_procs, dev_name, stype, open_init)\
- sizeof(devtype), ptr_procs, dev_name,\
+ #define std_device_part1_(devtype, init, dev_name, stype, open_init)\
+ sizeof(devtype), init, dev_name,\
0 /*memory*/, stype, 0 /*stype_is_dynamic*/, 0 /*finalize*/,\
{ 0 } /*rc*/, 0 /*retained*/, 0 /* parent */, 0 /* child */, 0 /* subclass_data */, 0 /* PageList */,\
open_init() /*is_open, max_fill_band*/
@@ -118,7 +118,7 @@
{ x_dpi, y_dpi }/*HWResolution*/
/* offsets and margins go here */
-#define std_device_part3_()\
+#define std_device_part3_sc(ins, bp, ep)\
0/*FirstPage*/, 0/*LastPage*/, 0/*PageHandlerPushed*/, 0/*DisablePageHandler*/,\
0/* Object Filter*/, 0/*ObjectHandlerPushed*/,\
0, /* NupControl */ 0, /* NupHandlerPushed */\
@@ -135,7 +135,10 @@
0/*Profile Array*/,\
0/* graphics_type_tag default GS_UNTOUCHED_TAG */,\
1/* interpolate_control default 1, uses image /Interpolate flag, full device resolution */,\
- { gx_default_install, gx_default_begin_page, gx_default_end_page }
+ { ins, bp, ep }
+#define std_device_part3_()\
+ std_device_part3_sc(gx_default_install, gx_default_begin_page, gx_default_end_page)
+
/*
* We need a number of different variants of the std_device_ macro simply
* because we can't pass the color_info or offsets/margins
@@ -151,91 +154,101 @@
* 6 for margins/offset).
*
*/
-#define std_device_body_with_macros_(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, open_init, dci_macro, margins_macro)\
- std_device_part1_(dtype, pprocs, dname, stype, open_init),\
+#define std_device_body_with_macros_(dtype, init, dname, stype, w, h, xdpi, ydpi, open_init, dci_macro, margins_macro)\
+ std_device_part1_(dtype, init, dname, stype, open_init),\
dci_macro(),\
std_device_part2_(w, h, xdpi, ydpi),\
margins_macro(),\
std_device_part3_()
-#define std_device_std_body_type(dtype, pprocs, dname, stype, w, h, xdpi, ydpi)\
- std_device_body_with_macros_(dtype, pprocs, dname, stype,\
+#define std_device_std_body_type(dtype, init, dname, stype, w, h, xdpi, ydpi)\
+ std_device_body_with_macros_(dtype, init, dname, stype,\
w, h, xdpi, ydpi,\
open_init_closed, dci_black_and_white_, no_margins_)
-#define std_device_std_body(dtype, pprocs, dname, w, h, xdpi, ydpi)\
- std_device_std_body_type(dtype, pprocs, dname, 0, w, h, xdpi, ydpi)
+#define std_device_std_body(dtype, init, dname, w, h, xdpi, ydpi)\
+ std_device_std_body_type(dtype, init, dname, 0, w, h, xdpi, ydpi)
-#define std_device_std_body_type_open(dtype, pprocs, dname, stype, w, h, xdpi, ydpi)\
- std_device_body_with_macros_(dtype, pprocs, dname, stype,\
+#define std_device_std_body_type_open(dtype, init, dname, stype, w, h, xdpi, ydpi)\
+ std_device_body_with_macros_(dtype, init, dname, stype,\
w, h, xdpi, ydpi,\
open_init_open, dci_black_and_white_, no_margins_)
-#define std_device_std_body_open(dtype, pprocs, dname, w, h, xdpi, ydpi)\
- std_device_std_body_type_open(dtype, pprocs, dname, 0, w, h, xdpi, ydpi)
+#define std_device_std_body_open(dtype, init, dname, w, h, xdpi, ydpi)\
+ std_device_std_body_type_open(dtype, init, dname, 0, w, h, xdpi, ydpi)
-#define std_device_full_body_type(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, xoff, yoff, lm, bm, rm, tm)\
- std_device_part1_(dtype, pprocs, dname, stype, open_init_closed),\
+#define std_device_full_body_type(dtype, init, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, xoff, yoff, lm, bm, rm, tm)\
+ std_device_part1_(dtype, init, dname, stype, open_init_closed),\
dci_values(ncomp, depth, mg, mc, dg, dc),\
std_device_part2_(w, h, xdpi, ydpi),\
offset_margin_values(xoff, yoff, lm, bm, rm, tm),\
std_device_part3_()
-#define std_device_full_body_type_extended(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, mcomp, ncomp, pol, depth, gi, mg, mc, dg, dc, ef, cn, xoff, yoff, lm, bm, rm, tm)\
- std_device_part1_(dtype, pprocs, dname, stype, open_init_closed),\
+#define std_device_full_body_type_extended(dtype, init, dname, stype, w, h, xdpi, ydpi, mcomp, ncomp, pol, depth, gi, mg, mc, dg, dc, ef, cn, xoff, yoff, lm, bm, rm, tm)\
+ std_device_part1_(dtype, init, dname, stype, open_init_closed),\
dci_extended_alpha_values(mcomp, ncomp, pol, depth, gi, mg, mc, dg, dc, 1, 1, ef, cn), \
std_device_part2_(w, h, xdpi, ydpi),\
offset_margin_values(xoff, yoff, lm, bm, rm, tm),\
std_device_part3_()
-#define std_device_full_body(dtype, pprocs, dname, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, xoff, yoff, lm, bm, rm, tm)\
- std_device_full_body_type(dtype, pprocs, dname, 0, w, h, xdpi, ydpi,\
+#define std_device_full_body(dtype, init, dname, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, xoff, yoff, lm, bm, rm, tm)\
+ std_device_full_body_type(dtype, init, dname, 0, w, h, xdpi, ydpi,\
ncomp, depth, mg, mc, dg, dc, xoff, yoff, lm, bm, rm, tm)
-#define std_device_dci_alpha_type_body(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, ta, ga)\
- std_device_part1_(dtype, pprocs, dname, stype, open_init_closed),\
+#define std_device_dci_alpha_type_body(dtype, init, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, ta, ga)\
+ std_device_part1_(dtype, init, dname, stype, open_init_closed),\
dci_alpha_values(ncomp, depth, mg, mc, dg, dc, ta, ga),\
std_device_part2_(w, h, xdpi, ydpi),\
offset_margin_values(0, 0, 0, 0, 0, 0),\
std_device_part3_()
+#define std_device_dci_alpha_type_body_sc(dtype, init, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, ta, ga, ins, bp, ep)\
+ std_device_part1_(dtype, init, dname, stype, open_init_closed),\
+ dci_alpha_values(ncomp, depth, mg, mc, dg, dc, ta, ga),\
+ std_device_part2_(w, h, xdpi, ydpi),\
+ offset_margin_values(0, 0, 0, 0, 0, 0),\
+ std_device_part3_sc(ins, bp, ep)
-#define std_device_dci_type_body(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc)\
- std_device_dci_alpha_type_body(dtype, pprocs, dname, stype, w, h,\
+#define std_device_dci_type_body(dtype, init, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc)\
+ std_device_dci_alpha_type_body(dtype, init, dname, stype, w, h,\
xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, 1, 1)
-#define std_device_dci_body(dtype, pprocs, dname, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc)\
- std_device_dci_type_body(dtype, pprocs, dname, 0,\
+#define std_device_dci_type_body_sc(dtype, init, dname, stype, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, ins, bp, ep)\
+ std_device_dci_alpha_type_body_sc(dtype, init, dname, stype, w, h,\
+ xdpi, ydpi, ncomp, depth, mg, mc, dg, dc, 1, 1, ins, bp, ep)
+
+#define std_device_dci_body(dtype, init, dname, w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc)\
+ std_device_dci_type_body(dtype, init, dname, 0,\
w, h, xdpi, ydpi, ncomp, depth, mg, mc, dg, dc)
-#define std_device_color_full_body(dtype, pprocs, dname, w, h, xdpi, ydpi, depth, max_value, dither, xoff, yoff, lm, bm, rm, tm)\
- std_device_part1_(dtype, pprocs, dname, 0, open_init_closed),\
+#define std_device_color_full_body(dtype, init, dname, w, h, xdpi, ydpi, depth, max_value, dither, xoff, yoff, lm, bm, rm, tm)\
+ std_device_part1_(dtype, init, dname, 0, open_init_closed),\
dci_color(depth, max_value, dither),\
std_device_part2_(w, h, xdpi, ydpi),\
offset_margin_values(xoff, yoff, lm, bm, rm, tm),\
std_device_part3_()
-#define std_device_color_body(dtype, pprocs, dname, w, h, xdpi, ydpi, depth, max_value, dither)\
- std_device_color_full_body(dtype, pprocs, dname,\
+#define std_device_color_body(dtype, init, dname, w, h, xdpi, ydpi, depth, max_value, dither)\
+ std_device_color_full_body(dtype, init, dname,\
w, h, xdpi, ydpi,\
depth, max_value, dither,\
0, 0, 0, 0, 0, 0)
-#define std_device_color_stype_body(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, depth, max_value, dither)\
- std_device_part1_(dtype, pprocs, dname, stype, open_init_closed),\
+#define std_device_color_stype_body(dtype, init, dname, stype, w, h, xdpi, ydpi, depth, max_value, dither)\
+ std_device_part1_(dtype, init, dname, stype, open_init_closed),\
dci_color(depth, max_value, dither),\
std_device_part2_(w, h, xdpi, ydpi),\
offset_margin_values(0, 0, 0, 0, 0, 0),\
std_device_part3_()
-#define std_device_std_color_full_body_type(dtype, pprocs, dname, stype, w, h, xdpi, ydpi, depth, xoff, yoff, lm, bm, rm, tm)\
- std_device_part1_(dtype, pprocs, dname, stype, open_init_closed),\
+#define std_device_std_color_full_body_type(dtype, init, dname, stype, w, h, xdpi, ydpi, depth, xoff, yoff, lm, bm, rm, tm)\
+ std_device_part1_(dtype, init, dname, stype, open_init_closed),\
dci_std_color(depth),\
std_device_part2_(w, h, xdpi, ydpi),\
offset_margin_values(xoff, yoff, lm, bm, rm, tm),\
std_device_part3_()
-#define std_device_std_color_full_body(dtype, pprocs, dname, w, h, xdpi, ydpi, depth, xoff, yoff, lm, bm, rm, tm)\
- std_device_std_color_full_body_type(dtype, pprocs, dname, 0,\
+#define std_device_std_color_full_body(dtype, init, dname, w, h, xdpi, ydpi, depth, xoff, yoff, lm, bm, rm, tm)\
+ std_device_std_color_full_body_type(dtype, init, dname, 0,\
w, h, xdpi, ydpi, depth, xoff, yoff, lm, bm, rm, tm)
/* ---------------- Default implementations ---------------- */
@@ -250,28 +263,20 @@ dev_proc_output_page(gx_default_output_page);
dev_proc_close_device(gx_default_close_device);
dev_proc_map_rgb_color(gx_default_w_b_map_rgb_color);
dev_proc_map_color_rgb(gx_default_w_b_map_color_rgb);
+dev_proc_encode_color(gx_default_w_b_mono_encode_color);
+dev_proc_decode_color(gx_default_w_b_mono_decode_color);
#define gx_default_map_rgb_color gx_default_w_b_map_rgb_color
#define gx_default_map_color_rgb gx_default_w_b_map_color_rgb
-dev_proc_tile_rectangle(gx_default_tile_rectangle);
dev_proc_copy_mono(gx_default_copy_mono);
dev_proc_copy_color(gx_default_copy_color);
-dev_proc_draw_line(gx_default_draw_line);
-dev_proc_get_bits(gx_no_get_bits); /* gives error */
-dev_proc_get_bits(gx_default_get_bits);
dev_proc_get_params(gx_default_get_params);
dev_proc_put_params(gx_default_put_params);
dev_proc_map_cmyk_color(gx_default_map_cmyk_color);
-dev_proc_get_xfont_procs(gx_default_get_xfont_procs);
-dev_proc_get_xfont_device(gx_default_get_xfont_device);
-dev_proc_map_rgb_alpha_color(gx_default_map_rgb_alpha_color);
dev_proc_get_page_device(gx_default_get_page_device); /* returns NULL */
dev_proc_get_page_device(gx_page_device_get_page_device); /* returns dev */
dev_proc_get_alpha_bits(gx_default_get_alpha_bits);
dev_proc_copy_alpha(gx_no_copy_alpha); /* gives error */
dev_proc_copy_alpha(gx_default_copy_alpha);
-dev_proc_get_band(gx_default_get_band);
-dev_proc_copy_rop(gx_no_copy_rop); /* gives error */
-dev_proc_copy_rop(gx_default_copy_rop);
dev_proc_fill_path(gx_default_fill_path);
dev_proc_stroke_path(gx_default_stroke_path);
dev_proc_fill_mask(gx_default_fill_mask);
@@ -279,26 +284,20 @@ dev_proc_fill_trapezoid(gx_default_fill_trapezoid);
dev_proc_fill_parallelogram(gx_default_fill_parallelogram);
dev_proc_fill_triangle(gx_default_fill_triangle);
dev_proc_draw_thin_line(gx_default_draw_thin_line);
-dev_proc_begin_image(gx_default_begin_image);
-dev_proc_image_data(gx_default_image_data);
-dev_proc_end_image(gx_default_end_image);
dev_proc_strip_tile_rectangle(gx_default_strip_tile_rectangle);
-dev_proc_strip_copy_rop(gx_no_strip_copy_rop); /* gives error */
-dev_proc_strip_copy_rop(gx_default_strip_copy_rop);
+dev_proc_strip_copy_rop2(gx_no_strip_copy_rop2);
dev_proc_get_clipping_box(gx_default_get_clipping_box);
dev_proc_get_clipping_box(gx_get_largest_clipping_box);
dev_proc_begin_typed_image(gx_default_begin_typed_image);
-dev_proc_get_bits_rectangle(gx_no_get_bits_rectangle); /* gives error */
-dev_proc_get_bits_rectangle(gx_default_get_bits_rectangle);
-dev_proc_map_color_rgb_alpha(gx_default_map_color_rgb_alpha);
-dev_proc_create_compositor(gx_no_create_compositor);
+dev_proc_get_bits_rectangle(gx_default_get_bits_rectangle); /* just returns error */
+dev_proc_get_bits_rectangle(gx_blank_get_bits_rectangle);
+dev_proc_composite(gx_no_composite);
/* default is for ordinary "leaf" devices, null is for */
/* devices that only care about coverage and not contents. */
-dev_proc_create_compositor(gx_default_create_compositor);
-dev_proc_create_compositor(gx_null_create_compositor);
+dev_proc_composite(gx_default_composite);
+dev_proc_composite(gx_null_composite);
dev_proc_get_hardware_params(gx_default_get_hardware_params);
dev_proc_text_begin(gx_default_text_begin);
-dev_proc_finish_copydevice(gx_default_finish_copydevice);
dev_proc_dev_spec_op(gx_default_dev_spec_op);
dev_proc_fill_rectangle_hl_color(gx_default_fill_rectangle_hl_color);
dev_proc_include_color_space(gx_default_include_color_space);
@@ -322,23 +321,28 @@ dev_proc_end_transparency_group(gx_default_end_transparency_group);
dev_proc_begin_transparency_mask(gx_default_begin_transparency_mask);
dev_proc_end_transparency_mask(gx_default_end_transparency_mask);
dev_proc_discard_transparency_layer(gx_default_discard_transparency_layer);
-dev_proc_pattern_manage(gx_default_pattern_manage);
dev_proc_push_transparency_state(gx_default_push_transparency_state);
dev_proc_pop_transparency_state(gx_default_pop_transparency_state);
dev_proc_put_image(gx_default_put_image);
dev_proc_copy_alpha_hl_color(gx_default_no_copy_alpha_hl_color);
dev_proc_copy_planes(gx_default_copy_planes);
+int gx_default_initialize_device(gx_device *dev);
+
/* BACKWARD COMPATIBILITY */
-#define gx_non_imaging_create_compositor gx_null_create_compositor
+#define gx_non_imaging_composite gx_null_composite
/* Color mapping routines for black-on-white, gray scale, true RGB, */
/* true CMYK, and 1-bit CMYK color. */
dev_proc_map_rgb_color(gx_default_b_w_map_rgb_color);
dev_proc_map_color_rgb(gx_default_b_w_map_color_rgb);
+dev_proc_encode_color(gx_default_b_w_mono_encode_color);
+dev_proc_decode_color(gx_default_b_w_mono_decode_color);
dev_proc_map_rgb_color(gx_default_gray_map_rgb_color);
dev_proc_map_color_rgb(gx_default_gray_map_color_rgb);
dev_proc_map_color_rgb(gx_default_rgb_map_color_rgb);
+dev_proc_encode_color(gx_default_gray_encode_color);
+dev_proc_decode_color(gx_default_gray_decode_color);
#define gx_default_cmyk_map_cmyk_color cmyk_8bit_map_cmyk_color /*see below*/
/*
* The following are defined as "standard" color mapping procedures
@@ -353,11 +357,13 @@ dev_proc_map_cmyk_color(cmyk_8bit_map_cmyk_color);
dev_proc_map_color_rgb(cmyk_8bit_map_color_rgb);
dev_proc_decode_color(cmyk_8bit_map_color_cmyk);
dev_proc_map_cmyk_color(cmyk_16bit_map_cmyk_color);
+dev_proc_map_color_rgb(cmyk_16bit_map_color_rgb);
dev_proc_decode_color(cmyk_16bit_map_color_cmyk);
dev_proc_encode_color(gx_default_8bit_map_gray_color);
dev_proc_decode_color(gx_default_8bit_map_color_gray);
/* Default implementations for forwarding devices */
+void gx_forward_initialize_procs(gx_device *dev);
dev_proc_close_device(gx_forward_close_device);
dev_proc_get_initial_matrix(gx_forward_get_initial_matrix);
dev_proc_sync_output(gx_forward_sync_output);
@@ -365,21 +371,14 @@ dev_proc_output_page(gx_forward_output_page);
dev_proc_map_rgb_color(gx_forward_map_rgb_color);
dev_proc_map_color_rgb(gx_forward_map_color_rgb);
dev_proc_fill_rectangle(gx_forward_fill_rectangle);
-dev_proc_tile_rectangle(gx_forward_tile_rectangle);
dev_proc_copy_mono(gx_forward_copy_mono);
dev_proc_copy_color(gx_forward_copy_color);
-dev_proc_get_bits(gx_forward_get_bits);
dev_proc_get_params(gx_forward_get_params);
dev_proc_put_params(gx_forward_put_params);
dev_proc_map_cmyk_color(gx_forward_map_cmyk_color);
-dev_proc_get_xfont_procs(gx_forward_get_xfont_procs);
-dev_proc_get_xfont_device(gx_forward_get_xfont_device);
-dev_proc_map_rgb_alpha_color(gx_forward_map_rgb_alpha_color);
dev_proc_get_page_device(gx_forward_get_page_device);
#define gx_forward_get_alpha_bits gx_default_get_alpha_bits
dev_proc_copy_alpha(gx_forward_copy_alpha);
-dev_proc_get_band(gx_forward_get_band);
-dev_proc_copy_rop(gx_forward_copy_rop);
dev_proc_fill_path(gx_forward_fill_path);
dev_proc_stroke_path(gx_forward_stroke_path);
dev_proc_fill_mask(gx_forward_fill_mask);
@@ -387,16 +386,11 @@ dev_proc_fill_trapezoid(gx_forward_fill_trapezoid);
dev_proc_fill_parallelogram(gx_forward_fill_parallelogram);
dev_proc_fill_triangle(gx_forward_fill_triangle);
dev_proc_draw_thin_line(gx_forward_draw_thin_line);
-dev_proc_begin_image(gx_forward_begin_image);
-#define gx_forward_image_data gx_default_image_data
-#define gx_forward_end_image gx_default_end_image
dev_proc_strip_tile_rectangle(gx_forward_strip_tile_rectangle);
-dev_proc_strip_copy_rop(gx_forward_strip_copy_rop);
dev_proc_get_clipping_box(gx_forward_get_clipping_box);
dev_proc_begin_typed_image(gx_forward_begin_typed_image);
dev_proc_get_bits_rectangle(gx_forward_get_bits_rectangle);
-dev_proc_map_color_rgb_alpha(gx_forward_map_color_rgb_alpha);
-/* There is no forward_create_compositor (see Drivers.htm). */
+/* There is no forward_composite (see Drivers.htm). */
dev_proc_get_hardware_params(gx_forward_get_hardware_params);
dev_proc_text_begin(gx_forward_text_begin);
dev_proc_get_color_mapping_procs(gx_forward_get_color_mapping_procs);
@@ -414,7 +408,7 @@ dev_proc_ret_devn_params(gx_forward_ret_devn_params);
dev_proc_fillpage(gx_forward_fillpage);
dev_proc_put_image(gx_forward_put_image);
dev_proc_copy_planes(gx_forward_copy_planes);
-dev_proc_create_compositor(gx_forward_create_compositor);
+dev_proc_composite(gx_forward_composite);
dev_proc_get_profile(gx_forward_get_profile);
dev_proc_set_graphics_type_tag(gx_forward_set_graphics_type_tag);
dev_proc_strip_copy_rop2(gx_forward_strip_copy_rop2);
@@ -422,13 +416,11 @@ dev_proc_strip_tile_rect_devn(gx_forward_strip_tile_rect_devn);
dev_proc_copy_alpha_hl_color(gx_forward_copy_alpha_hl_color);
dev_proc_transform_pixel_region(gx_forward_transform_pixel_region);
dev_proc_fill_stroke_path(gx_forward_fill_stroke_path);
+void gx_forward_device_initialize_procs(gx_device *dev);
/* ---------------- Implementation utilities ---------------- */
int gx_default_get_param(gx_device *dev, char *Param, void *list);
-/* Convert the device procedures to the proper form (see above). */
-void gx_device_set_procs(gx_device *);
-
/* Fill in defaulted procedures in a device procedure record. */
void gx_device_fill_in_procs(gx_device *);
void gx_device_forward_fill_in_procs(gx_device_forward *);
@@ -669,23 +661,22 @@ void gx_device_request_leadingedge(gx_device *dev, int le_req);
int gs_is_pdf14trans_compositor(const gs_composite_t * pct);
#define subclass_common\
- t_dev_proc_create_compositor *saved_compositor_method;\
+ t_dev_proc_composite *saved_compositor_method;\
gx_device_forward *forwarding_dev
-typedef int (t_dev_proc_create_compositor) (gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_gstate *pgs, gs_memory_t *memory, gx_device *cdev);
+typedef int (t_dev_proc_composite) (gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_gstate *pgs, gs_memory_t *memory, gx_device *cdev);
typedef struct {
- t_dev_proc_create_compositor *saved_compositor_method;
+ t_dev_proc_composite *saved_compositor_method;
gx_device_forward *forwarding_dev;
} generic_subclass_data;
-
-int gx_copy_device_procs(gx_device *dest, gx_device *src, gx_device *prototype);
+int gx_copy_device_procs(gx_device *dest, const gx_device *src, const gx_device *prototype);
int gx_device_subclass(gx_device *dev_to_subclass, gx_device *new_prototype, unsigned int private_data_size);
-int gx_device_unsubclass(gx_device *dev);
+void gx_device_unsubclass(gx_device *dev);
int gx_update_from_subclass(gx_device *dev);
-int gx_subclass_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte,
+int gx_subclass_composite(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte,
gs_gstate *pgs, gs_memory_t *memory, gx_device *cdev);
-
+void gx_subclass_fill_in_page_procs(gx_device *dev);
#endif /* gxdevice_INCLUDED */