Revert manifest to default one
[external/cups.git] / cups / ppd-private.h
1 /*
2  * "$Id: ppd-private.h 10244 2012-02-11 02:21:34Z mike $"
3  *
4  *   Private PPD definitions for CUPS.
5  *
6  *   Copyright 2007-2011 by Apple Inc.
7  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
8  *
9  *   These coded instructions, statements, and computer programs are the
10  *   property of Apple Inc. and are protected by Federal copyright
11  *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
12  *   which should have been included with this file.  If this file is
13  *   file is missing or damaged, see the license at "http://www.cups.org/".
14  *
15  *   PostScript is a trademark of Adobe Systems, Inc.
16  *
17  *   This code and any derivative of it may be used and distributed
18  *   freely under the terms of the GNU General Public License when
19  *   used with GNU Ghostscript or its derivatives.  Use of the code
20  *   (or any derivative of it) with software other than GNU
21  *   GhostScript (or its derivatives) is governed by the CUPS license
22  *   agreement.
23  *
24  *   This file is subject to the Apple OS-Developed Software exception.
25  */
26
27 #ifndef _CUPS_PPD_PRIVATE_H_
28 #  define _CUPS_PPD_PRIVATE_H_
29
30 /*
31  * Include necessary headers...
32  */
33
34 #  include <cups/cups.h>
35 #  include <cups/ppd.h>
36 #  include "pwg-private.h"
37
38
39 /*
40  * C++ magic...
41  */
42
43 #  ifdef __cplusplus
44 extern "C" {
45 #  endif /* __cplusplus */
46
47
48 /*
49  * Constants...
50  */
51
52 #  define _PPD_CACHE_VERSION    2       /* Version number in cache file */
53
54
55 /*
56  * Types and structures...
57  */
58
59 typedef enum _ppd_parse_e               /**** Selector for _ppdParseOptions ****/
60 {
61   _PPD_PARSE_OPTIONS,                   /* Parse only the options */
62   _PPD_PARSE_PROPERTIES,                /* Parse only the properties */
63   _PPD_PARSE_ALL                        /* Parse everything */
64 } _ppd_parse_t;
65
66 typedef struct _ppd_cups_uiconst_s      /**** Constraint from cupsUIConstraints ****/
67 {
68   ppd_option_t  *option;                /* Constrained option */
69   ppd_choice_t  *choice;                /* Constrained choice or @code NULL@ */
70   int           installable;            /* Installable option? */
71 } _ppd_cups_uiconst_t;
72
73 typedef struct _ppd_cups_uiconsts_s     /**** cupsUIConstraints ****/
74 {
75   char          resolver[PPD_MAX_NAME]; /* Resolver name */
76   int           installable,            /* Constrained against any installable options? */
77                 num_constraints;        /* Number of constraints */
78   _ppd_cups_uiconst_t *constraints;     /* Constraints */
79 } _ppd_cups_uiconsts_t;
80
81 typedef enum _pwg_print_color_mode_e    /**** PWG print-color-mode indices ****/
82 {
83   _PWG_PRINT_COLOR_MODE_MONOCHROME = 0, /* print-color-mode=monochrome */
84   _PWG_PRINT_COLOR_MODE_COLOR,          /* print-color-mode=color */
85   /* Other proposed values are not supported by CUPS yet. */
86   _PWG_PRINT_COLOR_MODE_MAX
87 } _pwg_print_color_mode_t;
88
89 typedef enum _pwg_print_quality_e       /**** PWG print-quality values ****/
90 {
91   _PWG_PRINT_QUALITY_DRAFT = 0,         /* print-quality=3 */
92   _PWG_PRINT_QUALITY_NORMAL,            /* print-quality=4 */
93   _PWG_PRINT_QUALITY_HIGH,              /* print-quality=5 */
94   _PWG_PRINT_QUALITY_MAX
95 } _pwg_print_quality_t;
96
97 typedef struct _pwg_finishings_s        /**** PWG finishings mapping data ****/
98 {
99   ipp_finish_t  value;                  /* finishings value */
100   int           num_options;            /* Number of options to apply */
101   cups_option_t *options;               /* Options to apply */
102 } _pwg_finishings_t;
103
104 struct _ppd_cache_s                     /**** PPD cache and PWG conversion data ****/
105 {
106   int           num_bins;               /* Number of output bins */
107   _pwg_map_t    *bins;                  /* Output bins */
108   int           num_sizes;              /* Number of media sizes */
109   _pwg_size_t   *sizes;                 /* Media sizes */
110   int           custom_max_width,       /* Maximum custom width in 2540ths */
111                 custom_max_length,      /* Maximum custom length in 2540ths */
112                 custom_min_width,       /* Minimum custom width in 2540ths */
113                 custom_min_length;      /* Minimum custom length in 2540ths */
114   char          *custom_max_keyword,    /* Maximum custom size PWG keyword */
115                 *custom_min_keyword,    /* Minimum custom size PWG keyword */
116                 custom_ppd_size[41];    /* Custom PPD size name */
117   _pwg_size_t   custom_size;            /* Custom size record */
118   char          *source_option;         /* PPD option for media source */
119   int           num_sources;            /* Number of media sources */
120   _pwg_map_t    *sources;               /* Media sources */
121   int           num_types;              /* Number of media types */
122   _pwg_map_t    *types;                 /* Media types */
123   int           num_presets[_PWG_PRINT_COLOR_MODE_MAX][_PWG_PRINT_QUALITY_MAX];
124                                         /* Number of print-color-mode/print-quality options */
125   cups_option_t *presets[_PWG_PRINT_COLOR_MODE_MAX][_PWG_PRINT_QUALITY_MAX];
126                                         /* print-color-mode/print-quality options */
127   char          *sides_option,          /* PPD option for sides */
128                 *sides_1sided,          /* Choice for one-sided */
129                 *sides_2sided_long,     /* Choice for two-sided-long-edge */
130                 *sides_2sided_short;    /* Choice for two-sided-short-edge */
131   char          *product;               /* Product value */
132   cups_array_t  *filters,               /* cupsFilter/cupsFilter2 values */
133                 *prefilters;            /* cupsPreFilter values */
134   int           single_file;            /* cupsSingleFile value */
135   cups_array_t  *finishings;            /* cupsIPPFinishings values */
136 };
137
138
139 /*
140  * Prototypes...
141  */
142
143 extern _ppd_cache_t     *_ppdCacheCreateWithFile(const char *filename,
144                                                  ipp_t **attrs);
145 extern _ppd_cache_t     *_ppdCacheCreateWithPPD(ppd_file_t *ppd);
146 extern void             _ppdCacheDestroy(_ppd_cache_t *pc);
147 extern const char       *_ppdCacheGetBin(_ppd_cache_t *pc,
148                                          const char *output_bin);
149 extern int              _ppdCacheGetFinishingOptions(_ppd_cache_t *pc, ipp_t *job,
150                                                      ipp_finish_t value, int num_options,
151                                                      cups_option_t **options);
152 extern int              _ppdCacheGetFinishingValues(_ppd_cache_t *pc, int num_options,
153                                                     cups_option_t *options,
154                                                     int max_values, int *values);
155 extern const char       *_ppdCacheGetInputSlot(_ppd_cache_t *pc, ipp_t *job,
156                                                const char *keyword);
157 extern const char       *_ppdCacheGetMediaType(_ppd_cache_t *pc, ipp_t *job,
158                                                const char *keyword);
159 extern const char       *_ppdCacheGetOutputBin(_ppd_cache_t *pc,
160                                                const char *keyword);
161 extern const char       *_ppdCacheGetPageSize(_ppd_cache_t *pc, ipp_t *job,
162                                               const char *keyword, int *exact);
163 extern _pwg_size_t      *_ppdCacheGetSize(_ppd_cache_t *pc,
164                                           const char *page_size);
165 extern const char       *_ppdCacheGetSource(_ppd_cache_t *pc,
166                                             const char *input_slot);
167 extern const char       *_ppdCacheGetType(_ppd_cache_t *pc,
168                                           const char *media_type);
169 extern int              _ppdCacheWriteFile(_ppd_cache_t *pc,
170                                            const char *filename, ipp_t *attrs);
171 extern void             _ppdFreeLanguages(cups_array_t *languages);
172 extern cups_encoding_t  _ppdGetEncoding(const char *name);
173 extern cups_array_t     *_ppdGetLanguages(ppd_file_t *ppd);
174 extern unsigned         _ppdHashName(const char *name);
175 extern ppd_attr_t       *_ppdLocalizedAttr(ppd_file_t *ppd, const char *keyword,
176                                            const char *spec, const char *ll_CC);
177 extern char             *_ppdNormalizeMakeAndModel(const char *make_and_model,
178                                                    char *buffer,
179                                                    size_t bufsize);
180 extern int              _ppdParseOptions(const char *s, int num_options,
181                                          cups_option_t **options,
182                                          _ppd_parse_t which);
183 extern const char       *_pwgInputSlotForSource(const char *media_source,
184                                                 char *name, size_t namesize);
185 extern const char       *_pwgMediaTypeForType(const char *media_type,
186                                               char *name, size_t namesize);
187 extern const char       *_pwgPageSizeForMedia(_pwg_media_t *media,
188                                               char *name, size_t namesize);
189
190
191 /*
192  * C++ magic...
193  */
194
195 #  ifdef __cplusplus
196 }
197 #  endif /* __cplusplus */
198 #endif /* !_CUPS_PPD_PRIVATE_H_ */
199
200 /*
201  * End of "$Id: ppd-private.h 10244 2012-02-11 02:21:34Z mike $".
202  */