diff options
author | Robin Watts <Robin.Watts@artifex.com> | 2021-10-13 18:53:30 +0100 |
---|---|---|
committer | Robin Watts <Robin.Watts@artifex.com> | 2021-10-18 16:35:29 +0100 |
commit | bebbe2fc75a9b460e60deb357474de795e113341 (patch) | |
tree | 043e6f92f0c2bccb0f83619e1c627e7dea9bcee8 /base | |
parent | 44e4204350e6ee7bd616191b962b7efd0fbb95ce (diff) | |
download | ghostpdl-bebbe2fc75a9b460e60deb357474de795e113341.tar.gz |
Move the clist operator definitions into a single header.
Currently, they appear to be split over 2 headers for no good
reason that I can see (probably something historical).
A load of whitespace changes to align stuff nicely to make it
look less scary.
Diffstat (limited to 'base')
-rw-r--r-- | base/gxcldev.h | 194 | ||||
-rw-r--r-- | base/gxclpath.h | 171 | ||||
-rw-r--r-- | base/gxclrast.c | 8 | ||||
-rw-r--r-- | base/gxclutil.c | 3 |
4 files changed, 204 insertions, 172 deletions
diff --git a/base/gxcldev.h b/base/gxcldev.h index 012c5bf69..d1454374e 100644 --- a/base/gxcldev.h +++ b/base/gxcldev.h @@ -73,49 +73,157 @@ int cmd_write_pseudo_band(gx_device_clist_writer *cldev, unsigned char *pbuf, * and/or previous operands. */ typedef enum { - cmd_op_misc = 0x00, /* (see below) */ - cmd_opv_end_run = 0x00, /* (nothing) */ - cmd_opv_set_tile_size = 0x01, /* rs?(1)nry?(1)nrx?(1)depth(5, encoded), */ - /* rep_width#, rep_height#, */ - /* [, nreps_x#][, nreps_y #] */ - /* [, rep_shift#] */ - cmd_opv_set_tile_phase = 0x02, /* x#, y# */ - cmd_opv_set_tile_bits = 0x03, /* index#, offset#, <bits> */ - cmd_opv_set_bits = 0x04, /* depth*4+compress, width#, height#, */ - /* index#, offset#, <bits> */ - cmd_opv_set_tile_color = 0x05, /* (nothing; next set/delta_color */ - /* refers to tile) */ - cmd_opv_set_misc = 0x06, -#define cmd_set_misc_lop (0 << 6) /* 00: lop_lsb(6), lop_msb# */ -#define cmd_set_misc_data_x (1 << 6) /* 01: more(1)dx_lsb(5)[, dx_msb#] */ -#define cmd_set_misc_map (2 << 6) /* 10: contents(2)map_index(4) */ - /* [, n x frac] */ -#define cmd_set_misc_halftone (3 << 6) /* 11: type(6), num_comp# */ - cmd_opv_enable_lop = 0x07, /* (nothing) */ - cmd_opv_disable_lop = 0x08, /* (nothing) */ - cmd_opv_end_page = 0x0b, /* (nothing) */ - cmd_opv_delta_color0 = 0x0c, /* See cmd_put_color in gxclutil.c */ - cmd_opv_delta_color1 = 0x0d, /* <<same as color0>> */ - cmd_opv_set_copy_color = 0x0e, /* (nothing) */ - cmd_opv_set_copy_alpha = 0x0f, /* (nothing) */ - cmd_op_set_color0 = 0x10, /* +n = number of low order zero bytes | */ -#define cmd_no_color_index 15 /* +15 = transparent - "no color" */ - cmd_op_set_color1 = 0x20, /* <<same as color0>> */ - cmd_op_fill_rect = 0x30, /* +dy2dh2, x#, w# | +0, rect# */ - cmd_op_fill_rect_short = 0x40, /* +dh, dx, dw | +0, rect_short */ - cmd_op_fill_rect_tiny = 0x50, /* +dw+0, rect_tiny | +dw+8 */ - cmd_op_tile_rect = 0x60, /* +dy2dh2, x#, w# | +0, rect# */ - cmd_op_tile_rect_short = 0x70, /* +dh, dx, dw | +0, rect_short */ - cmd_op_tile_rect_tiny = 0x80, /* +dw+0, rect_tiny | +dw+8 */ - cmd_op_copy_mono_planes = 0x90, /* +compress, plane_height, x#, y#, (w+data_x)#, */ - /* h#, <bits> | */ -#define cmd_copy_use_tile 8 /* +8 (use tile), x#, y# | */ - cmd_op_copy_color_alpha = 0xa0, /* (same as copy_mono, except: */ - /* if color, ignore ht_color; */ - /* if alpha & !use_tile, depth is */ - /* first operand) */ - cmd_op_delta_tile_index = 0xb0, /* +delta+8 */ - cmd_op_set_tile_index = 0xc0 /* +index[11:8], index[7:0] */ + cmd_op_misc = 0x00, /* (see below) */ + cmd_opv_end_run = 0x00, /* (nothing) */ + cmd_opv_set_tile_size = 0x01, /* rs?(1)nry?(1)nrx?(1)depth(5, encoded), */ + /* rep_width#, rep_height#, */ + /* [, nreps_x#][, nreps_y #] */ + /* [, rep_shift#] */ + cmd_opv_set_tile_phase = 0x02, /* x#, y# */ + cmd_opv_set_tile_bits = 0x03, /* index#, offset#, <bits> */ + cmd_opv_set_bits = 0x04, /* depth*4+compress, width#, height#, */ + /* index#, offset#, <bits> */ + cmd_opv_set_tile_color = 0x05, /* (nothing; next set/delta_color */ + /* refers to tile) */ + cmd_opv_set_misc = 0x06, +#define cmd_set_misc_lop (0 << 6) /* 00: lop_lsb(6), lop_msb# */ +#define cmd_set_misc_data_x (1 << 6) /* 01: more(1)dx_lsb(5)[, dx_msb#] */ +#define cmd_set_misc_map (2 << 6) /* 10: contents(2)map_index(4) */ + /* [, n x frac] */ +#define cmd_set_misc_halftone (3 << 6) /* 11: type(6), num_comp# */ + cmd_opv_enable_lop = 0x07, /* (nothing) */ + cmd_opv_disable_lop = 0x08, /* (nothing) */ + /* UNUSED 0x09 */ + /* UNUSED 0x0a */ + cmd_opv_end_page = 0x0b, /* (nothing) */ + cmd_opv_delta_color0 = 0x0c, /* See cmd_put_color in gxclutil.c */ + cmd_opv_delta_color1 = 0x0d, /* <<same as color0>> */ + cmd_opv_set_copy_color = 0x0e, /* (nothing) */ + cmd_opv_set_copy_alpha = 0x0f, /* (nothing) */ + cmd_op_set_color0 = 0x10, /* +n = number of low order zero bytes | */ +#define cmd_no_color_index 15 /* +15 = transparent - "no color" */ + cmd_op_set_color1 = 0x20, /* <<same as color0>> */ + cmd_op_fill_rect = 0x30, /* +dy2dh2, x#, w# | +0, rect# */ + cmd_op_fill_rect_short = 0x40, /* +dh, dx, dw | +0, rect_short */ + cmd_op_fill_rect_tiny = 0x50, /* +dw+0, rect_tiny | +dw+8 */ + cmd_op_tile_rect = 0x60, /* +dy2dh2, x#, w# | +0, rect# */ + cmd_op_tile_rect_short = 0x70, /* +dh, dx, dw | +0, rect_short */ + cmd_op_tile_rect_tiny = 0x80, /* +dw+0, rect_tiny | +dw+8 */ + cmd_op_copy_mono_planes = 0x90, /* +compress, plane_height, x#, y#, (w+data_x)#, */ + /* h#, <bits> | */ +#define cmd_copy_use_tile 8 /* +8 (use tile), x#, y# | */ + cmd_op_copy_color_alpha = 0xa0, /* (same as copy_mono, except: */ + /* if color, ignore ht_color; */ + /* if alpha & !use_tile, depth is */ + /* first operand) */ + cmd_op_delta_tile_index = 0xb0, /* +delta+8 */ + cmd_op_set_tile_index = 0xc0, /* +index[11:8], index[7:0] */ + cmd_op_misc2 = 0xd0, /* (see below) */ + cmd_op_fill_rect_hl = 0xd1, /* rect fill with devn color */ + cmd_opv_set_fill_adjust = 0xd2, /* adjust_x/y(fixed) */ + cmd_opv_set_ctm = 0xd3, /* [per sput/sget_matrix] */ + cmd_opv_set_color_space = 0xd4, /* base(4)Indexed?(2)0(2) */ + /* [, hival#, table|map] */ + /* + * cmd_opv_set_misc2_value is followed by a mask (a variable-length + * integer), and then by parameter values for the parameters selected + * by the mask. See gxclpath.h for the "known" mask values. + */ + /* cap_join: 0(2)cap(3)join(3) */ + /* cj_ac_sa: 0(3)curve_join+1(3)acc.curves(1)stroke_adj(1) */ + /* flatness: (float) */ + /* line width: (float) */ + /* miter limit: (float) */ + /* op_bm_tk: blend mode(5)text knockout(1)o.p.mode(1)o.p.(1) */ + /* segment notes: (byte) */ + /* opacity/shape: alpha(float)mask(TBD) */ + /* alpha: <<verbatim copy from gs_gstate>> */ + cmd_opv_set_misc2 = 0xd5, /* mask#, selected parameters */ + cmd_opv_set_dash = 0xd6, /* adapt(1)abs.dot(1)n(6), dot */ + /* length(float), offset(float), */ + /* n x (float) */ + cmd_opv_enable_clip = 0xd7, /* (nothing) */ + cmd_opv_disable_clip = 0xd8, /* (nothing) */ + cmd_opv_begin_clip = 0xd9, /* (nothing) */ + cmd_opv_end_clip = 0xda, /* (nothing) */ + cmd_opv_begin_image_rect = 0xdb, /* same as begin_image, followed by */ + /* x0#, w-x1#, y0#, h-y1# */ + cmd_opv_begin_image = 0xdc, /* image_type_table index, */ + /* [per image type] */ + cmd_opv_image_data = 0xdd, /* height# (premature EOD if 0), */ + /* raster#, <data> */ + cmd_opv_image_plane_data = 0xde, /* height# (premature EOD if 0), */ + /* flags# (0 = same raster & data_x, */ + /* 1 = new raster & data_x, lsb first), */ + /* [raster#, [data_x#,]]* <data> */ + cmd_opv_extend = 0xdf, /* command, varies (see gx_cmd_ext_op below) */ + + +#define cmd_misc2_op_name_strings\ + "?d0?", "fill_hl_color", \ + "set_fill_adjust", "set_ctm",\ + "set_color_space", "set_misc2", "set_dash", "enable_clip",\ + "disable_clip", "begin_clip", "end_clip", "begin_image_rect",\ + "begin_image", "image_data", "image_plane_data", "extended" + + cmd_op_segment = 0xe0, /* (see below) */ + cmd_opv_rmoveto = 0xe0, /* dx%, dy% */ + cmd_opv_rlineto = 0xe1, /* dx%, dy% */ + cmd_opv_hlineto = 0xe2, /* dx% */ + cmd_opv_vlineto = 0xe3, /* dy% */ + cmd_opv_rmlineto = 0xe4, /* dx1%,dy1%, dx2%,dy2% */ + cmd_opv_rm2lineto = 0xe5, /* dx1%,dy1%, dx2%,dy2%, dx3%,dy3% */ + cmd_opv_rm3lineto = 0xe6, /* dx1%,dy1%, dx2%,dy2%, dx3%,dy3%, */ + /* [-dx2,-dy2 implicit] */ + cmd_opv_rrcurveto = 0xe7, /* dx1%,dy1%, dx2%,dy2%, dx3%,dy3% */ + cmd_opv_min_curveto = cmd_opv_rrcurveto, + cmd_opv_hvcurveto = 0xe8, /* dx1%, dx2%,dy2%, dy3% */ + cmd_opv_vhcurveto = 0xe9, /* dy1%, dx2%,dy2%, dx3% */ + cmd_opv_nrcurveto = 0xea, /* dx2%,dy2%, dx3%,dy3% */ + cmd_opv_rncurveto = 0xeb, /* dx1%,dy1%, dx2%,dy2% */ + cmd_opv_vqcurveto = 0xec, /* dy1%, dx2%[,dy2=dx2 with sign */ + /* of dy1, dx3=dy1 with sign of dx2] */ + cmd_opv_hqcurveto = 0xed, /* dx1%, [dx2=dy2 with sign */ + /* of dx1,]%dy2, [dy3=dx1 with sign */ + /* of dy2] */ + cmd_opv_scurveto = 0xee, /* all implicit: previous op must have been */ + /* *curveto with one or more of dx/y1/3 = 0. */ + /* If h*: -dx3,dy3, -dx2,dy2, -dx1,dy1. */ + /* If v*: dx3,-dy3, dx2,-dy2, dx1,-dy1. */ + cmd_opv_max_curveto = cmd_opv_scurveto, + cmd_opv_closepath = 0xef, /* (nothing) */ + +#define cmd_segment_op_name_strings\ + "rmoveto", "rlineto", "hlineto", "vlineto",\ + "rmlineto", "rm2lineto", "rm3lineto", "rrcurveto",\ + "hvcurveto", "vhcurveto", "nrcurveto", "rncurveto",\ + "vqcurveto", "hqcurveto", "scurveto", "closepath" + + cmd_op_path = 0xf0, /* (see below) */ + cmd_opv_fill = 0xf0, + cmd_opv_rgapto = 0xf1, /* dx%, dy% */ + /* UNUSED 0xf2 */ + cmd_opv_eofill = 0xf3, + cmd_opv_fill_stroke = 0xf4, + cmd_opv_eofill_stroke = 0xf5, + cmd_opv_stroke = 0xf6, + /* UNUSED 0xf7 */ + /* UNUSED 0xf8 */ + cmd_opv_polyfill = 0xf9, + /* UNUSED 0xfa */ + /* UNUSED 0xfb */ + cmd_opv_fill_trapezoid = 0xfc + /* UNUSED 0xfd */ + /* UNUSED 0xfe */ + /* UNUSED 0xff */ + +#define cmd_path_op_name_strings\ + "fill", "rgapto", "?f2?", "eofill",\ + "fill_stroke", "eofill_stroke", "stroke", "?f7?",\ + "?f8?", "polyfill", "?fa?", "?fb?",\ + "fill_trapezoid", "?fd?", "?fe?", "?ff?" + +/* unused cmd_op values: 0xd0, 0xf2, 0xf7, 0xf8, 0xfa, 0xfb, 0xfd, 0xfe, 0xff */ } gx_cmd_op; #define cmd_op_name_strings\ diff --git a/base/gxclpath.h b/base/gxclpath.h index f5e9555c4..c334222c6 100644 --- a/base/gxclpath.h +++ b/base/gxclpath.h @@ -28,27 +28,27 @@ * various miscellaneous parameters (pcls->known). The first N flags match * the mask parameter for cmd_set_misc2 below. */ -#define cap_join_known (1<<0) -#define cj_ac_sa_known (1<<1) -#define flatness_known (1<<2) -#define line_width_known (1<<3) -#define miter_limit_known (1<<4) -#define op_bm_tk_known (1<<5) +#define cap_join_known (1<<0) +#define cj_ac_sa_known (1<<1) +#define flatness_known (1<<2) +#define line_width_known (1<<3) +#define miter_limit_known (1<<4) +#define op_bm_tk_known (1<<5) /* segment_notes must fit in the first byte (i.e. be less than 1<<7). */ -#define segment_notes_known (1<<6) /* not used in pcls->known */ +#define segment_notes_known (1<<6) /* not used in pcls->known */ /* (flags beyond this point require an extra byte) */ -#define ais_known (1<<7) -#define stroke_alpha_known (1<<8) -#define fill_alpha_known (1<<9) -#define misc2_all_known ((1<<10)-1) +#define ais_known (1<<7) +#define stroke_alpha_known (1<<8) +#define fill_alpha_known (1<<9) +#define misc2_all_known ((1<<10)-1) /* End of misc2 flags. */ /* The following bits don't get passed in misc2, so are only limited by sizeof uint */ -#define fill_adjust_known (1<<10) -#define ctm_known (1<<11) -#define dash_known (1<<12) -#define clip_path_known (1<<13) -#define STROKE_ALL_KNOWN ((1<<14)-1) -#define color_space_known (1<<14) +#define fill_adjust_known (1<<10) +#define ctm_known (1<<11) +#define dash_known (1<<12) +#define clip_path_known (1<<13) +#define STROKE_ALL_KNOWN ((1<<14)-1) +#define color_space_known (1<<14) /*#define all_known ((1<<15)-1) */ /* Define the drawing color types for distinguishing different */ @@ -59,108 +59,6 @@ typedef enum { cmd_dc_type_color = 2 } cmd_dc_type; -/* Extend the command set. See gxcldev.h for more information. */ -typedef enum { - cmd_op_misc2 = 0xd0, /* (see below) */ - cmd_op_fill_rect_hl = 0xd1, /* rect fill with devn color */ - cmd_opv_set_fill_adjust = 0xd2, /* adjust_x/y(fixed) */ - cmd_opv_set_ctm = 0xd3, /* [per sput/sget_matrix] */ - cmd_opv_set_color_space = 0xd4, /* base(4)Indexed?(2)0(2) */ - /* [, hival#, table|map] */ - /* - * cmd_opv_set_misc2_value is followed by a mask (a variable-length - * integer), and then by parameter values for the parameters selected - * by the mask. See above for the "known" mask values. - */ - /* cap_join: 0(2)cap(3)join(3) */ - /* cj_ac_sa: 0(3)curve_join+1(3)acc.curves(1)stroke_adj(1) */ - /* flatness: (float) */ - /* line width: (float) */ - /* miter limit: (float) */ - /* op_bm_tk: blend mode(5)text knockout(1)o.p.mode(1)o.p.(1) */ - /* segment notes: (byte) */ - /* opacity/shape: alpha(float)mask(TBD) */ - /* alpha: <<verbatim copy from gs_gstate>> */ - cmd_opv_set_misc2 = 0xd5, /* mask#, selected parameters */ - cmd_opv_set_dash = 0xd6, /* adapt(1)abs.dot(1)n(6), dot */ - /* length(float), offset(float), */ - /* n x (float) */ - cmd_opv_enable_clip = 0xd7, /* (nothing) */ - cmd_opv_disable_clip = 0xd8, /* (nothing) */ - cmd_opv_begin_clip = 0xd9, /* (nothing) */ - cmd_opv_end_clip = 0xda, /* (nothing) */ - cmd_opv_begin_image_rect = 0xdb, /* same as begin_image, followed by */ - /* x0#, w-x1#, y0#, h-y1# */ - cmd_opv_begin_image = 0xdc, /* image_type_table index, */ - /* [per image type] */ - cmd_opv_image_data = 0xdd, /* height# (premature EOD if 0), */ - /* raster#, <data> */ - cmd_opv_image_plane_data = 0xde, /* height# (premature EOD if 0), */ - /* flags# (0 = same raster & data_x, */ - /* 1 = new raster & data_x, lsb first), */ - /* [raster#, [data_x#,]]* <data> */ - cmd_opv_extend = 0xdf, /* command, varies (see gx_cmd_ext_op below) */ - - -#define cmd_misc2_op_name_strings\ - "?d0?", "fill_hl_color", \ - "set_fill_adjust", "set_ctm",\ - "set_color_space", "set_misc2", "set_dash", "enable_clip",\ - "disable_clip", "begin_clip", "end_clip", "begin_image_rect",\ - "begin_image", "image_data", "image_plane_data", "extended" - - cmd_op_segment = 0xe0, /* (see below) */ - cmd_opv_rmoveto = 0xe0, /* dx%, dy% */ - cmd_opv_rlineto = 0xe1, /* dx%, dy% */ - cmd_opv_hlineto = 0xe2, /* dx% */ - cmd_opv_vlineto = 0xe3, /* dy% */ - cmd_opv_rmlineto = 0xe4, /* dx1%,dy1%, dx2%,dy2% */ - cmd_opv_rm2lineto = 0xe5, /* dx1%,dy1%, dx2%,dy2%, dx3%,dy3% */ - cmd_opv_rm3lineto = 0xe6, /* dx1%,dy1%, dx2%,dy2%, dx3%,dy3%, */ - /* [-dx2,-dy2 implicit] */ - cmd_opv_rrcurveto = 0xe7, /* dx1%,dy1%, dx2%,dy2%, dx3%,dy3% */ - cmd_opv_min_curveto = cmd_opv_rrcurveto, - cmd_opv_hvcurveto = 0xe8, /* dx1%, dx2%,dy2%, dy3% */ - cmd_opv_vhcurveto = 0xe9, /* dy1%, dx2%,dy2%, dx3% */ - cmd_opv_nrcurveto = 0xea, /* dx2%,dy2%, dx3%,dy3% */ - cmd_opv_rncurveto = 0xeb, /* dx1%,dy1%, dx2%,dy2% */ - cmd_opv_vqcurveto = 0xec, /* dy1%, dx2%[,dy2=dx2 with sign */ - /* of dy1, dx3=dy1 with sign of dx2] */ - cmd_opv_hqcurveto = 0xed, /* dx1%, [dx2=dy2 with sign */ - /* of dx1,]%dy2, [dy3=dx1 with sign */ - /* of dy2] */ - cmd_opv_scurveto = 0xee, /* all implicit: previous op must have been */ - /* *curveto with one or more of dx/y1/3 = 0. */ - /* If h*: -dx3,dy3, -dx2,dy2, -dx1,dy1. */ - /* If v*: dx3,-dy3, dx2,-dy2, dx1,-dy1. */ - cmd_opv_max_curveto = cmd_opv_scurveto, - cmd_opv_closepath = 0xef, /* (nothing) */ - -#define cmd_segment_op_name_strings\ - "rmoveto", "rlineto", "hlineto", "vlineto",\ - "rmlineto", "rm2lineto", "rm3lineto", "rrcurveto",\ - "hvcurveto", "vhcurveto", "nrcurveto", "rncurveto",\ - "vqcurveto", "hqcurveto", "scurveto", "closepath" - - cmd_op_path = 0xf0, /* (see below) */ - cmd_opv_fill = 0xf0, - cmd_opv_rgapto = 0xf1, /* dx%, dy% */ - cmd_opv_eofill = 0xf3, - cmd_opv_fill_stroke = 0xf4, - cmd_opv_eofill_stroke = 0xf5, - cmd_opv_stroke = 0xf6, - cmd_opv_polyfill = 0xf9, - cmd_opv_fill_trapezoid = 0xfc - -#define cmd_path_op_name_strings\ - "fill", "rgapto", "?f2?", "eofill",\ - "fill_stroke", "eofill_stroke", "stroke", "?f7?",\ - "?f8?", "polyfill", "?fa?", "?fb?",\ - "fill_trapezoid", "?fd?", "?fe?", "?ff?" - -/* unused cmd_op values: 0xd0, 0xf2, 0xf7, 0xf8, 0xfa, 0xfb, 0xfd, 0xfe, 0xff */ -} gx_cmd_xop; - /* This is usd for cmd_opv_ext_put_drawing_color so that we know if it is assocated with a tile or not and for fill or stroke color */ typedef enum { @@ -174,23 +72,40 @@ typedef enum { * is the second byte of a command whose first byte is cmd_opv_extend. */ typedef enum { - cmd_opv_ext_put_params = 0x00, /* serialized parameter list */ - cmd_opv_ext_composite = 0x01, /* compositor id, + cmd_opv_ext_put_params = 0x00, /* serialized parameter list */ + cmd_opv_ext_composite = 0x01, /* compositor id, * serialized compositor */ - cmd_opv_ext_put_halftone = 0x02, /* length of entire halftone */ - cmd_opv_ext_put_ht_seg = 0x03, /* segment length, + cmd_opv_ext_put_halftone = 0x02, /* length of entire halftone */ + cmd_opv_ext_put_ht_seg = 0x03, /* segment length, * halftone segment data */ - cmd_opv_ext_put_fill_dcolor = 0x04, /* length, color type id, + cmd_opv_ext_put_fill_dcolor = 0x04, /* length, color type id, * serialized color */ - cmd_opv_ext_put_stroke_dcolor = 0x05, /* length, color type id, + cmd_opv_ext_put_stroke_dcolor = 0x05, /* length, color type id, * serialized color */ - cmd_opv_ext_tile_rect_hl = 0x06, /* Uses devn colors in tiling fill */ + cmd_opv_ext_tile_rect_hl = 0x06, /* Uses devn colors in tiling fill */ cmd_opv_ext_put_tile_devn_color0 = 0x07, /* Devn color0 for tile filling */ cmd_opv_ext_put_tile_devn_color1 = 0x08, /* Devn color1 for tile filling */ - cmd_opv_ext_set_color_is_devn = 0x09, /* Used for overload of copy_color_alpha */ - cmd_opv_ext_unset_color_is_devn = 0x0a /* Used for overload of copy_color_alpha */ + cmd_opv_ext_set_color_is_devn = 0x09, /* Used for overload of copy_color_alpha */ + cmd_opv_ext_unset_color_is_devn = 0x0a /* Used for overload of copy_color_alpha */ } gx_cmd_ext_op; +#ifdef DEBUG +#define cmd_extend_op_name_strings \ + "put_params",\ + "composite",\ + "put_halftone",\ + "put_ht_seg",\ + "put_fill_dcolor",\ + "put_stroke_dcolor",\ + "tile_rect_hl",\ + "put_tile_devn_color0",\ + "put_tile_devn_color1",\ + "set_color_is_devn",\ + "unset_color_is_devn" + +extern const char *cmd_extend_op_names[256]; +#endif + #define cmd_segment_op_num_operands_values\ 2, 2, 1, 1, 4, 6, 6, 6, 4, 4, 4, 4, 2, 2, 0, 0 diff --git a/base/gxclrast.c b/base/gxclrast.c index a0f208e14..c001cccdd 100644 --- a/base/gxclrast.c +++ b/base/gxclrast.c @@ -713,7 +713,13 @@ in: /* Initialize for a new page. */ const char *const *sub = cmd_sub_op_names[op >> 4]; long offset = (long)clist_file_offset(st, cbp - 1 - cbuf.data); - if (sub) + if (op == cmd_opv_extend) { + unsigned char op2 = *cbp; + if (cmd_extend_op_names[op2]) + dmlprintf1(mem, "[L]%s", cmd_extend_op_names[op2]); + else + dmlprintf1(mem, "[L]?0x%02x?", (int)op2); + } else if (sub) dmlprintf1(mem, "[L]%s", sub[op & 0xf]); else dmlprintf2(mem, "[L]%s %d", cmd_op_names[op >> 4], op & 0xf); diff --git a/base/gxclutil.c b/base/gxclutil.c index 1884348ec..2aa759e8d 100644 --- a/base/gxclutil.c +++ b/base/gxclutil.c @@ -48,6 +48,9 @@ const char *const *const cmd_sub_op_names[16] = 0, 0, 0, 0, 0, cmd_misc2_op_names, cmd_segment_op_names, cmd_path_op_names }; +const char *cmd_extend_op_names[256] = +{cmd_extend_op_name_strings}; + #ifndef GS_THREADSAFE struct stats_cmd_s { ulong op_counts[256]; |