/src/ghostpdl/base/gxdevcli.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Copyright (C) 2001-2022 Artifex Software, Inc. |
2 | | All Rights Reserved. |
3 | | |
4 | | This software is provided AS-IS with no warranty, either express or |
5 | | implied. |
6 | | |
7 | | This software is distributed under license and may not be copied, |
8 | | modified or distributed except as expressly authorized under the terms |
9 | | of the license contained in the file LICENSE in this distribution. |
10 | | |
11 | | Refer to licensing information at http://www.artifex.com or contact |
12 | | Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato, |
13 | | CA 94945, U.S.A., +1(415)492-9861, for further information. |
14 | | */ |
15 | | |
16 | | |
17 | | /* Definitions for device clients */ |
18 | | |
19 | | #ifndef gxdevcli_INCLUDED |
20 | | # define gxdevcli_INCLUDED |
21 | | |
22 | | #include "gsdevice.h" |
23 | | #include "stdint_.h" |
24 | | #include "gscompt.h" |
25 | | #include "gsdcolor.h" |
26 | | #include "gsmatrix.h" |
27 | | #include "gsiparam.h" /* requires gsmatrix.h */ |
28 | | #include "gsrefct.h" |
29 | | #include "gsropt.h" |
30 | | #include "gsstruct.h" |
31 | | #include "gstparam.h" |
32 | | #include "gsxfont.h" |
33 | | #include "gxbitmap.h" |
34 | | #include "gxcindex.h" |
35 | | #include "gxcvalue.h" |
36 | | #include "gxfixed.h" |
37 | | #include "gxtext.h" |
38 | | #include "gxcmap.h" |
39 | | #include "gsnamecl.h" |
40 | | #include "gp.h" |
41 | | #include "gscms.h" |
42 | | #include "gxrplane.h" |
43 | | #include "gxdda.h" |
44 | | #include "gxpath.h" |
45 | | #include "gsimage.h" |
46 | | |
47 | | /* See Drivers.htm for documentation of the driver interface. */ |
48 | | |
49 | | /* ---------------- Memory management ---------------- */ |
50 | | |
51 | | /* |
52 | | * NOTE: if you write code that creates device instances (either with |
53 | | * gs_copydevice or by allocating them explicitly), allocates device |
54 | | * instances as either local or static variables (actual instances, not |
55 | | * pointers to instances), or sets the target of forwarding devices, please |
56 | | * read the following documentation carefully. The rules for doing these |
57 | | * things changed substantially in release 5.68, in a |
58 | | * non-backward-compatible way, and unfortunately we could not find a way to |
59 | | * make the compiler give an error at places that need changing. |
60 | | */ |
61 | | |
62 | | /* |
63 | | * Device instances are managed with reference counting: when the last |
64 | | * reference to a device from a graphics state or the target field of a |
65 | | * forwarding device is removed, the device is normally freed. However, |
66 | | * some device instances are referenced in other ways (for example, from |
67 | | * objects in the PostScript interpreter, or from library client code) and |
68 | | * will be freed by the garbage collector (if any) or explicitly: they |
69 | | * should not be freed by reference counting. These are called "retained" |
70 | | * device instances. Every device instance remembers whether or not it is |
71 | | * retained, and an instance is freed iff its reference count is zero and it |
72 | | * is not retained. |
73 | | * |
74 | | * Normally devices are initialized as not retained. However, devices |
75 | | * initialized by calling gx_device_init(pdev, proto, memory, false), or |
76 | | * created by gs_copydevice are marked as retained. You can also set the |
77 | | * retention status of a device explicitly with gx_device_retain(pdev, |
78 | | * true-or-false). Note that if you change a retained device to |
79 | | * non-retained, if there are no references to it from graphics states or |
80 | | * targets, it will be freed immediately. |
81 | | * |
82 | | * The preferred technique for creating a new device is now gs_copydevice. |
83 | | * There are a number of places in the code where memory is explicitly |
84 | | * allocated, then initialized with gx_device_init. These should gradually |
85 | | * be replaced. |
86 | | * |
87 | | * There are 3 ways that a device structure might be allocated: |
88 | | * 1) Allocated dynamically, e.g., |
89 | | * gx_device *pdev_new; |
90 | | * gs_copydevice(&pdev_new, pdev_old, memory); |
91 | | * 2) Declared as a local or static variable, e.g., |
92 | | * gx_device devv; |
93 | | * or |
94 | | * const gx_device devc = ...; |
95 | | * 3) Embedded in an object allocated in one of the above ways. |
96 | | * If you allocate a device using #2 or #3, you must either mark it as |
97 | | * retained by calling gx_device_retain(pdev, true) or initialize it with a |
98 | | * NULL memory. If you do not do this, an attempt will be made to free the |
99 | | * device, corrupting memory. Note that when memory is NULL, the finalize |
100 | | * method of the device will not be called when it is freed, so you cannot |
101 | | * use it for cleanup. */ |
102 | | |
103 | | /* |
104 | | * Do not set the target of a forwarding device with an assignment like |
105 | | * fdev->target = tdev; |
106 | | * You must use the procedure |
107 | | * gx_device_set_target(fdev, tdev); |
108 | | * Note that the first argument is a gx_device_forward *, not a gx_device *. |
109 | | * |
110 | | * We could have changed the member name "target" when this became |
111 | | * necessary, so the compiler would flag places that needed editing, but |
112 | | * there were literally hundreds of places that only read the target member |
113 | | * that we would have had to change, so we decided to leave the name alone. |
114 | | */ |
115 | | |
116 | | /* ---------------- Auxiliary types and structures ---------------- */ |
117 | | |
118 | | /* We need an abstract type for the pattern instance, */ |
119 | | /* for pattern management. */ |
120 | | typedef struct gs_pattern1_instance_s gs_pattern1_instance_t; |
121 | | |
122 | | /* Define the type for colors passed to the higher-level procedures. */ |
123 | | typedef gx_device_color gx_drawing_color; |
124 | | |
125 | | /* Define a type for telling get_alpha_bits what kind of object */ |
126 | | /* is being rendered. */ |
127 | | typedef enum { |
128 | | go_text, |
129 | | go_graphics |
130 | | } graphics_object_type; |
131 | | |
132 | | /* Define an edge of a trapezoid. Requirement: end.y >= start.y. */ |
133 | | typedef struct gs_fixed_edge_s { |
134 | | gs_fixed_point start; |
135 | | gs_fixed_point end; |
136 | | } gs_fixed_edge; |
137 | | |
138 | | /* Define the parameters passed to get_bits_rectangle. */ |
139 | | typedef struct gs_get_bits_params_s gs_get_bits_params_t; |
140 | | |
141 | | /* Define the structure for device color capabilities. */ |
142 | | typedef struct gx_device_anti_alias_info_s { |
143 | | int text_bits; /* 1,2,4 */ |
144 | | int graphics_bits; /* ditto */ |
145 | | } gx_device_anti_alias_info; |
146 | | |
147 | | typedef int32_t frac31; /* A fraction value in [-1,1]. |
148 | | Represents a color (in [0,1]) |
149 | | or a color difference (in [-1,1]) in shadings. */ |
150 | | |
151 | | /* Define an edge of a linear color trapezoid. Requirement: end.y >= start.y. */ |
152 | | typedef struct gs_linear_color_edge_s { |
153 | | gs_fixed_point start; |
154 | | gs_fixed_point end; |
155 | | const frac31 *c0, *c1; |
156 | | fixed clip_x; |
157 | | } gs_linear_color_edge; |
158 | | |
159 | | /* |
160 | | * Possible values for the separable_and_linear flag in the |
161 | | * gx_device_color_info structure. These form an order, with lower |
162 | | * values having weaker properties. |
163 | | * |
164 | | * GX_CINFO_UNKNOWN_SEP_LIN |
165 | | * The properties of the color encoding are not yet known. This is |
166 | | * always a safe default value. |
167 | | * |
168 | | * GX_CINFO_SEP_LIN_NONE |
169 | | * The encoding is not separable and linear. If this value is set, |
170 | | * the device must provide an encode_color method, either directly |
171 | | * or via map_rgb_color/map_cmyk_color methods. This setting is |
172 | | * only legitimate for color models with 4 or fewer components. |
173 | | * |
174 | | * GX_CINFO_SEP_LIN |
175 | | * A separable and linear encoding has the separability and |
176 | | * linearity properties. |
177 | | * |
178 | | * Encodings with this property are completely characterized |
179 | | * by the comp_shift array. Hence, there is no need to provide |
180 | | * an encode_color procedure for such devices, though the device |
181 | | * creator may choose to do so for performance reasons (e.g.: when |
182 | | * each color component is assigned a byte). |
183 | | * |
184 | | * Note that if the device encodes tags, the comp_shift array must |
185 | | * provide a shift (and mask) for the tag component in the num_components |
186 | | * element of the array. Used in gx_default_fill_linear_color_scanline. |
187 | | * |
188 | | * GX_CINFO_SEP_LIN_NON_STANDARD |
189 | | * A separable and linear encoding has the separability and |
190 | | * linearity properties. In addition, we know that this encoding |
191 | | * is NOT the 'standard' one. (i.e. it is not compatible with the |
192 | | * encoding used by the pdf14 compositor). |
193 | | * |
194 | | * Encodings with this property are completely characterized |
195 | | * by the comp_shift array. Hence, there is no need to provide |
196 | | * an encode_color procedure for such devices, though the device |
197 | | * creator may choose to do so for performance reasons (e.g.: when |
198 | | * each color component is assigned a byte). |
199 | | * |
200 | | * GX_CINFO_SEP_LIN_STANDARD |
201 | | * A separable and linear encoding has the separability and |
202 | | * linearity properties. In addition, we know that this encoding |
203 | | * is the 'standard' one. (i.e. it is compatible with the encoding |
204 | | * used by the pd14 compositor). |
205 | | * |
206 | | * Encodings with this property are completely characterized |
207 | | * by the comp_shift array. Hence, there is no need to provide |
208 | | * an encode_color procedure for such devices, though the device |
209 | | * creator may choose to do so for performance reasons (e.g.: when |
210 | | * each color component is assigned a byte). |
211 | | */ |
212 | | |
213 | | /* Note: The arithmetic ordering for these values is relied upon |
214 | | * in tests (see colors_are_separable_and_linear below) for |
215 | | * separability and linearity. Change them with care! */ |
216 | | typedef enum { |
217 | | GX_CINFO_UNKNOWN_SEP_LIN = -1, |
218 | | GX_CINFO_SEP_LIN_NONE = 0, |
219 | | GX_CINFO_SEP_LIN = 1, |
220 | | GX_CINFO_SEP_LIN_NON_STANDARD = 2, |
221 | | GX_CINFO_SEP_LIN_STANDARD = 3 |
222 | | } gx_color_enc_sep_lin_t; |
223 | | |
224 | | /* |
225 | | * Enumerator to indicate if a color model will support overprint mode. |
226 | | * |
227 | | * Only "DeviceCMYK" color space support this option, but we interpret |
228 | | * this designation some broadly: a DeviceCMYK color model is any sub- |
229 | | * tractive color model that provides the components Cyan, Magenta, |
230 | | * Yellow, and Black, and maps the DeviceCMYK space directly to these |
231 | | * components. This includes DeviceCMYK color models with spot colors, |
232 | | * and DeviceN color models that support the requisite components (the |
233 | | * latter may vary from Adobe's implementations; this is not easily |
234 | | * tested). |
235 | | * |
236 | | * In principle this parameter could be a boolean set at initialization |
237 | | * time. Primarily for historical reasons, the determination of whether |
238 | | * or not a color model supports overprint is delayed until this |
239 | | * information is required, hence the use of an enumeration with an |
240 | | * "unknown" setting. |
241 | | * |
242 | | */ |
243 | | typedef enum { |
244 | | GX_CINFO_OPMSUPPORTED_UNKNOWN = -1, |
245 | | GX_CINFO_OPMSUPPORTED_NOT = 0, |
246 | | GX_CINFO_OPMSUPPORTED = 1 |
247 | | } gx_cm_opmsupported_t; |
248 | | |
249 | | /* component index value used to indicate no color component. */ |
250 | 9.58k | #define GX_CINFO_COMP_NO_INDEX 0xff |
251 | | |
252 | | /* |
253 | | * Additional possible value for cinfo.gray_index, to indicate which |
254 | | * component, if any, qualifies as the "gray" component. |
255 | | */ |
256 | | #define GX_CINFO_COMP_INDEX_UNKNOWN 0xfe |
257 | | |
258 | | /* |
259 | | * The enlarged color model information structure: Some of the |
260 | | * information that was implicit in the component number in |
261 | | * the earlier conventions (component names, polarity, mapping |
262 | | * functions) are now explicitly provided. |
263 | | * |
264 | | * Also included is some information regarding the encoding of |
265 | | * color information into gx_color_index. Some of this information |
266 | | * was previously gathered indirectly from the mapping |
267 | | * functions in the existing code, specifically to speed up the |
268 | | * halftoned color rendering operator (see |
269 | | * gx_dc_ht_colored_fill_rectangle in gxcht.c). The information |
270 | | * is now provided explicitly because such optimizations are |
271 | | * more critical when the number of color components is large. |
272 | | * |
273 | | * Note: no pointers have been added to this structure, so there |
274 | | * is no requirement for a structure descriptor. |
275 | | */ |
276 | | typedef struct gx_device_color_info_s { |
277 | | |
278 | | /* |
279 | | * max_components is the maximum number of components for all |
280 | | * color models supported by this device. This does not include |
281 | | * any alpha components. |
282 | | */ |
283 | | uchar max_components; |
284 | | |
285 | | /* |
286 | | * The number of color components. This does not include any |
287 | | * alpha-channel information, which may be integrated into |
288 | | * the gx_color_index but is otherwise passed as a separate |
289 | | * component. |
290 | | */ |
291 | | uchar num_components; |
292 | | |
293 | | /* |
294 | | * Polarity of the components of the color space, either |
295 | | * additive or subtractive. This is used to interpret transfer |
296 | | * functions and halftone threshold arrays. Possible values |
297 | | * are GX_CM_POLARITY_ADDITIVE or GX_CM_POLARITY_SUBTRACTIVE |
298 | | */ |
299 | | gx_color_polarity_t polarity; |
300 | | |
301 | | /* |
302 | | * The number of bits of gx_color_index actually used. |
303 | | * This must be <= ARCH_SIZEOF_COLOR_INDEX, which is usually 64. |
304 | | * Note that we now have planar devices which can support much more. |
305 | | * Changing this to a ushort to reflect this. |
306 | | */ |
307 | | ushort depth; |
308 | | |
309 | | /* |
310 | | * Index of the gray color component, if any. The max_gray and |
311 | | * dither_gray values apply to this component only; all other |
312 | | * components use the max_color and dither_color values. |
313 | | * |
314 | | * Note: This field refers to a 'gray' colorant because of the |
315 | | * past use of the max_gray/color and dither_grays/colors fields. |
316 | | * Prior to 8.00, the 'gray' values were used for monochrome |
317 | | * devices and the 'color' values for RGB and CMYK devices. |
318 | | * Ideally we would like to have the flexibiiity of allowing |
319 | | * different numbers of intensity levels for each colorant. |
320 | | * However this is not compatible with the pre 8.00 devices. |
321 | | * With post 8.00 devices, we can have two different numbers of |
322 | | * intensity levels. For one colorant (which is specified by |
323 | | * the gray_index) we will use the max_gray/dither_grays values. |
324 | | * The remaining colorants will use the max_color/dither_colors |
325 | | * values. The colorant which is specified by the gray_index |
326 | | * value does not have to be gray or black. For example if we |
327 | | * have an RGB device and we want 32 intensity levels for red and |
328 | | * blue and 64 levels for green, then we can set gray_index to |
329 | | * 1 (the green colorant), set max_gray to 63 and dither_grays to |
330 | | * 64, and set max_color to 31 and dither_colors to 32. |
331 | | * |
332 | | * This will be GX_CINFO_COMP_NO_INDEX if there is no 'gray' |
333 | | * component. |
334 | | */ |
335 | | byte gray_index; |
336 | | |
337 | | /* |
338 | | * max_gray and max_color are the number of distinct native |
339 | | * intensity levels, less 1, for the 'gray' and all other color |
340 | | * components, respectively. For nearly all current devices |
341 | | * that support both 'gray' and non-'gray' components, the two |
342 | | * parameters have the same value. (See comment for gray_index.) |
343 | | * |
344 | | * dither_grays and dither_colors are the number of intensity |
345 | | * levels between which halftoning can occur, for the 'gra'y and |
346 | | * all other color components, respectively. This is |
347 | | * essentially redundant information: in all reasonable cases, |
348 | | * dither_grays = max_gray + 1 and dither_colors = max_color + 1. |
349 | | * These parameters are, however, extensively used in the |
350 | | * current code, and thus have been retained. |
351 | | * |
352 | | * Note that the non-'gray' values may now be relevant even if |
353 | | * num_components == 1. This simplifies the handling of devices |
354 | | * with configurable color models which may be set for a single |
355 | | * non-'gray' color model. |
356 | | */ |
357 | | uint max_gray; /* # of distinct color levels -1 */ |
358 | | uint max_color; |
359 | | |
360 | | uint dither_grays; |
361 | | uint dither_colors; |
362 | | |
363 | | /* |
364 | | * Information to control super-sampling of objects to support |
365 | | * anti-aliasing. |
366 | | */ |
367 | | gx_device_anti_alias_info anti_alias; |
368 | | |
369 | | /* |
370 | | * Flag to indicate if gx_color_index for this device may be divided |
371 | | * into individual fields for each component. This is almost always |
372 | | * the case for printers, and is the case for most modern displays |
373 | | * as well. When this is the case, halftoning may be performed |
374 | | * separately for each component, which greatly simplifies processing |
375 | | * when the number of color components is large. |
376 | | * |
377 | | * If the gx_color_index is separable in this manner, the comp_shift |
378 | | * array provides the location of the low-order bit for each |
379 | | * component. This may be filled in by the client, but need not be. |
380 | | * If it is not provided, it will be calculated based on the values |
381 | | * in the max_gray and max_color fields as follows: |
382 | | * |
383 | | * comp_shift[num_components - 1] = 0, |
384 | | * comp_shift[i] = comp_shift[i + 1] |
385 | | * + ( i == gray_index ? ceil(log2(max_gray + 1)) |
386 | | * : ceil(log2(max_color + 1)) ) |
387 | | * |
388 | | * The comp_mask and comp_bits fields should be left empty by the client. |
389 | | * They will be filled in during initialization using the following |
390 | | * mechanism: |
391 | | * |
392 | | * comp_bits[i] = ( i == gray_index ? ceil(log2(max_gray + 1)) |
393 | | * : ceil(log2(max_color + 1)) ) |
394 | | * |
395 | | * comp_mask[i] = (((gx_color_index)1 << comp_bits[i]) - 1) |
396 | | * << comp_shift[i] |
397 | | * |
398 | | * (For current devices, it is almost always the case that |
399 | | * max_gray == max_color, if the color model contains both gray and |
400 | | * non-gray components.) |
401 | | * |
402 | | * If separable_and_linear is not set, the data in the other fields |
403 | | * is unpredictable and should be ignored. |
404 | | */ |
405 | | gx_color_enc_sep_lin_t separable_and_linear; |
406 | | byte comp_shift[GX_DEVICE_COLOR_MAX_COMPONENTS]; |
407 | | byte comp_bits[GX_DEVICE_COLOR_MAX_COMPONENTS]; |
408 | | gx_color_index comp_mask[GX_DEVICE_COLOR_MAX_COMPONENTS]; |
409 | | |
410 | | /* |
411 | | * Pointer to name for the process color model. |
412 | | */ |
413 | | const char * cm_name; |
414 | | |
415 | | /* |
416 | | * Indicate if overprint mode is supported. This is only supported |
417 | | * for color models that have "DeviceCMYK" like behaivor: they support |
418 | | * the cyan, magenta, yellow, and black color components, and map the |
419 | | * components of a DeviceCMYK color space directly to these compoents. |
420 | | * Most such color spaces will have the name DeviceCMYK, but it is |
421 | | * also possible for DeviceN color models this behavior. |
422 | | * |
423 | | * If opmsupported has the value GX_CINFO_OPMSUPPORTED, the process_comps will |
424 | | * be a bit mask, with the (1 << i) bit set if i'th component is the |
425 | | * cyan, magenta, yellow, or black component and black_component will |
426 | | * be set to the index of a black component. |
427 | | */ |
428 | | gx_cm_opmsupported_t opmsupported; |
429 | | gx_color_index process_comps; |
430 | | uint black_component; |
431 | | bool use_antidropout_downscaler; |
432 | | } gx_device_color_info; |
433 | | |
434 | | /* Test to see if colors are separable and linear */ |
435 | | static inline int colors_are_separable_and_linear(gx_device_color_info *info) |
436 | 4.19M | { |
437 | 4.19M | return (info->separable_and_linear >= GX_CINFO_SEP_LIN); |
438 | 4.19M | } Unexecuted instantiation: imain.c:colors_are_separable_and_linear Unexecuted instantiation: gconfig.c:colors_are_separable_and_linear Unexecuted instantiation: gximage3.c:colors_are_separable_and_linear Unexecuted instantiation: gximage4.c:colors_are_separable_and_linear Unexecuted instantiation: gxmclip.c:colors_are_separable_and_linear Unexecuted instantiation: gsptype1.c:colors_are_separable_and_linear Unexecuted instantiation: gxp1fill.c:colors_are_separable_and_linear Unexecuted instantiation: gxpcmap.c:colors_are_separable_and_linear Unexecuted instantiation: gxicolor.c:colors_are_separable_and_linear Unexecuted instantiation: gsdps1.c:colors_are_separable_and_linear Unexecuted instantiation: gsciemap.c:colors_are_separable_and_linear Unexecuted instantiation: gstrans.c:colors_are_separable_and_linear Unexecuted instantiation: gximag3x.c:colors_are_separable_and_linear Unexecuted instantiation: gxblend.c:colors_are_separable_and_linear Unexecuted instantiation: gdevp14.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdevn.c:colors_are_separable_and_linear Unexecuted instantiation: gsequivc.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdcrd.c:colors_are_separable_and_linear Unexecuted instantiation: gscpixel.c:colors_are_separable_and_linear Unexecuted instantiation: gdevbbox.c:colors_are_separable_and_linear Unexecuted instantiation: gdevprn.c:colors_are_separable_and_linear Unexecuted instantiation: gdevppla.c:colors_are_separable_and_linear Unexecuted instantiation: gdevflp.c:colors_are_separable_and_linear Unexecuted instantiation: gdevoflt.c:colors_are_separable_and_linear Unexecuted instantiation: gdevnup.c:colors_are_separable_and_linear Unexecuted instantiation: gdevsclass.c:colors_are_separable_and_linear Unexecuted instantiation: gxclist.c:colors_are_separable_and_linear Unexecuted instantiation: gxclpage.c:colors_are_separable_and_linear Unexecuted instantiation: gxclread.c:colors_are_separable_and_linear Unexecuted instantiation: gxclrect.c:colors_are_separable_and_linear Unexecuted instantiation: gxclutil.c:colors_are_separable_and_linear Unexecuted instantiation: gxclimag.c:colors_are_separable_and_linear Unexecuted instantiation: gxclpath.c:colors_are_separable_and_linear Unexecuted instantiation: gxdhtserial.c:colors_are_separable_and_linear Unexecuted instantiation: gxclthrd.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_manage.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_cache.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_lcms2mt.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_create.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_nocm.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_replacecm.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_monitorcm.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_blacktext.c:colors_are_separable_and_linear Unexecuted instantiation: gdevcups.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdjet.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdljm.c:colors_are_separable_and_linear Unexecuted instantiation: gdevpcl.c:colors_are_separable_and_linear Unexecuted instantiation: gdevpcl3.c:colors_are_separable_and_linear Unexecuted instantiation: pclcap.c:colors_are_separable_and_linear Unexecuted instantiation: gdevpx.c:colors_are_separable_and_linear Unexecuted instantiation: gdevpxut.c:colors_are_separable_and_linear Unexecuted instantiation: gdevvec.c:colors_are_separable_and_linear Unexecuted instantiation: gdevupd.c:colors_are_separable_and_linear Unexecuted instantiation: gdevkrnlsclass.c:colors_are_separable_and_linear Unexecuted instantiation: gscolor.c:colors_are_separable_and_linear Unexecuted instantiation: gscoord.c:colors_are_separable_and_linear Unexecuted instantiation: gscspace.c:colors_are_separable_and_linear Unexecuted instantiation: gsovrc.c:colors_are_separable_and_linear Unexecuted instantiation: gxoprect.c:colors_are_separable_and_linear Unexecuted instantiation: gsdevice.c:colors_are_separable_and_linear Unexecuted instantiation: gsdparam.c:colors_are_separable_and_linear Unexecuted instantiation: gsht.c:colors_are_separable_and_linear Unexecuted instantiation: gshtscr.c:colors_are_separable_and_linear Unexecuted instantiation: gsimage.c:colors_are_separable_and_linear Unexecuted instantiation: gsgstate.c:colors_are_separable_and_linear Unexecuted instantiation: gsline.c:colors_are_separable_and_linear Unexecuted instantiation: gspaint.c:colors_are_separable_and_linear Unexecuted instantiation: gspath.c:colors_are_separable_and_linear Unexecuted instantiation: gsstate.c:colors_are_separable_and_linear Unexecuted instantiation: gstext.c:colors_are_separable_and_linear Unexecuted instantiation: gxfapi.c:colors_are_separable_and_linear Unexecuted instantiation: write_t2.c:colors_are_separable_and_linear Unexecuted instantiation: gxchar.c:colors_are_separable_and_linear Unexecuted instantiation: gxcht.c:colors_are_separable_and_linear Unexecuted instantiation: gxclip.c:colors_are_separable_and_linear Unexecuted instantiation: gxcmap.c:colors_are_separable_and_linear Unexecuted instantiation: gxcpath.c:colors_are_separable_and_linear Unexecuted instantiation: gxdcconv.c:colors_are_separable_and_linear Unexecuted instantiation: gxdcolor.c:colors_are_separable_and_linear Unexecuted instantiation: gxhldevc.c:colors_are_separable_and_linear Unexecuted instantiation: gxfill.c:colors_are_separable_and_linear Unexecuted instantiation: gxht.c:colors_are_separable_and_linear Unexecuted instantiation: gxht_thresh.c:colors_are_separable_and_linear Unexecuted instantiation: gxifast.c:colors_are_separable_and_linear Unexecuted instantiation: gximage.c:colors_are_separable_and_linear Unexecuted instantiation: gximdecode.c:colors_are_separable_and_linear Unexecuted instantiation: gximage1.c:colors_are_separable_and_linear Unexecuted instantiation: gximono.c:colors_are_separable_and_linear Unexecuted instantiation: gxipixel.c:colors_are_separable_and_linear Unexecuted instantiation: gximask.c:colors_are_separable_and_linear Unexecuted instantiation: gxi12bit.c:colors_are_separable_and_linear Unexecuted instantiation: gxi16bit.c:colors_are_separable_and_linear Unexecuted instantiation: gxiscale.c:colors_are_separable_and_linear Unexecuted instantiation: gxpaint.c:colors_are_separable_and_linear Unexecuted instantiation: gxpcopy.c:colors_are_separable_and_linear Unexecuted instantiation: gxsample.c:colors_are_separable_and_linear Unexecuted instantiation: gxstroke.c:colors_are_separable_and_linear Unexecuted instantiation: gdevabuf.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdbit.c:colors_are_separable_and_linear Unexecuted instantiation: gdevddrw.c:colors_are_separable_and_linear gdevdflt.c:colors_are_separable_and_linear Line | Count | Source | 436 | 3.95M | { | 437 | 3.95M | return (info->separable_and_linear >= GX_CINFO_SEP_LIN); | 438 | 3.95M | } |
Unexecuted instantiation: gdevdgbr.c:colors_are_separable_and_linear Unexecuted instantiation: gdevnfwd.c:colors_are_separable_and_linear Unexecuted instantiation: gdevmem.c:colors_are_separable_and_linear Unexecuted instantiation: gdevplnx.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm1.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm2.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm4.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm8.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm16.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm24.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm32.c:colors_are_separable_and_linear Unexecuted instantiation: gdevmpla.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm40.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm48.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm56.c:colors_are_separable_and_linear Unexecuted instantiation: gdevm64.c:colors_are_separable_and_linear Unexecuted instantiation: gdevmx.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdsha.c:colors_are_separable_and_linear Unexecuted instantiation: gxscanc.c:colors_are_separable_and_linear Unexecuted instantiation: gdevdrop.c:colors_are_separable_and_linear Unexecuted instantiation: gdevmr1.c:colors_are_separable_and_linear Unexecuted instantiation: gdevmr2n.c:colors_are_separable_and_linear Unexecuted instantiation: gdevmr8n.c:colors_are_separable_and_linear Unexecuted instantiation: gdevrops.c:colors_are_separable_and_linear Unexecuted instantiation: gsrop.c:colors_are_separable_and_linear Unexecuted instantiation: zcolor1.c:colors_are_separable_and_linear Unexecuted instantiation: zht1.c:colors_are_separable_and_linear Unexecuted instantiation: zupath.c:colors_are_separable_and_linear Unexecuted instantiation: gdevhit.c:colors_are_separable_and_linear Unexecuted instantiation: zdps1.c:colors_are_separable_and_linear Unexecuted instantiation: zchar1.c:colors_are_separable_and_linear Unexecuted instantiation: zcharout.c:colors_are_separable_and_linear Unexecuted instantiation: zfont1.c:colors_are_separable_and_linear Unexecuted instantiation: zusparam.c:colors_are_separable_and_linear Unexecuted instantiation: zchar42.c:colors_are_separable_and_linear Unexecuted instantiation: zfont0.c:colors_are_separable_and_linear Unexecuted instantiation: zfdctd.c:colors_are_separable_and_linear Unexecuted instantiation: zdevice2.c:colors_are_separable_and_linear Unexecuted instantiation: zpcolor.c:colors_are_separable_and_linear Unexecuted instantiation: idisp.c:colors_are_separable_and_linear Unexecuted instantiation: psapi.c:colors_are_separable_and_linear Unexecuted instantiation: zfileio.c:colors_are_separable_and_linear Unexecuted instantiation: zbfont.c:colors_are_separable_and_linear Unexecuted instantiation: zchar.c:colors_are_separable_and_linear Unexecuted instantiation: zcolor.c:colors_are_separable_and_linear Unexecuted instantiation: zdevice.c:colors_are_separable_and_linear Unexecuted instantiation: zfont.c:colors_are_separable_and_linear Unexecuted instantiation: zht.c:colors_are_separable_and_linear Unexecuted instantiation: zimage.c:colors_are_separable_and_linear Unexecuted instantiation: zfapi.c:colors_are_separable_and_linear Unexecuted instantiation: zcsindex.c:colors_are_separable_and_linear Unexecuted instantiation: zht2.c:colors_are_separable_and_linear Unexecuted instantiation: zcssepr.c:colors_are_separable_and_linear Unexecuted instantiation: zfunc4.c:colors_are_separable_and_linear Unexecuted instantiation: zform.c:colors_are_separable_and_linear Unexecuted instantiation: zimage3.c:colors_are_separable_and_linear Unexecuted instantiation: zicc.c:colors_are_separable_and_linear Unexecuted instantiation: ztrans.c:colors_are_separable_and_linear Unexecuted instantiation: zpdfops.c:colors_are_separable_and_linear Unexecuted instantiation: ghostpdf.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_dict.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_array.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_xref.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_int.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_file.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_path.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_colour.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_pattern.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_gstate.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_stack.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_image.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_page.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_annot.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_mark.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_font.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_font0.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_ciddec.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_font1.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_font1C.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_fontps.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_font3.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_fontTT.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_font11.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_cmap.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_fmap.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_text.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_shading.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_func.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_trans.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_device.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_misc.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_optcontent.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_check.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_sec.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_utf8.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_deref.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_repair.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_obj.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_doc.c:colors_are_separable_and_linear Unexecuted instantiation: zfjpx.c:colors_are_separable_and_linear Unexecuted instantiation: imainarg.c:colors_are_separable_and_linear Unexecuted instantiation: gsclipsr.c:colors_are_separable_and_linear Unexecuted instantiation: gscdevn.c:colors_are_separable_and_linear Unexecuted instantiation: gxdevndi.c:colors_are_separable_and_linear Unexecuted instantiation: gxclipm.c:colors_are_separable_and_linear Unexecuted instantiation: gscolor3.c:colors_are_separable_and_linear Unexecuted instantiation: gsptype2.c:colors_are_separable_and_linear Unexecuted instantiation: gsshade.c:colors_are_separable_and_linear Unexecuted instantiation: gxshade1.c:colors_are_separable_and_linear Unexecuted instantiation: gxshade4.c:colors_are_separable_and_linear gxshade6.c:colors_are_separable_and_linear Line | Count | Source | 436 | 237k | { | 437 | 237k | return (info->separable_and_linear >= GX_CINFO_SEP_LIN); | 438 | 237k | } |
Unexecuted instantiation: gscolor1.c:colors_are_separable_and_linear Unexecuted instantiation: gsht1.c:colors_are_separable_and_linear Unexecuted instantiation: gscolor2.c:colors_are_separable_and_linear Unexecuted instantiation: gspcolor.c:colors_are_separable_and_linear Unexecuted instantiation: gxclip2.c:colors_are_separable_and_linear Unexecuted instantiation: gspath1.c:colors_are_separable_and_linear Unexecuted instantiation: gstype42.c:colors_are_separable_and_linear Unexecuted instantiation: gxchrout.c:colors_are_separable_and_linear Unexecuted instantiation: gxttfb.c:colors_are_separable_and_linear Unexecuted instantiation: gzspotan.c:colors_are_separable_and_linear Unexecuted instantiation: gscie.c:colors_are_separable_and_linear Unexecuted instantiation: gscsepr.c:colors_are_separable_and_linear Unexecuted instantiation: gxblend1.c:colors_are_separable_and_linear Unexecuted instantiation: gdevepo.c:colors_are_separable_and_linear Unexecuted instantiation: gxclbits.c:colors_are_separable_and_linear Unexecuted instantiation: gxclrast.c:colors_are_separable_and_linear Unexecuted instantiation: gschar0.c:colors_are_separable_and_linear Unexecuted instantiation: gsfont0.c:colors_are_separable_and_linear Unexecuted instantiation: gstype1.c:colors_are_separable_and_linear Unexecuted instantiation: gxtype1.c:colors_are_separable_and_linear Unexecuted instantiation: gstype2.c:colors_are_separable_and_linear Unexecuted instantiation: gsicc_profilecache.c:colors_are_separable_and_linear Unexecuted instantiation: gdeveprn.c:colors_are_separable_and_linear Unexecuted instantiation: eprnparm.c:colors_are_separable_and_linear Unexecuted instantiation: eprnrend.c:colors_are_separable_and_linear Unexecuted instantiation: eprnfs.c:colors_are_separable_and_linear Unexecuted instantiation: gscicach.c:colors_are_separable_and_linear Unexecuted instantiation: gsdevmem.c:colors_are_separable_and_linear Unexecuted instantiation: gsfont.c:colors_are_separable_and_linear Unexecuted instantiation: gxacpath.c:colors_are_separable_and_linear Unexecuted instantiation: gxccache.c:colors_are_separable_and_linear Unexecuted instantiation: gxccman.c:colors_are_separable_and_linear Unexecuted instantiation: gxidata.c:colors_are_separable_and_linear Unexecuted instantiation: gxpdash.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_loop_detect.c:colors_are_separable_and_linear Unexecuted instantiation: pdf_fapi.c:colors_are_separable_and_linear Unexecuted instantiation: gxshade.c:colors_are_separable_and_linear Unexecuted instantiation: gscscie.c:colors_are_separable_and_linear Unexecuted instantiation: gschar.c:colors_are_separable_and_linear |
439 | | |
440 | | |
441 | | /* NB encoding flag ignored */ |
442 | | #define dci_extended_alpha_values(mcmp, nc, p, d, gi, mg, \ |
443 | | mc, dg, dc, ta, ga, sl, cn) \ |
444 | | {mcmp /* max components */, \ |
445 | | nc /* number components */, \ |
446 | | p /* polarity */, \ |
447 | | d /* depth */, \ |
448 | | gi /* gray index */, \ |
449 | | mg /* max gray */, \ |
450 | | mc /* max color */, \ |
451 | | dg /* dither grays */, \ |
452 | | dc /* dither colors */, \ |
453 | | { ta, ga } /* antialias info text, graphics */, \ |
454 | | sl /* separable_and_linear */, \ |
455 | | { 0 } /* component shift */, \ |
456 | | { 0 } /* component bits */, \ |
457 | | { 0 } /* component mask */, \ |
458 | | cn /* process color name */, \ |
459 | | GX_CINFO_OPMSUPPORTED_UNKNOWN /* opmsupported */, \ |
460 | | 0 /* process_cmps */ } |
461 | | |
462 | | /* |
463 | | * The "has color" macro requires a slightly different definition |
464 | | * with the more general color models. |
465 | | */ |
466 | | #define gx_device_has_color(dev) \ |
467 | 179k | ( (dev)->color_info.num_components > 1 || \ |
468 | 179k | (dev)->color_info.gray_index == GX_CINFO_COMP_NO_INDEX ) |
469 | | |
470 | | /* parameter initialization macros for backwards compatibility */ |
471 | | |
472 | | /* |
473 | | * These macros are needed to define values for fields added when |
474 | | * DeviceN compatibility was added. Previously the graphics |
475 | | * library and the much of the device code examined the number of |
476 | | * components and assume that 1 --> DeviceGray, 3-->DeviceRGB, |
477 | | * and 4--> DeviceCMYK. Since the old device code does not |
478 | | * specify a color model, these macros make the same assumption. |
479 | | * This assumption is incorrect for a DeviceN device and thus |
480 | | * the following macros should not be used. The previously |
481 | | * defined macros should be used for new devices. |
482 | | */ |
483 | | |
484 | | #define dci_std_cm_name(nc) \ |
485 | | ( (nc) == 1 ? "DeviceGray" \ |
486 | | : ((nc) == 3 ? "DeviceRGB" \ |
487 | | : "DeviceCMYK") ) |
488 | | |
489 | | #define dci_std_polarity(nc) \ |
490 | 0 | ( (nc) >= 4 ? GX_CINFO_POLARITY_SUBTRACTIVE \ |
491 | 0 | : GX_CINFO_POLARITY_ADDITIVE ) |
492 | | |
493 | | /* |
494 | | * Get the default gray_index value, based on the number of color |
495 | | * components. Note that this must be consistent with the index |
496 | | * implicitly used by the get_color_comp_index method and the |
497 | | * procedures in the structure returned by the |
498 | | * get_color_mapping_procs method. |
499 | | */ |
500 | | #define dci_std_gray_index(nc) \ |
501 | | ((nc) == 3 ? GX_CINFO_COMP_NO_INDEX : (nc) - 1) |
502 | | |
503 | | #define dci_alpha_values(nc, depth, mg, mc, dg, dc, ta, ga) \ |
504 | | dci_extended_alpha_values(nc, nc, \ |
505 | | dci_std_polarity(nc), \ |
506 | | depth, \ |
507 | | dci_std_gray_index(nc), \ |
508 | | mg, mc, dg, dc, ta, ga, \ |
509 | | GX_CINFO_UNKNOWN_SEP_LIN, \ |
510 | | dci_std_cm_name(nc) ) |
511 | | |
512 | | /* |
513 | | * Determine the depth corresponding to a color_bits specification. |
514 | | * Note that color_bits == 0 ==> depth == 0; surprisingly this |
515 | | * case is used. |
516 | | */ |
517 | | #define dci_std_color_depth(color_bits) \ |
518 | | ((color_bits) == 1 ? 1 : ((color_bits) + 7) & ~7) |
519 | | |
520 | | /* |
521 | | * Determine the number of components corresponding to a color_bits |
522 | | * specification. A device is monochrome only if it is bi-level; |
523 | | * the 4 and 8 bit cases are handled as mapped color displays (for |
524 | | * compatibility with existing code). The peculiar color_bits = 0 |
525 | | * case is considered monochrome, for no apparent reason. |
526 | | */ |
527 | | #define dci_std_color_num_components(color_bits) \ |
528 | | ( (color_bits) <= 1 ? 1 \ |
529 | | : ((color_bits) % 3 == 0 || \ |
530 | | (color_bits) == 4 || \ |
531 | | (color_bits) == 8 ) ? 3 : 4 ) |
532 | | |
533 | | /* |
534 | | * The number of bits assigned to the gray/black color component, |
535 | | * assuming there is such a component. The underlying assumption |
536 | | * is that any extra bits are assigned to this component. |
537 | | */ |
538 | | #define dci_std_gray_bits(nc, color_bits) \ |
539 | | ((color_bits) - ((nc) - 1) * ((color_bits) / (nc))) |
540 | | |
541 | | /* |
542 | | * The number of bits assigned to a color component. The underlying |
543 | | * assumptions are that there is a gray component if nc != 3, and |
544 | | * that the gray component uses any extra bits. |
545 | | */ |
546 | | #define dci_std_color_bits(nc, color_bits) \ |
547 | | ( (nc) == 3 \ |
548 | | ? (color_bits) / (nc) \ |
549 | | : ( (nc) == 1 \ |
550 | | ? 0 \ |
551 | | : ((color_bits) - dci_std_gray_bits(nc, color_bits))\ |
552 | | / ((nc) == 1 ? (1) : (nc) - 1) ) ) |
553 | | |
554 | | /* |
555 | | * Determine the max_gray and max_color values based on the number |
556 | | * of components and the color_bits value. See the comments above |
557 | | * for information on the underlying assumptions. |
558 | | */ |
559 | | #define dci_std_color_max_gray(nc, color_bits) \ |
560 | | ( (nc) == 3 \ |
561 | | ? 0 \ |
562 | | : (1 << dci_std_gray_bits(nc, color_bits)) - 1 ) |
563 | | |
564 | | #define dci_std_color_max_color(nc, color_bits) \ |
565 | | ( (nc) == 1 \ |
566 | | ? 0 \ |
567 | | : (1 << dci_std_color_bits(nc, color_bits)) - 1 ) |
568 | | |
569 | | /* |
570 | | * Define a color model based strictly on the number of bits |
571 | | * available for color representation. Please note, this is only |
572 | | * intended to work for a limited set of devices. |
573 | | */ |
574 | | #define dci_std_color_(nc, color_bits) \ |
575 | | dci_values( nc, \ |
576 | | dci_std_color_depth(color_bits), \ |
577 | | dci_std_color_max_gray(nc, color_bits), \ |
578 | | dci_std_color_max_color(nc, color_bits), \ |
579 | | dci_std_color_max_gray(nc, color_bits) + 1, \ |
580 | | dci_std_color_max_color(nc, color_bits) + 1 ) |
581 | | |
582 | | #define dci_std_color(color_bits) \ |
583 | | dci_std_color_( dci_std_color_num_components(color_bits), \ |
584 | | color_bits ) |
585 | | |
586 | | #define dci_values(nc,depth,mg,mc,dg,dc)\ |
587 | | dci_alpha_values(nc, depth, mg, mc, dg, dc, 1, 1) |
588 | | #define dci_black_and_white dci_std_color(1) |
589 | | #define dci_black_and_white_() dci_black_and_white |
590 | | #define dci_color(depth,maxv,dither)\ |
591 | | dci_values(3, depth, maxv, maxv, dither, dither) |
592 | | |
593 | | /* |
594 | | * Macro to access the name of the process color model. |
595 | | */ |
596 | | #define get_process_color_model_name(dev) \ |
597 | 20.1k | ((dev)->color_info.cm_name) |
598 | | |
599 | | /* Structure for device procedures. */ |
600 | | typedef struct gx_device_procs_s gx_device_procs; |
601 | | |
602 | | /* Structure for page device procedures. */ |
603 | | /* Note that these take the graphics state as a parameter. */ |
604 | | typedef struct gx_page_device_procs_s { |
605 | | |
606 | | #define dev_page_proc_install(proc)\ |
607 | | int proc(gx_device *dev, gs_gstate *pgs) |
608 | | dev_page_proc_install((*install)); |
609 | | |
610 | | #define dev_page_proc_begin_page(proc)\ |
611 | | int proc(gx_device *dev, gs_gstate *pgs) |
612 | | dev_page_proc_begin_page((*begin_page)); |
613 | | |
614 | | #define dev_page_proc_end_page(proc)\ |
615 | | int proc(gx_device *dev, int reason, gs_gstate *pgs) |
616 | | dev_page_proc_end_page((*end_page)); |
617 | | |
618 | | } gx_page_device_procs; |
619 | | |
620 | | /* Default procedures */ |
621 | | dev_page_proc_install(gx_default_install); |
622 | | dev_page_proc_begin_page(gx_default_begin_page); |
623 | | dev_page_proc_end_page(gx_default_end_page); |
624 | | |
625 | | /* ----------- A stroked gradient recognizer data ----------*/ |
626 | | |
627 | | /* This structure is associated with a device for |
628 | | internal needs of the graphics library. |
629 | | The main purpose is to suppress stroke adjustment |
630 | | when painting a gradient as a set of parallel strokes. |
631 | | Such gradients still come from some obsolete 3d party software. |
632 | | See bug 687974, |
633 | | */ |
634 | | |
635 | | typedef struct gx_stroked_gradient_recognizer_s { |
636 | | bool stroke_stored; |
637 | | gs_fixed_point orig[4], adjusted[4]; /* from, to, width, vector. */ |
638 | | } gx_stroked_gradient_recognizer_t; |
639 | | |
640 | | /* ---------------- Device structure ---------------- */ |
641 | | |
642 | | /* |
643 | | * Define the generic device structure. |
644 | | * |
645 | | * All devices start off with no device procs. The initialize_device_procs |
646 | | * function is called as soon as the device is copied from its prototype, |
647 | | * and that fills in the procs table with the device procedure pointers. |
648 | | * This can never fail. |
649 | | * |
650 | | * Next, the 'initialize_device' proc (if there is one) is called to do |
651 | | * the minimal initialization required for a device. |
652 | | * |
653 | | * The choice of the name Margins (rather than, say, HWOffset), and the |
654 | | * specification in terms of a default device resolution rather than |
655 | | * 1/72" units, are due to Adobe. |
656 | | * |
657 | | * ****** NOTE: If you define any subclasses of gx_device, you *must* define |
658 | | * ****** the finalization procedure as gx_device_finalize. Finalization |
659 | | * ****** procedures are not automatically inherited. |
660 | | */ |
661 | | typedef struct gx_device_cached_colors_s { |
662 | | gx_color_index black, white; |
663 | | } gx_device_cached_colors_t; |
664 | | |
665 | | /* |
666 | | * Define the parameters controlling banding. |
667 | | */ |
668 | | /* if you make any additions/changes to this structure you need to make |
669 | | the appropriate additions/changes to gdev_space_params_cmp() */ |
670 | | typedef struct gx_band_params_s { |
671 | | int BandWidth; /* (optional) band width in pixels */ |
672 | | int BandHeight; /* (optional) */ |
673 | | size_t BandBufferSpace; /* (optional) */ |
674 | | size_t tile_cache_size; /* (optional) */ |
675 | | } gx_band_params_t; |
676 | | |
677 | | #define BAND_PARAMS_INITIAL_VALUES 0, 0, 0, 0 |
678 | | |
679 | | typedef enum { |
680 | | BandingAuto = 0, |
681 | | BandingAlways, |
682 | | BandingNever |
683 | | } gdev_banding_type; |
684 | | |
685 | | /* if you make any additions/changes to this structure you need to make |
686 | | the appropriate additions/changes to the gdev_space_params_cmp() */ |
687 | | typedef struct gdev_space_params_s { |
688 | | size_t MaxBitmap; /* max size of non-buffered bitmap */ |
689 | | size_t BufferSpace; /* space to use for buffer */ |
690 | | gx_band_params_t band; /* see gxband.h */ |
691 | | bool params_are_read_only; /* true if put_params may not modify this struct */ |
692 | | gdev_banding_type banding_type; /* used to force banding or bitmap */ |
693 | | } gdev_space_params; |
694 | | |
695 | | /* Returns 0 for a match, non-zero otherwise. Like memcmp, but allowing |
696 | | * for uninitialised padding. */ |
697 | | int gdev_space_params_cmp(const gdev_space_params sp1, |
698 | | const gdev_space_params sp2); |
699 | | |
700 | | typedef struct gdev_nupcontrol_s { |
701 | | rc_header rc; |
702 | | char *nupcontrol_str; /* NUL termintated string */ |
703 | | } gdev_nupcontrol; |
704 | | |
705 | | typedef struct gdev_pagelist_s { |
706 | | rc_header rc; |
707 | | char *Pages; |
708 | | int PagesSize; |
709 | | } gdev_pagelist; |
710 | | |
711 | | #define dev_t_proc_initialize_device_procs(proc, dev_t)\ |
712 | | void proc(dev_t *dev) |
713 | | #define dev_proc_initialize_device_procs(proc)\ |
714 | | dev_t_proc_initialize_device_procs((proc), gx_device) |
715 | | |
716 | | #define gx_device_common\ |
717 | | int params_size; /* OBSOLETE if stype != 0: */\ |
718 | | /* size of this structure */\ |
719 | | dev_proc_initialize_device_procs(*initialize_device_procs);\ |
720 | | /* initialize_device_procs */\ |
721 | | const char *dname; /* the device name */\ |
722 | | gs_memory_t *memory; /* (0 iff static prototype) */\ |
723 | | gs_memory_type_ptr_t stype; /* memory manager structure type, */\ |
724 | | /* may be 0 if static prototype */\ |
725 | | bool stype_is_dynamic; /* if true, free the stype when */\ |
726 | | /* freeing the device */\ |
727 | | void (*finalize)(gx_device *); /* finalization to execute */\ |
728 | | /* before closing device, if any */\ |
729 | | rc_header rc; /* reference count from gstates */\ |
730 | | /* and targets, +1 if retained */\ |
731 | | bool retained; /* true if retained */\ |
732 | | gx_device *parent;\ |
733 | | gx_device *child;\ |
734 | | void *subclass_data; /* Must be immovable, non-GC memory, used to store subclass data */\ |
735 | | gdev_pagelist *PageList;\ |
736 | | bool is_open; /* true if device has been opened */\ |
737 | | int max_fill_band; /* limit on band size for fill, */\ |
738 | | /* must be 0 or a power of 2 */\ |
739 | | /* (see gdevabuf.c for more info) */\ |
740 | | gx_device_color_info color_info; /* color information */\ |
741 | | gx_device_cached_colors_t cached_colors;\ |
742 | | int width; /* width in pixels */\ |
743 | | int height; /* height in pixels */\ |
744 | | int pad; /* pad to use for buffers; 0 for default */\ |
745 | | int log2_align_mod; /* align to use for buffers; 0 for default */\ |
746 | | int is_planar; /* 1 planar, 0 for chunky */\ |
747 | | int LeadingEdge; /* see below */\ |
748 | | float MediaSize[2]; /* media dimensions in points */\ |
749 | | float ImagingBBox[4]; /* imageable region in points */\ |
750 | | bool ImagingBBox_set;\ |
751 | | float HWResolution[2]; /* resolution, dots per inch */\ |
752 | | float Margins[2]; /* offset of physical page corner */\ |
753 | | /* from device coordinate (0,0), */\ |
754 | | /* in units given by HWResolution */\ |
755 | | float HWMargins[4]; /* margins around imageable area, */\ |
756 | | /* in default user units ("points") */\ |
757 | | int FirstPage;\ |
758 | | int LastPage;\ |
759 | | bool PageHandlerPushed; /* Handles FirstPage and LastPage operations */\ |
760 | | bool DisablePageHandler; /* Can be set by the interpreter if it will process FirstPage and LastPage itself */\ |
761 | | int ObjectFilter; /* Bit field for which object filters to apply */\ |
762 | | bool ObjectHandlerPushed; /* Handles filtering of objects to devices */\ |
763 | | gdev_nupcontrol *NupControl;\ |
764 | | bool NupHandlerPushed; /* Handles Nup operations */\ |
765 | | long PageCount; /* number of pages written */\ |
766 | | long ShowpageCount; /* number of calls on showpage */\ |
767 | | int NumCopies;\ |
768 | | bool NumCopies_set;\ |
769 | | bool IgnoreNumCopies; /* if true, force num_copies = 1 */\ |
770 | | bool UseCIEColor; /* for PS LL3 */\ |
771 | | bool LockSafetyParams; /* If true, prevent unsafe changes */\ |
772 | | long band_offset_x; /* offsets of clist band base to (mem device) buffer */\ |
773 | | long band_offset_y; /* for rendering that is phase sensitive (old wtsimdi) */\ |
774 | | bool BLS_force_memory;\ |
775 | | gx_stroked_gradient_recognizer_t sgr;\ |
776 | | size_t MaxPatternBitmap; /* Threshold for switching to pattern_clist mode */\ |
777 | | bool page_uses_transparency; /* PDF 1.4 transparency is used. */\ |
778 | | bool page_uses_overprint; /* overprint is used. */\ |
779 | | gdev_space_params space_params;\ |
780 | | cmm_dev_profile_t *icc_struct; /* object dependent profiles */\ |
781 | | gs_graphics_type_tag_t graphics_type_tag; /* e.g. vector, image or text */\ |
782 | | int interpolate_control; /* default 1 (use image /Interpolate value), 0 is NOINTERPOLATE. */\ |
783 | | /* > 1 limits interpolation, < 0 forces interpolation */\ |
784 | | gx_page_device_procs page_procs; /* must be last */\ |
785 | | /* end of std_device_body */\ |
786 | | gx_device_procs procs /* object procedures */ |
787 | | |
788 | 183k | #define LEADINGEDGE_MASK 3 |
789 | 20.1k | #define LEADINGEDGE_SET_MASK (1 << 2) |
790 | 6.32k | #define LEADINGEDGE_REQ_BIT (1 << 3) |
791 | 0 | #define LEADINGEDGE_REQ_VAL_SHIFT 4 |
792 | 0 | #define LEADINGEDGE_REQ_VAL (LEADINGEDGE_MASK << LEADINGEDGE_REQ_VAL_SHIFT) |
793 | | /* |
794 | | * The lower two bits of LeadingEdge correspond to the pagedevice |
795 | | * parameter of the same name. The next bit (hex value 4) is set if |
796 | | * the LeadingEdge was set explicitly by the user using setpagedevice. |
797 | | * Otherwise, the value is the default as determined by the device (or |
798 | | * zero if the device has no logic for setting LeadingEdge based on |
799 | | * other parameters (such as %MediaSource). This field replaces the |
800 | | * earlier TrayOrientation, which had a similar purpose but was not |
801 | | * compatible with the PostScript spec. |
802 | | */ |
803 | | |
804 | | /* |
805 | | * Note: x/y_pixels_per_inch are here only for backward compatibility. |
806 | | * They should not be used in new code. |
807 | | */ |
808 | 0 | #define x_pixels_per_inch HWResolution[0] |
809 | 0 | #define y_pixels_per_inch HWResolution[1] |
810 | | #define offset_margin_values(x, y, left, bot, right, top)\ |
811 | | {x, y}, {left, bot, right, top} |
812 | | #define margin_values(left, bot, right, top)\ |
813 | | offset_margin_values(0, 0, left, bot, right, top) |
814 | | #define no_margins margin_values(0, 0, 0, 0) |
815 | | #define no_margins_() no_margins |
816 | | /* Define macros that give the page offset ("Margins") in inches. */ |
817 | | #define dev_x_offset(dev) ((dev)->Margins[0] / (dev)->HWResolution[0]) |
818 | 0 | #define dev_y_offset(dev) ((dev)->Margins[1] / (dev)->HWResolution[1]) |
819 | | #define dev_y_offset_points(dev) (dev_y_offset(dev) * 72.0) |
820 | | /* Note that left/right/top/bottom are defined relative to */ |
821 | | /* the physical paper, not the coordinate system. */ |
822 | | /* For backward compatibility, we define macros that give */ |
823 | | /* the margins in inches. */ |
824 | 0 | #define dev_l_margin(dev) ((dev)->HWMargins[0] / 72.0) |
825 | 0 | #define dev_b_margin(dev) ((dev)->HWMargins[1] / 72.0) |
826 | | #define dev_b_margin_points(dev) ((dev)->HWMargins[1]) |
827 | 0 | #define dev_r_margin(dev) ((dev)->HWMargins[2] / 72.0) |
828 | 0 | #define dev_t_margin(dev) ((dev)->HWMargins[3] / 72.0) |
829 | | #define dev_t_margin_points(dev) ((dev)->HWMargins[3]) |
830 | | /* The extra () are to prevent premature expansion. */ |
831 | | #define open_init_closed() 0 /*false*/, 0 /* max_fill_band */ |
832 | | #define open_init_open() 1 /*true*/, 0 /* max_fill_band */ |
833 | | /* Accessors for device procedures */ |
834 | 1.08G | #define dev_proc(dev, p) ((dev)->procs.p) |
835 | 259M | #define set_dev_proc(dev, p, proc) ((dev)->procs.p = (proc)) |
836 | | #define fill_dev_proc(dev, p, dproc)\ |
837 | 220M | if ( dev_proc(dev, p) == 0 ) set_dev_proc(dev, p, dproc) |
838 | | #define assign_dev_procs(todev, fromdev)\ |
839 | 0 | ((todev)->procs = (fromdev)->procs) |
840 | | |
841 | | /* The bit fields used to filter objects out. If any bit field is set |
842 | | * then objects of that type will not be rendered/output. |
843 | | */ |
844 | | typedef enum FILTER_FLAGS { |
845 | | FILTERIMAGE = 1, |
846 | | FILTERTEXT = 2, |
847 | | FILTERVECTOR = 4 |
848 | | } OBJECT_FILTER_FLAGS; |
849 | | |
850 | | /* ---------------- Device procedures ---------------- */ |
851 | | |
852 | | /* |
853 | | * Definition of device procedures. |
854 | | * Note that the gx_device * argument is not declared const, |
855 | | * because many drivers maintain dynamic state in the device structure. |
856 | | * Note also that the structure is defined as a template, so that |
857 | | * we can instantiate it with device subclasses. |
858 | | * Because C doesn't have real templates, we must do this with macros. |
859 | | */ |
860 | | |
861 | | /* Define macros for declaring device procedures. */ |
862 | | |
863 | | #define dev_t_proc_initialize_device(proc, dev_t)\ |
864 | | int proc(dev_t *dev) |
865 | | #define dev_proc_initialize_device(proc)\ |
866 | | dev_t_proc_initialize_device(proc, gx_device) |
867 | | |
868 | | #define dev_t_proc_open_device(proc, dev_t)\ |
869 | | int proc(dev_t *dev) |
870 | | #define dev_proc_open_device(proc)\ |
871 | | dev_t_proc_open_device(proc, gx_device) |
872 | | |
873 | | #define dev_t_proc_get_initial_matrix(proc, dev_t)\ |
874 | | void proc(dev_t *dev, gs_matrix *pmat) |
875 | | #define dev_proc_get_initial_matrix(proc)\ |
876 | | dev_t_proc_get_initial_matrix(proc, gx_device) |
877 | | |
878 | | #define dev_t_proc_sync_output(proc, dev_t)\ |
879 | | int proc(dev_t *dev) |
880 | | #define dev_proc_sync_output(proc)\ |
881 | | dev_t_proc_sync_output(proc, gx_device) |
882 | | |
883 | | #define dev_t_proc_output_page(proc, dev_t)\ |
884 | | int proc(dev_t *dev, int num_copies, int flush) |
885 | | #define dev_proc_output_page(proc)\ |
886 | | dev_t_proc_output_page(proc, gx_device) |
887 | | |
888 | | #define dev_t_proc_close_device(proc, dev_t)\ |
889 | | int proc(dev_t *dev) |
890 | | #define dev_proc_close_device(proc)\ |
891 | | dev_t_proc_close_device(proc, gx_device) |
892 | | |
893 | | #define dev_t_proc_map_rgb_color(proc, dev_t)\ |
894 | 2.97M | gx_color_index proc(dev_t *dev, const gx_color_value cv[]) |
895 | | #define dev_proc_map_rgb_color(proc)\ |
896 | 2.97M | dev_t_proc_map_rgb_color(proc, gx_device) |
897 | | |
898 | | #define dev_t_proc_map_color_rgb(proc, dev_t)\ |
899 | 2.97M | int proc(dev_t *dev,\ |
900 | 2.97M | gx_color_index color, gx_color_value rgb[3]) |
901 | | #define dev_proc_map_color_rgb(proc)\ |
902 | 2.97M | dev_t_proc_map_color_rgb(proc, gx_device) |
903 | | |
904 | | #define dev_t_proc_fill_rectangle(proc, dev_t)\ |
905 | 3.10M | int proc(dev_t *dev,\ |
906 | 3.10M | int x, int y, int width, int height, gx_color_index color) |
907 | | #define dev_proc_fill_rectangle(proc)\ |
908 | 3.10M | dev_t_proc_fill_rectangle(proc, gx_device) |
909 | | |
910 | | #define dev_t_proc_copy_mono(proc, dev_t)\ |
911 | 1.42M | int proc(dev_t *dev,\ |
912 | 1.42M | const byte *data, int data_x, int raster, gx_bitmap_id id,\ |
913 | 1.42M | int x, int y, int width, int height,\ |
914 | 1.42M | gx_color_index color0, gx_color_index color1) |
915 | | #define dev_proc_copy_mono(proc)\ |
916 | 1.42M | dev_t_proc_copy_mono(proc, gx_device) |
917 | | |
918 | | #define dev_t_proc_copy_color(proc, dev_t)\ |
919 | 1.30M | int proc(dev_t *dev,\ |
920 | 1.30M | const byte *data, int data_x, int raster, gx_bitmap_id id,\ |
921 | 1.30M | int x, int y, int width, int height) |
922 | | #define dev_proc_copy_color(proc)\ |
923 | 1.30M | dev_t_proc_copy_color(proc, gx_device) |
924 | | |
925 | | /* Added in release 2.4, changed in 2.8, */ |
926 | | /* renamed in 2.9.6 */ |
927 | | |
928 | | #define dev_t_proc_get_params(proc, dev_t)\ |
929 | | int proc(dev_t *dev, gs_param_list *plist) |
930 | | #define dev_proc_get_params(proc)\ |
931 | | dev_t_proc_get_params(proc, gx_device) |
932 | | |
933 | | #define dev_t_proc_put_params(proc, dev_t)\ |
934 | | int proc(dev_t *dev, gs_param_list *plist) |
935 | | #define dev_proc_put_params(proc)\ |
936 | | dev_t_proc_put_params(proc, gx_device) |
937 | | |
938 | | /* Added in release 2.6 */ |
939 | | |
940 | | #define dev_t_proc_map_cmyk_color(proc, dev_t)\ |
941 | 2.97M | gx_color_index proc(dev_t *dev, const gx_color_value cv[]) |
942 | | #define dev_proc_map_cmyk_color(proc)\ |
943 | 2.97M | dev_t_proc_map_cmyk_color(proc, gx_device) |
944 | | |
945 | | /* Added in release 2.8.1 */ |
946 | | |
947 | | #define dev_t_proc_get_page_device(proc, dev_t)\ |
948 | | gx_device *proc(dev_t *dev) |
949 | | #define dev_proc_get_page_device(proc)\ |
950 | | dev_t_proc_get_page_device(proc, gx_device) |
951 | | |
952 | | /* Added in release 3.20, OBSOLETED in 5.65 */ |
953 | | /* 'Unobsoleted' in 9.55. */ |
954 | | |
955 | | #define dev_t_proc_get_alpha_bits(proc, dev_t)\ |
956 | | int proc(dev_t *dev, graphics_object_type type) |
957 | | #define dev_proc_get_alpha_bits(proc)\ |
958 | | dev_t_proc_get_alpha_bits(proc, gx_device) |
959 | | |
960 | | /* Added in release 3.20 */ |
961 | | |
962 | | #define dev_t_proc_copy_alpha(proc, dev_t)\ |
963 | 0 | int proc(dev_t *dev, const byte *data, int data_x,\ |
964 | 0 | int raster, gx_bitmap_id id, int x, int y, int width, int height,\ |
965 | 0 | gx_color_index color, int depth) |
966 | | #define dev_proc_copy_alpha(proc)\ |
967 | 0 | dev_t_proc_copy_alpha(proc, gx_device) |
968 | | |
969 | | /* Added in release 3.60, changed in 3.68. */ |
970 | | |
971 | | #define dev_t_proc_fill_path(proc, dev_t)\ |
972 | 29.8k | int proc(dev_t *dev,\ |
973 | 29.8k | const gs_gstate *pgs, gx_path *ppath,\ |
974 | 29.8k | const gx_fill_params *params,\ |
975 | 29.8k | const gx_drawing_color *pdcolor, const gx_clip_path *pcpath) |
976 | | #define dev_proc_fill_path(proc)\ |
977 | 29.8k | dev_t_proc_fill_path(proc, gx_device) |
978 | | |
979 | | #define dev_t_proc_stroke_path(proc, dev_t)\ |
980 | 25.9k | int proc(dev_t *dev,\ |
981 | 25.9k | const gs_gstate *pgs, gx_path *ppath,\ |
982 | 25.9k | const gx_stroke_params *params,\ |
983 | 25.9k | const gx_drawing_color *pdcolor, const gx_clip_path *pcpath) |
984 | | #define dev_proc_stroke_path(proc)\ |
985 | 25.9k | dev_t_proc_stroke_path(proc, gx_device) |
986 | | |
987 | | /* Added in release 9.22 */ |
988 | | |
989 | | #define dev_t_proc_fill_stroke_path(proc, dev_t)\ |
990 | 1.16k | int proc(dev_t *dev,\ |
991 | 1.16k | const gs_gstate *pgs, gx_path *ppath,\ |
992 | 1.16k | const gx_fill_params *fill_params,\ |
993 | 1.16k | const gx_drawing_color *pdcolor_fill,\ |
994 | 1.16k | const gx_stroke_params *stroke_params,\ |
995 | 1.16k | const gx_drawing_color *pdcolor_stroke,\ |
996 | 1.16k | const gx_clip_path *pcpath) |
997 | | #define dev_proc_fill_stroke_path(proc)\ |
998 | 1.16k | dev_t_proc_fill_stroke_path(proc, gx_device) |
999 | | |
1000 | | /* Added in release 9.57 */ |
1001 | | |
1002 | | #define dev_t_proc_lock_pattern(proc, dev_t)\ |
1003 | 0 | int proc(dev_t *dev,\ |
1004 | 0 | gs_gstate *pgs,\ |
1005 | 0 | gs_id pattern_id,\ |
1006 | 0 | int lock) |
1007 | | #define dev_proc_lock_pattern(proc)\ |
1008 | 0 | dev_t_proc_lock_pattern(proc, gx_device) |
1009 | | |
1010 | | /* Added in release 3.60 */ |
1011 | | |
1012 | | #define dev_t_proc_fill_mask(proc, dev_t)\ |
1013 | 0 | int proc(dev_t *dev,\ |
1014 | 0 | const byte *data, int data_x, int raster, gx_bitmap_id id,\ |
1015 | 0 | int x, int y, int width, int height,\ |
1016 | 0 | const gx_drawing_color *pdcolor, int depth,\ |
1017 | 0 | gs_logical_operation_t lop, const gx_clip_path *pcpath) |
1018 | | #define dev_proc_fill_mask(proc)\ |
1019 | 0 | dev_t_proc_fill_mask(proc, gx_device) |
1020 | | |
1021 | | /* Added in release 3.66, changed in 3.69 */ |
1022 | | |
1023 | | #define dev_t_proc_fill_trapezoid(proc, dev_t)\ |
1024 | 58.1k | int proc(dev_t *dev,\ |
1025 | 58.1k | const gs_fixed_edge *left, const gs_fixed_edge *right,\ |
1026 | 58.1k | fixed ybot, fixed ytop, bool swap_axes,\ |
1027 | 58.1k | const gx_drawing_color *pdcolor, gs_logical_operation_t lop) |
1028 | | #define dev_proc_fill_trapezoid(proc)\ |
1029 | 58.1k | dev_t_proc_fill_trapezoid(proc, gx_device) |
1030 | | |
1031 | | #define dev_t_proc_fill_parallelogram(proc, dev_t)\ |
1032 | 86 | int proc(dev_t *dev,\ |
1033 | 86 | fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by,\ |
1034 | 86 | const gx_drawing_color *pdcolor, gs_logical_operation_t lop) |
1035 | | #define dev_proc_fill_parallelogram(proc)\ |
1036 | 86 | dev_t_proc_fill_parallelogram(proc, gx_device) |
1037 | | |
1038 | | #define dev_t_proc_fill_triangle(proc, dev_t)\ |
1039 | 0 | int proc(dev_t *dev,\ |
1040 | 0 | fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by,\ |
1041 | 0 | const gx_drawing_color *pdcolor, gs_logical_operation_t lop) |
1042 | | #define dev_proc_fill_triangle(proc)\ |
1043 | 0 | dev_t_proc_fill_triangle(proc, gx_device) |
1044 | | |
1045 | | /* adjustx and adjusty were added in 8.71 to get around a |
1046 | | * problem with PCL (Bug 691030). In the fullness of time |
1047 | | * hopefully PCL can be fixed to not need them and they can |
1048 | | * be removed again. */ |
1049 | | |
1050 | | #define dev_t_proc_draw_thin_line(proc, dev_t)\ |
1051 | 0 | int proc(dev_t *dev,\ |
1052 | 0 | fixed fx0, fixed fy0, fixed fx1, fixed fy1,\ |
1053 | 0 | const gx_drawing_color *pdcolor, gs_logical_operation_t lop,\ |
1054 | 0 | fixed adjustx, fixed adjusty) |
1055 | | #define dev_proc_draw_thin_line(proc)\ |
1056 | 0 | dev_t_proc_draw_thin_line(proc, gx_device) |
1057 | | |
1058 | | /* Added in release 3.68 */ |
1059 | | |
1060 | | #define dev_t_proc_strip_tile_rectangle(proc, dev_t)\ |
1061 | 0 | int proc(dev_t *dev,\ |
1062 | 0 | const gx_strip_bitmap *tiles, int x, int y, int width, int height,\ |
1063 | 0 | gx_color_index color0, gx_color_index color1,\ |
1064 | 0 | int phase_x, int phase_y) |
1065 | | #define dev_proc_strip_tile_rectangle(proc)\ |
1066 | 0 | dev_t_proc_strip_tile_rectangle(proc, gx_device) |
1067 | | |
1068 | | /* Added in release 4.20 */ |
1069 | | |
1070 | | #define dev_t_proc_get_clipping_box(proc, dev_t)\ |
1071 | | void proc(dev_t *dev, gs_fixed_rect *pbox) |
1072 | | #define dev_proc_get_clipping_box(proc)\ |
1073 | | dev_t_proc_get_clipping_box(proc, gx_device) |
1074 | | |
1075 | | /* Added in release 5.20, changed in 5.23 */ |
1076 | | |
1077 | | #define dev_t_proc_begin_typed_image(proc, dev_t)\ |
1078 | 2.66k | int proc(dev_t *dev,\ |
1079 | 2.66k | const gs_gstate *pgs, const gs_matrix *pmat,\ |
1080 | 2.66k | const gs_image_common_t *pim, const gs_int_rect *prect,\ |
1081 | 2.66k | const gx_drawing_color *pdcolor, const gx_clip_path *pcpath,\ |
1082 | 2.66k | gs_memory_t *memory, gx_image_enum_common_t **pinfo) |
1083 | | #define dev_proc_begin_typed_image(proc)\ |
1084 | 2.66k | dev_t_proc_begin_typed_image(proc, gx_device) |
1085 | | |
1086 | | /* Added in release 5.20 */ |
1087 | | |
1088 | | #define dev_t_proc_get_bits_rectangle(proc, dev_t)\ |
1089 | 0 | int proc(dev_t *dev, const gs_int_rect *prect,\ |
1090 | 0 | gs_get_bits_params_t *params) |
1091 | | #define dev_proc_get_bits_rectangle(proc)\ |
1092 | 0 | dev_t_proc_get_bits_rectangle(proc, gx_device) |
1093 | | |
1094 | | #define dev_t_proc_composite(proc, dev_t)\ |
1095 | | int proc(dev_t *dev,\ |
1096 | | gx_device **pcdev, const gs_composite_t *pcte,\ |
1097 | | gs_gstate *pgs, gs_memory_t *memory, gx_device *cdev) |
1098 | | #define dev_proc_composite(proc)\ |
1099 | | dev_t_proc_composite(proc, gx_device)\ |
1100 | | |
1101 | | /* Added in release 5.23 */ |
1102 | | |
1103 | | #define dev_t_proc_get_hardware_params(proc, dev_t)\ |
1104 | | int proc(dev_t *dev, gs_param_list *plist) |
1105 | | #define dev_proc_get_hardware_params(proc)\ |
1106 | | dev_t_proc_get_hardware_params(proc, gx_device) |
1107 | | |
1108 | | /* Added in release 5.24 */ |
1109 | | |
1110 | | /* ... text_begin ... see gstext.h for definition */ |
1111 | | |
1112 | | /* Added in release 6.61 (raph) */ |
1113 | | |
1114 | | /* |
1115 | | This area of the transparency facilities is in flux. Here is a proposal |
1116 | | for extending the driver interface. |
1117 | | */ |
1118 | | |
1119 | | /* |
1120 | | Push the current transparency state (*ppts) onto the associated stack, |
1121 | | and set *ppts to a new transparency state of the given dimension. The |
1122 | | transparency state may copy some or all of the gs_gstate, such as the |
1123 | | current alpha and/or transparency mask values, and definitely copies the |
1124 | | parameters. |
1125 | | */ |
1126 | | #define dev_t_proc_begin_transparency_group(proc, dev_t)\ |
1127 | | int proc(gx_device *dev,\ |
1128 | | const gs_transparency_group_params_t *ptgp,\ |
1129 | | const gs_rect *pbbox,\ |
1130 | | gs_gstate *pgs,\ |
1131 | | gs_memory_t *mem) |
1132 | | #define dev_proc_begin_transparency_group(proc)\ |
1133 | | dev_t_proc_begin_transparency_group(proc, gx_device) |
1134 | | |
1135 | | /* |
1136 | | End a transparency group: blend the top element of the transparency |
1137 | | stack, which must be a group, into the next-to-top element, popping the |
1138 | | stack. If the stack only had a single element, blend into the device |
1139 | | output. Set *ppts to 0 iff the stack is now empty. If end_group fails, |
1140 | | the stack is *not* popped. |
1141 | | */ |
1142 | | #define dev_t_proc_end_transparency_group(proc, dev_t)\ |
1143 | | int proc(gx_device *dev,\ |
1144 | | gs_gstate *pgs) |
1145 | | #define dev_proc_end_transparency_group(proc)\ |
1146 | | dev_t_proc_end_transparency_group(proc, gx_device) |
1147 | | |
1148 | | /* |
1149 | | Push the transparency state and prepare to render a transparency mask. |
1150 | | This is similar to begin_transparency_group except that it only |
1151 | | accumulates coverage values, not full pixel values. |
1152 | | */ |
1153 | | #define dev_t_proc_begin_transparency_mask(proc, dev_t)\ |
1154 | | int proc(gx_device *dev,\ |
1155 | | const gx_transparency_mask_params_t *ptmp,\ |
1156 | | const gs_rect *pbbox,\ |
1157 | | gs_gstate *pgs,\ |
1158 | | gs_memory_t *mem) |
1159 | | #define dev_proc_begin_transparency_mask(proc)\ |
1160 | | dev_t_proc_begin_transparency_mask(proc, gx_device) |
1161 | | |
1162 | | /* |
1163 | | Store a pointer to the rendered transparency mask into *pptm, popping the |
1164 | | stack like end_group. Normally, the client will follow this by using |
1165 | | rc_assign to store the rendered mask into pgs->{opacity,shape}.mask. If |
1166 | | end_mask fails, the stack is *not* popped. |
1167 | | */ |
1168 | | #define dev_t_proc_end_transparency_mask(proc, dev_t)\ |
1169 | | int proc(gx_device *dev,\ |
1170 | | gs_gstate *pgs) |
1171 | | #define dev_proc_end_transparency_mask(proc)\ |
1172 | | dev_t_proc_end_transparency_mask(proc, gx_device) |
1173 | | |
1174 | | /* |
1175 | | This will clean up the entire device allocations as something went |
1176 | | wrong in the middle of reading in the source content while we are dealing with |
1177 | | a transparency device. |
1178 | | */ |
1179 | | #define dev_t_proc_discard_transparency_layer(proc, dev_t)\ |
1180 | | int proc(gx_device *dev,\ |
1181 | | gs_gstate *pgs) |
1182 | | #define dev_proc_discard_transparency_layer(proc)\ |
1183 | | dev_t_proc_discard_transparency_layer(proc, gx_device) |
1184 | | |
1185 | | /* (end of transparency driver interface extensions) */ |
1186 | | |
1187 | | /* (start of DeviceN color support) */ |
1188 | | /* |
1189 | | * The following macros are defined in gxcmap.h |
1190 | | * |
1191 | | * dev_t_proc_get_color_mapping_procs |
1192 | | * dev_proc_get_color_mapping_procs |
1193 | | * dev_t_proc_get_color_comp_index |
1194 | | * dev_proc_get_color_comp_index |
1195 | | * dev_t_proc_encode_color |
1196 | | * dev_proc_encode_color |
1197 | | * dev_t_proc_decode_color |
1198 | | * dev_proc_decode_color |
1199 | | */ |
1200 | | /* (end of DeviceN color support) */ |
1201 | | |
1202 | | /* |
1203 | | Fill rectangle with a high level color. |
1204 | | Return rangecheck, if the device can't handle the high level color. |
1205 | | |
1206 | | The graphics library calls this function with degenerate (widths=0) |
1207 | | rectangles, to know whether the device can handle a rectangle with |
1208 | | the high level color. The device should skip such rectangles returning |
1209 | | a proper code. |
1210 | | |
1211 | | Currently this function is used with gs_rectfill and gs_fillpage. It is |
1212 | | also used for the handling of the devn color type for supporting |
1213 | | large number of spot colorants to planar separation devices. |
1214 | | |
1215 | | */ |
1216 | | |
1217 | | #define dev_t_proc_fill_rectangle_hl_color(proc, dev_t)\ |
1218 | | int proc(dev_t *dev, const gs_fixed_rect *rect, \ |
1219 | | const gs_gstate *pgs, const gx_drawing_color *pdcolor, \ |
1220 | | const gx_clip_path *pcpath) |
1221 | | #define dev_proc_fill_rectangle_hl_color(proc)\ |
1222 | | dev_t_proc_fill_rectangle_hl_color(proc, gx_device) |
1223 | | |
1224 | | /* |
1225 | | Include a color space into the output. |
1226 | | This function is used to include DefaultGray, DefaultRGB, |
1227 | | DefaultCMYK into PDF, PS, EPS output. |
1228 | | Low level devices should ignore this call. |
1229 | | */ |
1230 | | |
1231 | | #define dev_t_proc_include_color_space(proc, dev_t)\ |
1232 | | int proc(dev_t *dev, gs_color_space *cspace, const byte *res_name, int name_length) |
1233 | | #define dev_proc_include_color_space(proc)\ |
1234 | | dev_t_proc_include_color_space(proc, gx_device) |
1235 | | |
1236 | | /* Shading support. */ |
1237 | | |
1238 | | typedef struct gs_fill_attributes_s { |
1239 | | const gs_fixed_rect *clip; |
1240 | | bool swap_axes; |
1241 | | const gx_device_halftone *ht; /* Reserved for possible use in future. */ |
1242 | | gs_logical_operation_t lop; /* Reserved for possible use in future. */ |
1243 | | fixed ystart, yend; /* Only for X-independent gradients. Base coordinates of the gradient. */ |
1244 | | patch_fill_state_t *pfs; /* For gx_fill_triangle_small. Clients must not change. */ |
1245 | | } gs_fill_attributes; |
1246 | | |
1247 | | /* Fill a linear color scanline. */ |
1248 | | |
1249 | | #define dev_t_proc_fill_linear_color_scanline(proc, dev_t)\ |
1250 | 0 | int proc(dev_t *dev, const gs_fill_attributes *fa,\ |
1251 | 0 | int i, int j, int w, /* scanline coordinates and width */\ |
1252 | 0 | const frac31 *c0, /* initial color for the pixel (i,j), the integer part */\ |
1253 | 0 | const int32_t *c0_f, /* initial color for the pixel (i,j), the fraction part numerator */\ |
1254 | 0 | const int32_t *cg_num, /* color gradient numerator */\ |
1255 | 0 | int32_t cg_den /* color gradient denominator */) |
1256 | | #define dev_proc_fill_linear_color_scanline(proc)\ |
1257 | 0 | dev_t_proc_fill_linear_color_scanline(proc, gx_device) |
1258 | | |
1259 | | /* Fill a linear color trapezoid. */ |
1260 | | /* The server assumes a strongly linear color, |
1261 | | i.e. it can ignore any of c0, c1, c2, c3. */ |
1262 | | /* [p0 : p1] - left edge, from bottom to top. |
1263 | | [p2 : p3] - right edge, from bottom to top. |
1264 | | The filled area is within Y-spans of both edges. */ |
1265 | | /* Either (c0 and c1) or (c2 and c3) may be NULL. |
1266 | | In this case the color doesn't depend on X (on Y if fa->swap_axes). |
1267 | | In this case the base coordinates for the color gradient |
1268 | | may be unequal to p0, p1, p2, p3, and must be provided/taken |
1269 | | in/from fa->ystart, fa->yend. |
1270 | | The return value 0 is not allowed in this case. */ |
1271 | | /* Return values : |
1272 | | 1 - success; |
1273 | | 0 - Too big. The area isn't filled. The client must decompose the area. |
1274 | | <0 - error. |
1275 | | */ |
1276 | | |
1277 | | #define dev_t_proc_fill_linear_color_trapezoid(proc, dev_t)\ |
1278 | 0 | int proc(dev_t *dev, const gs_fill_attributes *fa,\ |
1279 | 0 | const gs_fixed_point *p0, const gs_fixed_point *p1,\ |
1280 | 0 | const gs_fixed_point *p2, const gs_fixed_point *p3,\ |
1281 | 0 | const frac31 *c0, const frac31 *c1,\ |
1282 | 0 | const frac31 *c2, const frac31 *c3) |
1283 | | #define dev_proc_fill_linear_color_trapezoid(proc)\ |
1284 | 0 | dev_t_proc_fill_linear_color_trapezoid(proc, gx_device) |
1285 | | |
1286 | | /* Fill a linear color triangle. */ |
1287 | | /* Return values : |
1288 | | 1 - success; |
1289 | | 0 - Too big. The area isn't filled. The client must decompose the area. |
1290 | | <0 - error. |
1291 | | */ |
1292 | | |
1293 | | #define dev_t_proc_fill_linear_color_triangle(proc, dev_t)\ |
1294 | 0 | int proc(dev_t *dev, const gs_fill_attributes *fa,\ |
1295 | 0 | const gs_fixed_point *p0, const gs_fixed_point *p1,\ |
1296 | 0 | const gs_fixed_point *p2,\ |
1297 | 0 | const frac31 *c0, const frac31 *c1, const frac31 *c2) |
1298 | | #define dev_proc_fill_linear_color_triangle(proc)\ |
1299 | 0 | dev_t_proc_fill_linear_color_triangle(proc, gx_device) |
1300 | | |
1301 | | /* |
1302 | | * Update the equivalent colors for spot colors in a color space. The default |
1303 | | * procedure does nothing. However this routine provides a method for devices |
1304 | | * to determine an equivalent color for a spot color. See comments at the |
1305 | | * start of src/gsequivc.c. |
1306 | | */ |
1307 | | #define dev_t_proc_update_spot_equivalent_colors(proc, dev_t)\ |
1308 | | int proc(dev_t *dev, const gs_gstate * pgs, const gs_color_space *pcs) |
1309 | | #define dev_proc_update_spot_equivalent_colors(proc)\ |
1310 | | dev_t_proc_update_spot_equivalent_colors(proc, gx_device) |
1311 | | |
1312 | | /* |
1313 | | * return a pointer to the devn_params section of a device. Return NULL |
1314 | | * if this field is not present within the device. |
1315 | | */ |
1316 | | typedef struct gs_devn_params_s gs_devn_params; |
1317 | | |
1318 | | #define dev_t_proc_ret_devn_params(proc, dev_t)\ |
1319 | | gs_devn_params * proc(dev_t *dev) |
1320 | | #define dev_proc_ret_devn_params(proc)\ |
1321 | | dev_t_proc_ret_devn_params(proc, gx_device) |
1322 | | #define dev_proc_ret_devn_params_const(proc)\ |
1323 | | const dev_t_proc_ret_devn_params(proc, const gx_device) |
1324 | | |
1325 | | /* |
1326 | | * Erase page. |
1327 | | */ |
1328 | | |
1329 | | #define dev_t_proc_fillpage(proc, dev_t)\ |
1330 | 0 | int proc(gx_device *dev, gs_gstate * pgs, gx_device_color *pdevc) |
1331 | | #define dev_proc_fillpage(proc)\ |
1332 | 0 | dev_t_proc_fillpage(proc, gx_device) |
1333 | | |
1334 | | #define dev_t_proc_push_transparency_state(proc, dev_t)\ |
1335 | | int proc(gx_device *dev,\ |
1336 | | gs_gstate *pgs) |
1337 | | #define dev_proc_push_transparency_state(proc)\ |
1338 | | dev_t_proc_push_transparency_state(proc, gx_device) |
1339 | | |
1340 | | #define dev_t_proc_pop_transparency_state(proc, dev_t)\ |
1341 | | int proc(gx_device *dev,\ |
1342 | | gs_gstate *pgs) |
1343 | | #define dev_proc_pop_transparency_state(proc)\ |
1344 | | dev_t_proc_pop_transparency_state(proc, gx_device) |
1345 | | |
1346 | | #define dev_t_proc_put_image(proc, dev_t)\ |
1347 | | int proc(gx_device *dev, gx_device *mdev, const byte **buffers, int num_chan, int x, int y,\ |
1348 | | int width, int height, int row_stride,\ |
1349 | | int alpha_plane_index, int tag_plane_index) |
1350 | | #define dev_proc_put_image(proc)\ |
1351 | | dev_t_proc_put_image(proc, gx_device) |
1352 | | |
1353 | | #define dev_t_proc_dev_spec_op(proc, dev_t)\ |
1354 | 0 | int proc(gx_device *dev, int op, void *data, int datasize) |
1355 | | #define dev_proc_dev_spec_op(proc)\ |
1356 | | dev_t_proc_dev_spec_op(proc, gx_device) |
1357 | | |
1358 | | #define dev_t_proc_copy_planes(proc, dev_t)\ |
1359 | 1.30M | int proc(dev_t *dev,\ |
1360 | 1.30M | const byte *data, int data_x, int raster, gx_bitmap_id id,\ |
1361 | 1.30M | int x, int y, int width, int height, int plane_height) |
1362 | | #define dev_proc_copy_planes(proc)\ |
1363 | 1.30M | dev_t_proc_copy_planes(proc, gx_device) |
1364 | | |
1365 | | #define dev_t_proc_get_profile(proc, dev_t)\ |
1366 | | int proc(const dev_t *dev, cmm_dev_profile_t **dev_profile) |
1367 | | #define dev_proc_get_profile(proc)\ |
1368 | | dev_t_proc_get_profile(proc, gx_device) |
1369 | | |
1370 | | #define dev_t_proc_set_graphics_type_tag(proc, dev_t)\ |
1371 | | void proc(dev_t *dev, gs_graphics_type_tag_t) |
1372 | | #define dev_proc_set_graphics_type_tag(proc)\ |
1373 | | dev_t_proc_set_graphics_type_tag(proc, gx_device) |
1374 | | |
1375 | | #define dev_t_proc_strip_copy_rop2(proc, dev_t)\ |
1376 | 0 | int proc(dev_t *dev,\ |
1377 | 0 | const byte *sdata, int sourcex, uint sraster, gx_bitmap_id id,\ |
1378 | 0 | const gx_color_index *scolors,\ |
1379 | 0 | const gx_strip_bitmap *textures, const gx_color_index *tcolors,\ |
1380 | 0 | int x, int y, int width, int height,\ |
1381 | 0 | int phase_x, int phase_y, gs_logical_operation_t lop,\ |
1382 | 0 | uint planar_height) |
1383 | | #define dev_proc_strip_copy_rop2(proc)\ |
1384 | 0 | dev_t_proc_strip_copy_rop2(proc, gx_device) |
1385 | | |
1386 | | #define dev_t_proc_strip_tile_rect_devn(proc, dev_t)\ |
1387 | | int proc(dev_t *dev,\ |
1388 | | const gx_strip_bitmap *tiles, int x, int y, int width, int height,\ |
1389 | | const gx_drawing_color *pdcolor0, const gx_drawing_color *pdcolor1,\ |
1390 | | int phase_x, int phase_y) |
1391 | | #define dev_proc_strip_tile_rect_devn(proc)\ |
1392 | | dev_t_proc_strip_tile_rect_devn(proc, gx_device) |
1393 | | |
1394 | | #define dev_t_proc_copy_alpha_hl_color(proc, dev_t)\ |
1395 | | int proc(dev_t *dev, const byte *data, int data_x,\ |
1396 | | int raster, gx_bitmap_id id, int x, int y, int width, int height,\ |
1397 | | const gx_drawing_color *pdcolor, int depth) |
1398 | | #define dev_proc_copy_alpha_hl_color(proc)\ |
1399 | | dev_t_proc_copy_alpha_hl_color(proc, gx_device) |
1400 | | |
1401 | | typedef struct gx_process_page_options_s gx_process_page_options_t; |
1402 | | |
1403 | | struct gx_process_page_options_s |
1404 | | { |
1405 | | int (*init_buffer_fn)(void *arg, gx_device *dev, gs_memory_t *memory, int w, int h, void **buffer); |
1406 | | void (*free_buffer_fn)(void *arg, gx_device *dev, gs_memory_t *memory, void *buffer); |
1407 | | int (*process_fn)(void *arg, gx_device *dev, gx_device *bdev, const gs_int_rect *rect, void *buffer); |
1408 | | int (*output_fn)(void *arg, gx_device *dev, void *buffer); |
1409 | | void *arg; |
1410 | | int options; /* A mask of GX_PROCPAGE_... options bits */ |
1411 | | }; |
1412 | | |
1413 | | /* If GX_PROCPAGE_BOTTOM_UP, then we run from band n-1 to band 0, rather than |
1414 | | * 0 to n-1. */ |
1415 | 0 | #define GX_PROCPAGE_BOTTOM_UP 1 |
1416 | | |
1417 | | #define dev_t_proc_process_page(proc, dev_t)\ |
1418 | | int proc(dev_t *dev, gx_process_page_options_t *options) |
1419 | | #define dev_proc_process_page(proc)\ |
1420 | | dev_t_proc_process_page(proc, gx_device) |
1421 | | |
1422 | | typedef enum { |
1423 | | transform_pixel_region_begin = 0, |
1424 | | transform_pixel_region_data_needed = 1, |
1425 | | transform_pixel_region_process_data = 2, |
1426 | | transform_pixel_region_end = 3 |
1427 | | } transform_pixel_region_reason; |
1428 | | |
1429 | | typedef struct { |
1430 | | void *state; |
1431 | | union { |
1432 | | struct { |
1433 | | const gs_int_rect *clip; |
1434 | | int w; /* source width */ |
1435 | | int h; /* source height */ |
1436 | | int spp; |
1437 | | const gx_dda_fixed_point *pixels; /* DDA to enumerate the destination positions of pixels across a row */ |
1438 | | const gx_dda_fixed_point *rows; /* DDA to enumerate the starting position of each row */ |
1439 | | gs_logical_operation_t lop; |
1440 | | } init; |
1441 | | struct { |
1442 | | const unsigned char *buffer[GX_DEVICE_COLOR_MAX_COMPONENTS]; |
1443 | | int data_x; |
1444 | | gx_cmapper_t *cmapper; |
1445 | | const gs_gstate *pgs; |
1446 | | } process_data; |
1447 | | } u; |
1448 | | } transform_pixel_region_data; |
1449 | | |
1450 | | #define dev_t_proc_transform_pixel_region(proc, dev_t)\ |
1451 | | int proc(dev_t *dev, transform_pixel_region_reason reason, transform_pixel_region_data *data) |
1452 | | #define dev_proc_transform_pixel_region(proc)\ |
1453 | | dev_t_proc_transform_pixel_region(proc, gx_device) |
1454 | | |
1455 | | |
1456 | | /* Define the device procedure vector template proper. */ |
1457 | | |
1458 | | #define gx_device_proc_struct(dev_t)\ |
1459 | | {\ |
1460 | | dev_t_proc_initialize_device((*initialize_device), dev_t);\ |
1461 | | dev_t_proc_open_device((*open_device), dev_t);\ |
1462 | | dev_t_proc_get_initial_matrix((*get_initial_matrix), dev_t);\ |
1463 | | dev_t_proc_sync_output((*sync_output), dev_t);\ |
1464 | | dev_t_proc_output_page((*output_page), dev_t);\ |
1465 | | dev_t_proc_close_device((*close_device), dev_t);\ |
1466 | | dev_t_proc_map_rgb_color((*map_rgb_color), dev_t);\ |
1467 | | dev_t_proc_map_color_rgb((*map_color_rgb), dev_t);\ |
1468 | | dev_t_proc_fill_rectangle((*fill_rectangle), dev_t);\ |
1469 | | dev_t_proc_copy_mono((*copy_mono), dev_t);\ |
1470 | | dev_t_proc_copy_color((*copy_color), dev_t);\ |
1471 | | dev_t_proc_get_params((*get_params), dev_t);\ |
1472 | | dev_t_proc_put_params((*put_params), dev_t);\ |
1473 | | dev_t_proc_map_cmyk_color((*map_cmyk_color), dev_t);\ |
1474 | | dev_t_proc_get_page_device((*get_page_device), dev_t);\ |
1475 | | dev_t_proc_get_alpha_bits((*get_alpha_bits), dev_t);\ |
1476 | | dev_t_proc_copy_alpha((*copy_alpha), dev_t);\ |
1477 | | dev_t_proc_fill_path((*fill_path), dev_t);\ |
1478 | | dev_t_proc_stroke_path((*stroke_path), dev_t);\ |
1479 | | dev_t_proc_fill_mask((*fill_mask), dev_t);\ |
1480 | | dev_t_proc_fill_trapezoid((*fill_trapezoid), dev_t);\ |
1481 | | dev_t_proc_fill_parallelogram((*fill_parallelogram), dev_t);\ |
1482 | | dev_t_proc_fill_triangle((*fill_triangle), dev_t);\ |
1483 | | dev_t_proc_draw_thin_line((*draw_thin_line), dev_t);\ |
1484 | | dev_t_proc_strip_tile_rectangle((*strip_tile_rectangle), dev_t);\ |
1485 | | dev_t_proc_get_clipping_box((*get_clipping_box), dev_t);\ |
1486 | | dev_t_proc_begin_typed_image((*begin_typed_image), dev_t);\ |
1487 | | dev_t_proc_get_bits_rectangle((*get_bits_rectangle), dev_t);\ |
1488 | | dev_t_proc_composite((*composite), dev_t);\ |
1489 | | dev_t_proc_get_hardware_params((*get_hardware_params), dev_t);\ |
1490 | | dev_t_proc_text_begin((*text_begin), dev_t);\ |
1491 | | dev_t_proc_begin_transparency_group((*begin_transparency_group), dev_t);\ |
1492 | | dev_t_proc_end_transparency_group((*end_transparency_group), dev_t);\ |
1493 | | dev_t_proc_begin_transparency_mask((*begin_transparency_mask), dev_t);\ |
1494 | | dev_t_proc_end_transparency_mask((*end_transparency_mask), dev_t);\ |
1495 | | dev_t_proc_discard_transparency_layer((*discard_transparency_layer), dev_t);\ |
1496 | | dev_t_proc_get_color_mapping_procs((*get_color_mapping_procs), dev_t); \ |
1497 | | dev_t_proc_get_color_comp_index((*get_color_comp_index), dev_t); \ |
1498 | | dev_t_proc_encode_color((*encode_color), dev_t); \ |
1499 | | dev_t_proc_decode_color((*decode_color), dev_t); \ |
1500 | | dev_t_proc_fill_rectangle_hl_color((*fill_rectangle_hl_color), dev_t); \ |
1501 | | dev_t_proc_include_color_space((*include_color_space), dev_t); \ |
1502 | | dev_t_proc_fill_linear_color_scanline((*fill_linear_color_scanline), dev_t); \ |
1503 | | dev_t_proc_fill_linear_color_trapezoid((*fill_linear_color_trapezoid), dev_t); \ |
1504 | | dev_t_proc_fill_linear_color_triangle((*fill_linear_color_triangle), dev_t); \ |
1505 | | dev_t_proc_update_spot_equivalent_colors((*update_spot_equivalent_colors), dev_t); \ |
1506 | | dev_t_proc_ret_devn_params((*ret_devn_params), dev_t); \ |
1507 | | dev_t_proc_fillpage((*fillpage), dev_t); \ |
1508 | | dev_t_proc_push_transparency_state((*push_transparency_state), dev_t); \ |
1509 | | dev_t_proc_pop_transparency_state((*pop_transparency_state), dev_t); \ |
1510 | | dev_t_proc_put_image((*put_image), dev_t); \ |
1511 | | dev_t_proc_dev_spec_op((*dev_spec_op), dev_t); \ |
1512 | | dev_t_proc_copy_planes((*copy_planes), dev_t); \ |
1513 | | dev_t_proc_get_profile((*get_profile), dev_t); \ |
1514 | | dev_t_proc_set_graphics_type_tag((*set_graphics_type_tag), dev_t); \ |
1515 | | dev_t_proc_strip_copy_rop2((*strip_copy_rop2), dev_t);\ |
1516 | | dev_t_proc_strip_tile_rect_devn((*strip_tile_rect_devn), dev_t);\ |
1517 | | dev_t_proc_copy_alpha_hl_color((*copy_alpha_hl_color), dev_t);\ |
1518 | | dev_t_proc_process_page((*process_page), dev_t);\ |
1519 | | dev_t_proc_transform_pixel_region((*transform_pixel_region), dev_t);\ |
1520 | | dev_t_proc_fill_stroke_path((*fill_stroke_path), dev_t);\ |
1521 | | dev_t_proc_lock_pattern((*lock_pattern), dev_t);\ |
1522 | | } |
1523 | | |
1524 | | /* |
1525 | | * Provide procedures for passing image data. image_data and end_image |
1526 | | * are the equivalents of the obsolete driver procedures. image_plane_data |
1527 | | * was originally planned as a driver procedure, but is now associated with |
1528 | | * the image enumerator, like the other two. |
1529 | | */ |
1530 | | |
1531 | | typedef struct gx_image_plane_s { |
1532 | | const byte *data; |
1533 | | int data_x; |
1534 | | uint raster; |
1535 | | } gx_image_plane_t; |
1536 | | |
1537 | | #define gx_device_begin_typed_image(dev, pgs, pmat, pim, prect, pdcolor, pcpath, memory, pinfo)\ |
1538 | 5.25k | ((*dev_proc(dev, begin_typed_image))\ |
1539 | 5.25k | (dev, pgs, pmat, pim, prect, pdcolor, pcpath, memory, pinfo)) |
1540 | | |
1541 | | int gx_image_data(gx_image_enum_common_t *info, const byte **planes, |
1542 | | int data_x, uint raster, int height); |
1543 | | /* |
1544 | | * Solely for backward compatibility, gx_image_plane_data doesn't return |
1545 | | * rows_used. |
1546 | | */ |
1547 | | int gx_image_plane_data(gx_image_enum_common_t *info, |
1548 | | const gx_image_plane_t *planes, int height); |
1549 | | int gx_image_plane_data_rows(gx_image_enum_common_t *info, |
1550 | | const gx_image_plane_t *planes, int height, |
1551 | | int *rows_used); |
1552 | | int gx_image_flush(gx_image_enum_common_t *info); |
1553 | | bool gx_image_planes_wanted(const gx_image_enum_common_t *info, byte *wanted); |
1554 | | int gx_image_end(gx_image_enum_common_t *info, bool draw_last); |
1555 | | |
1556 | | /* A generic device procedure record. */ |
1557 | | struct gx_device_procs_s gx_device_proc_struct(gx_device); |
1558 | | |
1559 | | /* |
1560 | | * Define unaligned analogues of the copy_xxx procedures. |
1561 | | * These are slower than the standard procedures, which require |
1562 | | * aligned bitmaps, and also are not portable to non-byte-addressed machines. |
1563 | | * |
1564 | | * We allow both unaligned data and unaligned scan line widths; |
1565 | | * however, we do require that both of these be aligned modulo the largest |
1566 | | * power of 2 bytes that divides the data depth, i.e.: |
1567 | | * depth alignment |
1568 | | * <= 8 1 |
1569 | | * 16 2 |
1570 | | * 24 1 |
1571 | | * 32 4 |
1572 | | */ |
1573 | | dev_proc_copy_mono(gx_copy_mono_unaligned); |
1574 | | dev_proc_copy_color(gx_copy_color_unaligned); |
1575 | | dev_proc_copy_alpha(gx_copy_alpha_unaligned); |
1576 | | |
1577 | | /* A generic device */ |
1578 | | struct gx_device_s { |
1579 | | gx_device_common; |
1580 | | }; |
1581 | | |
1582 | | extern_st(st_device); |
1583 | | struct_proc_finalize(gx_device_finalize); /* public for subclasses */ |
1584 | | /* We use vacuous enum/reloc procedures, rather than 0, so that */ |
1585 | | /* gx_device can have subclasses. */ |
1586 | | #define public_st_device() /* in gsdevice.c */\ |
1587 | | gs_public_st_complex_only(st_device, gx_device, "gx_device",\ |
1588 | | 0, device_enum_ptrs, device_reloc_ptrs, gx_device_finalize) |
1589 | 133k | #define st_device_max_ptrs 2 |
1590 | | |
1591 | | /* Enumerate or relocate a pointer to a device. */ |
1592 | | /* These take the containing space into account properly. */ |
1593 | | gx_device *gx_device_enum_ptr(gx_device *); |
1594 | | gx_device *gx_device_reloc_ptr(gx_device *, gc_state_t *); |
1595 | | |
1596 | | /* Define typedefs for some of the device procedures, because */ |
1597 | | /* ansi2knr can't handle dev_proc_xxx((*xxx)) in a formal argument list. */ |
1598 | | typedef dev_proc_map_rgb_color((*dev_proc_map_rgb_color_t)); |
1599 | | typedef dev_proc_map_color_rgb((*dev_proc_map_color_rgb_t)); |
1600 | | |
1601 | | /* |
1602 | | * A forwarding device forwards all non-display operations, and possibly |
1603 | | * some imaging operations (possibly transformed in some way), to another |
1604 | | * device called the "target". This is used for many different purposes |
1605 | | * internally, including clipping, banding, image and pattern accumulation, |
1606 | | * compositing, halftoning, and the null device. |
1607 | | */ |
1608 | | #define gx_device_forward_common\ |
1609 | | gx_device_common;\ |
1610 | | gx_device *target |
1611 | | /* A generic forwarding device. */ |
1612 | | typedef struct gx_device_forward_s { |
1613 | | gx_device_forward_common; |
1614 | | } gx_device_forward; |
1615 | | |
1616 | | extern_st(st_device_forward); |
1617 | | #define public_st_device_forward() /* in gsdevice.c */\ |
1618 | | gs_public_st_complex_only(st_device_forward, gx_device_forward,\ |
1619 | | "gx_device_forward", 0, device_forward_enum_ptrs,\ |
1620 | | device_forward_reloc_ptrs, gx_device_finalize) |
1621 | 133k | #define st_device_forward_max_ptrs (st_device_max_ptrs + 1) |
1622 | | |
1623 | | /* Test to see if the device wants to use tags */ |
1624 | | static inline bool device_encodes_tags(const gx_device *dev) |
1625 | 29.6M | { |
1626 | 29.6M | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; |
1627 | 29.6M | } Unexecuted instantiation: imain.c:device_encodes_tags Unexecuted instantiation: gconfig.c:device_encodes_tags Unexecuted instantiation: gximage3.c:device_encodes_tags Unexecuted instantiation: gximage4.c:device_encodes_tags Unexecuted instantiation: gxmclip.c:device_encodes_tags gsptype1.c:device_encodes_tags Line | Count | Source | 1625 | 367k | { | 1626 | 367k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 367k | } |
Unexecuted instantiation: gxp1fill.c:device_encodes_tags gxpcmap.c:device_encodes_tags Line | Count | Source | 1625 | 1.42k | { | 1626 | 1.42k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 1.42k | } |
gxicolor.c:device_encodes_tags Line | Count | Source | 1625 | 496k | { | 1626 | 496k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 496k | } |
gsdps1.c:device_encodes_tags Line | Count | Source | 1625 | 11 | { | 1626 | 11 | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 11 | } |
Unexecuted instantiation: gsciemap.c:device_encodes_tags gstrans.c:device_encodes_tags Line | Count | Source | 1625 | 3.80k | { | 1626 | 3.80k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 3.80k | } |
Unexecuted instantiation: gximag3x.c:device_encodes_tags Unexecuted instantiation: gxblend.c:device_encodes_tags gdevp14.c:device_encodes_tags Line | Count | Source | 1625 | 24.5M | { | 1626 | 24.5M | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 24.5M | } |
Unexecuted instantiation: gdevdevn.c:device_encodes_tags Unexecuted instantiation: gsequivc.c:device_encodes_tags Unexecuted instantiation: gdevdcrd.c:device_encodes_tags Unexecuted instantiation: gscpixel.c:device_encodes_tags Unexecuted instantiation: gdevbbox.c:device_encodes_tags gdevprn.c:device_encodes_tags Line | Count | Source | 1625 | 3.56k | { | 1626 | 3.56k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 3.56k | } |
Unexecuted instantiation: gdevppla.c:device_encodes_tags Unexecuted instantiation: gdevflp.c:device_encodes_tags Unexecuted instantiation: gdevoflt.c:device_encodes_tags Unexecuted instantiation: gdevnup.c:device_encodes_tags Unexecuted instantiation: gdevsclass.c:device_encodes_tags Unexecuted instantiation: gxclist.c:device_encodes_tags Unexecuted instantiation: gxclpage.c:device_encodes_tags Unexecuted instantiation: gxclread.c:device_encodes_tags Unexecuted instantiation: gxclrect.c:device_encodes_tags Unexecuted instantiation: gxclutil.c:device_encodes_tags Unexecuted instantiation: gxclimag.c:device_encodes_tags Unexecuted instantiation: gxclpath.c:device_encodes_tags Unexecuted instantiation: gxdhtserial.c:device_encodes_tags Unexecuted instantiation: gxclthrd.c:device_encodes_tags Unexecuted instantiation: gsicc.c:device_encodes_tags Unexecuted instantiation: gsicc_manage.c:device_encodes_tags Unexecuted instantiation: gsicc_cache.c:device_encodes_tags Unexecuted instantiation: gsicc_lcms2mt.c:device_encodes_tags Unexecuted instantiation: gsicc_create.c:device_encodes_tags Unexecuted instantiation: gsicc_nocm.c:device_encodes_tags Unexecuted instantiation: gsicc_replacecm.c:device_encodes_tags Unexecuted instantiation: gsicc_monitorcm.c:device_encodes_tags Unexecuted instantiation: gsicc_blacktext.c:device_encodes_tags Unexecuted instantiation: gdevcups.c:device_encodes_tags Unexecuted instantiation: gdevdjet.c:device_encodes_tags Unexecuted instantiation: gdevdljm.c:device_encodes_tags Unexecuted instantiation: gdevpcl.c:device_encodes_tags Unexecuted instantiation: gdevpcl3.c:device_encodes_tags Unexecuted instantiation: pclcap.c:device_encodes_tags Unexecuted instantiation: gdevpx.c:device_encodes_tags Unexecuted instantiation: gdevpxut.c:device_encodes_tags Unexecuted instantiation: gdevvec.c:device_encodes_tags Unexecuted instantiation: gdevupd.c:device_encodes_tags Unexecuted instantiation: gdevkrnlsclass.c:device_encodes_tags Unexecuted instantiation: gscolor.c:device_encodes_tags Unexecuted instantiation: gscoord.c:device_encodes_tags Unexecuted instantiation: gscspace.c:device_encodes_tags Unexecuted instantiation: gsovrc.c:device_encodes_tags Unexecuted instantiation: gxoprect.c:device_encodes_tags Unexecuted instantiation: gsdevice.c:device_encodes_tags Unexecuted instantiation: gsdparam.c:device_encodes_tags Unexecuted instantiation: gsht.c:device_encodes_tags Unexecuted instantiation: gshtscr.c:device_encodes_tags gsimage.c:device_encodes_tags Line | Count | Source | 1625 | 5.25k | { | 1626 | 5.25k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 5.25k | } |
Unexecuted instantiation: gsgstate.c:device_encodes_tags Unexecuted instantiation: gsline.c:device_encodes_tags gspaint.c:device_encodes_tags Line | Count | Source | 1625 | 198k | { | 1626 | 198k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 198k | } |
Unexecuted instantiation: gspath.c:device_encodes_tags Unexecuted instantiation: gsstate.c:device_encodes_tags gstext.c:device_encodes_tags Line | Count | Source | 1625 | 557k | { | 1626 | 557k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 557k | } |
gxfapi.c:device_encodes_tags Line | Count | Source | 1625 | 3.51k | { | 1626 | 3.51k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 3.51k | } |
Unexecuted instantiation: write_t2.c:device_encodes_tags Unexecuted instantiation: gxchar.c:device_encodes_tags Unexecuted instantiation: gxcht.c:device_encodes_tags Unexecuted instantiation: gxclip.c:device_encodes_tags Unexecuted instantiation: gxcmap.c:device_encodes_tags Unexecuted instantiation: gxcpath.c:device_encodes_tags Unexecuted instantiation: gxdcconv.c:device_encodes_tags Unexecuted instantiation: gxdcolor.c:device_encodes_tags Unexecuted instantiation: gxhldevc.c:device_encodes_tags Unexecuted instantiation: gxfill.c:device_encodes_tags Unexecuted instantiation: gxht.c:device_encodes_tags Unexecuted instantiation: gxht_thresh.c:device_encodes_tags Unexecuted instantiation: gxifast.c:device_encodes_tags Unexecuted instantiation: gximage.c:device_encodes_tags Unexecuted instantiation: gximdecode.c:device_encodes_tags Unexecuted instantiation: gximage1.c:device_encodes_tags Unexecuted instantiation: gximono.c:device_encodes_tags Unexecuted instantiation: gxipixel.c:device_encodes_tags Unexecuted instantiation: gximask.c:device_encodes_tags Unexecuted instantiation: gxi12bit.c:device_encodes_tags Unexecuted instantiation: gxi16bit.c:device_encodes_tags Unexecuted instantiation: gxiscale.c:device_encodes_tags Unexecuted instantiation: gxpaint.c:device_encodes_tags Unexecuted instantiation: gxpcopy.c:device_encodes_tags Unexecuted instantiation: gxsample.c:device_encodes_tags Unexecuted instantiation: gxstroke.c:device_encodes_tags Unexecuted instantiation: gdevabuf.c:device_encodes_tags Unexecuted instantiation: gdevdbit.c:device_encodes_tags Unexecuted instantiation: gdevddrw.c:device_encodes_tags gdevdflt.c:device_encodes_tags Line | Count | Source | 1625 | 2.64M | { | 1626 | 2.64M | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 2.64M | } |
Unexecuted instantiation: gdevdgbr.c:device_encodes_tags Unexecuted instantiation: gdevnfwd.c:device_encodes_tags gdevmem.c:device_encodes_tags Line | Count | Source | 1625 | 14.7k | { | 1626 | 14.7k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 14.7k | } |
Unexecuted instantiation: gdevplnx.c:device_encodes_tags Unexecuted instantiation: gdevm1.c:device_encodes_tags Unexecuted instantiation: gdevm2.c:device_encodes_tags Unexecuted instantiation: gdevm4.c:device_encodes_tags Unexecuted instantiation: gdevm8.c:device_encodes_tags Unexecuted instantiation: gdevm16.c:device_encodes_tags Unexecuted instantiation: gdevm24.c:device_encodes_tags Unexecuted instantiation: gdevm32.c:device_encodes_tags Unexecuted instantiation: gdevmpla.c:device_encodes_tags Unexecuted instantiation: gdevm40.c:device_encodes_tags Unexecuted instantiation: gdevm48.c:device_encodes_tags Unexecuted instantiation: gdevm56.c:device_encodes_tags Unexecuted instantiation: gdevm64.c:device_encodes_tags Unexecuted instantiation: gdevmx.c:device_encodes_tags Unexecuted instantiation: gdevdsha.c:device_encodes_tags Unexecuted instantiation: gxscanc.c:device_encodes_tags Unexecuted instantiation: gdevdrop.c:device_encodes_tags Unexecuted instantiation: gdevmr1.c:device_encodes_tags Unexecuted instantiation: gdevmr2n.c:device_encodes_tags Unexecuted instantiation: gdevmr8n.c:device_encodes_tags Unexecuted instantiation: gdevrops.c:device_encodes_tags Unexecuted instantiation: gsrop.c:device_encodes_tags Unexecuted instantiation: zcolor1.c:device_encodes_tags Unexecuted instantiation: zht1.c:device_encodes_tags Unexecuted instantiation: zupath.c:device_encodes_tags Unexecuted instantiation: gdevhit.c:device_encodes_tags Unexecuted instantiation: zdps1.c:device_encodes_tags Unexecuted instantiation: zchar1.c:device_encodes_tags Unexecuted instantiation: zcharout.c:device_encodes_tags Unexecuted instantiation: zfont1.c:device_encodes_tags Unexecuted instantiation: zusparam.c:device_encodes_tags Unexecuted instantiation: zchar42.c:device_encodes_tags Unexecuted instantiation: zfont0.c:device_encodes_tags Unexecuted instantiation: zfdctd.c:device_encodes_tags Unexecuted instantiation: zdevice2.c:device_encodes_tags Unexecuted instantiation: zpcolor.c:device_encodes_tags Unexecuted instantiation: idisp.c:device_encodes_tags Unexecuted instantiation: psapi.c:device_encodes_tags Unexecuted instantiation: zfileio.c:device_encodes_tags Unexecuted instantiation: zbfont.c:device_encodes_tags Unexecuted instantiation: zchar.c:device_encodes_tags Unexecuted instantiation: zcolor.c:device_encodes_tags Unexecuted instantiation: zdevice.c:device_encodes_tags Unexecuted instantiation: zfont.c:device_encodes_tags Unexecuted instantiation: zht.c:device_encodes_tags Unexecuted instantiation: zimage.c:device_encodes_tags Unexecuted instantiation: zfapi.c:device_encodes_tags Unexecuted instantiation: zcsindex.c:device_encodes_tags Unexecuted instantiation: zht2.c:device_encodes_tags Unexecuted instantiation: zcssepr.c:device_encodes_tags Unexecuted instantiation: zfunc4.c:device_encodes_tags Unexecuted instantiation: zform.c:device_encodes_tags Unexecuted instantiation: zimage3.c:device_encodes_tags Unexecuted instantiation: zicc.c:device_encodes_tags Unexecuted instantiation: ztrans.c:device_encodes_tags Unexecuted instantiation: zpdfops.c:device_encodes_tags Unexecuted instantiation: ghostpdf.c:device_encodes_tags Unexecuted instantiation: pdf_dict.c:device_encodes_tags Unexecuted instantiation: pdf_array.c:device_encodes_tags Unexecuted instantiation: pdf_xref.c:device_encodes_tags Unexecuted instantiation: pdf_int.c:device_encodes_tags Unexecuted instantiation: pdf_file.c:device_encodes_tags Unexecuted instantiation: pdf_path.c:device_encodes_tags Unexecuted instantiation: pdf_colour.c:device_encodes_tags Unexecuted instantiation: pdf_pattern.c:device_encodes_tags Unexecuted instantiation: pdf_gstate.c:device_encodes_tags Unexecuted instantiation: pdf_stack.c:device_encodes_tags Unexecuted instantiation: pdf_image.c:device_encodes_tags Unexecuted instantiation: pdf_page.c:device_encodes_tags Unexecuted instantiation: pdf_annot.c:device_encodes_tags Unexecuted instantiation: pdf_mark.c:device_encodes_tags Unexecuted instantiation: pdf_font.c:device_encodes_tags Unexecuted instantiation: pdf_font0.c:device_encodes_tags Unexecuted instantiation: pdf_ciddec.c:device_encodes_tags Unexecuted instantiation: pdf_font1.c:device_encodes_tags Unexecuted instantiation: pdf_font1C.c:device_encodes_tags Unexecuted instantiation: pdf_fontps.c:device_encodes_tags Unexecuted instantiation: pdf_font3.c:device_encodes_tags Unexecuted instantiation: pdf_fontTT.c:device_encodes_tags Unexecuted instantiation: pdf_font11.c:device_encodes_tags Unexecuted instantiation: pdf_cmap.c:device_encodes_tags Unexecuted instantiation: pdf_fmap.c:device_encodes_tags Unexecuted instantiation: pdf_text.c:device_encodes_tags Unexecuted instantiation: pdf_shading.c:device_encodes_tags Unexecuted instantiation: pdf_func.c:device_encodes_tags Unexecuted instantiation: pdf_trans.c:device_encodes_tags Unexecuted instantiation: pdf_device.c:device_encodes_tags Unexecuted instantiation: pdf_misc.c:device_encodes_tags Unexecuted instantiation: pdf_optcontent.c:device_encodes_tags Unexecuted instantiation: pdf_check.c:device_encodes_tags Unexecuted instantiation: pdf_sec.c:device_encodes_tags Unexecuted instantiation: pdf_utf8.c:device_encodes_tags Unexecuted instantiation: pdf_deref.c:device_encodes_tags Unexecuted instantiation: pdf_repair.c:device_encodes_tags Unexecuted instantiation: pdf_obj.c:device_encodes_tags Unexecuted instantiation: pdf_doc.c:device_encodes_tags Unexecuted instantiation: zfjpx.c:device_encodes_tags Unexecuted instantiation: imainarg.c:device_encodes_tags Unexecuted instantiation: gsclipsr.c:device_encodes_tags Unexecuted instantiation: gscdevn.c:device_encodes_tags Unexecuted instantiation: gxdevndi.c:device_encodes_tags Unexecuted instantiation: gxclipm.c:device_encodes_tags gscolor3.c:device_encodes_tags Line | Count | Source | 1625 | 5.95k | { | 1626 | 5.95k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 5.95k | } |
Unexecuted instantiation: gsptype2.c:device_encodes_tags Unexecuted instantiation: gsshade.c:device_encodes_tags Unexecuted instantiation: gxshade1.c:device_encodes_tags Unexecuted instantiation: gxshade4.c:device_encodes_tags gxshade6.c:device_encodes_tags Line | Count | Source | 1625 | 850k | { | 1626 | 850k | return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0; | 1627 | 850k | } |
Unexecuted instantiation: gscolor1.c:device_encodes_tags Unexecuted instantiation: gsht1.c:device_encodes_tags Unexecuted instantiation: gscolor2.c:device_encodes_tags Unexecuted instantiation: gspcolor.c:device_encodes_tags Unexecuted instantiation: gxclip2.c:device_encodes_tags Unexecuted instantiation: gspath1.c:device_encodes_tags Unexecuted instantiation: gstype42.c:device_encodes_tags Unexecuted instantiation: gxchrout.c:device_encodes_tags Unexecuted instantiation: gxttfb.c:device_encodes_tags Unexecuted instantiation: gzspotan.c:device_encodes_tags Unexecuted instantiation: gscie.c:device_encodes_tags Unexecuted instantiation: gscsepr.c:device_encodes_tags Unexecuted instantiation: gxblend1.c:device_encodes_tags Unexecuted instantiation: gdevepo.c:device_encodes_tags Unexecuted instantiation: gxclbits.c:device_encodes_tags Unexecuted instantiation: gxclrast.c:device_encodes_tags Unexecuted instantiation: gschar0.c:device_encodes_tags Unexecuted instantiation: gsfont0.c:device_encodes_tags Unexecuted instantiation: gstype1.c:device_encodes_tags Unexecuted instantiation: gxtype1.c:device_encodes_tags Unexecuted instantiation: gstype2.c:device_encodes_tags Unexecuted instantiation: gsicc_profilecache.c:device_encodes_tags Unexecuted instantiation: gdeveprn.c:device_encodes_tags Unexecuted instantiation: eprnparm.c:device_encodes_tags Unexecuted instantiation: eprnrend.c:device_encodes_tags Unexecuted instantiation: eprnfs.c:device_encodes_tags Unexecuted instantiation: gscicach.c:device_encodes_tags Unexecuted instantiation: gsdevmem.c:device_encodes_tags Unexecuted instantiation: gsfont.c:device_encodes_tags Unexecuted instantiation: gxacpath.c:device_encodes_tags Unexecuted instantiation: gxccache.c:device_encodes_tags Unexecuted instantiation: gxccman.c:device_encodes_tags Unexecuted instantiation: gxidata.c:device_encodes_tags Unexecuted instantiation: gxpdash.c:device_encodes_tags Unexecuted instantiation: pdf_loop_detect.c:device_encodes_tags Unexecuted instantiation: pdf_fapi.c:device_encodes_tags Unexecuted instantiation: gxshade.c:device_encodes_tags Unexecuted instantiation: gscscie.c:device_encodes_tags Unexecuted instantiation: gschar.c:device_encodes_tags |
1628 | | |
1629 | | static inline bool device_is_deep(const gx_device *dev) |
1630 | 3.73M | { |
1631 | 3.73M | bool has_tags = device_encodes_tags(dev); |
1632 | 3.73M | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / |
1633 | 3.73M | dev->color_info.num_components); |
1634 | 3.73M | if (bits_per_comp > 16) |
1635 | 0 | return 1; |
1636 | 3.73M | if (bits_per_comp == 16 && dev->color_info.num_components > 1) |
1637 | 0 | return 1; |
1638 | 3.73M | if (bits_per_comp == 8) |
1639 | 927k | return 0; |
1640 | 2.80M | return (dev->color_info.max_color > 255 || |
1641 | 2.80M | dev->color_info.max_gray > 255); |
1642 | 3.73M | } Unexecuted instantiation: imain.c:device_is_deep Unexecuted instantiation: gconfig.c:device_is_deep Unexecuted instantiation: gximage3.c:device_is_deep Unexecuted instantiation: gximage4.c:device_is_deep Unexecuted instantiation: gxmclip.c:device_is_deep gsptype1.c:device_is_deep Line | Count | Source | 1630 | 367k | { | 1631 | 367k | bool has_tags = device_encodes_tags(dev); | 1632 | 367k | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / | 1633 | 367k | dev->color_info.num_components); | 1634 | 367k | if (bits_per_comp > 16) | 1635 | 0 | return 1; | 1636 | 367k | if (bits_per_comp == 16 && dev->color_info.num_components > 1) | 1637 | 0 | return 1; | 1638 | 367k | if (bits_per_comp == 8) | 1639 | 367k | return 0; | 1640 | 512 | return (dev->color_info.max_color > 255 || | 1641 | 512 | dev->color_info.max_gray > 255); | 1642 | 367k | } |
Unexecuted instantiation: gxp1fill.c:device_is_deep Unexecuted instantiation: gxpcmap.c:device_is_deep Unexecuted instantiation: gxicolor.c:device_is_deep Unexecuted instantiation: gsdps1.c:device_is_deep Unexecuted instantiation: gsciemap.c:device_is_deep Line | Count | Source | 1630 | 3.80k | { | 1631 | 3.80k | bool has_tags = device_encodes_tags(dev); | 1632 | 3.80k | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / | 1633 | 3.80k | dev->color_info.num_components); | 1634 | 3.80k | if (bits_per_comp > 16) | 1635 | 0 | return 1; | 1636 | 3.80k | if (bits_per_comp == 16 && dev->color_info.num_components > 1) | 1637 | 0 | return 1; | 1638 | 3.80k | if (bits_per_comp == 8) | 1639 | 3.80k | return 0; | 1640 | 0 | return (dev->color_info.max_color > 255 || | 1641 | 0 | dev->color_info.max_gray > 255); | 1642 | 3.80k | } |
Unexecuted instantiation: gximag3x.c:device_is_deep Unexecuted instantiation: gxblend.c:device_is_deep Line | Count | Source | 1630 | 702k | { | 1631 | 702k | bool has_tags = device_encodes_tags(dev); | 1632 | 702k | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / | 1633 | 702k | dev->color_info.num_components); | 1634 | 702k | if (bits_per_comp > 16) | 1635 | 0 | return 1; | 1636 | 702k | if (bits_per_comp == 16 && dev->color_info.num_components > 1) | 1637 | 0 | return 1; | 1638 | 702k | if (bits_per_comp == 8) | 1639 | 556k | return 0; | 1640 | 145k | return (dev->color_info.max_color > 255 || | 1641 | 145k | dev->color_info.max_gray > 255); | 1642 | 702k | } |
Unexecuted instantiation: gdevdevn.c:device_is_deep Unexecuted instantiation: gsequivc.c:device_is_deep Unexecuted instantiation: gdevdcrd.c:device_is_deep Unexecuted instantiation: gscpixel.c:device_is_deep Unexecuted instantiation: gdevbbox.c:device_is_deep Line | Count | Source | 1630 | 3.56k | { | 1631 | 3.56k | bool has_tags = device_encodes_tags(dev); | 1632 | 3.56k | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / | 1633 | 3.56k | dev->color_info.num_components); | 1634 | 3.56k | if (bits_per_comp > 16) | 1635 | 0 | return 1; | 1636 | 3.56k | if (bits_per_comp == 16 && dev->color_info.num_components > 1) | 1637 | 0 | return 1; | 1638 | 3.56k | if (bits_per_comp == 8) | 1639 | 0 | return 0; | 1640 | 3.56k | return (dev->color_info.max_color > 255 || | 1641 | 3.56k | dev->color_info.max_gray > 255); | 1642 | 3.56k | } |
Unexecuted instantiation: gdevppla.c:device_is_deep Unexecuted instantiation: gdevflp.c:device_is_deep Unexecuted instantiation: gdevoflt.c:device_is_deep Unexecuted instantiation: gdevnup.c:device_is_deep Unexecuted instantiation: gdevsclass.c:device_is_deep Unexecuted instantiation: gxclist.c:device_is_deep Unexecuted instantiation: gxclpage.c:device_is_deep Unexecuted instantiation: gxclread.c:device_is_deep Unexecuted instantiation: gxclrect.c:device_is_deep Unexecuted instantiation: gxclutil.c:device_is_deep Unexecuted instantiation: gxclimag.c:device_is_deep Unexecuted instantiation: gxclpath.c:device_is_deep Unexecuted instantiation: gxdhtserial.c:device_is_deep Unexecuted instantiation: gxclthrd.c:device_is_deep Unexecuted instantiation: gsicc.c:device_is_deep Unexecuted instantiation: gsicc_manage.c:device_is_deep Unexecuted instantiation: gsicc_cache.c:device_is_deep Unexecuted instantiation: gsicc_lcms2mt.c:device_is_deep Unexecuted instantiation: gsicc_create.c:device_is_deep Unexecuted instantiation: gsicc_nocm.c:device_is_deep Unexecuted instantiation: gsicc_replacecm.c:device_is_deep Unexecuted instantiation: gsicc_monitorcm.c:device_is_deep Unexecuted instantiation: gsicc_blacktext.c:device_is_deep Unexecuted instantiation: gdevcups.c:device_is_deep Unexecuted instantiation: gdevdjet.c:device_is_deep Unexecuted instantiation: gdevdljm.c:device_is_deep Unexecuted instantiation: gdevpcl.c:device_is_deep Unexecuted instantiation: gdevpcl3.c:device_is_deep Unexecuted instantiation: pclcap.c:device_is_deep Unexecuted instantiation: gdevpx.c:device_is_deep Unexecuted instantiation: gdevpxut.c:device_is_deep Unexecuted instantiation: gdevvec.c:device_is_deep Unexecuted instantiation: gdevupd.c:device_is_deep Unexecuted instantiation: gdevkrnlsclass.c:device_is_deep Unexecuted instantiation: gscolor.c:device_is_deep Unexecuted instantiation: gscoord.c:device_is_deep Unexecuted instantiation: gscspace.c:device_is_deep Unexecuted instantiation: gsovrc.c:device_is_deep Unexecuted instantiation: gxoprect.c:device_is_deep Unexecuted instantiation: gsdevice.c:device_is_deep Unexecuted instantiation: gsdparam.c:device_is_deep Unexecuted instantiation: gsht.c:device_is_deep Unexecuted instantiation: gshtscr.c:device_is_deep Unexecuted instantiation: gsimage.c:device_is_deep Unexecuted instantiation: gsgstate.c:device_is_deep Unexecuted instantiation: gsline.c:device_is_deep Unexecuted instantiation: gspaint.c:device_is_deep Unexecuted instantiation: gspath.c:device_is_deep Unexecuted instantiation: gsstate.c:device_is_deep Unexecuted instantiation: gstext.c:device_is_deep Unexecuted instantiation: gxfapi.c:device_is_deep Unexecuted instantiation: write_t2.c:device_is_deep Unexecuted instantiation: gxchar.c:device_is_deep Unexecuted instantiation: gxcht.c:device_is_deep Unexecuted instantiation: gxclip.c:device_is_deep Unexecuted instantiation: gxcmap.c:device_is_deep Unexecuted instantiation: gxcpath.c:device_is_deep Unexecuted instantiation: gxdcconv.c:device_is_deep Unexecuted instantiation: gxdcolor.c:device_is_deep Unexecuted instantiation: gxhldevc.c:device_is_deep Unexecuted instantiation: gxfill.c:device_is_deep Unexecuted instantiation: gxht.c:device_is_deep Unexecuted instantiation: gxht_thresh.c:device_is_deep Unexecuted instantiation: gxifast.c:device_is_deep Unexecuted instantiation: gximage.c:device_is_deep Unexecuted instantiation: gximdecode.c:device_is_deep Unexecuted instantiation: gximage1.c:device_is_deep Unexecuted instantiation: gximono.c:device_is_deep Unexecuted instantiation: gxipixel.c:device_is_deep Unexecuted instantiation: gximask.c:device_is_deep Unexecuted instantiation: gxi12bit.c:device_is_deep Unexecuted instantiation: gxi16bit.c:device_is_deep Unexecuted instantiation: gxiscale.c:device_is_deep Unexecuted instantiation: gxpaint.c:device_is_deep Unexecuted instantiation: gxpcopy.c:device_is_deep Unexecuted instantiation: gxsample.c:device_is_deep Unexecuted instantiation: gxstroke.c:device_is_deep Unexecuted instantiation: gdevabuf.c:device_is_deep Unexecuted instantiation: gdevdbit.c:device_is_deep Unexecuted instantiation: gdevddrw.c:device_is_deep gdevdflt.c:device_is_deep Line | Count | Source | 1630 | 2.64M | { | 1631 | 2.64M | bool has_tags = device_encodes_tags(dev); | 1632 | 2.64M | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / | 1633 | 2.64M | dev->color_info.num_components); | 1634 | 2.64M | if (bits_per_comp > 16) | 1635 | 0 | return 1; | 1636 | 2.64M | if (bits_per_comp == 16 && dev->color_info.num_components > 1) | 1637 | 0 | return 1; | 1638 | 2.64M | if (bits_per_comp == 8) | 1639 | 0 | return 0; | 1640 | 2.64M | return (dev->color_info.max_color > 255 || | 1641 | 2.64M | dev->color_info.max_gray > 255); | 1642 | 2.64M | } |
Unexecuted instantiation: gdevdgbr.c:device_is_deep Unexecuted instantiation: gdevnfwd.c:device_is_deep Line | Count | Source | 1630 | 14.7k | { | 1631 | 14.7k | bool has_tags = device_encodes_tags(dev); | 1632 | 14.7k | int bits_per_comp = ((dev->color_info.depth - has_tags*8) / | 1633 | 14.7k | dev->color_info.num_components); | 1634 | 14.7k | if (bits_per_comp > 16) | 1635 | 0 | return 1; | 1636 | 14.7k | if (bits_per_comp == 16 && dev->color_info.num_components > 1) | 1637 | 0 | return 1; | 1638 | 14.7k | if (bits_per_comp == 8) | 1639 | 0 | return 0; | 1640 | 14.7k | return (dev->color_info.max_color > 255 || | 1641 | 14.7k | dev->color_info.max_gray > 255); | 1642 | 14.7k | } |
Unexecuted instantiation: gdevplnx.c:device_is_deep Unexecuted instantiation: gdevm1.c:device_is_deep Unexecuted instantiation: gdevm2.c:device_is_deep Unexecuted instantiation: gdevm4.c:device_is_deep Unexecuted instantiation: gdevm8.c:device_is_deep Unexecuted instantiation: gdevm16.c:device_is_deep Unexecuted instantiation: gdevm24.c:device_is_deep Unexecuted instantiation: gdevm32.c:device_is_deep Unexecuted instantiation: gdevmpla.c:device_is_deep Unexecuted instantiation: gdevm40.c:device_is_deep Unexecuted instantiation: gdevm48.c:device_is_deep Unexecuted instantiation: gdevm56.c:device_is_deep Unexecuted instantiation: gdevm64.c:device_is_deep Unexecuted instantiation: gdevmx.c:device_is_deep Unexecuted instantiation: gdevdsha.c:device_is_deep Unexecuted instantiation: gxscanc.c:device_is_deep Unexecuted instantiation: gdevdrop.c:device_is_deep Unexecuted instantiation: gdevmr1.c:device_is_deep Unexecuted instantiation: gdevmr2n.c:device_is_deep Unexecuted instantiation: gdevmr8n.c:device_is_deep Unexecuted instantiation: gdevrops.c:device_is_deep Unexecuted instantiation: gsrop.c:device_is_deep Unexecuted instantiation: zcolor1.c:device_is_deep Unexecuted instantiation: zht1.c:device_is_deep Unexecuted instantiation: zupath.c:device_is_deep Unexecuted instantiation: gdevhit.c:device_is_deep Unexecuted instantiation: zdps1.c:device_is_deep Unexecuted instantiation: zchar1.c:device_is_deep Unexecuted instantiation: zcharout.c:device_is_deep Unexecuted instantiation: zfont1.c:device_is_deep Unexecuted instantiation: zusparam.c:device_is_deep Unexecuted instantiation: zchar42.c:device_is_deep Unexecuted instantiation: zfont0.c:device_is_deep Unexecuted instantiation: zfdctd.c:device_is_deep Unexecuted instantiation: zdevice2.c:device_is_deep Unexecuted instantiation: zpcolor.c:device_is_deep Unexecuted instantiation: idisp.c:device_is_deep Unexecuted instantiation: psapi.c:device_is_deep Unexecuted instantiation: zfileio.c:device_is_deep Unexecuted instantiation: zbfont.c:device_is_deep Unexecuted instantiation: zchar.c:device_is_deep Unexecuted instantiation: zcolor.c:device_is_deep Unexecuted instantiation: zdevice.c:device_is_deep Unexecuted instantiation: zfont.c:device_is_deep Unexecuted instantiation: zht.c:device_is_deep Unexecuted instantiation: zimage.c:device_is_deep Unexecuted instantiation: zfapi.c:device_is_deep Unexecuted instantiation: zcsindex.c:device_is_deep Unexecuted instantiation: zht2.c:device_is_deep Unexecuted instantiation: zcssepr.c:device_is_deep Unexecuted instantiation: zfunc4.c:device_is_deep Unexecuted instantiation: zform.c:device_is_deep Unexecuted instantiation: zimage3.c:device_is_deep Unexecuted instantiation: zicc.c:device_is_deep Unexecuted instantiation: ztrans.c:device_is_deep Unexecuted instantiation: zpdfops.c:device_is_deep Unexecuted instantiation: ghostpdf.c:device_is_deep Unexecuted instantiation: pdf_dict.c:device_is_deep Unexecuted instantiation: pdf_array.c:device_is_deep Unexecuted instantiation: pdf_xref.c:device_is_deep Unexecuted instantiation: pdf_int.c:device_is_deep Unexecuted instantiation: pdf_file.c:device_is_deep Unexecuted instantiation: pdf_path.c:device_is_deep Unexecuted instantiation: pdf_colour.c:device_is_deep Unexecuted instantiation: pdf_pattern.c:device_is_deep Unexecuted instantiation: pdf_gstate.c:device_is_deep Unexecuted instantiation: pdf_stack.c:device_is_deep Unexecuted instantiation: pdf_image.c:device_is_deep Unexecuted instantiation: pdf_page.c:device_is_deep Unexecuted instantiation: pdf_annot.c:device_is_deep Unexecuted instantiation: pdf_mark.c:device_is_deep Unexecuted instantiation: pdf_font.c:device_is_deep Unexecuted instantiation: pdf_font0.c:device_is_deep Unexecuted instantiation: pdf_ciddec.c:device_is_deep Unexecuted instantiation: pdf_font1.c:device_is_deep Unexecuted instantiation: pdf_font1C.c:device_is_deep Unexecuted instantiation: pdf_fontps.c:device_is_deep Unexecuted instantiation: pdf_font3.c:device_is_deep Unexecuted instantiation: pdf_fontTT.c:device_is_deep Unexecuted instantiation: pdf_font11.c:device_is_deep Unexecuted instantiation: pdf_cmap.c:device_is_deep Unexecuted instantiation: pdf_fmap.c:device_is_deep Unexecuted instantiation: pdf_text.c:device_is_deep Unexecuted instantiation: pdf_shading.c:device_is_deep Unexecuted instantiation: pdf_func.c:device_is_deep Unexecuted instantiation: pdf_trans.c:device_is_deep Unexecuted instantiation: pdf_device.c:device_is_deep Unexecuted instantiation: pdf_misc.c:device_is_deep Unexecuted instantiation: pdf_optcontent.c:device_is_deep Unexecuted instantiation: pdf_check.c:device_is_deep Unexecuted instantiation: pdf_sec.c:device_is_deep Unexecuted instantiation: pdf_utf8.c:device_is_deep Unexecuted instantiation: pdf_deref.c:device_is_deep Unexecuted instantiation: pdf_repair.c:device_is_deep Unexecuted instantiation: pdf_obj.c:device_is_deep Unexecuted instantiation: pdf_doc.c:device_is_deep Unexecuted instantiation: zfjpx.c:device_is_deep Unexecuted instantiation: imainarg.c:device_is_deep Unexecuted instantiation: gsclipsr.c:device_is_deep Unexecuted instantiation: gscdevn.c:device_is_deep Unexecuted instantiation: gxdevndi.c:device_is_deep Unexecuted instantiation: gxclipm.c:device_is_deep Unexecuted instantiation: gscolor3.c:device_is_deep Unexecuted instantiation: gsptype2.c:device_is_deep Unexecuted instantiation: gsshade.c:device_is_deep Unexecuted instantiation: gxshade1.c:device_is_deep Unexecuted instantiation: gxshade4.c:device_is_deep Unexecuted instantiation: gxshade6.c:device_is_deep Unexecuted instantiation: gscolor1.c:device_is_deep Unexecuted instantiation: gsht1.c:device_is_deep Unexecuted instantiation: gscolor2.c:device_is_deep Unexecuted instantiation: gspcolor.c:device_is_deep Unexecuted instantiation: gxclip2.c:device_is_deep Unexecuted instantiation: gspath1.c:device_is_deep Unexecuted instantiation: gstype42.c:device_is_deep Unexecuted instantiation: gxchrout.c:device_is_deep Unexecuted instantiation: gxttfb.c:device_is_deep Unexecuted instantiation: gzspotan.c:device_is_deep Unexecuted instantiation: gscie.c:device_is_deep Unexecuted instantiation: gscsepr.c:device_is_deep Unexecuted instantiation: gxblend1.c:device_is_deep Unexecuted instantiation: gdevepo.c:device_is_deep Unexecuted instantiation: gxclbits.c:device_is_deep Unexecuted instantiation: gxclrast.c:device_is_deep Unexecuted instantiation: gschar0.c:device_is_deep Unexecuted instantiation: gsfont0.c:device_is_deep Unexecuted instantiation: gstype1.c:device_is_deep Unexecuted instantiation: gxtype1.c:device_is_deep Unexecuted instantiation: gstype2.c:device_is_deep Unexecuted instantiation: gsicc_profilecache.c:device_is_deep Unexecuted instantiation: gdeveprn.c:device_is_deep Unexecuted instantiation: eprnparm.c:device_is_deep Unexecuted instantiation: eprnrend.c:device_is_deep Unexecuted instantiation: eprnfs.c:device_is_deep Unexecuted instantiation: gscicach.c:device_is_deep Unexecuted instantiation: gsdevmem.c:device_is_deep Unexecuted instantiation: gsfont.c:device_is_deep Unexecuted instantiation: gxacpath.c:device_is_deep Unexecuted instantiation: gxccache.c:device_is_deep Unexecuted instantiation: gxccman.c:device_is_deep Unexecuted instantiation: gxidata.c:device_is_deep Unexecuted instantiation: gxpdash.c:device_is_deep Unexecuted instantiation: pdf_loop_detect.c:device_is_deep Unexecuted instantiation: pdf_fapi.c:device_is_deep Unexecuted instantiation: gxshade.c:device_is_deep Unexecuted instantiation: gscscie.c:device_is_deep Unexecuted instantiation: gschar.c:device_is_deep |
1643 | | |
1644 | | /* A null device. This is used to temporarily disable output. */ |
1645 | | struct gx_device_null_s { |
1646 | | gx_device_forward_common; |
1647 | | }; |
1648 | | extern const gx_device_null gs_null_device; |
1649 | | |
1650 | | #define gx_device_is_null(dev)\ |
1651 | 2.59k | ((dev)->dname == gs_null_device.dname) |
1652 | | extern_st(st_device_null); |
1653 | | #define public_st_device_null() /* in gsdevice.c */\ |
1654 | | gs_public_st_complex_only(st_device_null, gx_device_null,\ |
1655 | | "gx_device_null", 0, device_forward_enum_ptrs,\ |
1656 | | device_forward_reloc_ptrs, gx_device_finalize) |
1657 | | #define st_device_null_max_ptrs st_device_forward_max_ptrs |
1658 | | |
1659 | | /* |
1660 | | * Initialize a just-allocated device from a prototype. If internal = |
1661 | | * false, the device is marked retained; if internal = true, the device is |
1662 | | * not marked retained. See the beginning of this file for more information |
1663 | | * about what this means. Normally, devices created for temporary use have |
1664 | | * internal = true (retained = false). |
1665 | | */ |
1666 | | int gx_device_init(gx_device * dev, const gx_device * proto, |
1667 | | gs_memory_t * mem, bool internal); |
1668 | | |
1669 | | /* |
1670 | | * Identical to gx_device_init, except that the reference counting is set |
1671 | | * up so that it doesn't attempt to free the device structure when the last |
1672 | | * instance is removed, and the device is always internal (never retained). |
1673 | | * |
1674 | | * If the device uses an initialize proc (and it should!) it can never |
1675 | | * fail. |
1676 | | */ |
1677 | | void gx_device_init_on_stack(gx_device * dev, const gx_device * proto, |
1678 | | gs_memory_t * mem); |
1679 | | |
1680 | | /* Make a null device. */ |
1681 | | /* The gs_memory_t argument is 0 if the device is temporary and local, */ |
1682 | | /* or the allocator that was used to allocate it if it is a real object. */ |
1683 | | void gs_make_null_device(gx_device_null *dev_null, gx_device *target, |
1684 | | gs_memory_t *mem); |
1685 | | /* Is a null device ? */ |
1686 | | bool gs_is_null_device(gx_device *dev); |
1687 | | |
1688 | | /* Set the target of a (forwarding) device. */ |
1689 | | void gx_device_set_target(gx_device_forward *fdev, gx_device *target); |
1690 | | |
1691 | | /* Mark a device as retained or not retained. */ |
1692 | | void gx_device_retain(gx_device *dev, bool retained); |
1693 | | |
1694 | | /* Calculate the raster (number of bytes in a scan line), */ |
1695 | | /* with byte or device padding. */ |
1696 | | uint gx_device_raster(const gx_device * dev, bool pad_to_word); |
1697 | | |
1698 | | /* Calculate the raster (number of bytes in a scan line), */ |
1699 | | /* with byte or device padding forcing chunky format. */ |
1700 | | uint gx_device_raster_chunky(const gx_device * dev, bool pad); |
1701 | | |
1702 | | /* Calculate the raster (with device padding) optionally for a given |
1703 | | * render_plane (may be NULL). */ |
1704 | | uint gx_device_raster_plane(const gx_device * dev, const gx_render_plane_t *render_plane); |
1705 | | |
1706 | | /* Adjust the resolution for devices that only have a fixed set of */ |
1707 | | /* geometries, so that the apparent size in inches remains constant. */ |
1708 | | /* If fit=1, the resolution is adjusted so that the entire image fits; */ |
1709 | | /* if fit=0, one dimension fits, but the other one is clipped. */ |
1710 | | int gx_device_adjust_resolution(gx_device * dev, int actual_width, int actual_height, int fit); |
1711 | | |
1712 | | /* Set the HWMargins to values defined in inches. */ |
1713 | | /* If move_origin is true, also reset the Margins. */ |
1714 | | void gx_device_set_margins(gx_device * dev, const float *margins /*[4] */ , |
1715 | | bool move_origin); |
1716 | | |
1717 | | /* Set the width and height (in pixels), updating MediaSize. */ |
1718 | | void gx_device_set_width_height(gx_device * dev, int width, int height); |
1719 | | |
1720 | | /* Set the resolution (in pixels per inch), updating width and height. */ |
1721 | | void gx_device_set_resolution(gx_device * dev, double x_dpi, double y_dpi); |
1722 | | |
1723 | | /* Set the MediaSize (in 1/72" units), updating width and height. */ |
1724 | | void gx_device_set_media_size(gx_device * dev, double media_width, double media_height); |
1725 | | |
1726 | | /****** BACKWARD COMPATIBILITY ******/ |
1727 | | #define gx_device_set_page_size(dev, w, h)\ |
1728 | 1.01k | gx_device_set_media_size(dev, w, h) |
1729 | | |
1730 | | /* |
1731 | | * Temporarily install a null device, or a special device such as |
1732 | | * a clipping or cache device. |
1733 | | */ |
1734 | | void gx_set_device_only(gs_gstate *, gx_device *); |
1735 | | |
1736 | | /* Close a device. */ |
1737 | | int gs_closedevice(gx_device *); |
1738 | | |
1739 | | /* "Free" a device locally allocated on the stack, by finalizing it. */ |
1740 | | void gx_device_free_local(gx_device *); |
1741 | | |
1742 | | /* ------ Device types (an unused concept right now) ------ */ |
1743 | | |
1744 | | #define dev_type_proc_initialize(proc)\ |
1745 | | int proc(gx_device *) |
1746 | | |
1747 | | typedef struct gx_device_type_s { |
1748 | | gs_memory_type_ptr_t stype; |
1749 | | dev_type_proc_initialize((*initialize)); |
1750 | | } gx_device_type; |
1751 | | |
1752 | | #define device_type(dtname, stype, initproc)\ |
1753 | | static dev_type_proc_initialize(initproc);\ |
1754 | | const gx_device_type dtname = { &stype, initproc } |
1755 | | |
1756 | | /*dev_type_proc_initialize(gdev_initialize); */ |
1757 | | |
1758 | | #ifdef DEBUG |
1759 | | void gx_device_dump(gx_device *dev, const char *text); |
1760 | | #endif |
1761 | | |
1762 | | /* Compare color information structures */ |
1763 | | bool gx_color_info_equal(const gx_device_color_info *p1, const gx_device_color_info *p2); |
1764 | | |
1765 | | /* Perform a callout to registered handlers from the device. */ |
1766 | | int gx_callout(gx_device *dev, int id, int size, void *data); |
1767 | | |
1768 | | static inline |
1769 | | gx_cm_opmsupported_t gx_get_opmsupported(gx_device *dev) |
1770 | 82 | { |
1771 | 82 | if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN) |
1772 | 69 | return dev->color_info.opmsupported; |
1773 | | |
1774 | 13 | (void)check_cmyk_color_model_comps(dev); |
1775 | | |
1776 | 13 | return dev->color_info.opmsupported; |
1777 | 82 | } Unexecuted instantiation: imain.c:gx_get_opmsupported Unexecuted instantiation: gconfig.c:gx_get_opmsupported Unexecuted instantiation: gximage3.c:gx_get_opmsupported Unexecuted instantiation: gximage4.c:gx_get_opmsupported Unexecuted instantiation: gxmclip.c:gx_get_opmsupported Unexecuted instantiation: gsptype1.c:gx_get_opmsupported Unexecuted instantiation: gxp1fill.c:gx_get_opmsupported Unexecuted instantiation: gxpcmap.c:gx_get_opmsupported Unexecuted instantiation: gxicolor.c:gx_get_opmsupported Unexecuted instantiation: gsdps1.c:gx_get_opmsupported Unexecuted instantiation: gsciemap.c:gx_get_opmsupported Unexecuted instantiation: gstrans.c:gx_get_opmsupported Unexecuted instantiation: gximag3x.c:gx_get_opmsupported Unexecuted instantiation: gxblend.c:gx_get_opmsupported Unexecuted instantiation: gdevp14.c:gx_get_opmsupported Unexecuted instantiation: gdevdevn.c:gx_get_opmsupported Unexecuted instantiation: gsequivc.c:gx_get_opmsupported Unexecuted instantiation: gdevdcrd.c:gx_get_opmsupported Unexecuted instantiation: gscpixel.c:gx_get_opmsupported Unexecuted instantiation: gdevbbox.c:gx_get_opmsupported Unexecuted instantiation: gdevprn.c:gx_get_opmsupported Unexecuted instantiation: gdevppla.c:gx_get_opmsupported Unexecuted instantiation: gdevflp.c:gx_get_opmsupported Unexecuted instantiation: gdevoflt.c:gx_get_opmsupported Unexecuted instantiation: gdevnup.c:gx_get_opmsupported Unexecuted instantiation: gdevsclass.c:gx_get_opmsupported Unexecuted instantiation: gxclist.c:gx_get_opmsupported Unexecuted instantiation: gxclpage.c:gx_get_opmsupported Unexecuted instantiation: gxclread.c:gx_get_opmsupported Unexecuted instantiation: gxclrect.c:gx_get_opmsupported Unexecuted instantiation: gxclutil.c:gx_get_opmsupported Unexecuted instantiation: gxclimag.c:gx_get_opmsupported Unexecuted instantiation: gxclpath.c:gx_get_opmsupported Unexecuted instantiation: gxdhtserial.c:gx_get_opmsupported Unexecuted instantiation: gxclthrd.c:gx_get_opmsupported gsicc.c:gx_get_opmsupported Line | Count | Source | 1770 | 82 | { | 1771 | 82 | if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN) | 1772 | 69 | return dev->color_info.opmsupported; | 1773 | | | 1774 | 13 | (void)check_cmyk_color_model_comps(dev); | 1775 | | | 1776 | 13 | return dev->color_info.opmsupported; | 1777 | 82 | } |
Unexecuted instantiation: gsicc_manage.c:gx_get_opmsupported Unexecuted instantiation: gsicc_cache.c:gx_get_opmsupported Unexecuted instantiation: gsicc_lcms2mt.c:gx_get_opmsupported Unexecuted instantiation: gsicc_create.c:gx_get_opmsupported Unexecuted instantiation: gsicc_nocm.c:gx_get_opmsupported Unexecuted instantiation: gsicc_replacecm.c:gx_get_opmsupported Unexecuted instantiation: gsicc_monitorcm.c:gx_get_opmsupported Unexecuted instantiation: gsicc_blacktext.c:gx_get_opmsupported Unexecuted instantiation: gdevcups.c:gx_get_opmsupported Unexecuted instantiation: gdevdjet.c:gx_get_opmsupported Unexecuted instantiation: gdevdljm.c:gx_get_opmsupported Unexecuted instantiation: gdevpcl.c:gx_get_opmsupported Unexecuted instantiation: gdevpcl3.c:gx_get_opmsupported Unexecuted instantiation: pclcap.c:gx_get_opmsupported Unexecuted instantiation: gdevpx.c:gx_get_opmsupported Unexecuted instantiation: gdevpxut.c:gx_get_opmsupported Unexecuted instantiation: gdevvec.c:gx_get_opmsupported Unexecuted instantiation: gdevupd.c:gx_get_opmsupported Unexecuted instantiation: gdevkrnlsclass.c:gx_get_opmsupported Unexecuted instantiation: gscolor.c:gx_get_opmsupported Unexecuted instantiation: gscoord.c:gx_get_opmsupported Unexecuted instantiation: gscspace.c:gx_get_opmsupported Unexecuted instantiation: gsovrc.c:gx_get_opmsupported Unexecuted instantiation: gxoprect.c:gx_get_opmsupported Unexecuted instantiation: gsdevice.c:gx_get_opmsupported Unexecuted instantiation: gsdparam.c:gx_get_opmsupported Unexecuted instantiation: gsht.c:gx_get_opmsupported Unexecuted instantiation: gshtscr.c:gx_get_opmsupported Unexecuted instantiation: gsimage.c:gx_get_opmsupported Unexecuted instantiation: gsgstate.c:gx_get_opmsupported Unexecuted instantiation: gsline.c:gx_get_opmsupported Unexecuted instantiation: gspaint.c:gx_get_opmsupported Unexecuted instantiation: gspath.c:gx_get_opmsupported Unexecuted instantiation: gsstate.c:gx_get_opmsupported Unexecuted instantiation: gstext.c:gx_get_opmsupported Unexecuted instantiation: gxfapi.c:gx_get_opmsupported Unexecuted instantiation: write_t2.c:gx_get_opmsupported Unexecuted instantiation: gxchar.c:gx_get_opmsupported Unexecuted instantiation: gxcht.c:gx_get_opmsupported Unexecuted instantiation: gxclip.c:gx_get_opmsupported Unexecuted instantiation: gxcmap.c:gx_get_opmsupported Unexecuted instantiation: gxcpath.c:gx_get_opmsupported Unexecuted instantiation: gxdcconv.c:gx_get_opmsupported Unexecuted instantiation: gxdcolor.c:gx_get_opmsupported Unexecuted instantiation: gxhldevc.c:gx_get_opmsupported Unexecuted instantiation: gxfill.c:gx_get_opmsupported Unexecuted instantiation: gxht.c:gx_get_opmsupported Unexecuted instantiation: gxht_thresh.c:gx_get_opmsupported Unexecuted instantiation: gxifast.c:gx_get_opmsupported Unexecuted instantiation: gximage.c:gx_get_opmsupported Unexecuted instantiation: gximdecode.c:gx_get_opmsupported Unexecuted instantiation: gximage1.c:gx_get_opmsupported Unexecuted instantiation: gximono.c:gx_get_opmsupported Unexecuted instantiation: gxipixel.c:gx_get_opmsupported Unexecuted instantiation: gximask.c:gx_get_opmsupported Unexecuted instantiation: gxi12bit.c:gx_get_opmsupported Unexecuted instantiation: gxi16bit.c:gx_get_opmsupported Unexecuted instantiation: gxiscale.c:gx_get_opmsupported Unexecuted instantiation: gxpaint.c:gx_get_opmsupported Unexecuted instantiation: gxpcopy.c:gx_get_opmsupported Unexecuted instantiation: gxsample.c:gx_get_opmsupported Unexecuted instantiation: gxstroke.c:gx_get_opmsupported Unexecuted instantiation: gdevabuf.c:gx_get_opmsupported Unexecuted instantiation: gdevdbit.c:gx_get_opmsupported Unexecuted instantiation: gdevddrw.c:gx_get_opmsupported Unexecuted instantiation: gdevdflt.c:gx_get_opmsupported Unexecuted instantiation: gdevdgbr.c:gx_get_opmsupported Unexecuted instantiation: gdevnfwd.c:gx_get_opmsupported Unexecuted instantiation: gdevmem.c:gx_get_opmsupported Unexecuted instantiation: gdevplnx.c:gx_get_opmsupported Unexecuted instantiation: gdevm1.c:gx_get_opmsupported Unexecuted instantiation: gdevm2.c:gx_get_opmsupported Unexecuted instantiation: gdevm4.c:gx_get_opmsupported Unexecuted instantiation: gdevm8.c:gx_get_opmsupported Unexecuted instantiation: gdevm16.c:gx_get_opmsupported Unexecuted instantiation: gdevm24.c:gx_get_opmsupported Unexecuted instantiation: gdevm32.c:gx_get_opmsupported Unexecuted instantiation: gdevmpla.c:gx_get_opmsupported Unexecuted instantiation: gdevm40.c:gx_get_opmsupported Unexecuted instantiation: gdevm48.c:gx_get_opmsupported Unexecuted instantiation: gdevm56.c:gx_get_opmsupported Unexecuted instantiation: gdevm64.c:gx_get_opmsupported Unexecuted instantiation: gdevmx.c:gx_get_opmsupported Unexecuted instantiation: gdevdsha.c:gx_get_opmsupported Unexecuted instantiation: gxscanc.c:gx_get_opmsupported Unexecuted instantiation: gdevdrop.c:gx_get_opmsupported Unexecuted instantiation: gdevmr1.c:gx_get_opmsupported Unexecuted instantiation: gdevmr2n.c:gx_get_opmsupported Unexecuted instantiation: gdevmr8n.c:gx_get_opmsupported Unexecuted instantiation: gdevrops.c:gx_get_opmsupported Unexecuted instantiation: gsrop.c:gx_get_opmsupported Unexecuted instantiation: zcolor1.c:gx_get_opmsupported Unexecuted instantiation: zht1.c:gx_get_opmsupported Unexecuted instantiation: zupath.c:gx_get_opmsupported Unexecuted instantiation: gdevhit.c:gx_get_opmsupported Unexecuted instantiation: zdps1.c:gx_get_opmsupported Unexecuted instantiation: zchar1.c:gx_get_opmsupported Unexecuted instantiation: zcharout.c:gx_get_opmsupported Unexecuted instantiation: zfont1.c:gx_get_opmsupported Unexecuted instantiation: zusparam.c:gx_get_opmsupported Unexecuted instantiation: zchar42.c:gx_get_opmsupported Unexecuted instantiation: zfont0.c:gx_get_opmsupported Unexecuted instantiation: zfdctd.c:gx_get_opmsupported Unexecuted instantiation: zdevice2.c:gx_get_opmsupported Unexecuted instantiation: zpcolor.c:gx_get_opmsupported Unexecuted instantiation: idisp.c:gx_get_opmsupported Unexecuted instantiation: psapi.c:gx_get_opmsupported Unexecuted instantiation: zfileio.c:gx_get_opmsupported Unexecuted instantiation: zbfont.c:gx_get_opmsupported Unexecuted instantiation: zchar.c:gx_get_opmsupported Unexecuted instantiation: zcolor.c:gx_get_opmsupported Unexecuted instantiation: zdevice.c:gx_get_opmsupported Unexecuted instantiation: zfont.c:gx_get_opmsupported Unexecuted instantiation: zht.c:gx_get_opmsupported Unexecuted instantiation: zimage.c:gx_get_opmsupported Unexecuted instantiation: zfapi.c:gx_get_opmsupported Unexecuted instantiation: zcsindex.c:gx_get_opmsupported Unexecuted instantiation: zht2.c:gx_get_opmsupported Unexecuted instantiation: zcssepr.c:gx_get_opmsupported Unexecuted instantiation: zfunc4.c:gx_get_opmsupported Unexecuted instantiation: zform.c:gx_get_opmsupported Unexecuted instantiation: zimage3.c:gx_get_opmsupported Unexecuted instantiation: zicc.c:gx_get_opmsupported Unexecuted instantiation: ztrans.c:gx_get_opmsupported Unexecuted instantiation: zpdfops.c:gx_get_opmsupported Unexecuted instantiation: ghostpdf.c:gx_get_opmsupported Unexecuted instantiation: pdf_dict.c:gx_get_opmsupported Unexecuted instantiation: pdf_array.c:gx_get_opmsupported Unexecuted instantiation: pdf_xref.c:gx_get_opmsupported Unexecuted instantiation: pdf_int.c:gx_get_opmsupported Unexecuted instantiation: pdf_file.c:gx_get_opmsupported Unexecuted instantiation: pdf_path.c:gx_get_opmsupported Unexecuted instantiation: pdf_colour.c:gx_get_opmsupported Unexecuted instantiation: pdf_pattern.c:gx_get_opmsupported Unexecuted instantiation: pdf_gstate.c:gx_get_opmsupported Unexecuted instantiation: pdf_stack.c:gx_get_opmsupported Unexecuted instantiation: pdf_image.c:gx_get_opmsupported Unexecuted instantiation: pdf_page.c:gx_get_opmsupported Unexecuted instantiation: pdf_annot.c:gx_get_opmsupported Unexecuted instantiation: pdf_mark.c:gx_get_opmsupported Unexecuted instantiation: pdf_font.c:gx_get_opmsupported Unexecuted instantiation: pdf_font0.c:gx_get_opmsupported Unexecuted instantiation: pdf_ciddec.c:gx_get_opmsupported Unexecuted instantiation: pdf_font1.c:gx_get_opmsupported Unexecuted instantiation: pdf_font1C.c:gx_get_opmsupported Unexecuted instantiation: pdf_fontps.c:gx_get_opmsupported Unexecuted instantiation: pdf_font3.c:gx_get_opmsupported Unexecuted instantiation: pdf_fontTT.c:gx_get_opmsupported Unexecuted instantiation: pdf_font11.c:gx_get_opmsupported Unexecuted instantiation: pdf_cmap.c:gx_get_opmsupported Unexecuted instantiation: pdf_fmap.c:gx_get_opmsupported Unexecuted instantiation: pdf_text.c:gx_get_opmsupported Unexecuted instantiation: pdf_shading.c:gx_get_opmsupported Unexecuted instantiation: pdf_func.c:gx_get_opmsupported Unexecuted instantiation: pdf_trans.c:gx_get_opmsupported Unexecuted instantiation: pdf_device.c:gx_get_opmsupported Unexecuted instantiation: pdf_misc.c:gx_get_opmsupported Unexecuted instantiation: pdf_optcontent.c:gx_get_opmsupported Unexecuted instantiation: pdf_check.c:gx_get_opmsupported Unexecuted instantiation: pdf_sec.c:gx_get_opmsupported Unexecuted instantiation: pdf_utf8.c:gx_get_opmsupported Unexecuted instantiation: pdf_deref.c:gx_get_opmsupported Unexecuted instantiation: pdf_repair.c:gx_get_opmsupported Unexecuted instantiation: pdf_obj.c:gx_get_opmsupported Unexecuted instantiation: pdf_doc.c:gx_get_opmsupported Unexecuted instantiation: zfjpx.c:gx_get_opmsupported Unexecuted instantiation: imainarg.c:gx_get_opmsupported Unexecuted instantiation: gsclipsr.c:gx_get_opmsupported Unexecuted instantiation: gscdevn.c:gx_get_opmsupported Unexecuted instantiation: gxdevndi.c:gx_get_opmsupported Unexecuted instantiation: gxclipm.c:gx_get_opmsupported Unexecuted instantiation: gscolor3.c:gx_get_opmsupported Unexecuted instantiation: gsptype2.c:gx_get_opmsupported Unexecuted instantiation: gsshade.c:gx_get_opmsupported Unexecuted instantiation: gxshade1.c:gx_get_opmsupported Unexecuted instantiation: gxshade4.c:gx_get_opmsupported Unexecuted instantiation: gxshade6.c:gx_get_opmsupported Unexecuted instantiation: gscolor1.c:gx_get_opmsupported Unexecuted instantiation: gsht1.c:gx_get_opmsupported Unexecuted instantiation: gscolor2.c:gx_get_opmsupported Unexecuted instantiation: gspcolor.c:gx_get_opmsupported Unexecuted instantiation: gxclip2.c:gx_get_opmsupported Unexecuted instantiation: gspath1.c:gx_get_opmsupported Unexecuted instantiation: gstype42.c:gx_get_opmsupported Unexecuted instantiation: gxchrout.c:gx_get_opmsupported Unexecuted instantiation: gxttfb.c:gx_get_opmsupported Unexecuted instantiation: gzspotan.c:gx_get_opmsupported Unexecuted instantiation: gscie.c:gx_get_opmsupported Unexecuted instantiation: gscsepr.c:gx_get_opmsupported Unexecuted instantiation: gxblend1.c:gx_get_opmsupported Unexecuted instantiation: gdevepo.c:gx_get_opmsupported Unexecuted instantiation: gxclbits.c:gx_get_opmsupported Unexecuted instantiation: gxclrast.c:gx_get_opmsupported Unexecuted instantiation: gschar0.c:gx_get_opmsupported Unexecuted instantiation: gsfont0.c:gx_get_opmsupported Unexecuted instantiation: gstype1.c:gx_get_opmsupported Unexecuted instantiation: gxtype1.c:gx_get_opmsupported Unexecuted instantiation: gstype2.c:gx_get_opmsupported Unexecuted instantiation: gsicc_profilecache.c:gx_get_opmsupported Unexecuted instantiation: gdeveprn.c:gx_get_opmsupported Unexecuted instantiation: eprnparm.c:gx_get_opmsupported Unexecuted instantiation: eprnrend.c:gx_get_opmsupported Unexecuted instantiation: eprnfs.c:gx_get_opmsupported Unexecuted instantiation: gscicach.c:gx_get_opmsupported Unexecuted instantiation: gsdevmem.c:gx_get_opmsupported Unexecuted instantiation: gsfont.c:gx_get_opmsupported Unexecuted instantiation: gxacpath.c:gx_get_opmsupported Unexecuted instantiation: gxccache.c:gx_get_opmsupported Unexecuted instantiation: gxccman.c:gx_get_opmsupported Unexecuted instantiation: gxidata.c:gx_get_opmsupported Unexecuted instantiation: gxpdash.c:gx_get_opmsupported Unexecuted instantiation: pdf_loop_detect.c:gx_get_opmsupported Unexecuted instantiation: pdf_fapi.c:gx_get_opmsupported Unexecuted instantiation: gxshade.c:gx_get_opmsupported Unexecuted instantiation: gscscie.c:gx_get_opmsupported Unexecuted instantiation: gschar.c:gx_get_opmsupported |
1778 | | |
1779 | | static inline |
1780 | | gx_color_index gx_get_process_comps(gx_device *dev) |
1781 | 0 | { |
1782 | 0 | if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN) |
1783 | 0 | return dev->color_info.process_comps; |
1784 | | |
1785 | 0 | return check_cmyk_color_model_comps(dev); |
1786 | 0 | } Unexecuted instantiation: imain.c:gx_get_process_comps Unexecuted instantiation: gconfig.c:gx_get_process_comps Unexecuted instantiation: gximage3.c:gx_get_process_comps Unexecuted instantiation: gximage4.c:gx_get_process_comps Unexecuted instantiation: gxmclip.c:gx_get_process_comps Unexecuted instantiation: gsptype1.c:gx_get_process_comps Unexecuted instantiation: gxp1fill.c:gx_get_process_comps Unexecuted instantiation: gxpcmap.c:gx_get_process_comps Unexecuted instantiation: gxicolor.c:gx_get_process_comps Unexecuted instantiation: gsdps1.c:gx_get_process_comps Unexecuted instantiation: gsciemap.c:gx_get_process_comps Unexecuted instantiation: gstrans.c:gx_get_process_comps Unexecuted instantiation: gximag3x.c:gx_get_process_comps Unexecuted instantiation: gxblend.c:gx_get_process_comps Unexecuted instantiation: gdevp14.c:gx_get_process_comps Unexecuted instantiation: gdevdevn.c:gx_get_process_comps Unexecuted instantiation: gsequivc.c:gx_get_process_comps Unexecuted instantiation: gdevdcrd.c:gx_get_process_comps Unexecuted instantiation: gscpixel.c:gx_get_process_comps Unexecuted instantiation: gdevbbox.c:gx_get_process_comps Unexecuted instantiation: gdevprn.c:gx_get_process_comps Unexecuted instantiation: gdevppla.c:gx_get_process_comps Unexecuted instantiation: gdevflp.c:gx_get_process_comps Unexecuted instantiation: gdevoflt.c:gx_get_process_comps Unexecuted instantiation: gdevnup.c:gx_get_process_comps Unexecuted instantiation: gdevsclass.c:gx_get_process_comps Unexecuted instantiation: gxclist.c:gx_get_process_comps Unexecuted instantiation: gxclpage.c:gx_get_process_comps Unexecuted instantiation: gxclread.c:gx_get_process_comps Unexecuted instantiation: gxclrect.c:gx_get_process_comps Unexecuted instantiation: gxclutil.c:gx_get_process_comps Unexecuted instantiation: gxclimag.c:gx_get_process_comps Unexecuted instantiation: gxclpath.c:gx_get_process_comps Unexecuted instantiation: gxdhtserial.c:gx_get_process_comps Unexecuted instantiation: gxclthrd.c:gx_get_process_comps Unexecuted instantiation: gsicc.c:gx_get_process_comps Unexecuted instantiation: gsicc_manage.c:gx_get_process_comps Unexecuted instantiation: gsicc_cache.c:gx_get_process_comps Unexecuted instantiation: gsicc_lcms2mt.c:gx_get_process_comps Unexecuted instantiation: gsicc_create.c:gx_get_process_comps Unexecuted instantiation: gsicc_nocm.c:gx_get_process_comps Unexecuted instantiation: gsicc_replacecm.c:gx_get_process_comps Unexecuted instantiation: gsicc_monitorcm.c:gx_get_process_comps Unexecuted instantiation: gsicc_blacktext.c:gx_get_process_comps Unexecuted instantiation: gdevcups.c:gx_get_process_comps Unexecuted instantiation: gdevdjet.c:gx_get_process_comps Unexecuted instantiation: gdevdljm.c:gx_get_process_comps Unexecuted instantiation: gdevpcl.c:gx_get_process_comps Unexecuted instantiation: gdevpcl3.c:gx_get_process_comps Unexecuted instantiation: pclcap.c:gx_get_process_comps Unexecuted instantiation: gdevpx.c:gx_get_process_comps Unexecuted instantiation: gdevpxut.c:gx_get_process_comps Unexecuted instantiation: gdevvec.c:gx_get_process_comps Unexecuted instantiation: gdevupd.c:gx_get_process_comps Unexecuted instantiation: gdevkrnlsclass.c:gx_get_process_comps Unexecuted instantiation: gscolor.c:gx_get_process_comps Unexecuted instantiation: gscoord.c:gx_get_process_comps Unexecuted instantiation: gscspace.c:gx_get_process_comps Unexecuted instantiation: gsovrc.c:gx_get_process_comps Unexecuted instantiation: gxoprect.c:gx_get_process_comps Unexecuted instantiation: gsdevice.c:gx_get_process_comps Unexecuted instantiation: gsdparam.c:gx_get_process_comps Unexecuted instantiation: gsht.c:gx_get_process_comps Unexecuted instantiation: gshtscr.c:gx_get_process_comps Unexecuted instantiation: gsimage.c:gx_get_process_comps Unexecuted instantiation: gsgstate.c:gx_get_process_comps Unexecuted instantiation: gsline.c:gx_get_process_comps Unexecuted instantiation: gspaint.c:gx_get_process_comps Unexecuted instantiation: gspath.c:gx_get_process_comps Unexecuted instantiation: gsstate.c:gx_get_process_comps Unexecuted instantiation: gstext.c:gx_get_process_comps Unexecuted instantiation: gxfapi.c:gx_get_process_comps Unexecuted instantiation: write_t2.c:gx_get_process_comps Unexecuted instantiation: gxchar.c:gx_get_process_comps Unexecuted instantiation: gxcht.c:gx_get_process_comps Unexecuted instantiation: gxclip.c:gx_get_process_comps Unexecuted instantiation: gxcmap.c:gx_get_process_comps Unexecuted instantiation: gxcpath.c:gx_get_process_comps Unexecuted instantiation: gxdcconv.c:gx_get_process_comps Unexecuted instantiation: gxdcolor.c:gx_get_process_comps Unexecuted instantiation: gxhldevc.c:gx_get_process_comps Unexecuted instantiation: gxfill.c:gx_get_process_comps Unexecuted instantiation: gxht.c:gx_get_process_comps Unexecuted instantiation: gxht_thresh.c:gx_get_process_comps Unexecuted instantiation: gxifast.c:gx_get_process_comps Unexecuted instantiation: gximage.c:gx_get_process_comps Unexecuted instantiation: gximdecode.c:gx_get_process_comps Unexecuted instantiation: gximage1.c:gx_get_process_comps Unexecuted instantiation: gximono.c:gx_get_process_comps Unexecuted instantiation: gxipixel.c:gx_get_process_comps Unexecuted instantiation: gximask.c:gx_get_process_comps Unexecuted instantiation: gxi12bit.c:gx_get_process_comps Unexecuted instantiation: gxi16bit.c:gx_get_process_comps Unexecuted instantiation: gxiscale.c:gx_get_process_comps Unexecuted instantiation: gxpaint.c:gx_get_process_comps Unexecuted instantiation: gxpcopy.c:gx_get_process_comps Unexecuted instantiation: gxsample.c:gx_get_process_comps Unexecuted instantiation: gxstroke.c:gx_get_process_comps Unexecuted instantiation: gdevabuf.c:gx_get_process_comps Unexecuted instantiation: gdevdbit.c:gx_get_process_comps Unexecuted instantiation: gdevddrw.c:gx_get_process_comps Unexecuted instantiation: gdevdflt.c:gx_get_process_comps Unexecuted instantiation: gdevdgbr.c:gx_get_process_comps Unexecuted instantiation: gdevnfwd.c:gx_get_process_comps Unexecuted instantiation: gdevmem.c:gx_get_process_comps Unexecuted instantiation: gdevplnx.c:gx_get_process_comps Unexecuted instantiation: gdevm1.c:gx_get_process_comps Unexecuted instantiation: gdevm2.c:gx_get_process_comps Unexecuted instantiation: gdevm4.c:gx_get_process_comps Unexecuted instantiation: gdevm8.c:gx_get_process_comps Unexecuted instantiation: gdevm16.c:gx_get_process_comps Unexecuted instantiation: gdevm24.c:gx_get_process_comps Unexecuted instantiation: gdevm32.c:gx_get_process_comps Unexecuted instantiation: gdevmpla.c:gx_get_process_comps Unexecuted instantiation: gdevm40.c:gx_get_process_comps Unexecuted instantiation: gdevm48.c:gx_get_process_comps Unexecuted instantiation: gdevm56.c:gx_get_process_comps Unexecuted instantiation: gdevm64.c:gx_get_process_comps Unexecuted instantiation: gdevmx.c:gx_get_process_comps Unexecuted instantiation: gdevdsha.c:gx_get_process_comps Unexecuted instantiation: gxscanc.c:gx_get_process_comps Unexecuted instantiation: gdevdrop.c:gx_get_process_comps Unexecuted instantiation: gdevmr1.c:gx_get_process_comps Unexecuted instantiation: gdevmr2n.c:gx_get_process_comps Unexecuted instantiation: gdevmr8n.c:gx_get_process_comps Unexecuted instantiation: gdevrops.c:gx_get_process_comps Unexecuted instantiation: gsrop.c:gx_get_process_comps Unexecuted instantiation: zcolor1.c:gx_get_process_comps Unexecuted instantiation: zht1.c:gx_get_process_comps Unexecuted instantiation: zupath.c:gx_get_process_comps Unexecuted instantiation: gdevhit.c:gx_get_process_comps Unexecuted instantiation: zdps1.c:gx_get_process_comps Unexecuted instantiation: zchar1.c:gx_get_process_comps Unexecuted instantiation: zcharout.c:gx_get_process_comps Unexecuted instantiation: zfont1.c:gx_get_process_comps Unexecuted instantiation: zusparam.c:gx_get_process_comps Unexecuted instantiation: zchar42.c:gx_get_process_comps Unexecuted instantiation: zfont0.c:gx_get_process_comps Unexecuted instantiation: zfdctd.c:gx_get_process_comps Unexecuted instantiation: zdevice2.c:gx_get_process_comps Unexecuted instantiation: zpcolor.c:gx_get_process_comps Unexecuted instantiation: idisp.c:gx_get_process_comps Unexecuted instantiation: psapi.c:gx_get_process_comps Unexecuted instantiation: zfileio.c:gx_get_process_comps Unexecuted instantiation: zbfont.c:gx_get_process_comps Unexecuted instantiation: zchar.c:gx_get_process_comps Unexecuted instantiation: zcolor.c:gx_get_process_comps Unexecuted instantiation: zdevice.c:gx_get_process_comps Unexecuted instantiation: zfont.c:gx_get_process_comps Unexecuted instantiation: zht.c:gx_get_process_comps Unexecuted instantiation: zimage.c:gx_get_process_comps Unexecuted instantiation: zfapi.c:gx_get_process_comps Unexecuted instantiation: zcsindex.c:gx_get_process_comps Unexecuted instantiation: zht2.c:gx_get_process_comps Unexecuted instantiation: zcssepr.c:gx_get_process_comps Unexecuted instantiation: zfunc4.c:gx_get_process_comps Unexecuted instantiation: zform.c:gx_get_process_comps Unexecuted instantiation: zimage3.c:gx_get_process_comps Unexecuted instantiation: zicc.c:gx_get_process_comps Unexecuted instantiation: ztrans.c:gx_get_process_comps Unexecuted instantiation: zpdfops.c:gx_get_process_comps Unexecuted instantiation: ghostpdf.c:gx_get_process_comps Unexecuted instantiation: pdf_dict.c:gx_get_process_comps Unexecuted instantiation: pdf_array.c:gx_get_process_comps Unexecuted instantiation: pdf_xref.c:gx_get_process_comps Unexecuted instantiation: pdf_int.c:gx_get_process_comps Unexecuted instantiation: pdf_file.c:gx_get_process_comps Unexecuted instantiation: pdf_path.c:gx_get_process_comps Unexecuted instantiation: pdf_colour.c:gx_get_process_comps Unexecuted instantiation: pdf_pattern.c:gx_get_process_comps Unexecuted instantiation: pdf_gstate.c:gx_get_process_comps Unexecuted instantiation: pdf_stack.c:gx_get_process_comps Unexecuted instantiation: pdf_image.c:gx_get_process_comps Unexecuted instantiation: pdf_page.c:gx_get_process_comps Unexecuted instantiation: pdf_annot.c:gx_get_process_comps Unexecuted instantiation: pdf_mark.c:gx_get_process_comps Unexecuted instantiation: pdf_font.c:gx_get_process_comps Unexecuted instantiation: pdf_font0.c:gx_get_process_comps Unexecuted instantiation: pdf_ciddec.c:gx_get_process_comps Unexecuted instantiation: pdf_font1.c:gx_get_process_comps Unexecuted instantiation: pdf_font1C.c:gx_get_process_comps Unexecuted instantiation: pdf_fontps.c:gx_get_process_comps Unexecuted instantiation: pdf_font3.c:gx_get_process_comps Unexecuted instantiation: pdf_fontTT.c:gx_get_process_comps Unexecuted instantiation: pdf_font11.c:gx_get_process_comps Unexecuted instantiation: pdf_cmap.c:gx_get_process_comps Unexecuted instantiation: pdf_fmap.c:gx_get_process_comps Unexecuted instantiation: pdf_text.c:gx_get_process_comps Unexecuted instantiation: pdf_shading.c:gx_get_process_comps Unexecuted instantiation: pdf_func.c:gx_get_process_comps Unexecuted instantiation: pdf_trans.c:gx_get_process_comps Unexecuted instantiation: pdf_device.c:gx_get_process_comps Unexecuted instantiation: pdf_misc.c:gx_get_process_comps Unexecuted instantiation: pdf_optcontent.c:gx_get_process_comps Unexecuted instantiation: pdf_check.c:gx_get_process_comps Unexecuted instantiation: pdf_sec.c:gx_get_process_comps Unexecuted instantiation: pdf_utf8.c:gx_get_process_comps Unexecuted instantiation: pdf_deref.c:gx_get_process_comps Unexecuted instantiation: pdf_repair.c:gx_get_process_comps Unexecuted instantiation: pdf_obj.c:gx_get_process_comps Unexecuted instantiation: pdf_doc.c:gx_get_process_comps Unexecuted instantiation: zfjpx.c:gx_get_process_comps Unexecuted instantiation: imainarg.c:gx_get_process_comps Unexecuted instantiation: gsclipsr.c:gx_get_process_comps Unexecuted instantiation: gscdevn.c:gx_get_process_comps Unexecuted instantiation: gxdevndi.c:gx_get_process_comps Unexecuted instantiation: gxclipm.c:gx_get_process_comps Unexecuted instantiation: gscolor3.c:gx_get_process_comps Unexecuted instantiation: gsptype2.c:gx_get_process_comps Unexecuted instantiation: gsshade.c:gx_get_process_comps Unexecuted instantiation: gxshade1.c:gx_get_process_comps Unexecuted instantiation: gxshade4.c:gx_get_process_comps Unexecuted instantiation: gxshade6.c:gx_get_process_comps Unexecuted instantiation: gscolor1.c:gx_get_process_comps Unexecuted instantiation: gsht1.c:gx_get_process_comps Unexecuted instantiation: gscolor2.c:gx_get_process_comps Unexecuted instantiation: gspcolor.c:gx_get_process_comps Unexecuted instantiation: gxclip2.c:gx_get_process_comps Unexecuted instantiation: gspath1.c:gx_get_process_comps Unexecuted instantiation: gstype42.c:gx_get_process_comps Unexecuted instantiation: gxchrout.c:gx_get_process_comps Unexecuted instantiation: gxttfb.c:gx_get_process_comps Unexecuted instantiation: gzspotan.c:gx_get_process_comps Unexecuted instantiation: gscie.c:gx_get_process_comps Unexecuted instantiation: gscsepr.c:gx_get_process_comps Unexecuted instantiation: gxblend1.c:gx_get_process_comps Unexecuted instantiation: gdevepo.c:gx_get_process_comps Unexecuted instantiation: gxclbits.c:gx_get_process_comps Unexecuted instantiation: gxclrast.c:gx_get_process_comps Unexecuted instantiation: gschar0.c:gx_get_process_comps Unexecuted instantiation: gsfont0.c:gx_get_process_comps Unexecuted instantiation: gstype1.c:gx_get_process_comps Unexecuted instantiation: gxtype1.c:gx_get_process_comps Unexecuted instantiation: gstype2.c:gx_get_process_comps Unexecuted instantiation: gsicc_profilecache.c:gx_get_process_comps Unexecuted instantiation: gdeveprn.c:gx_get_process_comps Unexecuted instantiation: eprnparm.c:gx_get_process_comps Unexecuted instantiation: eprnrend.c:gx_get_process_comps Unexecuted instantiation: eprnfs.c:gx_get_process_comps Unexecuted instantiation: gscicach.c:gx_get_process_comps Unexecuted instantiation: gsdevmem.c:gx_get_process_comps Unexecuted instantiation: gsfont.c:gx_get_process_comps Unexecuted instantiation: gxacpath.c:gx_get_process_comps Unexecuted instantiation: gxccache.c:gx_get_process_comps Unexecuted instantiation: gxccman.c:gx_get_process_comps Unexecuted instantiation: gxidata.c:gx_get_process_comps Unexecuted instantiation: gxpdash.c:gx_get_process_comps Unexecuted instantiation: pdf_loop_detect.c:gx_get_process_comps Unexecuted instantiation: pdf_fapi.c:gx_get_process_comps Unexecuted instantiation: gxshade.c:gx_get_process_comps Unexecuted instantiation: gscscie.c:gx_get_process_comps Unexecuted instantiation: gschar.c:gx_get_process_comps |
1787 | | |
1788 | | |
1789 | | #endif /* gxdevcli_INCLUDED */ |