Imported Upstream version 2.3.1
[platform/upstream/cups.git] / cups / ppd.h
1 /*
2  * PostScript Printer Description definitions for CUPS.
3  *
4  * THESE APIS ARE DEPRECATED.  THIS HEADER AND THESE FUNCTIONS WILL BE REMOVED
5  * IN A FUTURE RELEASE OF CUPS.
6  *
7  * Copyright © 2007-2019 by Apple Inc.
8  * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
9  *
10  * Licensed under Apache License v2.0.  See the file "LICENSE" for more
11  * information.
12  *
13  * PostScript is a trademark of Adobe Systems, Inc.
14  */
15
16 #ifndef _CUPS_PPD_H_
17 #  define _CUPS_PPD_H_
18
19 /*
20  * Include necessary headers...
21  */
22
23 #  include <stdio.h>
24 #  include "cups.h"
25 #  include "array.h"
26 #  include "file.h"
27 #  include "raster.h"
28
29
30 /*
31  * C++ magic...
32  */
33
34 #  ifdef __cplusplus
35 extern "C" {
36 #  endif /* __cplusplus */
37
38
39 /*
40  * PPD version...
41  */
42
43 #  define PPD_VERSION   4.3             /* Kept in sync with Adobe version number */
44
45
46 /*
47  * PPD size limits (defined in Adobe spec)
48  */
49
50 #  define PPD_MAX_NAME  41              /* Maximum size of name + 1 for nul */
51 #  define PPD_MAX_TEXT  81              /* Maximum size of text + 1 for nul */
52 #  define PPD_MAX_LINE  256             /* Maximum size of line + 1 for nul */
53
54
55 /*
56  * Types and structures...
57  */
58
59 typedef int (*cups_interpret_cb_t)(cups_page_header2_t *header, int preferred_bits);
60                                         /**** cupsRasterInterpretPPD callback function
61                                          *
62                                          * This function is called by
63                                          * @link cupsRasterInterpretPPD@ to
64                                          * validate (and update, as needed)
65                                          * the page header attributes. The
66                                          * "preferred_bits" argument provides
67                                          * the value of the
68                                          * @code cupsPreferredBitsPerColor@
69                                          * key from the PostScript page device
70                                          * dictionary and is 0 if undefined.
71                                          ****/
72
73 typedef enum ppd_ui_e                   /**** UI Types @deprecated@ ****/
74 {
75   PPD_UI_BOOLEAN,                       /* True or False option */
76   PPD_UI_PICKONE,                       /* Pick one from a list */
77   PPD_UI_PICKMANY                       /* Pick zero or more from a list */
78 } ppd_ui_t;
79
80 typedef enum ppd_section_e              /**** Order dependency sections @deprecated@ ****/
81 {
82   PPD_ORDER_ANY,                        /* Option code can be anywhere in the file */
83   PPD_ORDER_DOCUMENT,                   /* ... must be in the DocumentSetup section */
84   PPD_ORDER_EXIT,                       /* ... must be sent prior to the document */
85   PPD_ORDER_JCL,                        /* ... must be sent as a JCL command */
86   PPD_ORDER_PAGE,                       /* ... must be in the PageSetup section */
87   PPD_ORDER_PROLOG                      /* ... must be in the Prolog section */
88 } ppd_section_t;
89
90 typedef enum ppd_cs_e                   /**** Colorspaces @deprecated@ ****/
91 {
92   PPD_CS_CMYK = -4,                     /* CMYK colorspace */
93   PPD_CS_CMY,                           /* CMY colorspace */
94   PPD_CS_GRAY = 1,                      /* Grayscale colorspace */
95   PPD_CS_RGB = 3,                       /* RGB colorspace */
96   PPD_CS_RGBK,                          /* RGBK (K = gray) colorspace */
97   PPD_CS_N                              /* DeviceN colorspace */
98 } ppd_cs_t;
99
100 typedef enum ppd_status_e               /**** Status Codes @deprecated@ ****/
101 {
102   PPD_OK = 0,                           /* OK */
103   PPD_FILE_OPEN_ERROR,                  /* Unable to open PPD file */
104   PPD_NULL_FILE,                        /* NULL PPD file pointer */
105   PPD_ALLOC_ERROR,                      /* Memory allocation error */
106   PPD_MISSING_PPDADOBE4,                /* Missing PPD-Adobe-4.x header */
107   PPD_MISSING_VALUE,                    /* Missing value string */
108   PPD_INTERNAL_ERROR,                   /* Internal error */
109   PPD_BAD_OPEN_GROUP,                   /* Bad OpenGroup */
110   PPD_NESTED_OPEN_GROUP,                /* OpenGroup without a CloseGroup first */
111   PPD_BAD_OPEN_UI,                      /* Bad OpenUI/JCLOpenUI */
112   PPD_NESTED_OPEN_UI,                   /* OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first */
113   PPD_BAD_ORDER_DEPENDENCY,             /* Bad OrderDependency */
114   PPD_BAD_UI_CONSTRAINTS,               /* Bad UIConstraints */
115   PPD_MISSING_ASTERISK,                 /* Missing asterisk in column 0 */
116   PPD_LINE_TOO_LONG,                    /* Line longer than 255 chars */
117   PPD_ILLEGAL_CHARACTER,                /* Illegal control character */
118   PPD_ILLEGAL_MAIN_KEYWORD,             /* Illegal main keyword string */
119   PPD_ILLEGAL_OPTION_KEYWORD,           /* Illegal option keyword string */
120   PPD_ILLEGAL_TRANSLATION,              /* Illegal translation string */
121   PPD_ILLEGAL_WHITESPACE,               /* Illegal whitespace character */
122   PPD_BAD_CUSTOM_PARAM,                 /* Bad custom parameter */
123   PPD_MISSING_OPTION_KEYWORD,           /* Missing option keyword */
124   PPD_BAD_VALUE,                        /* Bad value string */
125   PPD_MISSING_CLOSE_GROUP,              /* Missing CloseGroup */
126   PPD_BAD_CLOSE_UI,                     /* Bad CloseUI/JCLCloseUI */
127   PPD_MISSING_CLOSE_UI,                 /* Missing CloseUI/JCLCloseUI */
128   PPD_MAX_STATUS                        /* @private@ */
129 } ppd_status_t;
130
131 enum ppd_conform_e                      /**** Conformance Levels @deprecated@ ****/
132 {
133   PPD_CONFORM_RELAXED,                  /* Relax whitespace and control char */
134   PPD_CONFORM_STRICT                    /* Require strict conformance */
135 };
136
137 typedef enum ppd_conform_e ppd_conform_t;
138                                         /**** Conformance Levels @deprecated@ ****/
139
140 typedef struct ppd_attr_s               /**** PPD Attribute Structure @deprecated@ ****/
141 {
142   char          name[PPD_MAX_NAME];     /* Name of attribute (cupsXYZ) */
143   char          spec[PPD_MAX_NAME];     /* Specifier string, if any */
144   char          text[PPD_MAX_TEXT];     /* Human-readable text, if any */
145   char          *value;                 /* Value string */
146 } ppd_attr_t;
147
148 typedef struct ppd_option_s ppd_option_t;
149                                         /**** Options @deprecated@ ****/
150
151 typedef struct ppd_choice_s             /**** Option choices @deprecated@ ****/
152 {
153   char          marked;                 /* 0 if not selected, 1 otherwise */
154   char          choice[PPD_MAX_NAME];   /* Computer-readable option name */
155   char          text[PPD_MAX_TEXT];     /* Human-readable option name */
156   char          *code;                  /* Code to send for this option */
157   ppd_option_t  *option;                /* Pointer to parent option structure */
158 } ppd_choice_t;
159
160 struct ppd_option_s                     /**** Options @deprecated@ ****/
161 {
162   char          conflicted;             /* 0 if no conflicts exist, 1 otherwise */
163   char          keyword[PPD_MAX_NAME];  /* Option keyword name ("PageSize", etc.) */
164   char          defchoice[PPD_MAX_NAME];/* Default option choice */
165   char          text[PPD_MAX_TEXT];     /* Human-readable text */
166   ppd_ui_t      ui;                     /* Type of UI option */
167   ppd_section_t section;                /* Section for command */
168   float         order;                  /* Order number */
169   int           num_choices;            /* Number of option choices */
170   ppd_choice_t  *choices;               /* Option choices */
171 };
172
173 typedef struct ppd_group_s              /**** Groups @deprecated@ ****/
174 {
175   /**** Group text strings are limited to 39 chars + nul in order to
176    **** preserve binary compatibility and allow applications to get
177    **** the group's keyword name.
178    ****/
179   char          text[PPD_MAX_TEXT - PPD_MAX_NAME];
180                                         /* Human-readable group name */
181   char          name[PPD_MAX_NAME];     /* Group name @since CUPS 1.1.18/macOS 10.3@ */
182   int           num_options;            /* Number of options */
183   ppd_option_t  *options;               /* Options */
184   int           num_subgroups;          /* Number of sub-groups */
185   struct ppd_group_s *subgroups;        /* Sub-groups (max depth = 1) */
186 } ppd_group_t;
187
188 typedef struct ppd_const_s              /**** Constraints @deprecated@ ****/
189 {
190   char          option1[PPD_MAX_NAME];  /* First keyword */
191   char          choice1[PPD_MAX_NAME];  /* First option/choice (blank for all) */
192   char          option2[PPD_MAX_NAME];  /* Second keyword */
193   char          choice2[PPD_MAX_NAME];  /* Second option/choice (blank for all) */
194 } ppd_const_t;
195
196 typedef struct ppd_size_s               /**** Page Sizes @deprecated@ ****/
197 {
198   int           marked;                 /* Page size selected? */
199   char          name[PPD_MAX_NAME];     /* Media size option */
200   float         width;                  /* Width of media in points */
201   float         length;                 /* Length of media in points */
202   float         left;                   /* Left printable margin in points */
203   float         bottom;                 /* Bottom printable margin in points */
204   float         right;                  /* Right printable margin in points */
205   float         top;                    /* Top printable margin in points */
206 } ppd_size_t;
207
208 typedef struct ppd_emul_s               /**** Emulators @deprecated@ ****/
209 {
210   char          name[PPD_MAX_NAME];     /* Emulator name */
211   char          *start;                 /* Code to switch to this emulation */
212   char          *stop;                  /* Code to stop this emulation */
213 } ppd_emul_t;
214
215 typedef struct ppd_profile_s            /**** sRGB Color Profiles @deprecated@ ****/
216 {
217   char          resolution[PPD_MAX_NAME];
218                                         /* Resolution or "-" */
219   char          media_type[PPD_MAX_NAME];
220                                         /* Media type or "-" */
221   float         density;                /* Ink density to use */
222   float         gamma;                  /* Gamma correction to use */
223   float         matrix[3][3];           /* Transform matrix */
224 } ppd_profile_t;
225
226 /**** New in CUPS 1.2/macOS 10.5 ****/
227 typedef enum ppd_cptype_e               /**** Custom Parameter Type @deprecated@ ****/
228 {
229   PPD_CUSTOM_UNKNOWN = -1,              /* Unknown type (error) */
230   PPD_CUSTOM_CURVE,                     /* Curve value for f(x) = x^value */
231   PPD_CUSTOM_INT,                       /* Integer number value */
232   PPD_CUSTOM_INVCURVE,                  /* Curve value for f(x) = x^(1/value) */
233   PPD_CUSTOM_PASSCODE,                  /* String of (hidden) numbers */
234   PPD_CUSTOM_PASSWORD,                  /* String of (hidden) characters */
235   PPD_CUSTOM_POINTS,                    /* Measurement value in points */
236   PPD_CUSTOM_REAL,                      /* Real number value */
237   PPD_CUSTOM_STRING                     /* String of characters */
238 } ppd_cptype_t;
239
240 typedef union ppd_cplimit_u             /**** Custom Parameter Limit @deprecated@ ****/
241 {
242   float         custom_curve;           /* Gamma value */
243   int           custom_int;             /* Integer value */
244   float         custom_invcurve;        /* Gamma value */
245   int           custom_passcode;        /* Passcode length */
246   int           custom_password;        /* Password length */
247   float         custom_points;          /* Measurement value */
248   float         custom_real;            /* Real value */
249   int           custom_string;          /* String length */
250 } ppd_cplimit_t;
251
252 typedef union ppd_cpvalue_u             /**** Custom Parameter Value @deprecated@ ****/
253 {
254   float         custom_curve;           /* Gamma value */
255   int           custom_int;             /* Integer value */
256   float         custom_invcurve;        /* Gamma value */
257   char          *custom_passcode;       /* Passcode value */
258   char          *custom_password;       /* Password value */
259   float         custom_points;          /* Measurement value */
260   float         custom_real;            /* Real value */
261   char          *custom_string;         /* String value */
262 } ppd_cpvalue_t;
263
264 typedef struct ppd_cparam_s             /**** Custom Parameter @deprecated@ ****/
265 {
266   char          name[PPD_MAX_NAME];     /* Parameter name */
267   char          text[PPD_MAX_TEXT];     /* Human-readable text */
268   int           order;                  /* Order (0 to N) */
269   ppd_cptype_t  type;                   /* Parameter type */
270   ppd_cplimit_t minimum,                /* Minimum value */
271                 maximum;                /* Maximum value */
272   ppd_cpvalue_t current;                /* Current value */
273 } ppd_cparam_t;
274
275 typedef struct ppd_coption_s            /**** Custom Option @deprecated@ ****/
276 {
277   char          keyword[PPD_MAX_NAME];  /* Name of option that is being extended... */
278   ppd_option_t  *option;                /* Option that is being extended... */
279   int           marked;                 /* Extended option is marked */
280   cups_array_t  *params;                /* Parameters */
281 } ppd_coption_t;
282
283 typedef struct _ppd_cache_s _ppd_cache_t;
284                                         /**** PPD cache and mapping data @deprecated@ ****/
285
286 typedef struct ppd_file_s               /**** PPD File @deprecated@ ****/
287 {
288   int           language_level;         /* Language level of device */
289   int           color_device;           /* 1 = color device, 0 = grayscale */
290   int           variable_sizes;         /* 1 = supports variable sizes, 0 = doesn't */
291   int           accurate_screens;       /* 1 = supports accurate screens, 0 = not */
292   int           contone_only;           /* 1 = continuous tone only, 0 = not */
293   int           landscape;              /* -90 or 90 */
294   int           model_number;           /* Device-specific model number */
295   int           manual_copies;          /* 1 = Copies done manually, 0 = hardware */
296   int           throughput;             /* Pages per minute */
297   ppd_cs_t      colorspace;             /* Default colorspace */
298   char          *patches;               /* Patch commands to be sent to printer */
299   int           num_emulations;         /* Number of emulations supported (no longer supported) @private@ */
300   ppd_emul_t    *emulations;            /* Emulations and the code to invoke them (no longer supported) @private@ */
301   char          *jcl_begin;             /* Start JCL commands */
302   char          *jcl_ps;                /* Enter PostScript interpreter */
303   char          *jcl_end;               /* End JCL commands */
304   char          *lang_encoding;         /* Language encoding */
305   char          *lang_version;          /* Language version (English, Spanish, etc.) */
306   char          *modelname;             /* Model name (general) */
307   char          *ttrasterizer;          /* Truetype rasterizer */
308   char          *manufacturer;          /* Manufacturer name */
309   char          *product;               /* Product name (from PS RIP/interpreter) */
310   char          *nickname;              /* Nickname (specific) */
311   char          *shortnickname;         /* Short version of nickname */
312   int           num_groups;             /* Number of UI groups */
313   ppd_group_t   *groups;                /* UI groups */
314   int           num_sizes;              /* Number of page sizes */
315   ppd_size_t    *sizes;                 /* Page sizes */
316   float         custom_min[2];          /* Minimum variable page size */
317   float         custom_max[2];          /* Maximum variable page size */
318   float         custom_margins[4];      /* Margins around page */
319   int           num_consts;             /* Number of UI/Non-UI constraints */
320   ppd_const_t   *consts;                /* UI/Non-UI constraints */
321   int           num_fonts;              /* Number of pre-loaded fonts */
322   char          **fonts;                /* Pre-loaded fonts */
323   int           num_profiles;           /* Number of sRGB color profiles @deprecated@ */
324   ppd_profile_t *profiles;              /* sRGB color profiles @deprecated@ */
325   int           num_filters;            /* Number of filters */
326   char          **filters;              /* Filter strings... */
327
328   /**** New in CUPS 1.1 ****/
329   int           flip_duplex;            /* 1 = Flip page for back sides @deprecated@ */
330
331   /**** New in CUPS 1.1.19 ****/
332   char          *protocols;             /* Protocols (BCP, TBCP) string @since CUPS 1.1.19/macOS 10.3@ */
333   char          *pcfilename;            /* PCFileName string @since CUPS 1.1.19/macOS 10.3@ */
334   int           num_attrs;              /* Number of attributes @since CUPS 1.1.19/macOS 10.3@ @private@ */
335   int           cur_attr;               /* Current attribute @since CUPS 1.1.19/macOS 10.3@ @private@ */
336   ppd_attr_t    **attrs;                /* Attributes @since CUPS 1.1.19/macOS 10.3@ @private@ */
337
338   /**** New in CUPS 1.2/macOS 10.5 ****/
339   cups_array_t  *sorted_attrs;          /* Attribute lookup array @since CUPS 1.2/macOS 10.5@ @private@ */
340   cups_array_t  *options;               /* Option lookup array @since CUPS 1.2/macOS 10.5@ @private@ */
341   cups_array_t  *coptions;              /* Custom options array @since CUPS 1.2/macOS 10.5@ @private@ */
342
343   /**** New in CUPS 1.3/macOS 10.5 ****/
344   cups_array_t  *marked;                /* Marked choices @since CUPS 1.3/macOS 10.5@ @private@ */
345
346   /**** New in CUPS 1.4/macOS 10.6 ****/
347   cups_array_t  *cups_uiconstraints;    /* cupsUIConstraints @since CUPS 1.4/macOS 10.6@ @private@ */
348
349   /**** New in CUPS 1.5 ****/
350   _ppd_cache_t  *cache;                 /* PPD cache and mapping data @since CUPS 1.5/macOS 10.7@ @private@ */
351 } ppd_file_t;
352
353
354 /*
355  * Prototypes...
356  */
357
358 extern const char       *cupsGetPPD(const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
359 extern const char       *cupsGetPPD2(http_t *http, const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
360 extern http_status_t    cupsGetPPD3(http_t *http, const char *name, time_t *modtime, char *buffer, size_t bufsize) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
361 extern char             *cupsGetServerPPD(http_t *http, const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
362 extern int              cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
363
364 extern void             ppdClose(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
365 extern int              ppdCollect(ppd_file_t *ppd, ppd_section_t section,
366                                    ppd_choice_t  ***choices) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
367 extern int              ppdConflicts(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
368 extern int              ppdEmit(ppd_file_t *ppd, FILE *fp,
369                                 ppd_section_t section) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
370 extern int              ppdEmitFd(ppd_file_t *ppd, int fd,
371                                   ppd_section_t section) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
372 extern int              ppdEmitJCL(ppd_file_t *ppd, FILE *fp, int job_id,
373                                    const char *user, const char *title)
374                                    _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
375 extern ppd_choice_t     *ppdFindChoice(ppd_option_t *o, const char *option)
376                                        _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
377 extern ppd_choice_t     *ppdFindMarkedChoice(ppd_file_t *ppd,
378                                              const char *keyword)
379                                              _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
380 extern ppd_option_t     *ppdFindOption(ppd_file_t *ppd, const char *keyword)
381                                        _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
382 extern int              ppdIsMarked(ppd_file_t *ppd, const char *keyword,
383                                     const char *option) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
384 extern void             ppdMarkDefaults(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
385 extern int              ppdMarkOption(ppd_file_t *ppd, const char *keyword,
386                                       const char *option) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
387 extern ppd_file_t       *ppdOpen(FILE *fp) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
388 extern ppd_file_t       *ppdOpenFd(int fd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
389 extern ppd_file_t       *ppdOpenFile(const char *filename) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
390 extern float            ppdPageLength(ppd_file_t *ppd, const char *name)
391                                       _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
392 extern ppd_size_t       *ppdPageSize(ppd_file_t *ppd, const char *name)
393                                      _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
394 extern float            ppdPageWidth(ppd_file_t *ppd, const char *name)
395                                      _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
396
397 /**** New in CUPS 1.1.19 ****/
398 extern const char       *ppdErrorString(ppd_status_t status) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
399 extern ppd_attr_t       *ppdFindAttr(ppd_file_t *ppd, const char *name,
400                                      const char *spec) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
401 extern ppd_attr_t       *ppdFindNextAttr(ppd_file_t *ppd, const char *name,
402                                          const char *spec) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
403 extern ppd_status_t     ppdLastError(int *line) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
404
405 /**** New in CUPS 1.1.20 ****/
406 extern void             ppdSetConformance(ppd_conform_t c) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
407
408 /**** New in CUPS 1.2 ****/
409 extern int              cupsRasterInterpretPPD(cups_page_header2_t *h,
410                                                ppd_file_t *ppd,
411                                                int num_options,
412                                                cups_option_t *options,
413                                                cups_interpret_cb_t func) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
414 extern int              ppdCollect2(ppd_file_t *ppd, ppd_section_t section,
415                                     float min_order, ppd_choice_t  ***choices)
416                                     _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
417 extern int              ppdEmitAfterOrder(ppd_file_t *ppd, FILE *fp,
418                                           ppd_section_t section, int limit,
419                                           float min_order) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
420 extern int              ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp)
421                                       _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
422 extern char             *ppdEmitString(ppd_file_t *ppd, ppd_section_t section,
423                                        float min_order) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
424 extern ppd_coption_t    *ppdFindCustomOption(ppd_file_t *ppd,
425                                              const char *keyword)
426                                              _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
427 extern ppd_cparam_t     *ppdFindCustomParam(ppd_coption_t *opt,
428                                             const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
429 extern ppd_cparam_t     *ppdFirstCustomParam(ppd_coption_t *opt)
430                                              _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
431 extern ppd_option_t     *ppdFirstOption(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
432 extern ppd_cparam_t     *ppdNextCustomParam(ppd_coption_t *opt) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
433 extern ppd_option_t     *ppdNextOption(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
434 extern int              ppdLocalize(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
435 extern ppd_file_t       *ppdOpen2(cups_file_t *fp) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
436
437 /**** New in CUPS 1.3/macOS 10.5 ****/
438 extern const char       *ppdLocalizeIPPReason(ppd_file_t *ppd,
439                                               const char *reason,
440                                               const char *scheme,
441                                               char *buffer,
442                                               size_t bufsize) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
443
444 /**** New in CUPS 1.4/macOS 10.6 ****/
445 extern int              cupsGetConflicts(ppd_file_t *ppd, const char *option,
446                                          const char *choice,
447                                          cups_option_t **options)
448                                          _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
449 extern int              cupsResolveConflicts(ppd_file_t *ppd,
450                                              const char *option,
451                                              const char *choice,
452                                              int *num_options,
453                                              cups_option_t **options)
454                                              _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
455 extern int              ppdInstallableConflict(ppd_file_t *ppd,
456                                                const char *option,
457                                                const char *choice)
458                                                _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
459 extern ppd_attr_t       *ppdLocalizeAttr(ppd_file_t *ppd, const char *keyword,
460                                          const char *spec) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
461 extern const char       *ppdLocalizeMarkerName(ppd_file_t *ppd,
462                                                const char *name)
463                                                _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
464 extern int              ppdPageSizeLimits(ppd_file_t *ppd,
465                                           ppd_size_t *minimum,
466                                           ppd_size_t *maximum) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
467
468
469 /*
470  * C++ magic...
471  */
472
473 #  ifdef __cplusplus
474 }
475 #  endif /* __cplusplus */
476 #endif /* !_CUPS_PPD_H_ */