Coverage Report

Created: 2025-06-24 07:01

/src/ghostpdl/base/gxdevcli.h
Line
Count
Source (jump to first uncovered line)
1
/* Copyright (C) 2001-2024 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.,  39 Mesa Street, Suite 108A, San Francisco,
13
   CA 94129, USA, 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
23.3M
#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
273M
{
437
273M
    return (info->separable_and_linear >= GX_CINFO_SEP_LIN);
438
273M
}
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
gsicc.c:colors_are_separable_and_linear
Line
Count
Source
436
46.0M
{
437
46.0M
    return (info->separable_and_linear >= GX_CINFO_SEP_LIN);
438
46.0M
}
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: gdevbmp.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevbmpc.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpccm.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevcups.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdf.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfb.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfc.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfd.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfe.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfg.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfi.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfj.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfk.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfm.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfo.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfp.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdft.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfr.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfu.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdfv.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpsdi.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpsdp.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpsds.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpsdu.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevvec.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdt.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdtd.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdtf.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdti.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdts.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdtt.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdtw.c:colors_are_separable_and_linear
Unexecuted instantiation: gxfcopy.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevfax.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: gdevpbm.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevmpla.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpng.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpsd.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: gdevtsep.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevtifs.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevupd.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevxps.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevkrnlsclass.c:colors_are_separable_and_linear
Unexecuted instantiation: gschar.c:colors_are_separable_and_linear
Unexecuted instantiation: gscolor.c:colors_are_separable_and_linear
Unexecuted instantiation: gscoord.c:colors_are_separable_and_linear
gscspace.c:colors_are_separable_and_linear
Line
Count
Source
436
676k
{
437
676k
    return (info->separable_and_linear >= GX_CINFO_SEP_LIN);
438
676k
}
gsovrc.c:colors_are_separable_and_linear
Line
Count
Source
436
896
{
437
896
    return (info->separable_and_linear >= GX_CINFO_SEP_LIN);
438
896
}
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: gsfont.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: gxccache.c:colors_are_separable_and_linear
Unexecuted instantiation: gxccman.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: gxidata.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
216M
{
437
216M
    return (info->separable_and_linear >= GX_CINFO_SEP_LIN);
438
216M
}
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: 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: pdf_loop_detect.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: 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: gxshade.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
10.4M
{
437
10.4M
    return (info->separable_and_linear >= GX_CINFO_SEP_LIN);
438
10.4M
}
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: gxdownscale.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: gdevpdtb.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdtc.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpdte.c:colors_are_separable_and_linear
Unexecuted instantiation: gdevpsfx.c:colors_are_separable_and_linear
Unexecuted instantiation: gstiffio.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: gxacpath.c:colors_are_separable_and_linear
Unexecuted instantiation: gxpdash.c:colors_are_separable_and_linear
Unexecuted instantiation: pdf_fapi.c:colors_are_separable_and_linear
Unexecuted instantiation: gscscie.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
87.7k
    {mcmp /* max components */, \
445
87.7k
     nc /* number components */, \
446
175k
     p /* polarity */, \
447
87.7k
     d /* depth */, \
448
175k
     gi /* gray index */, \
449
87.7k
     mg /* max gray */, \
450
87.7k
     mc /* max color */, \
451
87.7k
     dg /* dither grays */, \
452
87.7k
     dc /* dither colors */, \
453
87.7k
     { ta, ga } /* antialias info text, graphics */, \
454
87.7k
     sl /* separable_and_linear */, \
455
87.7k
     { 0 } /* component shift */, \
456
87.7k
     { 0 } /* component bits */, \
457
87.7k
     { 0 } /* component mask */, \
458
351k
     cn /* process color name */, \
459
87.7k
     GX_CINFO_OPMSUPPORTED_UNKNOWN /* opmsupported */, \
460
87.7k
     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
