summaryrefslogtreecommitdiff
path: root/base/gdevrops.c
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2021-04-08 16:29:55 +0100
committerRobin Watts <Robin.Watts@artifex.com>2021-04-20 15:03:02 +0100
commite1a3956f252404f07d93be47f7845b23e4a2c4de (patch)
tree9f702e5846dbeba82ccf4b65a28434a8b80de708 /base/gdevrops.c
parent8d83e9871f14d44c7120f0e170c43064c6a738ea (diff)
downloadghostpdl-e1a3956f252404f07d93be47f7845b23e4a2c4de.tar.gz
Move devices away from static init of procs.
Diffstat (limited to 'base/gdevrops.c')
-rw-r--r--base/gdevrops.c119
1 files changed, 46 insertions, 73 deletions
diff --git a/base/gdevrops.c b/base/gdevrops.c
index 2601b52cb..32c3c1c12 100644
--- a/base/gdevrops.c
+++ b/base/gdevrops.c
@@ -46,79 +46,51 @@ static dev_proc_copy_color(rop_texture_copy_color);
static dev_proc_copy_planes(rop_texture_copy_planes);
/* The device descriptor. */
+static int
+rop_texture_initialize(gx_device *dev)
+{
+ set_dev_proc(dev, get_initial_matrix,gx_forward_get_initial_matrix);
+ set_dev_proc(dev, map_rgb_color, gx_forward_map_rgb_color);
+ set_dev_proc(dev, map_color_rgb, gx_forward_map_color_rgb);
+ set_dev_proc(dev, fill_rectangle, rop_texture_fill_rectangle);
+ set_dev_proc(dev, copy_mono, rop_texture_copy_mono);
+ set_dev_proc(dev, copy_color, rop_texture_copy_color);
+ set_dev_proc(dev, get_params, gx_forward_get_params);
+ set_dev_proc(dev, put_params, gx_forward_put_params);
+ set_dev_proc(dev, map_cmyk_color, gx_forward_map_cmyk_color);
+ set_dev_proc(dev, get_xfont_procs, gx_forward_get_xfont_procs);
+ set_dev_proc(dev, get_xfont_device, gx_forward_get_xfont_device);
+ set_dev_proc(dev, map_rgb_alpha_color, gx_forward_map_rgb_alpha_color);
+ set_dev_proc(dev, get_page_device, gx_forward_get_page_device);
+ set_dev_proc(dev, copy_alpha, gx_no_copy_alpha);
+ set_dev_proc(dev, get_band, gx_forward_get_band);
+ set_dev_proc(dev, copy_rop, gx_no_copy_rop);
+ set_dev_proc(dev, get_clipping_box, gx_forward_get_clipping_box);
+ set_dev_proc(dev, map_color_rgb_alpha, gx_forward_map_color_rgb_alpha);
+ set_dev_proc(dev, get_hardware_params, gx_forward_get_hardware_params);
+ set_dev_proc(dev, get_color_mapping_procs, gx_forward_get_color_mapping_procs);
+ set_dev_proc(dev, get_color_comp_index, gx_forward_get_color_comp_index);
+ set_dev_proc(dev, encode_color, gx_forward_encode_color);
+ set_dev_proc(dev, decode_color, gx_forward_decode_color);
+ set_dev_proc(dev, fill_rectangle_hl_color, gx_forward_fill_rectangle_hl_color);
+ set_dev_proc(dev, include_color_space, gx_forward_include_color_space);
+ set_dev_proc(dev, fill_linear_color_scanline, gx_forward_fill_linear_color_scanline);
+ set_dev_proc(dev, fill_linear_color_trapezoid, gx_forward_fill_linear_color_trapezoid);
+ set_dev_proc(dev, fill_linear_color_triangle, gx_forward_fill_linear_color_triangle);
+ set_dev_proc(dev, update_spot_equivalent_colors, gx_forward_update_spot_equivalent_colors);
+ set_dev_proc(dev, ret_devn_params, gx_forward_ret_devn_params);
+ set_dev_proc(dev, fillpage, gx_forward_fillpage);
+ set_dev_proc(dev, dev_spec_op, gx_forward_dev_spec_op);
+ set_dev_proc(dev, copy_planes, rop_texture_copy_planes);
+ set_dev_proc(dev, get_profile, gx_forward_get_profile);
+ set_dev_proc(dev, set_graphics_type_tag, gx_forward_set_graphics_type_tag);
+
+ return 0;
+}
static const gx_device_rop_texture gs_rop_texture_device = {
std_device_std_body(gx_device_rop_texture, 0, "rop source",
0, 0, 1, 1),
- {NULL, /* open_device */
- gx_forward_get_initial_matrix,
- NULL, /* default_sync_output */
- NULL, /* output_page */
- NULL, /* close_device */
- gx_forward_map_rgb_color,
- gx_forward_map_color_rgb,
- rop_texture_fill_rectangle,
- NULL, /* tile_rectangle */
- rop_texture_copy_mono,
- rop_texture_copy_color,
- NULL, /* draw_line */
- NULL, /* get_bits */
- gx_forward_get_params,
- gx_forward_put_params,
- gx_forward_map_cmyk_color,
- gx_forward_get_xfont_procs,
- gx_forward_get_xfont_device,
- gx_forward_map_rgb_alpha_color,
- gx_forward_get_page_device,
- NULL, /* get_alpha_bits (no alpha) */
- gx_no_copy_alpha, /* shouldn't be called */
- gx_forward_get_band,
- gx_no_copy_rop, /* shouldn't be called */
- NULL, /* fill_path */
- NULL, /* stroke_path */
- NULL, /* fill_mask */
- NULL, /* fill_trapezoid */
- NULL, /* fill_parallelogram */
- NULL, /* fill_triangle */
- NULL, /* draw_thin_line */
- NULL, /* begin_image */
- NULL, /* image_data */
- NULL, /* end_image */
- NULL, /* strip_tile_rectangle */
- NULL, /* strip_copy_rop */
- gx_forward_get_clipping_box,
- NULL, /* begin_typed_image */
- NULL, /* get_bits_rectangle */
- gx_forward_map_color_rgb_alpha,
- NULL, /* create_compositor */
- gx_forward_get_hardware_params,
- NULL, /* text_begin */
- NULL, /* initialize */
- NULL, /* begin_transparency_group */
- NULL, /* end_transparency_group */
- NULL, /* begin_transparency_mask */
- NULL, /* end_transparency_mask */
- NULL, /* discard_transparency_layer */
- gx_forward_get_color_mapping_procs,
- gx_forward_get_color_comp_index,
- gx_forward_encode_color,
- gx_forward_decode_color,
- NULL, /* dev_spec_op */
- gx_forward_fill_rectangle_hl_color,
- gx_forward_include_color_space,
- gx_forward_fill_linear_color_scanline,
- gx_forward_fill_linear_color_trapezoid,
- gx_forward_fill_linear_color_triangle,
- gx_forward_update_spot_equivalent_colors,
- gx_forward_ret_devn_params,
- gx_forward_fillpage,
- NULL, /* push_transparency_state */
- NULL, /* pop_transparency_state */
- NULL, /* put_image */
- gx_forward_dev_spec_op,
- rop_texture_copy_planes, /* copy planes */
- gx_forward_get_profile,
- gx_forward_set_graphics_type_tag
- },
+ devprocs_initialize(rop_texture_initialize),
0, /* target */
lop_default /* log_op */
/* */ /* texture */
@@ -140,9 +112,10 @@ void
gx_make_rop_texture_device(gx_device_rop_texture * dev, gx_device * target,
gs_logical_operation_t log_op, const gx_device_color * texture)
{
- gx_device_init((gx_device *) dev,
- (const gx_device *)&gs_rop_texture_device,
- target->memory, true);
+ /* Can never fail */
+ (void)gx_device_init((gx_device *) dev,
+ (const gx_device *)&gs_rop_texture_device,
+ target->memory, true);
gx_device_set_target((gx_device_forward *)dev, target);
/* Drawing operations are defaulted, non-drawing are forwarded. */
check_device_separable((gx_device *) dev);