summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2021-10-13 18:53:30 +0100
committerRobin Watts <Robin.Watts@artifex.com>2021-10-18 16:35:29 +0100
commitbebbe2fc75a9b460e60deb357474de795e113341 (patch)
tree043e6f92f0c2bccb0f83619e1c627e7dea9bcee8 /base
parent44e4204350e6ee7bd616191b962b7efd0fbb95ce (diff)
downloadghostpdl-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.h194
-rw-r--r--base/gxclpath.h171
-rw-r--r--base/gxclrast.c8
-rw-r--r--base/gxclutil.c3
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];