1/* 2 * "$Id: ppd-private.h 11560 2014-02-06 20:10:19Z msweet $" 3 * 4 * Private PPD definitions for CUPS. 5 * 6 * Copyright 2007-2014 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 44extern "C" { 45# endif /* __cplusplus */ 46 47 48/* 49 * Constants... 50 */ 51 52# define _PPD_CACHE_VERSION 6 /* Version number in cache file */ 53 54 55/* 56 * Types and structures... 57 */ 58 59typedef enum _ppd_localization_e /**** Selector for _ppdOpen ****/ 60{ 61 _PPD_LOCALIZATION_DEFAULT, /* Load only the default localization */ 62 _PPD_LOCALIZATION_ICC_PROFILES, /* Load only the color profile localization */ 63 _PPD_LOCALIZATION_NONE, /* Load no localizations */ 64 _PPD_LOCALIZATION_ALL /* Load all localizations */ 65} _ppd_localization_t; 66 67typedef enum _ppd_parse_e /**** Selector for _ppdParseOptions ****/ 68{ 69 _PPD_PARSE_OPTIONS, /* Parse only the options */ 70 _PPD_PARSE_PROPERTIES, /* Parse only the properties */ 71 _PPD_PARSE_ALL /* Parse everything */ 72} _ppd_parse_t; 73 74typedef struct _ppd_cups_uiconst_s /**** Constraint from cupsUIConstraints ****/ 75{ 76 ppd_option_t *option; /* Constrained option */ 77 ppd_choice_t *choice; /* Constrained choice or @code NULL@ */ 78 int installable; /* Installable option? */ 79} _ppd_cups_uiconst_t; 80 81typedef struct _ppd_cups_uiconsts_s /**** cupsUIConstraints ****/ 82{ 83 char resolver[PPD_MAX_NAME]; /* Resolver name */ 84 int installable, /* Constrained against any installable options? */ 85 num_constraints; /* Number of constraints */ 86 _ppd_cups_uiconst_t *constraints; /* Constraints */ 87} _ppd_cups_uiconsts_t; 88 89typedef enum _pwg_print_color_mode_e /**** PWG print-color-mode indices ****/ 90{ 91 _PWG_PRINT_COLOR_MODE_MONOCHROME = 0, /* print-color-mode=monochrome */ 92 _PWG_PRINT_COLOR_MODE_COLOR, /* print-color-mode=color */ 93 /* Other proposed values are not supported by CUPS yet. */ 94 _PWG_PRINT_COLOR_MODE_MAX 95} _pwg_print_color_mode_t; 96 97typedef enum _pwg_print_quality_e /**** PWG print-quality values ****/ 98{ 99 _PWG_PRINT_QUALITY_DRAFT = 0, /* print-quality=3 */ 100 _PWG_PRINT_QUALITY_NORMAL, /* print-quality=4 */ 101 _PWG_PRINT_QUALITY_HIGH, /* print-quality=5 */ 102 _PWG_PRINT_QUALITY_MAX 103} _pwg_print_quality_t; 104 105typedef struct _pwg_finishings_s /**** PWG finishings mapping data ****/ 106{ 107 ipp_finishings_t value; /* finishings value */ 108 int num_options; /* Number of options to apply */ 109 cups_option_t *options; /* Options to apply */ 110} _pwg_finishings_t; 111 112struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/ 113{ 114 int num_bins; /* Number of output bins */ 115 pwg_map_t *bins; /* Output bins */ 116 int num_sizes; /* Number of media sizes */ 117 pwg_size_t *sizes; /* Media sizes */ 118 int custom_max_width, /* Maximum custom width in 2540ths */ 119 custom_max_length, /* Maximum custom length in 2540ths */ 120 custom_min_width, /* Minimum custom width in 2540ths */ 121 custom_min_length; /* Minimum custom length in 2540ths */ 122 char *custom_max_keyword, /* Maximum custom size PWG keyword */ 123 *custom_min_keyword, /* Minimum custom size PWG keyword */ 124 custom_ppd_size[41]; /* Custom PPD size name */ 125 pwg_size_t custom_size; /* Custom size record */ 126 char *source_option; /* PPD option for media source */ 127 int num_sources; /* Number of media sources */ 128 pwg_map_t *sources; /* Media sources */ 129 int num_types; /* Number of media types */ 130 pwg_map_t *types; /* Media types */ 131 int num_presets[_PWG_PRINT_COLOR_MODE_MAX][_PWG_PRINT_QUALITY_MAX]; 132 /* Number of print-color-mode/print-quality options */ 133 cups_option_t *presets[_PWG_PRINT_COLOR_MODE_MAX][_PWG_PRINT_QUALITY_MAX]; 134 /* print-color-mode/print-quality options */ 135 char *sides_option, /* PPD option for sides */ 136 *sides_1sided, /* Choice for one-sided */ 137 *sides_2sided_long, /* Choice for two-sided-long-edge */ 138 *sides_2sided_short; /* Choice for two-sided-short-edge */ 139 char *product; /* Product value */ 140 cups_array_t *filters, /* cupsFilter/cupsFilter2 values */ 141 *prefilters; /* cupsPreFilter values */ 142 int single_file; /* cupsSingleFile value */ 143 cups_array_t *finishings; /* cupsIPPFinishings values */ 144 int max_copies, /* cupsMaxCopies value */ 145 account_id, /* cupsJobAccountId value */ 146 accounting_user_id; /* cupsJobAccountingUserId value */ 147 char *password; /* cupsJobPassword value */ 148 cups_array_t *mandatory; /* cupsMandatory value */ 149 char *charge_info_uri; /* cupsChargeInfoURI value */ 150 cups_array_t *support_files; /* Support files - ICC profiles, etc. */ 151}; 152 153 154/* 155 * Prototypes... 156 */ 157 158extern _ppd_cache_t *_ppdCacheCreateWithFile(const char *filename, 159 ipp_t **attrs); 160extern _ppd_cache_t *_ppdCacheCreateWithPPD(ppd_file_t *ppd); 161extern void _ppdCacheDestroy(_ppd_cache_t *pc); 162extern const char *_ppdCacheGetBin(_ppd_cache_t *pc, 163 const char *output_bin); 164extern int _ppdCacheGetFinishingOptions(_ppd_cache_t *pc, 165 ipp_t *job, 166 ipp_finishings_t value, 167 int num_options, 168 cups_option_t **options); 169extern int _ppdCacheGetFinishingValues(_ppd_cache_t *pc, 170 int num_options, 171 cups_option_t *options, 172 int max_values, 173 int *values); 174extern const char *_ppdCacheGetInputSlot(_ppd_cache_t *pc, ipp_t *job, 175 const char *keyword); 176extern const char *_ppdCacheGetMediaType(_ppd_cache_t *pc, ipp_t *job, 177 const char *keyword); 178extern const char *_ppdCacheGetOutputBin(_ppd_cache_t *pc, 179 const char *keyword); 180extern const char *_ppdCacheGetPageSize(_ppd_cache_t *pc, ipp_t *job, 181 const char *keyword, int *exact); 182extern pwg_size_t *_ppdCacheGetSize(_ppd_cache_t *pc, 183 const char *page_size); 184extern const char *_ppdCacheGetSource(_ppd_cache_t *pc, 185 const char *input_slot); 186extern const char *_ppdCacheGetType(_ppd_cache_t *pc, 187 const char *media_type); 188extern int _ppdCacheWriteFile(_ppd_cache_t *pc, 189 const char *filename, ipp_t *attrs); 190extern void _ppdFreeLanguages(cups_array_t *languages); 191extern cups_encoding_t _ppdGetEncoding(const char *name); 192extern cups_array_t *_ppdGetLanguages(ppd_file_t *ppd); 193extern unsigned _ppdHashName(const char *name); 194extern ppd_attr_t *_ppdLocalizedAttr(ppd_file_t *ppd, const char *keyword, 195 const char *spec, const char *ll_CC); 196extern char *_ppdNormalizeMakeAndModel(const char *make_and_model, 197 char *buffer, 198 size_t bufsize); 199extern ppd_file_t *_ppdOpen(cups_file_t *fp, 200 _ppd_localization_t localization); 201extern ppd_file_t *_ppdOpenFile(const char *filename, 202 _ppd_localization_t localization); 203extern int _ppdParseOptions(const char *s, int num_options, 204 cups_option_t **options, 205 _ppd_parse_t which); 206extern const char *_pwgInputSlotForSource(const char *media_source, 207 char *name, size_t namesize); 208extern const char *_pwgMediaTypeForType(const char *media_type, 209 char *name, size_t namesize); 210extern const char *_pwgPageSizeForMedia(pwg_media_t *media, 211 char *name, size_t namesize); 212 213 214/* 215 * C++ magic... 216 */ 217 218# ifdef __cplusplus 219} 220# endif /* __cplusplus */ 221#endif /* !_CUPS_PPD_PRIVATE_H_ */ 222 223/* 224 * End of "$Id: ppd-private.h 11560 2014-02-06 20:10:19Z msweet $". 225 */ 226