/* Get the device parameters. */ int gs_get_device_or_hw_params(gx_device * orig_dev, gs_param_list * plist, bool is_hardware) { /* * We must be prepared to copy the device if it is the read-only * prototype. */ gx_device *dev; int code; if (orig_dev->memory) dev = orig_dev; else { code = gs_copydevice(&dev, orig_dev, plist->memory); if (code < 0) return code; } gx_device_set_procs(dev); fill_dev_proc(dev, get_params, gx_default_get_params); fill_dev_proc(dev, get_page_device, gx_default_get_page_device); fill_dev_proc(dev, get_alpha_bits, gx_default_get_alpha_bits); code = (is_hardware ? (*dev_proc(dev, get_hardware_params)) (dev, plist) : (*dev_proc(dev, get_params)) (dev, plist)); if (dev != orig_dev) gx_device_retain(dev, false); /* frees the copy */ return code; }
/* drawing operations. */ void gx_device_forward_fill_in_procs(register gx_device_forward * dev) { gx_device_set_procs((gx_device *) dev); /* NOT open_device */ fill_dev_proc(dev, get_initial_matrix, gx_forward_get_initial_matrix); fill_dev_proc(dev, sync_output, gx_forward_sync_output); fill_dev_proc(dev, output_page, gx_forward_output_page); /* NOT close_device */ fill_dev_proc(dev, map_rgb_color, gx_forward_map_rgb_color); fill_dev_proc(dev, map_color_rgb, gx_forward_map_color_rgb); /* NOT fill_rectangle */ /* NOT tile_rectangle */ /* NOT copy_mono */ /* NOT copy_color */ /* NOT draw_line (OBSOLETE) */ fill_dev_proc(dev, get_bits, gx_forward_get_bits); fill_dev_proc(dev, get_params, gx_forward_get_params); fill_dev_proc(dev, put_params, gx_forward_put_params); fill_dev_proc(dev, map_cmyk_color, gx_forward_map_cmyk_color); fill_dev_proc(dev, get_xfont_procs, gx_forward_get_xfont_procs); fill_dev_proc(dev, get_xfont_device, gx_forward_get_xfont_device); fill_dev_proc(dev, map_rgb_alpha_color, gx_forward_map_rgb_alpha_color); fill_dev_proc(dev, get_page_device, gx_forward_get_page_device); /* NOT get_alpha_bits (OBSOLETE) */ /* NOT copy_alpha */ fill_dev_proc(dev, get_band, gx_forward_get_band); fill_dev_proc(dev, copy_rop, gx_forward_copy_rop); fill_dev_proc(dev, fill_path, gx_forward_fill_path); fill_dev_proc(dev, stroke_path, gx_forward_stroke_path); fill_dev_proc(dev, fill_mask, gx_forward_fill_mask); fill_dev_proc(dev, fill_trapezoid, gx_forward_fill_trapezoid); fill_dev_proc(dev, fill_parallelogram, gx_forward_fill_parallelogram); fill_dev_proc(dev, fill_triangle, gx_forward_fill_triangle); fill_dev_proc(dev, draw_thin_line, gx_forward_draw_thin_line); fill_dev_proc(dev, begin_image, gx_forward_begin_image); /* NOT image_data (OBSOLETE) */ /* NOT end_image (OBSOLETE) */ /* NOT strip_tile_rectangle */ fill_dev_proc(dev, strip_copy_rop, gx_forward_strip_copy_rop); fill_dev_proc(dev, get_clipping_box, gx_forward_get_clipping_box); fill_dev_proc(dev, begin_typed_image, gx_forward_begin_typed_image); fill_dev_proc(dev, get_bits_rectangle, gx_forward_get_bits_rectangle); fill_dev_proc(dev, map_color_rgb_alpha, gx_forward_map_color_rgb_alpha); fill_dev_proc(dev, create_compositor, gx_no_create_compositor); fill_dev_proc(dev, get_hardware_params, gx_forward_get_hardware_params); fill_dev_proc(dev, text_begin, gx_forward_text_begin); fill_dev_proc(dev, get_color_mapping_procs, gx_forward_get_color_mapping_procs); fill_dev_proc(dev, get_color_comp_index, gx_forward_get_color_comp_index); fill_dev_proc(dev, encode_color, gx_forward_encode_color); fill_dev_proc(dev, decode_color, gx_forward_decode_color); fill_dev_proc(dev, pattern_manage, gx_forward_pattern_manage); fill_dev_proc(dev, fill_rectangle_hl_color, gx_forward_fill_rectangle_hl_color); fill_dev_proc(dev, include_color_space, gx_forward_include_color_space); fill_dev_proc(dev, fill_linear_color_scanline, gx_forward_fill_linear_color_scanline); fill_dev_proc(dev, fill_linear_color_trapezoid, gx_forward_fill_linear_color_trapezoid); fill_dev_proc(dev, fill_linear_color_triangle, gx_forward_fill_linear_color_triangle); fill_dev_proc(dev, update_spot_equivalent_colors, gx_forward_update_spot_equivalent_colors); fill_dev_proc(dev, ret_devn_params, gx_forward_ret_devn_params); fill_dev_proc(dev, fillpage, gx_forward_fillpage); gx_device_fill_in_procs((gx_device *) dev); }