118M
   ( (dev)->color_info.num_components > 1 ||                \
468
118M
     (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
87.7k
    dci_extended_alpha_values(nc, nc,          \
505
87.7k
                              dci_std_polarity(nc),         \
506
87.7k
                              depth,                        \
507
87.7k
                              dci_std_gray_index(nc),       \
508
87.7k
                              mg, mc, dg, dc, ta, ga,       \
509
87.7k
                              GX_CINFO_UNKNOWN_SEP_LIN,     \
510
87.7k
                              dci_std_cm_name(nc) )
511
#define dci_alpha_values_add(nc, depth, mg, mc, dg, dc, ta, ga) \
512
    dci_extended_alpha_values(nc, nc,         \
513
                              GX_CINFO_POLARITY_ADDITIVE,   \
514
                              depth,                        \
515
                              dci_std_gray_index(nc),       \
516
                              mg, mc, dg, dc, ta, ga,       \
517
                              GX_CINFO_UNKNOWN_SEP_LIN,     \
518
                              dci_std_cm_name(nc) )
519
520
/*
521
 * Determine the depth corresponding to a color_bits specification.
522
 * Note that color_bits == 0 ==> depth == 0; surprisingly this
523
 * case is used.
524
*/
525
#define dci_std_color_depth(color_bits)   \
526
    ((color_bits) == 1 ? 1 : ((color_bits) + 7) & ~7)
527
528
/*
529
 * Determine the number of components corresponding to a color_bits
530
 * specification. A device is monochrome only if it is bi-level;
531
 * the 4 and 8 bit cases are handled as mapped color displays (for
532
 * compatibility with existing code). The peculiar color_bits = 0
533
 * case is considered monochrome, for no apparent reason.
534
 */
535
#define dci_std_color_num_components(color_bits)      \
536
    ( (color_bits) <= 1 ? 1                           \
537
                      : ((color_bits) % 3 == 0 ||     \
538
                         (color_bits) == 4     ||     \
539
                         (color_bits) == 8       ) ? 3 : 4 )
540
541
/*
542
 * The number of bits assigned to the gray/black color component,
543
 * assuming there is such a component. The underlying assumption
544
 * is that any extra bits are assigned to this component.
545
 */
546
#define dci_std_gray_bits(nc, color_bits)    \
547
    ((color_bits) - ((nc) - 1) * ((color_bits) / (nc)))
548
549
/*
550
 * The number of bits assigned to a color component. The underlying
551
 * assumptions are that there is a gray component if nc != 3, and
552
 * that the gray component uses any extra bits.
553
 */
554
#define dci_std_color_bits(nc, color_bits)                        \
555
    ( (nc) == 3                                                   \
556
        ? (color_bits) / (nc)                                     \
557
        : ( (nc) == 1                                             \
558
              ? 0                                                 \
559
              : ((color_bits) - dci_std_gray_bits(nc, color_bits))\
560
                     / ((nc) == 1 ? (1) : (nc) - 1) ) )
561
562
/*
563
 * Determine the max_gray and max_color values based on the number
564
 * of components and the color_bits value. See the comments above
565
 * for information on the underlying assumptions.
566
 */
567
#define dci_std_color_max_gray(nc, color_bits)            \
568
    ( (nc) == 3                                           \
569
        ? 0                                               \
570
        : (1 << dci_std_gray_bits(nc, color_bits)) - 1 )
571
572
#define dci_std_color_max_color(nc, color_bits)               \
573
    ( (nc) == 1                                               \
574
        ? 0                                                   \
575
        : (1 << dci_std_color_bits(nc, color_bits)) - 1 )
576
577
/*
578
 * Define a color model based strictly on the number of bits
579
 * available for color representation. Please note, this is only
580
 * intended to work for a limited set of devices.
581
 */
582
#define dci_std_color_(nc, color_bits)                        \
583
    dci_values( nc,                                           \
584
                dci_std_color_depth(color_bits),              \
585
                dci_std_color_max_gray(nc, color_bits),       \
586
                dci_std_color_max_color(nc, color_bits),      \
587
                dci_std_color_max_gray(nc, color_bits) + 1,   \
588
                dci_std_color_max_color(nc, color_bits) + 1 )
589
590
#define dci_std_color(color_bits)                             \
591
    dci_std_color_( dci_std_color_num_components(color_bits), \
592
                    color_bits )
593
594
#define dci_values(nc,depth,mg,mc,dg,dc)\
595
87.7k
  dci_alpha_values(nc, depth, mg, mc, dg, dc, 1, 1)
596
#define dci_values_add(nc,depth,mg,mc,dg,dc)\
597
  dci_alpha_values_add(nc, depth, mg, mc, dg, dc, 1, 1)
598
#define dci_black_and_white dci_std_color(1)
599
#define dci_black_and_white_() dci_black_and_white
600
#define dci_color(depth,maxv,dither)\
601
  dci_values(3, depth, maxv, maxv, dither, dither)
602
603
/*
604
 * Macro to access the name of the process color model.
605
 */
606
#define get_process_color_model_name(dev) \
607
5.63M
    ((dev)->color_info.cm_name)
608
609
/* Structure for device procedures. */
610
typedef struct gx_device_procs_s gx_device_procs;
611
612
/* Structure for page device procedures. */
613
/* Note that these take the graphics state as a parameter. */
614
typedef struct gx_page_device_procs_s {
615
616
#define dev_page_proc_install(proc)\
617
  int proc(gx_device *dev, gs_gstate *pgs)
618
    dev_page_proc_install((*install));
619
620
#define dev_page_proc_begin_page(proc)\
621
  int proc(gx_device *dev, gs_gstate *pgs)
622
    dev_page_proc_begin_page((*begin_page));
623
624
#define dev_page_proc_end_page(proc)\
625
  int proc(gx_device *dev, int reason, gs_gstate *pgs)
626
    dev_page_proc_end_page((*end_page));
627
628
} gx_page_device_procs;
629
630
/* Default procedures */
631
dev_page_proc_install(gx_default_install);
632
dev_page_proc_begin_page(gx_default_begin_page);
633
dev_page_proc_end_page(gx_default_end_page);
634
635
/* ----------- A stroked gradient recognizer data ----------*/
636
637
/* This structure is associated with a device for
638
   internal needs of the graphics library.
639
   The main purpose is to suppress stroke adjustment
640
   when painting a gradient as a set of parallel strokes.
641
   Such gradients still come from some obsolete 3d party software.
642
   See bug 687974,
643
 */
644
645
typedef struct gx_stroked_gradient_recognizer_s {
646
    bool stroke_stored;
647
    gs_fixed_point orig[4], adjusted[4]; /* from, to, width, vector. */
648
} gx_stroked_gradient_recognizer_t;
649
650
/* ---------------- Device structure ---------------- */
651
652
/*
653
 * Define the generic device structure.
654
 *
655
 * All devices start off with no device procs. The initialize_device_procs
656
 * function is called as soon as the device is copied from its prototype,
657
 * and that fills in the procs table with the device procedure pointers.
658
 * This can never fail.
659
 *
660
 * Next, the 'initialize_device' proc (if there is one) is called to do
661
 * the minimal initialization required for a device.
662
 *
663
 * The choice of the name Margins (rather than, say, HWOffset), and the
664
 * specification in terms of a default device resolution rather than
665
 * 1/72" units, are due to Adobe.
666
 *
667
 * ****** NOTE: If you define any subclasses of gx_device, you *must* define
668
 * ****** the finalization procedure as gx_device_finalize.  Finalization
669
 * ****** procedures are not automatically inherited.
670
 */
671
typedef struct gx_device_cached_colors_s {
672
    gx_color_index black, white;
673
} gx_device_cached_colors_t;
674
675
/*
676
 * Define the parameters controlling banding.
677
 */
678
/* if you make any additions/changes to this structure you need to make
679
   the appropriate additions/changes to gdev_space_params_cmp() */
680
typedef struct gx_band_params_s {
681
    int BandWidth;    /* (optional) band width in pixels */
682
    int BandHeight;   /* (optional) */
683
    size_t BandBufferSpace; /* (optional) */
684
    size_t tile_cache_size; /* (optional) */
685
} gx_band_params_t;
686
687
#define BAND_PARAMS_INITIAL_VALUES 0, 0, 0, 0
688
689
typedef enum {
690
    BandingAuto = 0,
691
    BandingAlways,
692
    BandingNever
693
} gdev_banding_type;
694
695
/* if you make any additions/changes to this structure you need to make
696
   the appropriate additions/changes to the gdev_space_params_cmp() */
697
typedef struct gdev_space_params_s {
698
    size_t MaxBitmap;   /* max size of non-buffered bitmap */
699
    size_t BufferSpace;   /* space to use for buffer */
700
    gx_band_params_t band;  /* see gxband.h */
701
    bool params_are_read_only;  /* true if put_params may not modify this struct */
702
    gdev_banding_type banding_type; /* used to force banding or bitmap */
703
} gdev_space_params;
704
705
/* Returns 0 for a match, non-zero otherwise. Like memcmp, but allowing
706
 * for uninitialised padding. */
707
int gdev_space_params_cmp(const gdev_space_params sp1,
708
                          const gdev_space_params sp2);
709
710
typedef struct gdev_nupcontrol_s {
711
        rc_header rc;
712
        char *nupcontrol_str;   /* NUL termintated string */
713
} gdev_nupcontrol;
714
715
typedef struct gdev_pagelist_s {
716
        rc_header rc;
717
        char *Pages;
718
} gdev_pagelist;
719
720
#define dev_t_proc_initialize_device_procs(proc, dev_t)\
721
  void proc(dev_t *dev)
722
#define dev_proc_initialize_device_procs(proc)\
723
  dev_t_proc_initialize_device_procs((proc), gx_device)
724
725
#define gx_device_common\
726
        int params_size;    /* OBSOLETE if stype != 0: */\
727
                                        /* size of this structure */\
728
        dev_proc_initialize_device_procs(*initialize_device_procs);\
729
                                        /* initialize_device_procs */\
730
        const char *dname;    /* the device name */\
731
        gs_memory_t *memory;    /* (0 iff static prototype) */\
732
        gs_memory_type_ptr_t stype; /* memory manager structure type, */\
733
                                        /* may be 0 if static prototype */\
734
        bool stype_is_dynamic;    /* if true, free the stype when */\
735
                                        /* freeing the device */\
736
        void (*finalize)(gx_device *);  /* finalization to execute */\
737
                                        /* before closing device, if any */\
738
        rc_header rc;     /* reference count from gstates */\
739
                                        /* and targets, +1 if retained */\
740
        bool retained;      /* true if retained */\
741
        gx_device *parent;\
742
        gx_device *child;\
743
        void *subclass_data;    /* Must be immovable, non-GC memory, used to store subclass data */\
744
        gdev_pagelist *PageList;\
745
        bool is_open;     /* true if device has been opened */\
746
        int max_fill_band;    /* limit on band size for fill, */\
747
                                        /* must be 0 or a power of 2 */\
748
                                        /* (see gdevabuf.c for more info) */\
749
        gx_device_color_info color_info;  /* color information */\
750
        gx_device_cached_colors_t cached_colors;\
751
        int width;      /* width in pixels */\
752
        int height;     /* height in pixels */\
753
        int pad;                        /* pad to use for buffers; 0 for default */\
754
        int log2_align_mod;             /* align to use for buffers; 0 for default */\
755
        int num_planar_planes;          /* 1 planar, 0 for chunky */\
756
        int LeadingEdge;                /* see below */\
757
        float MediaSize[2];   /* media dimensions in points */\
758
        float ImagingBBox[4];   /* imageable region in points */\
759
        bool ImagingBBox_set;\
760
        float HWResolution[2];    /* resolution, dots per inch */\
761
        float Margins[2];   /* offset of physical page corner */\
762
                                        /* from device coordinate (0,0), */\
763
                                        /* in units given by HWResolution */\
764
        float HWMargins[4];   /* margins around imageable area, */\
765
                                        /* in default user units ("points") */\
766
        int FirstPage;\
767
        int LastPage;\
768
        bool PageHandlerPushed;    /* Handles FirstPage and LastPage operations */\
769
        bool DisablePageHandler;   /* Can be set by the interpreter if it will process FirstPage and LastPage itself */\
770
        int ObjectFilter;          /* Bit field for which object filters to apply */\
771
        bool ObjectHandlerPushed;  /* Handles filtering of objects to devices */\
772
        gdev_nupcontrol *NupControl;\
773
        bool NupHandlerPushed;     /* Handles Nup operations */\
774
        long PageCount;     /* number of pages written */\
775
        long ShowpageCount;   /* number of calls on showpage */\
776
        int NumCopies;\
777
        bool NumCopies_set;\
778
        bool IgnoreNumCopies;   /* if true, force num_copies = 1 */\
779
        bool UseCIEColor;   /* for PS LL3 */\
780
        bool LockSafetyParams;    /* If true, prevent unsafe changes */\
781
        long band_offset_x;   /* offsets of clist band base to (mem device) buffer */\
782
        long band_offset_y;   /* for rendering that is phase sensitive (old wtsimdi) */\
783
        bool BLS_force_memory;\
784
        gx_stroked_gradient_recognizer_t sgr;\
785
        size_t MaxPatternBitmap;  /* Threshold for switching to pattern_clist mode */\
786
        bool page_uses_transparency;    /* PDF 1.4 transparency is used. */\
787
        bool page_uses_overprint;       /* overprint is used. */\
788
        gdev_space_params space_params;\
789
        cmm_dev_profile_t *icc_struct;  /* object dependent profiles */\
790
        gs_graphics_type_tag_t   graphics_type_tag;   /* e.g. vector, image or text */\
791
        int interpolate_control;      /* default 1 (use image /Interpolate value), 0 is NOINTERPOLATE. */\
792
                                      /* > 1 limits interpolation, < 0 forces interpolation */\
793
        int non_strict_bounds;        /* If set, callers cannot rely on clipping fills etc to declared device bounds. */\
794
        gx_page_device_procs page_procs;       /* must be last */\
795
                /* end of std_device_body */\
796
        gx_device_procs procs /* object procedures */
797
798
96.9M
#define LEADINGEDGE_MASK 3
799
5.73M
#define LEADINGEDGE_SET_MASK (1 << 2)
800
1.58M
#define LEADINGEDGE_REQ_BIT (1 << 3)
801
0
#define LEADINGEDGE_REQ_VAL_SHIFT 4
802
0
#define LEADINGEDGE_REQ_VAL (LEADINGEDGE_MASK << LEADINGEDGE_REQ_VAL_SHIFT)
803
/*
804
 * The lower two bits of LeadingEdge correspond to the pagedevice
805
 * parameter of the same name. The next bit (hex value 4) is set if
806
 * the LeadingEdge was set explicitly by the user using setpagedevice.
807
 * Otherwise, the value is the default as determined by the device (or
808
 * zero if the device has no logic for setting LeadingEdge based on
809
 * other parameters (such as %MediaSource). This field replaces the
810
 * earlier TrayOrientation, which had a similar purpose but was not
811
 * compatible with the PostScript spec.
812
 */
813
814
/*
815
 * Note: x/y_pixels_per_inch are here only for backward compatibility.
816
 * They should not be used in new code.
817
 */
818
16.7k
#define x_pixels_per_inch HWResolution[0]
819
16.7k
#define y_pixels_per_inch HWResolution[1]
820
#define offset_margin_values(x, y, left, bot, right, top)\
821
  {x, y}, {left, bot, right, top}
822
#define margin_values(left, bot, right, top)\
823
  offset_margin_values(0, 0, left, bot, right, top)
824
#define no_margins margin_values(0, 0, 0, 0)
825
#define no_margins_() no_margins
826
/* Define macros that give the page offset ("Margins") in inches. */
827
#define dev_x_offset(dev) ((dev)->Margins[0] / (dev)->HWResolution[0])
828
0
#define dev_y_offset(dev) ((dev)->Margins[1] / (dev)->HWResolution[1])
829
#define dev_y_offset_points(dev) (dev_y_offset(dev) * 72.0)
830
/* Note that left/right/top/bottom are defined relative to */
831
/* the physical paper, not the coordinate system. */
832
/* For backward compatibility, we define macros that give */
833
/* the margins in inches. */
834
0
#define dev_l_margin(dev) ((dev)->HWMargins[0] / 72.0)
835
0
#define dev_b_margin(dev) ((dev)->HWMargins[1] / 72.0)
836
#define dev_b_margin_points(dev) ((dev)->HWMargins[1])
837
0
#define dev_r_margin(dev) ((dev)->HWMargins[2] / 72.0)
838
0
#define dev_t_margin(dev) ((dev)->HWMargins[3] / 72.0)
839
#define dev_t_margin_points(dev) ((dev)->HWMargins[3])
840
/* The extra () are to prevent premature expansion. */
841
#define open_init_closed() 0 /*false*/, 0 /* max_fill_band */
842
#define open_init_open() 1 /*true*/, 0  /* max_fill_band */
843
/* Accessors for device procedures */
844
28.9G
#define dev_proc(dev, p) ((dev)->procs.p)
845
14.9G
#define set_dev_proc(dev, p, proc) ((dev)->procs.p = (proc))
846
#define fill_dev_proc(dev, p, dproc)\
847
12.4G
  if ( dev_proc(dev, p) == 0 ) set_dev_proc(dev, p, dproc)
848
#define assign_dev_procs(todev, fromdev)\
849
0
  ((todev)->procs = (fromdev)->procs)
850
851
/* The bit fields used to filter objects out. If any bit field is set
852
 * then objects of that type will not be rendered/output.
853
 */
854
typedef enum FILTER_FLAGS {
855
    FILTERIMAGE = 1,
856
    FILTERTEXT = 2,
857
    FILTERVECTOR = 4
858
} OBJECT_FILTER_FLAGS;
859
860
/* ---------------- Device procedures ---------------- */
861
862
/*
863
 * Definition of device procedures.
864
 * Note that the gx_device * argument is not declared const,
865
 * because many drivers maintain dynamic state in the device structure.
866
 * Note also that the structure is defined as a template, so that
867
 * we can instantiate it with device subclasses.
868
 * Because C doesn't have real templates, we must do this with macros.
869
 */
870
871
/* Define macros for declaring device procedures. */
872
873
#define dev_t_proc_initialize_device(proc, dev_t)\
874
  int proc(dev_t *dev)
875
#define dev_proc_initialize_device(proc)\
876
  dev_t_proc_initialize_device(proc, gx_device)
877
878
#define dev_t_proc_open_device(proc, dev_t)\
879
  int proc(dev_t *dev)
880
#define dev_proc_open_device(proc)\
881
  dev_t_proc_open_device(proc, gx_device)
882
883
#define dev_t_proc_get_initial_matrix(proc, dev_t)\
884
  void proc(dev_t *dev, gs_matrix *pmat)
885
#define dev_proc_get_initial_matrix(proc)\
886
  dev_t_proc_get_initial_matrix(proc, gx_device)
887
888
#define dev_t_proc_sync_output(proc, dev_t)\
889
  int proc(dev_t *dev)
890
#define dev_proc_sync_output(proc)\
891
  dev_t_proc_sync_output(proc, gx_device)
892
893
#define dev_t_proc_output_page(proc, dev_t)\
894
  int proc(dev_t *dev, int num_copies, int flush)
895
#define dev_proc_output_page(proc)\
896
  dev_t_proc_output_page(proc, gx_device)
897
898
#define dev_t_proc_close_device(proc, dev_t)\
899
  int proc(dev_t *dev)
900
#define dev_proc_close_device(proc)\
901
  dev_t_proc_close_device(proc, gx_device)
902
903
#define dev_t_proc_map_rgb_color(proc, dev_t)\
904
172M
  gx_color_index proc(dev_t *dev, const gx_color_value cv[])
905
#define dev_proc_map_rgb_color(proc)\
906
172M
  dev_t_proc_map_rgb_color(proc, gx_device)
907
908
#define dev_t_proc_map_color_rgb(proc, dev_t)\
909
172M
  int proc(dev_t *dev,\
910
172M
    gx_color_index color, gx_color_value rgb[3])
911
#define dev_proc_map_color_rgb(proc)\
912
172M
  dev_t_proc_map_color_rgb(proc, gx_device)
913
914
#define dev_t_proc_fill_rectangle(proc, dev_t)\
915
116M
  int proc(dev_t *dev,\
916
116M
    int x, int y, int width, int height, gx_color_index color)
917
#define dev_proc_fill_rectangle(proc)\
918
116M
  dev_t_proc_fill_rectangle(proc, gx_device)
919
920
#define dev_t_proc_copy_mono(proc, dev_t)\
921
94.3M
  int proc(dev_t *dev,\
922
94.3M
    const byte *data, int data_x, int raster, gx_bitmap_id id,\
923
94.3M
    int x, int y, int width, int height,\
924
94.3M
    gx_color_index color0, gx_color_index color1)
925
#define dev_proc_copy_mono(proc)\
926
94.3M
  dev_t_proc_copy_mono(proc, gx_device)
927
928
#define dev_t_proc_copy_color(proc, dev_t)\
929
55.1M
  int proc(dev_t *dev,\
930
55.1M
    const byte *data, int data_x, int raster, gx_bitmap_id id,\
931
55.1M
    int x, int y, int width, int height)
932
#define dev_proc_copy_color(proc)\
933
55.1M
  dev_t_proc_copy_color(proc, gx_device)
934
935
                /* Added in release 2.4, changed in 2.8, */
936
                /* renamed in 2.9.6 */
937
938
#define dev_t_proc_get_params(proc, dev_t)\
939
  int proc(dev_t *dev, gs_param_list *plist)
940
#define dev_proc_get_params(proc)\
941
  dev_t_proc_get_params(proc, gx_device)
942
943
#define dev_t_proc_put_params(proc, dev_t)\
944
  int proc(dev_t *dev, gs_param_list *plist)
945
#define dev_proc_put_params(proc)\
946
  dev_t_proc_put_params(proc, gx_device)
947
948
                /* Added in release 2.6 */
949
950
#define dev_t_proc_map_cmyk_color(proc, dev_t)\
951
172M
  gx_color_index proc(dev_t *dev, const gx_color_value cv[])
952
#define dev_proc_map_cmyk_color(proc)\
953
172M
  dev_t_proc_map_cmyk_color(proc, gx_device)
954
955
                /* Added in release 2.8.1 */
956
957
#define dev_t_proc_get_page_device(proc, dev_t)\
958
  gx_device *proc(dev_t *dev)
959
#define dev_proc_get_page_device(proc)\
960
  dev_t_proc_get_page_device(proc, gx_device)
961
962
                /* Added in release 3.20, OBSOLETED in 5.65 */
963
                /* 'Unobsoleted' in 9.55. */
964
965
#define dev_t_proc_get_alpha_bits(proc, dev_t)\
966
  int proc(dev_t *dev, graphics_object_type type)
967
#define dev_proc_get_alpha_bits(proc)\
968
  dev_t_proc_get_alpha_bits(proc, gx_device)
969
970
                /* Added in release 3.20 */
971
972
#define dev_t_proc_copy_alpha(proc, dev_t)\
973
0
  int proc(dev_t *dev, const byte *data, int data_x,\
974
0
    int raster, gx_bitmap_id id, int x, int y, int width, int height,\
975
0
    gx_color_index color, int depth)
976
#define dev_proc_copy_alpha(proc)\
977
0
  dev_t_proc_copy_alpha(proc, gx_device)
978
979
                /* Added in release 3.60, changed in 3.68. */
980
981
#define dev_t_proc_fill_path(proc, dev_t)\
982
2.82M
  int proc(dev_t *dev,\
983
2.82M
    const gs_gstate *pgs, gx_path *ppath,\
984
2.82M
    const gx_fill_params *params,\
985
2.82M
    const gx_drawing_color *pdcolor, const gx_clip_path *pcpath)
986
#define dev_proc_fill_path(proc)\
987
2.82M
  dev_t_proc_fill_path(proc, gx_device)
988
989
#define dev_t_proc_stroke_path(proc, dev_t)\
990
554k
  int proc(dev_t *dev,\
991
554k
    const gs_gstate *pgs, gx_path *ppath,\
992
554k
    const gx_stroke_params *params,\
993
554k
    const gx_drawing_color *pdcolor, const gx_clip_path *pcpath)
994
#define dev_proc_stroke_path(proc)\
995
554k
  dev_t_proc_stroke_path(proc, gx_device)
996
997
                /* Added in release 9.22 */
998
999
#define dev_t_proc_fill_stroke_path(proc, dev_t)\
1000
16.5k
  int proc(dev_t *dev,\
1001
16.5k
    const gs_gstate *pgs, gx_path *ppath,\
1002
16.5k
    const gx_fill_params *fill_params,\
1003
16.5k
    const gx_drawing_color *pdcolor_fill,\
1004
16.5k
    const gx_stroke_params *stroke_params,\
1005
16.5k
    const gx_drawing_color *pdcolor_stroke,\
1006
16.5k
    const gx_clip_path *pcpath)
1007
#define dev_proc_fill_stroke_path(proc)\
1008
16.5k
  dev_t_proc_fill_stroke_path(proc, gx_device)
1009
1010
                /* Added in release 9.57 */
1011
1012
#define dev_t_proc_lock_pattern(proc, dev_t)\
1013
0
  int proc(dev_t *dev,\
1014
0
           gs_gstate *pgs,\
1015
0
           gs_id pattern_id,\
1016
0
           int lock)
1017
#define dev_proc_lock_pattern(proc)\
1018
0
  dev_t_proc_lock_pattern(proc, gx_device)
1019
1020
                /* Added in release 3.60 */
1021
1022
#define dev_t_proc_fill_mask(proc, dev_t)\
1023
3.05k
  int proc(dev_t *dev,\
1024
3.05k
    const byte *data, int data_x, int raster, gx_bitmap_id id,\
1025
3.05k
    int x, int y, int width, int height,\
1026
3.05k
    const gx_drawing_color *pdcolor, int depth,\
1027
3.05k
    gs_logical_operation_t lop, const gx_clip_path *pcpath)
1028
#define dev_proc_fill_mask(proc)\
1029
3.05k
  dev_t_proc_fill_mask(proc, gx_device)
1030
1031
                /* Added in release 3.66, changed in 3.69 */
1032
1033
#define dev_t_proc_fill_trapezoid(proc, dev_t)\
1034
85.1M
  int proc(dev_t *dev,\
1035
85.1M
    const gs_fixed_edge *left, const gs_fixed_edge *right,\
1036
85.1M
    fixed ybot, fixed ytop, bool swap_axes,\
1037
85.1M
    const gx_drawing_color *pdcolor, gs_logical_operation_t lop)
1038
#define dev_proc_fill_trapezoid(proc)\
1039
85.1M
  dev_t_proc_fill_trapezoid(proc, gx_device)
1040
1041
#define dev_t_proc_fill_parallelogram(proc, dev_t)\
1042
5.66M
  int proc(dev_t *dev,\
1043
5.66M
    fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by,\
1044
5.66M
    const gx_drawing_color *pdcolor, gs_logical_operation_t lop)
1045
#define dev_proc_fill_parallelogram(proc)\
1046
5.66M
  dev_t_proc_fill_parallelogram(proc, gx_device)
1047
1048
#define dev_t_proc_fill_triangle(proc, dev_t)\
1049
0
  int proc(dev_t *dev,\
1050
0
    fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by,\
1051
0
    const gx_drawing_color *pdcolor, gs_logical_operation_t lop)
1052
#define dev_proc_fill_triangle(proc)\
1053
0
  dev_t_proc_fill_triangle(proc, gx_device)
1054
1055
                /* adjustx and adjusty were added in 8.71 to get around a
1056
                 * problem with PCL (Bug 691030). In the fullness of time
1057
                 * hopefully PCL can be fixed to not need them and they can
1058
                 * be removed again. */
1059
1060
#define dev_t_proc_draw_thin_line(proc, dev_t)\
1061
0
  int proc(dev_t *dev,\
1062
0
    fixed fx0, fixed fy0, fixed fx1, fixed fy1,\
1063
0
    const gx_drawing_color *pdcolor, gs_logical_operation_t lop,\
1064
0
    fixed adjustx, fixed adjusty)
1065
#define dev_proc_draw_thin_line(proc)\
1066
0
  dev_t_proc_draw_thin_line(proc, gx_device)
1067
1068
                /* Added in release 3.68 */
1069
1070
#define dev_t_proc_strip_tile_rectangle(proc, dev_t)\
1071
0
  int proc(dev_t *dev,\
1072
0
    const gx_strip_bitmap *tiles, int x, int y, int width, int height,\
1073
0
    gx_color_index color0, gx_color_index color1,\
1074
0
    int phase_x, int phase_y)
1075
#define dev_proc_strip_tile_rectangle(proc)\
1076
0
  dev_t_proc_strip_tile_rectangle(proc, gx_device)
1077
1078
                /* Added in release 4.20 */
1079
1080
#define dev_t_proc_get_clipping_box(proc, dev_t)\
1081
  void proc(dev_t *dev, gs_fixed_rect *pbox)
1082
#define dev_proc_get_clipping_box(proc)\
1083
  dev_t_proc_get_clipping_box(proc, gx_device)
1084
1085
                /* Added in release 5.20, changed in 5.23 */
1086
1087
#define dev_t_proc_begin_typed_image(proc, dev_t)\
1088
67.1k
  int proc(dev_t *dev,\
1089
67.1k
    const gs_gstate *pgs, const gs_matrix *pmat,\
1090
67.1k
    const gs_image_common_t *pim, const gs_int_rect *prect,\
1091
67.1k
    const gx_drawing_color *pdcolor, const gx_clip_path *pcpath,\
1092
67.1k
    gs_memory_t *memory, gx_image_enum_common_t **pinfo)
1093
#define dev_proc_begin_typed_image(proc)\
1094
67.1k
  dev_t_proc_begin_typed_image(proc, gx_device)
1095
1096
                /* Added in release 5.20 */
1097
1098
#define dev_t_proc_get_bits_rectangle(proc, dev_t)\
1099
0
  int proc(dev_t *dev, const gs_int_rect *prect,\
1100
0
    gs_get_bits_params_t *params)
1101
#define dev_proc_get_bits_rectangle(proc)\
1102
0
  dev_t_proc_get_bits_rectangle(proc, gx_device)
1103
1104
#define dev_t_proc_composite(proc, dev_t)\
1105
  int proc(dev_t *dev,\
1106
    gx_device **pcdev, const gs_composite_t *pcte,\
1107
    gs_gstate *pgs, gs_memory_t *memory, gx_device *cdev)
1108
#define dev_proc_composite(proc)\
1109
  dev_t_proc_composite(proc, gx_device)\
1110
1111
                /* Added in release 5.23 */
1112
1113
#define dev_t_proc_get_hardware_params(proc, dev_t)\
1114
  int proc(dev_t *dev, gs_param_list *plist)
1115
#define dev_proc_get_hardware_params(proc)\
1116
  dev_t_proc_get_hardware_params(proc, gx_device)
1117
1118
                /* Added in release 5.24 */
1119
1120
     /* ... text_begin ... see gstext.h for definition */
1121
1122
                /* Added in release 6.61 (raph) */
1123
1124
/*
1125
  This area of the transparency facilities is in flux.  Here is a proposal
1126
  for extending the driver interface.
1127
*/
1128
1129
/*
1130
  Push the current transparency state (*ppts) onto the associated stack,
1131
  and set *ppts to a new transparency state of the given dimension.  The
1132
  transparency state may copy some or all of the gs_gstate, such as the
1133
  current alpha and/or transparency mask values, and definitely copies the
1134
  parameters.
1135
*/
1136
#define dev_t_proc_begin_transparency_group(proc, dev_t)\
1137
  int proc(gx_device *dev,\
1138
    const gs_transparency_group_params_t *ptgp,\
1139
    const gs_rect *pbbox,\
1140
    gs_gstate *pgs,\
1141
    gs_memory_t *mem)
1142
#define dev_proc_begin_transparency_group(proc)\
1143
  dev_t_proc_begin_transparency_group(proc, gx_device)
1144
1145
/*
1146
  End a transparency group: blend the top element of the transparency
1147
  stack, which must be a group, into the next-to-top element, popping the
1148
  stack.  If the stack only had a single element, blend into the device
1149
  output.  Set *ppts to 0 iff the stack is now empty.  If end_group fails,
1150
  the stack is *not* popped.
1151
*/
1152
#define dev_t_proc_end_transparency_group(proc, dev_t)\
1153
  int proc(gx_device *dev,\
1154
    gs_gstate *pgs)
1155
#define dev_proc_end_transparency_group(proc)\
1156
  dev_t_proc_end_transparency_group(proc, gx_device)
1157
1158
/*
1159
  Push the transparency state and prepare to render a transparency mask.
1160
  This is similar to begin_transparency_group except that it only
1161
  accumulates coverage values, not full pixel values.
1162
*/
1163
#define dev_t_proc_begin_transparency_mask(proc, dev_t)\
1164
  int proc(gx_device *dev,\
1165
    const gx_transparency_mask_params_t *ptmp,\
1166
    const gs_rect *pbbox,\
1167
    gs_gstate *pgs,\
1168
    gs_memory_t *mem)
1169
#define dev_proc_begin_transparency_mask(proc)\
1170
  dev_t_proc_begin_transparency_mask(proc, gx_device)
1171
1172
/*
1173
  Store a pointer to the rendered transparency mask into *pptm, popping the
1174
  stack like end_group.  Normally, the client will follow this by using
1175
  rc_assign to store the rendered mask into pgs->{opacity,shape}.mask.  If
1176
  end_mask fails, the stack is *not* popped.
1177
*/
1178
#define dev_t_proc_end_transparency_mask(proc, dev_t)\
1179
  int proc(gx_device *dev,\
1180
    gs_gstate *pgs)
1181
#define dev_proc_end_transparency_mask(proc)\
1182
  dev_t_proc_end_transparency_mask(proc, gx_device)
1183
1184
/*
1185
  This will clean up the entire device allocations as something went
1186
  wrong in the middle of reading in the source content while we are dealing with
1187
  a transparency device.
1188
*/
1189
#define dev_t_proc_discard_transparency_layer(proc, dev_t)\
1190
  int proc(gx_device *dev,\
1191
    gs_gstate *pgs)
1192
#define dev_proc_discard_transparency_layer(proc)\
1193
  dev_t_proc_discard_transparency_layer(proc, gx_device)
1194
1195
     /* (end of transparency driver interface extensions) */
1196
1197
     /* (start of DeviceN color support) */
1198
/*
1199
 * The following macros are defined in gxcmap.h
1200
 *
1201
 * dev_t_proc_get_color_mapping_procs
1202
 * dev_proc_get_color_mapping_procs
1203
 * dev_t_proc_get_color_comp_index
1204
 * dev_proc_get_color_comp_index
1205
 * dev_t_proc_encode_color
1206
 * dev_proc_encode_color
1207
 * dev_t_proc_decode_color
1208
 * dev_proc_decode_color
1209
 */
1210
     /* (end of DeviceN color support) */
1211
1212
/*
1213
  Fill rectangle with a high level color.
1214
  Return rangecheck, if the device can't handle the high level color.
1215
1216
  The graphics library calls this function with degenerate (widths=0)
1217
  rectangles, to know whether the device can handle a rectangle with
1218
  the high level color. The device should skip such rectangles returning
1219
  a proper code.
1220
1221
  Currently this function is used with gs_rectfill and gs_fillpage.  It is
1222
  also used for the handling of the devn color type for supporting
1223
  large number of spot colorants to planar separation devices.
1224
1225
*/
1226
1227
#define dev_t_proc_fill_rectangle_hl_color(proc, dev_t)\
1228
  int proc(dev_t *dev, const gs_fixed_rect *rect, \
1229
        const gs_gstate *pgs, const gx_drawing_color *pdcolor, \
1230
        const gx_clip_path *pcpath)
1231
#define dev_proc_fill_rectangle_hl_color(proc)\
1232
  dev_t_proc_fill_rectangle_hl_color(proc, gx_device)
1233
1234
/*
1235
  Include a color space into the output.
1236
  This function is used to include DefaultGray, DefaultRGB,
1237
  DefaultCMYK into PDF, PS, EPS output.
1238
  Low level devices should ignore this call.
1239
*/
1240
1241
#define dev_t_proc_include_color_space(proc, dev_t)\
1242
  int proc(dev_t *dev, gs_color_space *cspace, const byte *res_name, int name_length)
1243
#define dev_proc_include_color_space(proc)\
1244
  dev_t_proc_include_color_space(proc, gx_device)
1245
1246
                /* Shading support. */
1247
1248
typedef struct gs_fill_attributes_s {
1249
      const gs_fixed_rect *clip;
1250
      bool swap_axes;
1251
      const gx_device_halftone *ht; /* Reserved for possible use in future. */
1252
      gs_logical_operation_t lop; /* Reserved for possible use in future. */
1253
      fixed ystart, yend; /* Only for X-independent gradients. Base coordinates of the gradient. */
1254
      patch_fill_state_t *pfs; /* For gx_fill_triangle_small. Clients must not change. */
1255
} gs_fill_attributes;
1256
1257
/* Fill a linear color scanline. */
1258
1259
#define dev_t_proc_fill_linear_color_scanline(proc, dev_t)\
1260
0
  int proc(dev_t *dev, const gs_fill_attributes *fa,\
1261
0
        int i, int j, int w, /* scanline coordinates and width */\
1262
0
        const frac31 *c0, /* initial color for the pixel (i,j), the integer part */\
1263
0
        const int32_t *c0_f, /* initial color for the pixel (i,j), the fraction part numerator */\
1264
0
        const int32_t *cg_num, /* color gradient numerator */\
1265
0
        int32_t cg_den /* color gradient denominator */)
1266
#define dev_proc_fill_linear_color_scanline(proc)\
1267
0
  dev_t_proc_fill_linear_color_scanline(proc, gx_device)
1268
1269
/* Fill a linear color trapezoid. */
1270
/* The server assumes a strongly linear color,
1271
   i.e. it can ignore any of c0, c1, c2, c3. */
1272
/* [p0 : p1] - left edge, from bottom to top.
1273
   [p2 : p3] - right edge, from bottom to top.
1274
   The filled area is within Y-spans of both edges. */
1275
/* Either (c0 and c1) or (c2 and c3) may be NULL.
1276
   In this case the color doesn't depend on X (on Y if fa->swap_axes).
1277
   In this case the base coordinates for the color gradient
1278
   may be unequal to p0, p1, p2, p3, and must be provided/taken
1279
   in/from fa->ystart, fa->yend.
1280
   The return value 0 is not allowed in this case. */
1281
/* Return values :
1282
  1 - success;
1283
  0 - Too big. The area isn't filled. The client must decompose the area.
1284
  <0 - error.
1285
 */
1286
1287
#define dev_t_proc_fill_linear_color_trapezoid(proc, dev_t)\
1288
39
  int proc(dev_t *dev, const gs_fill_attributes *fa,\
1289
39
        const gs_fixed_point *p0, const gs_fixed_point *p1,\
1290
39
        const gs_fixed_point *p2, const gs_fixed_point *p3,\
1291
39
        const frac31 *c0, const frac31 *c1,\
1292
39
        const frac31 *c2, const frac31 *c3)
1293
#define dev_proc_fill_linear_color_trapezoid(proc)\
1294
39
  dev_t_proc_fill_linear_color_trapezoid(proc, gx_device)
1295
1296
/* Fill a linear color triangle. */
1297
/* Return values :
1298
  1 - success;
1299
  0 - Too big. The area isn't filled. The client must decompose the area.
1300
  <0 - error.
1301
 */
1302
1303
#define dev_t_proc_fill_linear_color_triangle(proc, dev_t)\
1304
14
  int proc(dev_t *dev, const gs_fill_attributes *fa,\
1305
14
        const gs_fixed_point *p0, const gs_fixed_point *p1,\
1306
14
        const gs_fixed_point *p2,\
1307
14
        const frac31 *c0, const frac31 *c1, const frac31 *c2)
1308
#define dev_proc_fill_linear_color_triangle(proc)\
1309
14
  dev_t_proc_fill_linear_color_triangle(proc, gx_device)
1310
1311
/*
1312
 * Update the equivalent colors for spot colors in a color space.  The default
1313
 * procedure does nothing.  However this routine provides a method for devices
1314
 * to determine an equivalent color for a spot color.  See comments at the
1315
 * start of src/gsequivc.c.
1316
 */
1317
#define dev_t_proc_update_spot_equivalent_colors(proc, dev_t)\
1318
  int proc(dev_t *dev, const gs_gstate * pgs, const gs_color_space *pcs)
1319
#define dev_proc_update_spot_equivalent_colors(proc)\
1320
  dev_t_proc_update_spot_equivalent_colors(proc, gx_device)
1321
1322
/*
1323
 * return a pointer to the devn_params section of a device.  Return NULL
1324
 * if this field is not present within the device.
1325
 */
1326
typedef struct gs_devn_params_s gs_devn_params;
1327
1328
#define dev_t_proc_ret_devn_params(proc, dev_t)\
1329
  gs_devn_params * proc(dev_t *dev)
1330
#define dev_proc_ret_devn_params(proc)\
1331
  dev_t_proc_ret_devn_params(proc, gx_device)
1332
#define dev_proc_ret_devn_params_const(proc)\
1333
  const dev_t_proc_ret_devn_params(proc, const gx_device)
1334
1335
/*
1336
 * Erase page.
1337
 */
1338
1339
#define dev_t_proc_fillpage(proc, dev_t)\
1340
0
  int proc(gx_device *dev, gs_gstate * pgs, gx_device_color *pdevc)
1341
#define dev_proc_fillpage(proc)\
1342
0
  dev_t_proc_fillpage(proc, gx_device)
1343
1344
#define dev_t_proc_push_transparency_state(proc, dev_t)\
1345
  int proc(gx_device *dev,\
1346
    gs_gstate *pgs)
1347
#define dev_proc_push_transparency_state(proc)\
1348
  dev_t_proc_push_transparency_state(proc, gx_device)
1349
1350
#define dev_t_proc_pop_transparency_state(proc, dev_t)\
1351
  int proc(gx_device *dev,\
1352
    gs_gstate *pgs)
1353
#define dev_proc_pop_transparency_state(proc)\
1354
  dev_t_proc_pop_transparency_state(proc, gx_device)
1355
1356
#define dev_t_proc_put_image(proc, dev_t)\
1357
  int proc(gx_device *dev, gx_device *mdev,  const byte **buffers, int num_chan, int x, int y,\
1358
            int width, int height, int row_stride,\
1359
            int alpha_plane_index, int tag_plane_index)
1360
#define dev_proc_put_image(proc)\
1361
  dev_t_proc_put_image(proc, gx_device)
1362
1363
#define dev_t_proc_dev_spec_op(proc, dev_t)\
1364
0
  int proc(gx_device *dev, int op, void *data, int datasize)
1365
#define dev_proc_dev_spec_op(proc)\
1366
  dev_t_proc_dev_spec_op(proc, gx_device)
1367
1368
#define dev_t_proc_copy_planes(proc, dev_t)\
1369
55.1M
  int proc(dev_t *dev,\
1370
55.1M
    const byte *data, int data_x, int raster, gx_bitmap_id id,\
1371
55.1M
    int x, int y, int width, int height, int plane_height)
1372
#define dev_proc_copy_planes(proc)\
1373
55.1M
  dev_t_proc_copy_planes(proc, gx_device)
1374
1375
#define dev_t_proc_get_profile(proc, dev_t)\
1376
  int proc(const dev_t *dev, cmm_dev_profile_t **dev_profile)
1377
#define dev_proc_get_profile(proc)\
1378
  dev_t_proc_get_profile(proc, gx_device)
1379
1380
#define dev_t_proc_set_graphics_type_tag(proc, dev_t)\
1381
  void proc(dev_t *dev, gs_graphics_type_tag_t)
1382
#define dev_proc_set_graphics_type_tag(proc)\
1383
  dev_t_proc_set_graphics_type_tag(proc, gx_device)
1384
1385
#define dev_t_proc_strip_copy_rop2(proc, dev_t)\
1386
0
  int proc(dev_t *dev,\
1387
0
    const byte *sdata, int sourcex, uint sraster, gx_bitmap_id id,\
1388
0
    const gx_color_index *scolors,\
1389
0
    const gx_strip_bitmap *textures, const gx_color_index *tcolors,\
1390
0
    int x, int y, int width, int height,\
1391
0
    int phase_x, int phase_y, gs_logical_operation_t lop,\
1392
0
    uint planar_height)
1393
#define dev_proc_strip_copy_rop2(proc)\
1394
0
  dev_t_proc_strip_copy_rop2(proc, gx_device)
1395
1396
#define dev_t_proc_strip_tile_rect_devn(proc, dev_t)\
1397
  int proc(dev_t *dev,\
1398
    const gx_strip_bitmap *tiles, int x, int y, int width, int height,\
1399
    const gx_drawing_color *pdcolor0, const gx_drawing_color *pdcolor1,\
1400
    int phase_x, int phase_y)
1401
#define dev_proc_strip_tile_rect_devn(proc)\
1402
  dev_t_proc_strip_tile_rect_devn(proc, gx_device)
1403
1404
#define dev_t_proc_copy_alpha_hl_color(proc, dev_t)\
1405
  int proc(dev_t *dev, const byte *data, int data_x,\
1406
    int raster, gx_bitmap_id id, int x, int y, int width, int height,\
1407
    const gx_drawing_color *pdcolor, int depth)
1408
#define dev_proc_copy_alpha_hl_color(proc)\
1409
  dev_t_proc_copy_alpha_hl_color(proc, gx_device)
1410
1411
typedef struct gx_process_page_options_s gx_process_page_options_t;
1412
1413
struct gx_process_page_options_s
1414
{
1415
    int (*init_buffer_fn)(void *arg, gx_device *dev, gs_memory_t *memory, int w, int h, void **buffer);
1416
    void (*free_buffer_fn)(void *arg, gx_device *dev, gs_memory_t *memory, void *buffer);
1417
    int (*process_fn)(void *arg, gx_device *dev, gx_device *bdev, const gs_int_rect *rect, void *buffer);
1418
    int (*output_fn)(void *arg, gx_device *dev, void *buffer);
1419
    void *arg;
1420
    int options; /* A mask of GX_PROCPAGE_... options bits */
1421
};
1422
1423
/* If GX_PROCPAGE_BOTTOM_UP, then we run from band n-1 to band 0, rather than
1424
 * 0 to n-1. */
1425
0
#define GX_PROCPAGE_BOTTOM_UP 1
1426
1427
#define dev_t_proc_process_page(proc, dev_t)\
1428
  int proc(dev_t *dev, gx_process_page_options_t *options)
1429
#define dev_proc_process_page(proc)\
1430
  dev_t_proc_process_page(proc, gx_device)
1431
1432
typedef enum  {
1433
    transform_pixel_region_begin = 0,
1434
    transform_pixel_region_data_needed = 1,
1435
    transform_pixel_region_process_data = 2,
1436
    transform_pixel_region_end = 3
1437
} transform_pixel_region_reason;
1438
1439
typedef struct {
1440
    void *state;
1441
    union {
1442
        struct {
1443
            const gs_int_rect *clip;
1444
            int w; /* source width */
1445
            int h; /* source height */
1446
            int spp;
1447
            const gx_dda_fixed_point *pixels; /* DDA to enumerate the destination positions of pixels across a row */
1448
            const gx_dda_fixed_point *rows; /* DDA to enumerate the starting position of each row */
1449
            gs_logical_operation_t lop;
1450
        } init;
1451
        struct {
1452
            const unsigned char *buffer[GX_DEVICE_COLOR_MAX_COMPONENTS];
1453
            int data_x;
1454
            gx_cmapper_t *cmapper;
1455
            const gs_gstate *pgs;
1456
        } process_data;
1457
    } u;
1458
} transform_pixel_region_data;
1459
1460
#define dev_t_proc_transform_pixel_region(proc, dev_t)\
1461
  int proc(dev_t *dev, transform_pixel_region_reason reason, transform_pixel_region_data *data)
1462
#define dev_proc_transform_pixel_region(proc)\
1463
  dev_t_proc_transform_pixel_region(proc, gx_device)
1464
1465
1466
/* Define the device procedure vector template proper. */
1467
1468
#define gx_device_proc_struct(dev_t)\
1469
{\
1470
        dev_t_proc_initialize_device((*initialize_device), dev_t);\
1471
        dev_t_proc_open_device((*open_device), dev_t);\
1472
        dev_t_proc_get_initial_matrix((*get_initial_matrix), dev_t);\
1473
        dev_t_proc_sync_output((*sync_output), dev_t);\
1474
        dev_t_proc_output_page((*output_page), dev_t);\
1475
        dev_t_proc_close_device((*close_device), dev_t);\
1476
        dev_t_proc_map_rgb_color((*map_rgb_color), dev_t);\
1477
        dev_t_proc_map_color_rgb((*map_color_rgb), dev_t);\
1478
        dev_t_proc_fill_rectangle((*fill_rectangle), dev_t);\
1479
        dev_t_proc_copy_mono((*copy_mono), dev_t);\
1480
        dev_t_proc_copy_color((*copy_color), dev_t);\
1481
        dev_t_proc_get_params((*get_params), dev_t);\
1482
        dev_t_proc_put_params((*put_params), dev_t);\
1483
        dev_t_proc_map_cmyk_color((*map_cmyk_color), dev_t);\
1484
        dev_t_proc_get_page_device((*get_page_device), dev_t);\
1485
        dev_t_proc_get_alpha_bits((*get_alpha_bits), dev_t);\
1486
        dev_t_proc_copy_alpha((*copy_alpha), dev_t);\
1487
        dev_t_proc_fill_path((*fill_path), dev_t);\
1488
        dev_t_proc_stroke_path((*stroke_path), dev_t);\
1489
        dev_t_proc_fill_mask((*fill_mask), dev_t);\
1490
        dev_t_proc_fill_trapezoid((*fill_trapezoid), dev_t);\
1491
        dev_t_proc_fill_parallelogram((*fill_parallelogram), dev_t);\
1492
        dev_t_proc_fill_triangle((*fill_triangle), dev_t);\
1493
        dev_t_proc_draw_thin_line((*draw_thin_line), dev_t);\
1494
        dev_t_proc_strip_tile_rectangle((*strip_tile_rectangle), dev_t);\
1495
        dev_t_proc_get_clipping_box((*get_clipping_box), dev_t);\
1496
        dev_t_proc_begin_typed_image((*begin_typed_image), dev_t);\
1497
        dev_t_proc_get_bits_rectangle((*get_bits_rectangle), dev_t);\
1498
        dev_t_proc_composite((*composite), dev_t);\
1499
        dev_t_proc_get_hardware_params((*get_hardware_params), dev_t);\
1500
        dev_t_proc_text_begin((*text_begin), dev_t);\
1501
        dev_t_proc_begin_transparency_group((*begin_transparency_group), dev_t);\
1502
        dev_t_proc_end_transparency_group((*end_transparency_group), dev_t);\
1503
        dev_t_proc_begin_transparency_mask((*begin_transparency_mask), dev_t);\
1504
        dev_t_proc_end_transparency_mask((*end_transparency_mask), dev_t);\
1505
        dev_t_proc_discard_transparency_layer((*discard_transparency_layer), dev_t);\
1506
        dev_t_proc_get_color_mapping_procs((*get_color_mapping_procs), dev_t); \
1507
        dev_t_proc_get_color_comp_index((*get_color_comp_index), dev_t); \
1508
        dev_t_proc_encode_color((*encode_color), dev_t); \
1509
        dev_t_proc_decode_color((*decode_color), dev_t); \
1510
        dev_t_proc_fill_rectangle_hl_color((*fill_rectangle_hl_color), dev_t); \
1511
        dev_t_proc_include_color_space((*include_color_space), dev_t); \
1512
        dev_t_proc_fill_linear_color_scanline((*fill_linear_color_scanline), dev_t); \
1513
        dev_t_proc_fill_linear_color_trapezoid((*fill_linear_color_trapezoid), dev_t); \
1514
        dev_t_proc_fill_linear_color_triangle((*fill_linear_color_triangle), dev_t); \
1515
        dev_t_proc_update_spot_equivalent_colors((*update_spot_equivalent_colors), dev_t); \
1516
        dev_t_proc_ret_devn_params((*ret_devn_params), dev_t); \
1517
        dev_t_proc_fillpage((*fillpage), dev_t); \
1518
        dev_t_proc_push_transparency_state((*push_transparency_state), dev_t); \
1519
        dev_t_proc_pop_transparency_state((*pop_transparency_state), dev_t); \
1520
        dev_t_proc_put_image((*put_image), dev_t); \
1521
        dev_t_proc_dev_spec_op((*dev_spec_op), dev_t); \
1522
        dev_t_proc_copy_planes((*copy_planes), dev_t); \
1523
        dev_t_proc_get_profile((*get_profile), dev_t); \
1524
        dev_t_proc_set_graphics_type_tag((*set_graphics_type_tag), dev_t); \
1525
        dev_t_proc_strip_copy_rop2((*strip_copy_rop2), dev_t);\
1526
        dev_t_proc_strip_tile_rect_devn((*strip_tile_rect_devn), dev_t);\
1527
        dev_t_proc_copy_alpha_hl_color((*copy_alpha_hl_color), dev_t);\
1528
        dev_t_proc_process_page((*process_page), dev_t);\
1529
        dev_t_proc_transform_pixel_region((*transform_pixel_region), dev_t);\
1530
        dev_t_proc_fill_stroke_path((*fill_stroke_path), dev_t);\
1531
        dev_t_proc_lock_pattern((*lock_pattern), dev_t);\
1532
}
1533
1534
/*
1535
 * Provide procedures for passing image data.  image_data and end_image
1536
 * are the equivalents of the obsolete driver procedures.  image_plane_data
1537
 * was originally planned as a driver procedure, but is now associated with
1538
 * the image enumerator, like the other two.
1539
 */
1540
1541
typedef struct gx_image_plane_s {
1542
    const byte *data;
1543
    int data_x;
1544
    uint raster;
1545
} gx_image_plane_t;
1546
1547
#define gx_device_begin_typed_image(dev, pgs, pmat, pim, prect, pdcolor, pcpath, memory, pinfo)\
1548
1.08M
  ((*dev_proc(dev, begin_typed_image))\
1549
1.08M
   (dev, pgs, pmat, pim, prect, pdcolor, pcpath, memory, pinfo))
1550
1551
int gx_image_data(gx_image_enum_common_t *info, const byte **planes,
1552
                  int data_x, uint raster, int height);
1553
/*
1554
 * Solely for backward compatibility, gx_image_plane_data doesn't return
1555
 * rows_used.
1556
 */
1557
int gx_image_plane_data(gx_image_enum_common_t *info,
1558
                        const gx_image_plane_t *planes, int height);
1559
int gx_image_plane_data_rows(gx_image_enum_common_t *info,
1560
                             const gx_image_plane_t *planes, int height,
1561
                             int *rows_used);
1562
int gx_image_flush(gx_image_enum_common_t *info);
1563
bool gx_image_planes_wanted(const gx_image_enum_common_t *info, byte *wanted);
1564
int gx_image_end(gx_image_enum_common_t *info, bool draw_last);
1565
1566
/* A generic device procedure record. */
1567
struct gx_device_procs_s gx_device_proc_struct(gx_device);
1568
1569
/*
1570
 * Define unaligned analogues of the copy_xxx procedures.
1571
 * These are slower than the standard procedures, which require
1572
 * aligned bitmaps, and also are not portable to non-byte-addressed machines.
1573
 *
1574
 * We allow both unaligned data and unaligned scan line widths;
1575
 * however, we do require that both of these be aligned modulo the largest
1576
 * power of 2 bytes that divides the data depth, i.e.:
1577
 *      depth   alignment
1578
 *      <= 8    1
1579
 *      16      2
1580
 *      24      1
1581
 *      32      4
1582
 */
1583
dev_proc_copy_mono(gx_copy_mono_unaligned);
1584
dev_proc_copy_color(gx_copy_color_unaligned);
1585
dev_proc_copy_alpha(gx_copy_alpha_unaligned);
1586
1587
/* A generic device */
1588
struct gx_device_s {
1589
    gx_device_common;
1590
};
1591
1592
extern_st(st_device);
1593
struct_proc_finalize(gx_device_finalize); /* public for subclasses */
1594
/* We use vacuous enum/reloc procedures, rather than 0, so that */
1595
/* gx_device can have subclasses. */
1596
#define public_st_device()  /* in gsdevice.c */\
1597
  gs_public_st_complex_only(st_device, gx_device, "gx_device",\
1598
    0, device_enum_ptrs, device_reloc_ptrs, gx_device_finalize)
1599
19.2M
#define st_device_max_ptrs 2
1600
1601
/* Enumerate or relocate a pointer to a device. */
1602
/* These take the containing space into account properly. */
1603
gx_device *gx_device_enum_ptr(gx_device *);
1604
gx_device *gx_device_reloc_ptr(gx_device *, gc_state_t *);
1605
1606
/* Define typedefs for some of the device procedures, because */
1607
/* ansi2knr can't handle dev_proc_xxx((*xxx)) in a formal argument list. */
1608
typedef dev_proc_map_rgb_color((*dev_proc_map_rgb_color_t));
1609
typedef dev_proc_map_color_rgb((*dev_proc_map_color_rgb_t));
1610
1611
/*
1612
 * A forwarding device forwards all non-display operations, and possibly
1613
 * some imaging operations (possibly transformed in some way), to another
1614
 * device called the "target".  This is used for many different purposes
1615
 * internally, including clipping, banding, image and pattern accumulation,
1616
 * compositing, halftoning, and the null device.
1617
 */
1618
#define gx_device_forward_common\
1619
        gx_device_common;\
1620
        gx_device *target
1621
/* A generic forwarding device. */
1622
typedef struct gx_device_forward_s {
1623
    gx_device_forward_common;
1624
} gx_device_forward;
1625
1626
extern_st(st_device_forward);
1627
#define public_st_device_forward()  /* in gsdevice.c */\
1628
  gs_public_st_complex_only(st_device_forward, gx_device_forward,\
1629
    "gx_device_forward", 0, device_forward_enum_ptrs,\
1630
    device_forward_reloc_ptrs, gx_device_finalize)
1631
19.2M
#define st_device_forward_max_ptrs (st_device_max_ptrs + 1)
1632
1633
/* Test to see if the device wants to use tags */
1634
static inline bool device_encodes_tags(const gx_device *dev)
1635
1.44G
{
1636
1.44G
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
1.44G
}
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
Unexecuted instantiation: gsptype1.c:device_encodes_tags
Unexecuted instantiation: gxp1fill.c:device_encodes_tags
gxpcmap.c:device_encodes_tags
Line
Count
Source
1635
171k
{
1636
171k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
171k
}
Unexecuted instantiation: gxicolor.c:device_encodes_tags
gsdps1.c:device_encodes_tags
Line
Count
Source
1635
41.9k
{
1636
41.9k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
41.9k
}
Unexecuted instantiation: gsciemap.c:device_encodes_tags
Unexecuted instantiation: gstrans.c:device_encodes_tags
Unexecuted instantiation: gximag3x.c:device_encodes_tags
Unexecuted instantiation: gxblend.c:device_encodes_tags
gdevp14.c:device_encodes_tags
Line
Count
Source
1635
968M
{
1636
968M
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
968M
}
gdevdevn.c:device_encodes_tags
Line
Count
Source
1635
128k
{
1636
128k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
128k
}
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
Unexecuted instantiation: gdevprn.c:device_encodes_tags
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
gsicc_manage.c:device_encodes_tags
Line
Count
Source
1635
538k
{
1636
538k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
538k
}
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: gdevbmp.c:device_encodes_tags
Unexecuted instantiation: gdevbmpc.c:device_encodes_tags
Unexecuted instantiation: gdevpccm.c:device_encodes_tags
Unexecuted instantiation: gdevcups.c:device_encodes_tags
Unexecuted instantiation: gdevpdf.c:device_encodes_tags
Unexecuted instantiation: gdevpdfb.c:device_encodes_tags
Unexecuted instantiation: gdevpdfc.c:device_encodes_tags
Unexecuted instantiation: gdevpdfd.c:device_encodes_tags
Unexecuted instantiation: gdevpdfe.c:device_encodes_tags
Unexecuted instantiation: gdevpdfg.c:device_encodes_tags
Unexecuted instantiation: gdevpdfi.c:device_encodes_tags
Unexecuted instantiation: gdevpdfj.c:device_encodes_tags
Unexecuted instantiation: gdevpdfk.c:device_encodes_tags
Unexecuted instantiation: gdevpdfm.c:device_encodes_tags
Unexecuted instantiation: gdevpdfo.c:device_encodes_tags
Unexecuted instantiation: gdevpdfp.c:device_encodes_tags
Unexecuted instantiation: gdevpdft.c:device_encodes_tags
Unexecuted instantiation: gdevpdfr.c:device_encodes_tags
Unexecuted instantiation: gdevpdfu.c:device_encodes_tags
Unexecuted instantiation: gdevpdfv.c:device_encodes_tags
Unexecuted instantiation: gdevpsdi.c:device_encodes_tags
Unexecuted instantiation: gdevpsdp.c:device_encodes_tags
Unexecuted instantiation: gdevpsds.c:device_encodes_tags
Unexecuted instantiation: gdevpsdu.c:device_encodes_tags
Unexecuted instantiation: gdevvec.c:device_encodes_tags
Unexecuted instantiation: gdevpdt.c:device_encodes_tags
Unexecuted instantiation: gdevpdtd.c:device_encodes_tags
Unexecuted instantiation: gdevpdtf.c:device_encodes_tags
Unexecuted instantiation: gdevpdti.c:device_encodes_tags
Unexecuted instantiation: gdevpdts.c:device_encodes_tags
Unexecuted instantiation: gdevpdtt.c:device_encodes_tags
Unexecuted instantiation: gdevpdtw.c:device_encodes_tags
Unexecuted instantiation: gxfcopy.c:device_encodes_tags
Unexecuted instantiation: gdevfax.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: gdevpbm.c:device_encodes_tags
gdevmpla.c:device_encodes_tags
Line
Count
Source
1635
2.55M
{
1636
2.55M
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
2.55M
}
Unexecuted instantiation: gdevpng.c:device_encodes_tags
Unexecuted instantiation: gdevpsd.c:device_encodes_tags
Unexecuted instantiation: gdevpx.c:device_encodes_tags
Unexecuted instantiation: gdevpxut.c:device_encodes_tags
Unexecuted instantiation: gdevtsep.c:device_encodes_tags
Unexecuted instantiation: gdevtifs.c:device_encodes_tags
Unexecuted instantiation: gdevupd.c:device_encodes_tags
Unexecuted instantiation: gdevxps.c:device_encodes_tags
Unexecuted instantiation: gdevkrnlsclass.c:device_encodes_tags
Unexecuted instantiation: gschar.c:device_encodes_tags
Unexecuted instantiation: gscolor.c:device_encodes_tags
Unexecuted instantiation: gscoord.c:device_encodes_tags
gscspace.c:device_encodes_tags
Line
Count
Source
1635
200
{
1636
200
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
200
}
gsovrc.c:device_encodes_tags
Line
Count
Source
1635
229
{
1636
229
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
229
}
Unexecuted instantiation: gxoprect.c:device_encodes_tags
Unexecuted instantiation: gsdevice.c:device_encodes_tags
Unexecuted instantiation: gsdparam.c:device_encodes_tags
Unexecuted instantiation: gsfont.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
1635
1.07M
{
1636
1.07M
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
1.07M
}
Unexecuted instantiation: gsgstate.c:device_encodes_tags
Unexecuted instantiation: gsline.c:device_encodes_tags
gspaint.c:device_encodes_tags
Line
Count
Source
1635
15.7M
{
1636
15.7M
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
15.7M
}
Unexecuted instantiation: gspath.c:device_encodes_tags
Unexecuted instantiation: gsstate.c:device_encodes_tags
gstext.c:device_encodes_tags
Line
Count
Source
1635
23.6M
{
1636
23.6M
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
23.6M
}
gxfapi.c:device_encodes_tags
Line
Count
Source
1635
263k
{
1636
263k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
263k
}
Unexecuted instantiation: write_t2.c:device_encodes_tags
Unexecuted instantiation: gxccache.c:device_encodes_tags
Unexecuted instantiation: gxccman.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
gxcmap.c:device_encodes_tags
Line
Count
Source
1635
436M
{
1636
436M
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
436M
}
Unexecuted instantiation: gxcpath.c:device_encodes_tags
Unexecuted instantiation: gxdcconv.c:device_encodes_tags
gxdcolor.c:device_encodes_tags
Line
Count
Source
1635
435k
{
1636
435k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
435k
}
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: gxidata.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
Unexecuted instantiation: gdevdflt.c:device_encodes_tags
Unexecuted instantiation: gdevdgbr.c:device_encodes_tags
Unexecuted instantiation: gdevnfwd.c:device_encodes_tags
Unexecuted instantiation: gdevmem.c:device_encodes_tags
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: 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: pdf_loop_detect.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: 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
1635
72.7k
{
1636
72.7k
    return (dev->graphics_type_tag & GS_DEVICE_ENCODES_TAGS) != 0;
1637
72.7k
}
Unexecuted instantiation: gsptype2.c:device_encodes_tags
Unexecuted instantiation: gsshade.c:device_encodes_tags
Unexecuted instantiation: gxshade.c:device_encodes_tags
Unexecuted instantiation: gxshade1.c:device_encodes_tags
Unexecuted instantiation: gxshade4.c:device_encodes_tags
Unexecuted instantiation: gxshade6.c:device_encodes_tags
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: gxdownscale.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: gdevpdtb.c:device_encodes_tags
Unexecuted instantiation: gdevpdtc.c:device_encodes_tags
Unexecuted instantiation: gdevpdte.c:device_encodes_tags
Unexecuted instantiation: gdevpsfx.c:device_encodes_tags
Unexecuted instantiation: gstiffio.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: gxacpath.c:device_encodes_tags
Unexecuted instantiation: gxpdash.c:device_encodes_tags
Unexecuted instantiation: pdf_fapi.c:device_encodes_tags
Unexecuted instantiation: gscscie.c:device_encodes_tags
1638
1639
static inline gs_graphics_type_tag_t device_current_tag(const gx_device *dev)
1640
104M
{
1641
104M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
104M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
104M
}
Unexecuted instantiation: imain.c:device_current_tag
Unexecuted instantiation: gconfig.c:device_current_tag
Unexecuted instantiation: gximage3.c:device_current_tag
Unexecuted instantiation: gximage4.c:device_current_tag
Unexecuted instantiation: gxmclip.c:device_current_tag
Unexecuted instantiation: gsptype1.c:device_current_tag
Unexecuted instantiation: gxp1fill.c:device_current_tag
Unexecuted instantiation: gxpcmap.c:device_current_tag
gxicolor.c:device_current_tag
Line
Count
Source
1640
4.06M
{
1641
4.06M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
4.06M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
4.06M
}
Unexecuted instantiation: gsdps1.c:device_current_tag
Unexecuted instantiation: gsciemap.c:device_current_tag
Unexecuted instantiation: gstrans.c:device_current_tag
Unexecuted instantiation: gximag3x.c:device_current_tag
Unexecuted instantiation: gxblend.c:device_current_tag
Unexecuted instantiation: gdevp14.c:device_current_tag
Unexecuted instantiation: gdevdevn.c:device_current_tag
Unexecuted instantiation: gsequivc.c:device_current_tag
Unexecuted instantiation: gdevdcrd.c:device_current_tag
Unexecuted instantiation: gscpixel.c:device_current_tag
Unexecuted instantiation: gdevbbox.c:device_current_tag
Unexecuted instantiation: gdevprn.c:device_current_tag
Unexecuted instantiation: gdevppla.c:device_current_tag
Unexecuted instantiation: gdevflp.c:device_current_tag
Unexecuted instantiation: gdevoflt.c:device_current_tag
Unexecuted instantiation: gdevnup.c:device_current_tag
Unexecuted instantiation: gdevsclass.c:device_current_tag
Unexecuted instantiation: gxclist.c:device_current_tag
Unexecuted instantiation: gxclpage.c:device_current_tag
Unexecuted instantiation: gxclread.c:device_current_tag
Unexecuted instantiation: gxclrect.c:device_current_tag
Unexecuted instantiation: gxclutil.c:device_current_tag
Unexecuted instantiation: gxclimag.c:device_current_tag
Unexecuted instantiation: gxclpath.c:device_current_tag
Unexecuted instantiation: gxdhtserial.c:device_current_tag
Unexecuted instantiation: gxclthrd.c:device_current_tag
Unexecuted instantiation: gsicc.c:device_current_tag
Unexecuted instantiation: gsicc_manage.c:device_current_tag
Unexecuted instantiation: gsicc_cache.c:device_current_tag
Unexecuted instantiation: gsicc_lcms2mt.c:device_current_tag
Unexecuted instantiation: gsicc_create.c:device_current_tag
Unexecuted instantiation: gsicc_nocm.c:device_current_tag
Unexecuted instantiation: gsicc_replacecm.c:device_current_tag
Unexecuted instantiation: gsicc_monitorcm.c:device_current_tag
Unexecuted instantiation: gsicc_blacktext.c:device_current_tag
Unexecuted instantiation: gdevbmp.c:device_current_tag
Unexecuted instantiation: gdevbmpc.c:device_current_tag
Unexecuted instantiation: gdevpccm.c:device_current_tag
Unexecuted instantiation: gdevcups.c:device_current_tag
Unexecuted instantiation: gdevpdf.c:device_current_tag
Unexecuted instantiation: gdevpdfb.c:device_current_tag
Unexecuted instantiation: gdevpdfc.c:device_current_tag
Unexecuted instantiation: gdevpdfd.c:device_current_tag
Unexecuted instantiation: gdevpdfe.c:device_current_tag
Unexecuted instantiation: gdevpdfg.c:device_current_tag
Unexecuted instantiation: gdevpdfi.c:device_current_tag
Unexecuted instantiation: gdevpdfj.c:device_current_tag
Unexecuted instantiation: gdevpdfk.c:device_current_tag
Unexecuted instantiation: gdevpdfm.c:device_current_tag
Unexecuted instantiation: gdevpdfo.c:device_current_tag
Unexecuted instantiation: gdevpdfp.c:device_current_tag
Unexecuted instantiation: gdevpdft.c:device_current_tag
Unexecuted instantiation: gdevpdfr.c:device_current_tag
Unexecuted instantiation: gdevpdfu.c:device_current_tag
Unexecuted instantiation: gdevpdfv.c:device_current_tag
Unexecuted instantiation: gdevpsdi.c:device_current_tag
Unexecuted instantiation: gdevpsdp.c:device_current_tag
Unexecuted instantiation: gdevpsds.c:device_current_tag
Unexecuted instantiation: gdevpsdu.c:device_current_tag
Unexecuted instantiation: gdevvec.c:device_current_tag
Unexecuted instantiation: gdevpdt.c:device_current_tag
Unexecuted instantiation: gdevpdtd.c:device_current_tag
Unexecuted instantiation: gdevpdtf.c:device_current_tag
Unexecuted instantiation: gdevpdti.c:device_current_tag
Unexecuted instantiation: gdevpdts.c:device_current_tag
Unexecuted instantiation: gdevpdtt.c:device_current_tag
Unexecuted instantiation: gdevpdtw.c:device_current_tag
Unexecuted instantiation: gxfcopy.c:device_current_tag
Unexecuted instantiation: gdevfax.c:device_current_tag
Unexecuted instantiation: gdevdjet.c:device_current_tag
Unexecuted instantiation: gdevdljm.c:device_current_tag
Unexecuted instantiation: gdevpcl.c:device_current_tag
Unexecuted instantiation: gdevpcl3.c:device_current_tag
Unexecuted instantiation: pclcap.c:device_current_tag
Unexecuted instantiation: gdevpbm.c:device_current_tag
Unexecuted instantiation: gdevmpla.c:device_current_tag
Unexecuted instantiation: gdevpng.c:device_current_tag
Unexecuted instantiation: gdevpsd.c:device_current_tag
Unexecuted instantiation: gdevpx.c:device_current_tag
Unexecuted instantiation: gdevpxut.c:device_current_tag
Unexecuted instantiation: gdevtsep.c:device_current_tag
Unexecuted instantiation: gdevtifs.c:device_current_tag
Unexecuted instantiation: gdevupd.c:device_current_tag
Unexecuted instantiation: gdevxps.c:device_current_tag
Unexecuted instantiation: gdevkrnlsclass.c:device_current_tag
Unexecuted instantiation: gschar.c:device_current_tag
Unexecuted instantiation: gscolor.c:device_current_tag
Unexecuted instantiation: gscoord.c:device_current_tag
Unexecuted instantiation: gscspace.c:device_current_tag
Unexecuted instantiation: gsovrc.c:device_current_tag
Unexecuted instantiation: gxoprect.c:device_current_tag
Unexecuted instantiation: gsdevice.c:device_current_tag
Unexecuted instantiation: gsdparam.c:device_current_tag
Unexecuted instantiation: gsfont.c:device_current_tag
Unexecuted instantiation: gsht.c:device_current_tag
Unexecuted instantiation: gshtscr.c:device_current_tag
Unexecuted instantiation: gsimage.c:device_current_tag
Unexecuted instantiation: gsgstate.c:device_current_tag
Unexecuted instantiation: gsline.c:device_current_tag
Unexecuted instantiation: gspaint.c:device_current_tag
Unexecuted instantiation: gspath.c:device_current_tag
Unexecuted instantiation: gsstate.c:device_current_tag
Unexecuted instantiation: gstext.c:device_current_tag
Unexecuted instantiation: gxfapi.c:device_current_tag
Unexecuted instantiation: write_t2.c:device_current_tag
Unexecuted instantiation: gxccache.c:device_current_tag
Unexecuted instantiation: gxccman.c:device_current_tag
Unexecuted instantiation: gxchar.c:device_current_tag
Unexecuted instantiation: gxcht.c:device_current_tag
Unexecuted instantiation: gxclip.c:device_current_tag
Unexecuted instantiation: gxcmap.c:device_current_tag
Unexecuted instantiation: gxcpath.c:device_current_tag
Unexecuted instantiation: gxdcconv.c:device_current_tag
gxdcolor.c:device_current_tag
Line
Count
Source
1640
42.3M
{
1641
42.3M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
42.3M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
42.3M
}
Unexecuted instantiation: gxhldevc.c:device_current_tag
Unexecuted instantiation: gxfill.c:device_current_tag
Unexecuted instantiation: gxht.c:device_current_tag
Unexecuted instantiation: gxht_thresh.c:device_current_tag
Unexecuted instantiation: gxidata.c:device_current_tag
Unexecuted instantiation: gxifast.c:device_current_tag
Unexecuted instantiation: gximage.c:device_current_tag
Unexecuted instantiation: gximdecode.c:device_current_tag
Unexecuted instantiation: gximage1.c:device_current_tag
gximono.c:device_current_tag
Line
Count
Source
1640
11.0M
{
1641
11.0M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
11.0M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
11.0M
}
gxipixel.c:device_current_tag
Line
Count
Source
1640
2.28M
{
1641
2.28M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
2.28M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
2.28M
}
Unexecuted instantiation: gximask.c:device_current_tag
Unexecuted instantiation: gxi12bit.c:device_current_tag
Unexecuted instantiation: gxi16bit.c:device_current_tag
Unexecuted instantiation: gxiscale.c:device_current_tag
Unexecuted instantiation: gxpaint.c:device_current_tag
Unexecuted instantiation: gxpcopy.c:device_current_tag
Unexecuted instantiation: gxsample.c:device_current_tag
Unexecuted instantiation: gxstroke.c:device_current_tag
Unexecuted instantiation: gdevabuf.c:device_current_tag
Unexecuted instantiation: gdevdbit.c:device_current_tag
Unexecuted instantiation: gdevddrw.c:device_current_tag
Unexecuted instantiation: gdevdflt.c:device_current_tag
Unexecuted instantiation: gdevdgbr.c:device_current_tag
Unexecuted instantiation: gdevnfwd.c:device_current_tag
Unexecuted instantiation: gdevmem.c:device_current_tag
Unexecuted instantiation: gdevplnx.c:device_current_tag
Unexecuted instantiation: gdevm1.c:device_current_tag
Unexecuted instantiation: gdevm2.c:device_current_tag
Unexecuted instantiation: gdevm4.c:device_current_tag
Unexecuted instantiation: gdevm8.c:device_current_tag
Unexecuted instantiation: gdevm16.c:device_current_tag
Unexecuted instantiation: gdevm24.c:device_current_tag
Unexecuted instantiation: gdevm32.c:device_current_tag
Unexecuted instantiation: gdevm40.c:device_current_tag
Unexecuted instantiation: gdevm48.c:device_current_tag
Unexecuted instantiation: gdevm56.c:device_current_tag
Unexecuted instantiation: gdevm64.c:device_current_tag
Unexecuted instantiation: gdevmx.c:device_current_tag
gdevdsha.c:device_current_tag
Line
Count
Source
1640
24.1M
{
1641
24.1M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
24.1M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
24.1M
}
Unexecuted instantiation: gxscanc.c:device_current_tag
Unexecuted instantiation: gdevdrop.c:device_current_tag
Unexecuted instantiation: gdevmr1.c:device_current_tag
Unexecuted instantiation: gdevmr2n.c:device_current_tag
Unexecuted instantiation: gdevmr8n.c:device_current_tag
Unexecuted instantiation: gdevrops.c:device_current_tag
Unexecuted instantiation: gsrop.c:device_current_tag
Unexecuted instantiation: zcolor1.c:device_current_tag
Unexecuted instantiation: zht1.c:device_current_tag
Unexecuted instantiation: zupath.c:device_current_tag
Unexecuted instantiation: gdevhit.c:device_current_tag
Unexecuted instantiation: zdps1.c:device_current_tag
Unexecuted instantiation: zchar1.c:device_current_tag
Unexecuted instantiation: zcharout.c:device_current_tag
Unexecuted instantiation: zfont1.c:device_current_tag
Unexecuted instantiation: zusparam.c:device_current_tag
Unexecuted instantiation: zchar42.c:device_current_tag
Unexecuted instantiation: zfont0.c:device_current_tag
Unexecuted instantiation: zfdctd.c:device_current_tag
Unexecuted instantiation: zdevice2.c:device_current_tag
Unexecuted instantiation: zpcolor.c:device_current_tag
Unexecuted instantiation: idisp.c:device_current_tag
Unexecuted instantiation: psapi.c:device_current_tag
Unexecuted instantiation: zfileio.c:device_current_tag
Unexecuted instantiation: zbfont.c:device_current_tag
Unexecuted instantiation: zchar.c:device_current_tag
Unexecuted instantiation: zcolor.c:device_current_tag
Unexecuted instantiation: zdevice.c:device_current_tag
Unexecuted instantiation: zfont.c:device_current_tag
Unexecuted instantiation: zht.c:device_current_tag
Unexecuted instantiation: zimage.c:device_current_tag
Unexecuted instantiation: zfapi.c:device_current_tag
Unexecuted instantiation: zcsindex.c:device_current_tag
Unexecuted instantiation: zht2.c:device_current_tag
Unexecuted instantiation: zcssepr.c:device_current_tag
Unexecuted instantiation: zfunc4.c:device_current_tag
Unexecuted instantiation: zform.c:device_current_tag
Unexecuted instantiation: zimage3.c:device_current_tag
Unexecuted instantiation: zicc.c:device_current_tag
Unexecuted instantiation: ztrans.c:device_current_tag
Unexecuted instantiation: zpdfops.c:device_current_tag
Unexecuted instantiation: pdf_loop_detect.c:device_current_tag
Unexecuted instantiation: ghostpdf.c:device_current_tag
Unexecuted instantiation: pdf_dict.c:device_current_tag
Unexecuted instantiation: pdf_array.c:device_current_tag
Unexecuted instantiation: pdf_xref.c:device_current_tag
Unexecuted instantiation: pdf_int.c:device_current_tag
Unexecuted instantiation: pdf_file.c:device_current_tag
Unexecuted instantiation: pdf_path.c:device_current_tag
Unexecuted instantiation: pdf_colour.c:device_current_tag
Unexecuted instantiation: pdf_pattern.c:device_current_tag
Unexecuted instantiation: pdf_gstate.c:device_current_tag
Unexecuted instantiation: pdf_stack.c:device_current_tag
Unexecuted instantiation: pdf_image.c:device_current_tag
Unexecuted instantiation: pdf_page.c:device_current_tag
Unexecuted instantiation: pdf_annot.c:device_current_tag
Unexecuted instantiation: pdf_mark.c:device_current_tag
Unexecuted instantiation: pdf_font.c:device_current_tag
Unexecuted instantiation: pdf_font0.c:device_current_tag
Unexecuted instantiation: pdf_ciddec.c:device_current_tag
Unexecuted instantiation: pdf_font1.c:device_current_tag
Unexecuted instantiation: pdf_font1C.c:device_current_tag
Unexecuted instantiation: pdf_fontps.c:device_current_tag
Unexecuted instantiation: pdf_font3.c:device_current_tag
Unexecuted instantiation: pdf_fontTT.c:device_current_tag
Unexecuted instantiation: pdf_font11.c:device_current_tag
Unexecuted instantiation: pdf_cmap.c:device_current_tag
Unexecuted instantiation: pdf_fmap.c:device_current_tag
Unexecuted instantiation: pdf_text.c:device_current_tag
Unexecuted instantiation: pdf_shading.c:device_current_tag
Unexecuted instantiation: pdf_func.c:device_current_tag
Unexecuted instantiation: pdf_trans.c:device_current_tag
Unexecuted instantiation: pdf_device.c:device_current_tag
Unexecuted instantiation: pdf_misc.c:device_current_tag
Unexecuted instantiation: pdf_optcontent.c:device_current_tag
Unexecuted instantiation: pdf_check.c:device_current_tag
Unexecuted instantiation: pdf_sec.c:device_current_tag
Unexecuted instantiation: pdf_utf8.c:device_current_tag
Unexecuted instantiation: pdf_deref.c:device_current_tag
Unexecuted instantiation: pdf_repair.c:device_current_tag
Unexecuted instantiation: pdf_obj.c:device_current_tag
Unexecuted instantiation: pdf_doc.c:device_current_tag
Unexecuted instantiation: imainarg.c:device_current_tag
Unexecuted instantiation: gsclipsr.c:device_current_tag
Unexecuted instantiation: gscdevn.c:device_current_tag
Unexecuted instantiation: gxdevndi.c:device_current_tag
Unexecuted instantiation: gxclipm.c:device_current_tag
Unexecuted instantiation: gscolor3.c:device_current_tag
Unexecuted instantiation: gsptype2.c:device_current_tag
Unexecuted instantiation: gsshade.c:device_current_tag
Unexecuted instantiation: gxshade.c:device_current_tag
Unexecuted instantiation: gxshade1.c:device_current_tag
Unexecuted instantiation: gxshade4.c:device_current_tag
gxshade6.c:device_current_tag
Line
Count
Source
1640
20.5M
{
1641
20.5M
    gs_graphics_type_tag_t tag = dev->graphics_type_tag;
1642
20.5M
    return (tag & GS_DEVICE_ENCODES_TAGS) ? (tag & ~GS_DEVICE_ENCODES_TAGS) : 0;
1643
20.5M
}
Unexecuted instantiation: gscolor1.c:device_current_tag
Unexecuted instantiation: gsht1.c:device_current_tag
Unexecuted instantiation: gscolor2.c:device_current_tag
Unexecuted instantiation: gspcolor.c:device_current_tag
Unexecuted instantiation: gxclip2.c:device_current_tag
Unexecuted instantiation: gspath1.c:device_current_tag
Unexecuted instantiation: gstype42.c:device_current_tag
Unexecuted instantiation: gxchrout.c:device_current_tag
Unexecuted instantiation: gxttfb.c:device_current_tag
Unexecuted instantiation: gzspotan.c:device_current_tag
Unexecuted instantiation: gscie.c:device_current_tag
Unexecuted instantiation: gscsepr.c:device_current_tag
Unexecuted instantiation: gxblend1.c:device_current_tag
Unexecuted instantiation: gxdownscale.c:device_current_tag
Unexecuted instantiation: gdevepo.c:device_current_tag
Unexecuted instantiation: gxclbits.c:device_current_tag
Unexecuted instantiation: gxclrast.c:device_current_tag
Unexecuted instantiation: gschar0.c:device_current_tag
Unexecuted instantiation: gsfont0.c:device_current_tag
Unexecuted instantiation: gstype1.c:device_current_tag
Unexecuted instantiation: gxtype1.c:device_current_tag
Unexecuted instantiation: gstype2.c:device_current_tag
Unexecuted instantiation: gsicc_profilecache.c:device_current_tag
Unexecuted instantiation: gdevpdtb.c:device_current_tag
Unexecuted instantiation: gdevpdtc.c:device_current_tag
Unexecuted instantiation: gdevpdte.c:device_current_tag
Unexecuted instantiation: gdevpsfx.c:device_current_tag
Unexecuted instantiation: gstiffio.c:device_current_tag
Unexecuted instantiation: gdeveprn.c:device_current_tag
Unexecuted instantiation: eprnparm.c:device_current_tag
Unexecuted instantiation: eprnrend.c:device_current_tag
Unexecuted instantiation: eprnfs.c:device_current_tag
Unexecuted instantiation: gscicach.c:device_current_tag
Unexecuted instantiation: gsdevmem.c:device_current_tag
Unexecuted instantiation: gxacpath.c:device_current_tag
Unexecuted instantiation: gxpdash.c:device_current_tag
Unexecuted instantiation: pdf_fapi.c:device_current_tag
Unexecuted instantiation: gscscie.c:device_current_tag
1644
1645
static inline bool device_is_deep(const gx_device *dev)
1646
224M
{
1647
224M
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
224M
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
224M
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
224M
    if (bits_per_comp == 8)
1653
104M
        return 0;
1654
119M
    return (dev->color_info.max_color > 255 ||
1655
119M
            dev->color_info.max_gray > 255);
1656
224M
}
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
1646
37.3M
{
1647
37.3M
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
37.3M
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
37.3M
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
37.3M
    if (bits_per_comp == 8)
1653
34.2M
        return 0;
1654
3.01M
    return (dev->color_info.max_color > 255 ||
1655
3.01M
            dev->color_info.max_gray > 255);
1656
37.3M
}
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
gstrans.c:device_is_deep
Line
Count
Source
1646
98.8k
{
1647
98.8k
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
98.8k
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
98.8k
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
98.8k
    if (bits_per_comp == 8)
1653
98.8k
        return 0;
1654
0
    return (dev->color_info.max_color > 255 ||
1655
0
            dev->color_info.max_gray > 255);
1656
98.8k
}
Unexecuted instantiation: gximag3x.c:device_is_deep
Unexecuted instantiation: gxblend.c:device_is_deep
gdevp14.c:device_is_deep
Line
Count
Source
1646
21.1M
{
1647
21.1M
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
21.1M
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
21.1M
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
21.1M
    if (bits_per_comp == 8)
1653
17.7M
        return 0;
1654
3.42M
    return (dev->color_info.max_color > 255 ||
1655
3.42M
            dev->color_info.max_gray > 255);
1656
21.1M
}
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
gdevprn.c:device_is_deep
Line
Count
Source
1646
250k
{
1647
250k
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
250k
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
250k
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
250k
    if (bits_per_comp == 8)
1653
107k
        return 0;
1654
142k
    return (dev->color_info.max_color > 255 ||
1655
142k
            dev->color_info.max_gray > 255);
1656
250k
}
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: gdevbmp.c:device_is_deep
Unexecuted instantiation: gdevbmpc.c:device_is_deep
Unexecuted instantiation: gdevpccm.c:device_is_deep
Unexecuted instantiation: gdevcups.c:device_is_deep
Unexecuted instantiation: gdevpdf.c:device_is_deep
Unexecuted instantiation: gdevpdfb.c:device_is_deep
Unexecuted instantiation: gdevpdfc.c:device_is_deep
Unexecuted instantiation: gdevpdfd.c:device_is_deep
Unexecuted instantiation: gdevpdfe.c:device_is_deep
Unexecuted instantiation: gdevpdfg.c:device_is_deep
Unexecuted instantiation: gdevpdfi.c:device_is_deep
Unexecuted instantiation: gdevpdfj.c:device_is_deep
Unexecuted instantiation: gdevpdfk.c:device_is_deep
Unexecuted instantiation: gdevpdfm.c:device_is_deep
Unexecuted instantiation: gdevpdfo.c:device_is_deep
Unexecuted instantiation: gdevpdfp.c:device_is_deep
Unexecuted instantiation: gdevpdft.c:device_is_deep
Unexecuted instantiation: gdevpdfr.c:device_is_deep
Unexecuted instantiation: gdevpdfu.c:device_is_deep
Unexecuted instantiation: gdevpdfv.c:device_is_deep
Unexecuted instantiation: gdevpsdi.c:device_is_deep
Unexecuted instantiation: gdevpsdp.c:device_is_deep
Unexecuted instantiation: gdevpsds.c:device_is_deep
Unexecuted instantiation: gdevpsdu.c:device_is_deep
Unexecuted instantiation: gdevvec.c:device_is_deep
Unexecuted instantiation: gdevpdt.c:device_is_deep
Unexecuted instantiation: gdevpdtd.c:device_is_deep
Unexecuted instantiation: gdevpdtf.c:device_is_deep
Unexecuted instantiation: gdevpdti.c:device_is_deep
Unexecuted instantiation: gdevpdts.c:device_is_deep
Unexecuted instantiation: gdevpdtt.c:device_is_deep
Unexecuted instantiation: gdevpdtw.c:device_is_deep
Unexecuted instantiation: gxfcopy.c:device_is_deep
Unexecuted instantiation: gdevfax.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: gdevpbm.c:device_is_deep
Unexecuted instantiation: gdevmpla.c:device_is_deep
Unexecuted instantiation: gdevpng.c:device_is_deep
Unexecuted instantiation: gdevpsd.c:device_is_deep
Unexecuted instantiation: gdevpx.c:device_is_deep
Unexecuted instantiation: gdevpxut.c:device_is_deep
Unexecuted instantiation: gdevtsep.c:device_is_deep
Unexecuted instantiation: gdevtifs.c:device_is_deep
Unexecuted instantiation: gdevupd.c:device_is_deep
Unexecuted instantiation: gdevxps.c:device_is_deep
Unexecuted instantiation: gdevkrnlsclass.c:device_is_deep
Unexecuted instantiation: gschar.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: gsfont.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: gxccache.c:device_is_deep
Unexecuted instantiation: gxccman.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: gxidata.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
1646
163M
{
1647
163M
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
163M
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
163M
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
163M
    if (bits_per_comp == 8)
1653
51.8M
        return 0;
1654
112M
    return (dev->color_info.max_color > 255 ||
1655
112M
            dev->color_info.max_gray > 255);
1656
163M
}
Unexecuted instantiation: gdevdgbr.c:device_is_deep
Unexecuted instantiation: gdevnfwd.c:device_is_deep
gdevmem.c:device_is_deep
Line
Count
Source
1646
1.35M
{
1647
1.35M
    int bits_per_comp = (dev->color_info.depth / dev->color_info.num_components);
1648
1.35M
    if (bits_per_comp > 16)
1649
0
        return 1;
1650
1.35M
    if (bits_per_comp == 16 && dev->color_info.num_components > 1)
1651
0
        return 1;
1652
1.35M
    if (bits_per_comp == 8)
1653
590k
        return 0;
1654
759k
    return (dev->color_info.max_color > 255 ||
1655
759k
            dev->color_info.max_gray > 255);
1656
1.35M
}
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: 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: pdf_loop_detect.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: 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: gxshade.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: gxdownscale.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: gdevpdtb.c:device_is_deep
Unexecuted instantiation: gdevpdtc.c:device_is_deep
Unexecuted instantiation: gdevpdte.c:device_is_deep
Unexecuted instantiation: gdevpsfx.c:device_is_deep
Unexecuted instantiation: gstiffio.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: gxacpath.c:device_is_deep
Unexecuted instantiation: gxpdash.c:device_is_deep
Unexecuted instantiation: pdf_fapi.c:device_is_deep
Unexecuted instantiation: gscscie.c:device_is_deep
1657
1658
/* A null device.  This is used to temporarily disable output. */
1659
struct gx_device_null_s {
1660
    gx_device_forward_common;
1661
};
1662
extern const gx_device_null gs_null_device;
1663
1664
#define gx_device_is_null(dev)\
1665
419k
  ((dev)->dname == gs_null_device.dname)
1666
extern_st(st_device_null);
1667
#define public_st_device_null() /* in gsdevice.c */\
1668
  gs_public_st_complex_only(st_device_null, gx_device_null,\
1669
    "gx_device_null", 0, device_forward_enum_ptrs,\
1670
    device_forward_reloc_ptrs, gx_device_finalize)
1671
#define st_device_null_max_ptrs st_device_forward_max_ptrs
1672
1673
/*
1674
 * Initialize a just-allocated device from a prototype.  If internal =
1675
 * false, the device is marked retained; if internal = true, the device is
1676
 * not marked retained.  See the beginning of this file for more information
1677
 * about what this means.  Normally, devices created for temporary use have
1678
 * internal = true (retained = false).
1679
 */
1680
int gx_device_init(gx_device * dev, const gx_device * proto,
1681
                   gs_memory_t * mem, bool internal);
1682
1683
/*
1684
 * Identical to gx_device_init, except that the reference counting is set
1685
 * up so that it doesn't attempt to free the device structure when the last
1686
 * instance is removed, and the device is always internal (never retained).
1687
 *
1688
 * If the device uses an initialize proc (and it should!) it can never
1689
 * fail.
1690
 */
1691
void gx_device_init_on_stack(gx_device * dev, const gx_device * proto,
1692
                             gs_memory_t * mem);
1693
1694
/* Make a null device. */
1695
/* The gs_memory_t argument is 0 if the device is temporary and local, */
1696
/* or the allocator that was used to allocate it if it is a real object. */
1697
void gs_make_null_device(gx_device_null *dev_null, gx_device *target,
1698
                         gs_memory_t *mem);
1699
/* Is a null device ? */
1700
bool gs_is_null_device(gx_device *dev);
1701
1702
/* Set the target of a (forwarding) device. */
1703
void gx_device_set_target(gx_device_forward *fdev, gx_device *target);
1704
1705
/* Mark a device as retained or not retained. */
1706
void gx_device_retain(gx_device *dev, bool retained);
1707
1708
/* Calculate the raster (number of bytes in a scan line), */
1709
/* with byte or device padding. */
1710
uint gx_device_raster(const gx_device * dev, bool pad_to_word);
1711
1712
/* Calculate the raster (number of bytes in a scan line), */
1713
/* with byte or device padding forcing chunky format. */
1714
uint gx_device_raster_chunky(const gx_device * dev, bool pad);
1715
1716
/* Calculate the raster (with device padding) optionally for a given
1717
 * render_plane (may be NULL). */
1718
uint gx_device_raster_plane(const gx_device * dev, const gx_render_plane_t *render_plane);
1719
1720
/* Adjust the resolution for devices that only have a fixed set of */
1721
/* geometries, so that the apparent size in inches remains constant. */
1722
/* If fit=1, the resolution is adjusted so that the entire image fits; */
1723
/* if fit=0, one dimension fits, but the other one is clipped. */
1724
int gx_device_adjust_resolution(gx_device * dev, int actual_width, int actual_height, int fit);
1725
1726
/* Set the HWMargins to values defined in inches. */
1727
/* If move_origin is true, also reset the Margins. */
1728
void gx_device_set_margins(gx_device * dev, const float *margins /*[4] */ ,
1729
                           bool move_origin);
1730
1731
/* Set the width and height (in pixels), updating MediaSize. */
1732
void gx_device_set_width_height(gx_device * dev, int width, int height);
1733
1734
/* Set the resolution (in pixels per inch), updating width and height. */
1735
void gx_device_set_resolution(gx_device * dev, double x_dpi, double y_dpi);
1736
1737
/* Set the MediaSize (in 1/72" units), updating width and height. */
1738
void gx_device_set_media_size(gx_device * dev, double media_width, double media_height);
1739
1740
/****** BACKWARD COMPATIBILITY ******/
1741
#define gx_device_set_page_size(dev, w, h)\
1742
150k
  gx_device_set_media_size(dev, w, h)
1743
1744
/*
1745
 * Temporarily install a null device, or a special device such as
1746
 * a clipping or cache device.
1747
 */
1748
void gx_set_device_only(gs_gstate *, gx_device *);
1749
1750
/* Close a device. */
1751
int gs_closedevice(gx_device *);
1752
1753
/* "Free" a device locally allocated on the stack, by finalizing it. */
1754
void gx_device_free_local(gx_device *);
1755
1756
/* ------ Device types (an unused concept right now) ------ */
1757
1758
#define dev_type_proc_initialize(proc)\
1759
  int proc(gx_device *)
1760
1761
typedef struct gx_device_type_s {
1762
    gs_memory_type_ptr_t stype;
1763
    dev_type_proc_initialize((*initialize));
1764
} gx_device_type;
1765
1766
#define device_type(dtname, stype, initproc)\
1767
static dev_type_proc_initialize(initproc);\
1768
const gx_device_type dtname = { &stype, initproc }
1769
1770
/*dev_type_proc_initialize(gdev_initialize); */
1771
1772
#ifdef DEBUG
1773
void gx_device_dump(gx_device *dev, const char *text);
1774
#endif
1775
1776
/* Compare color information structures */
1777
bool gx_color_info_equal(const gx_device_color_info *p1, const gx_device_color_info *p2);
1778
1779
/* Perform a callout to registered handlers from the device. */
1780
int gx_callout(gx_device *dev, int id, int size, void *data);
1781
1782
static inline
1783
gx_cm_opmsupported_t gx_get_opmsupported(gx_device *dev)
1784
646k
{
1785
646k
    if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN)
1786
639k
        return dev->color_info.opmsupported;
1787
1788
6.53k
    check_opmsupported(dev);
1789
1790
6.53k
    return dev->color_info.opmsupported;
1791
646k
}
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
1784
609k
{
1785
609k
    if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN)
1786
604k
        return dev->color_info.opmsupported;
1787
1788
5.45k
    check_opmsupported(dev);
1789
1790
5.45k
    return dev->color_info.opmsupported;
1791
609k
}
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: gdevbmp.c:gx_get_opmsupported
Unexecuted instantiation: gdevbmpc.c:gx_get_opmsupported
Unexecuted instantiation: gdevpccm.c:gx_get_opmsupported
Unexecuted instantiation: gdevcups.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdf.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfb.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfc.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfd.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfe.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfg.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfi.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfj.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfk.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfm.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfo.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfp.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdft.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfr.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfu.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdfv.c:gx_get_opmsupported
Unexecuted instantiation: gdevpsdi.c:gx_get_opmsupported
Unexecuted instantiation: gdevpsdp.c:gx_get_opmsupported
Unexecuted instantiation: gdevpsds.c:gx_get_opmsupported
Unexecuted instantiation: gdevpsdu.c:gx_get_opmsupported
Unexecuted instantiation: gdevvec.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdt.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdtd.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdtf.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdti.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdts.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdtt.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdtw.c:gx_get_opmsupported
Unexecuted instantiation: gxfcopy.c:gx_get_opmsupported
Unexecuted instantiation: gdevfax.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: gdevpbm.c:gx_get_opmsupported
Unexecuted instantiation: gdevmpla.c:gx_get_opmsupported
Unexecuted instantiation: gdevpng.c:gx_get_opmsupported
Unexecuted instantiation: gdevpsd.c:gx_get_opmsupported
Unexecuted instantiation: gdevpx.c:gx_get_opmsupported
Unexecuted instantiation: gdevpxut.c:gx_get_opmsupported
Unexecuted instantiation: gdevtsep.c:gx_get_opmsupported
Unexecuted instantiation: gdevtifs.c:gx_get_opmsupported
Unexecuted instantiation: gdevupd.c:gx_get_opmsupported
Unexecuted instantiation: gdevxps.c:gx_get_opmsupported
Unexecuted instantiation: gdevkrnlsclass.c:gx_get_opmsupported
Unexecuted instantiation: gschar.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: gsfont.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: gxccache.c:gx_get_opmsupported
Unexecuted instantiation: gxccman.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
gxcmap.c:gx_get_opmsupported
Line
Count
Source
1784
36.3k
{
1785
36.3k
    if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN)
1786
35.2k
        return dev->color_info.opmsupported;
1787
1788
1.07k
    check_opmsupported(dev);
1789
1790
1.07k
    return dev->color_info.opmsupported;
1791
36.3k
}
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: gxidata.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: 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: pdf_loop_detect.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: 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: gxshade.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: gxdownscale.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: gdevpdtb.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdtc.c:gx_get_opmsupported
Unexecuted instantiation: gdevpdte.c:gx_get_opmsupported
Unexecuted instantiation: gdevpsfx.c:gx_get_opmsupported
Unexecuted instantiation: gstiffio.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: gxacpath.c:gx_get_opmsupported
Unexecuted instantiation: gxpdash.c:gx_get_opmsupported
Unexecuted instantiation: pdf_fapi.c:gx_get_opmsupported
Unexecuted instantiation: gscscie.c:gx_get_opmsupported
1792
1793
static inline
1794
gx_color_index gx_get_process_comps(gx_device *dev)
1795
4.16k
{
1796
4.16k
    if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN)
1797
4.16k
        return dev->color_info.process_comps;
1798
1799
0
    return check_cmyk_color_model_comps(dev);
1800
4.16k
}
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: gdevbmp.c:gx_get_process_comps
Unexecuted instantiation: gdevbmpc.c:gx_get_process_comps
Unexecuted instantiation: gdevpccm.c:gx_get_process_comps
Unexecuted instantiation: gdevcups.c:gx_get_process_comps
Unexecuted instantiation: gdevpdf.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfb.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfc.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfd.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfe.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfg.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfi.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfj.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfk.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfm.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfo.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfp.c:gx_get_process_comps
Unexecuted instantiation: gdevpdft.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfr.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfu.c:gx_get_process_comps
Unexecuted instantiation: gdevpdfv.c:gx_get_process_comps
Unexecuted instantiation: gdevpsdi.c:gx_get_process_comps
Unexecuted instantiation: gdevpsdp.c:gx_get_process_comps
Unexecuted instantiation: gdevpsds.c:gx_get_process_comps
Unexecuted instantiation: gdevpsdu.c:gx_get_process_comps
Unexecuted instantiation: gdevvec.c:gx_get_process_comps
Unexecuted instantiation: gdevpdt.c:gx_get_process_comps
Unexecuted instantiation: gdevpdtd.c:gx_get_process_comps
Unexecuted instantiation: gdevpdtf.c:gx_get_process_comps
Unexecuted instantiation: gdevpdti.c:gx_get_process_comps
Unexecuted instantiation: gdevpdts.c:gx_get_process_comps
Unexecuted instantiation: gdevpdtt.c:gx_get_process_comps
Unexecuted instantiation: gdevpdtw.c:gx_get_process_comps
Unexecuted instantiation: gxfcopy.c:gx_get_process_comps
Unexecuted instantiation: gdevfax.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: gdevpbm.c:gx_get_process_comps
Unexecuted instantiation: gdevmpla.c:gx_get_process_comps
Unexecuted instantiation: gdevpng.c:gx_get_process_comps
Unexecuted instantiation: gdevpsd.c:gx_get_process_comps
Unexecuted instantiation: gdevpx.c:gx_get_process_comps
Unexecuted instantiation: gdevpxut.c:gx_get_process_comps
Unexecuted instantiation: gdevtsep.c:gx_get_process_comps
Unexecuted instantiation: gdevtifs.c:gx_get_process_comps
Unexecuted instantiation: gdevupd.c:gx_get_process_comps
Unexecuted instantiation: gdevxps.c:gx_get_process_comps
Unexecuted instantiation: gdevkrnlsclass.c:gx_get_process_comps
Unexecuted instantiation: gschar.c:gx_get_process_comps
Unexecuted instantiation: gscolor.c:gx_get_process_comps
Unexecuted instantiation: gscoord.c:gx_get_process_comps
gscspace.c:gx_get_process_comps
Line
Count
Source
1795
4.16k
{
1796
4.16k
    if (dev->color_info.opmsupported != GX_CINFO_OPMSUPPORTED_UNKNOWN)
1797
4.16k
        return dev->color_info.process_comps;
1798
1799
0
    return check_cmyk_color_model_comps(dev);
1800
4.16k
}
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: gsfont.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: gxccache.c:gx_get_process_comps
Unexecuted instantiation: gxccman.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: gxidata.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: 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: pdf_loop_detect.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: 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: gxshade.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: gxdownscale.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: gdevpdtb.c:gx_get_process_comps
Unexecuted instantiation: gdevpdtc.c:gx_get_process_comps
Unexecuted instantiation: gdevpdte.c:gx_get_process_comps
Unexecuted instantiation: gdevpsfx.c:gx_get_process_comps
Unexecuted instantiation: gstiffio.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: gxacpath.c:gx_get_process_comps
Unexecuted instantiation: gxpdash.c:gx_get_process_comps
Unexecuted instantiation: pdf_fapi.c:gx_get_process_comps
Unexecuted instantiation: gscscie.c:gx_get_process_comps
1801
1802
1803
#endif /* gxdevcli_INCLUDED */