1*5e7646d2SAndroid Build Coastguard Worker // 2*5e7646d2SAndroid Build Coastguard Worker // Definitions for the CUPS PPD Compiler. 3*5e7646d2SAndroid Build Coastguard Worker // 4*5e7646d2SAndroid Build Coastguard Worker // Copyright 2007-2019 by Apple Inc. 5*5e7646d2SAndroid Build Coastguard Worker // Copyright 2002-2007 by Easy Software Products. 6*5e7646d2SAndroid Build Coastguard Worker // 7*5e7646d2SAndroid Build Coastguard Worker // Licensed under Apache License v2.0. See the file "LICENSE" for more information. 8*5e7646d2SAndroid Build Coastguard Worker // 9*5e7646d2SAndroid Build Coastguard Worker 10*5e7646d2SAndroid Build Coastguard Worker #ifndef _PPDC_H_ 11*5e7646d2SAndroid Build Coastguard Worker # define _PPDC_H_ 12*5e7646d2SAndroid Build Coastguard Worker 13*5e7646d2SAndroid Build Coastguard Worker // 14*5e7646d2SAndroid Build Coastguard Worker // Include necessary headers... 15*5e7646d2SAndroid Build Coastguard Worker // 16*5e7646d2SAndroid Build Coastguard Worker 17*5e7646d2SAndroid Build Coastguard Worker # include <cups/file.h> 18*5e7646d2SAndroid Build Coastguard Worker # include <stdlib.h> 19*5e7646d2SAndroid Build Coastguard Worker 20*5e7646d2SAndroid Build Coastguard Worker 21*5e7646d2SAndroid Build Coastguard Worker // 22*5e7646d2SAndroid Build Coastguard Worker // Macros... 23*5e7646d2SAndroid Build Coastguard Worker // 24*5e7646d2SAndroid Build Coastguard Worker 25*5e7646d2SAndroid Build Coastguard Worker # define PPDC_NAME(s) const char *class_name() { return (s); } 26*5e7646d2SAndroid Build Coastguard Worker 27*5e7646d2SAndroid Build Coastguard Worker 28*5e7646d2SAndroid Build Coastguard Worker // 29*5e7646d2SAndroid Build Coastguard Worker // Enumerations... 30*5e7646d2SAndroid Build Coastguard Worker // 31*5e7646d2SAndroid Build Coastguard Worker 32*5e7646d2SAndroid Build Coastguard Worker enum ppdcDrvType //// Driver type 33*5e7646d2SAndroid Build Coastguard Worker { 34*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_CUSTOM, // Custom driver 35*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_PS, // PostScript driver 36*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_ESCP, // rastertoescpx driver 37*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_PCL, // rastertopclx driver 38*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_LABEL, // rastertolabel/rastertodymo driver 39*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_EPSON, // rastertoepson driver 40*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_HP, // rastertohp driver 41*5e7646d2SAndroid Build Coastguard Worker PPDC_DRIVER_MAX // Number of driver types defined 42*5e7646d2SAndroid Build Coastguard Worker }; 43*5e7646d2SAndroid Build Coastguard Worker 44*5e7646d2SAndroid Build Coastguard Worker enum ppdcFontStatus //// Load status of font 45*5e7646d2SAndroid Build Coastguard Worker { 46*5e7646d2SAndroid Build Coastguard Worker PPDC_FONT_ROM, // Font is in ROM 47*5e7646d2SAndroid Build Coastguard Worker PPDC_FONT_DISK // Font is on disk 48*5e7646d2SAndroid Build Coastguard Worker }; 49*5e7646d2SAndroid Build Coastguard Worker 50*5e7646d2SAndroid Build Coastguard Worker enum ppdcOptSection //// Option section 51*5e7646d2SAndroid Build Coastguard Worker { 52*5e7646d2SAndroid Build Coastguard Worker PPDC_SECTION_ANY, // AnySetup 53*5e7646d2SAndroid Build Coastguard Worker PPDC_SECTION_DOCUMENT, // DocumentSetup 54*5e7646d2SAndroid Build Coastguard Worker PPDC_SECTION_EXIT, // ExitServer 55*5e7646d2SAndroid Build Coastguard Worker PPDC_SECTION_JCL, // JCLSetup 56*5e7646d2SAndroid Build Coastguard Worker PPDC_SECTION_PAGE, // PageSetup 57*5e7646d2SAndroid Build Coastguard Worker PPDC_SECTION_PROLOG // Prolog 58*5e7646d2SAndroid Build Coastguard Worker }; 59*5e7646d2SAndroid Build Coastguard Worker 60*5e7646d2SAndroid Build Coastguard Worker enum ppdcOptType //// Option type 61*5e7646d2SAndroid Build Coastguard Worker { 62*5e7646d2SAndroid Build Coastguard Worker PPDC_BOOLEAN, // True/false option 63*5e7646d2SAndroid Build Coastguard Worker PPDC_PICKONE, // Single choice from list 64*5e7646d2SAndroid Build Coastguard Worker PPDC_PICKMANY // Multiple choices from list 65*5e7646d2SAndroid Build Coastguard Worker }; 66*5e7646d2SAndroid Build Coastguard Worker 67*5e7646d2SAndroid Build Coastguard Worker enum ppdcLineEnding //// Line endings 68*5e7646d2SAndroid Build Coastguard Worker { 69*5e7646d2SAndroid Build Coastguard Worker PPDC_LFONLY, // LF only 70*5e7646d2SAndroid Build Coastguard Worker PPDC_CRONLY, // CR only 71*5e7646d2SAndroid Build Coastguard Worker PPDC_CRLF // CR + LF 72*5e7646d2SAndroid Build Coastguard Worker }; 73*5e7646d2SAndroid Build Coastguard Worker 74*5e7646d2SAndroid Build Coastguard Worker enum ppdcCondFlags //// Condition flags 75*5e7646d2SAndroid Build Coastguard Worker { 76*5e7646d2SAndroid Build Coastguard Worker PPDC_COND_NORMAL = 0, // Normal state 77*5e7646d2SAndroid Build Coastguard Worker PPDC_COND_SKIP = 1, // Skip state 78*5e7646d2SAndroid Build Coastguard Worker PPDC_COND_SATISFIED = 2 // At least one condition satisfied 79*5e7646d2SAndroid Build Coastguard Worker }; 80*5e7646d2SAndroid Build Coastguard Worker 81*5e7646d2SAndroid Build Coastguard Worker 82*5e7646d2SAndroid Build Coastguard Worker // 83*5e7646d2SAndroid Build Coastguard Worker // Printer description data... 84*5e7646d2SAndroid Build Coastguard Worker // 85*5e7646d2SAndroid Build Coastguard Worker 86*5e7646d2SAndroid Build Coastguard Worker class ppdcShared //// Shared Data Value 87*5e7646d2SAndroid Build Coastguard Worker { 88*5e7646d2SAndroid Build Coastguard Worker private: 89*5e7646d2SAndroid Build Coastguard Worker 90*5e7646d2SAndroid Build Coastguard Worker int use; // Use count (delete when 0) 91*5e7646d2SAndroid Build Coastguard Worker 92*5e7646d2SAndroid Build Coastguard Worker public: 93*5e7646d2SAndroid Build Coastguard Worker 94*5e7646d2SAndroid Build Coastguard Worker ppdcShared(); 95*5e7646d2SAndroid Build Coastguard Worker virtual ~ppdcShared(); 96*5e7646d2SAndroid Build Coastguard Worker 97*5e7646d2SAndroid Build Coastguard Worker virtual const char *class_name() = 0; 98*5e7646d2SAndroid Build Coastguard Worker 99*5e7646d2SAndroid Build Coastguard Worker void retain(); 100*5e7646d2SAndroid Build Coastguard Worker void release(); 101*5e7646d2SAndroid Build Coastguard Worker }; 102*5e7646d2SAndroid Build Coastguard Worker 103*5e7646d2SAndroid Build Coastguard Worker class ppdcArray //// Shared Array 104*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 105*5e7646d2SAndroid Build Coastguard Worker { 106*5e7646d2SAndroid Build Coastguard Worker public: 107*5e7646d2SAndroid Build Coastguard Worker 108*5e7646d2SAndroid Build Coastguard Worker size_t count, // Number of elements 109*5e7646d2SAndroid Build Coastguard Worker alloc, // Allocated elements 110*5e7646d2SAndroid Build Coastguard Worker current; // Current element 111*5e7646d2SAndroid Build Coastguard Worker ppdcShared **data; // Elements 112*5e7646d2SAndroid Build Coastguard Worker 113*5e7646d2SAndroid Build Coastguard Worker ppdcArray(ppdcArray *a = 0); 114*5e7646d2SAndroid Build Coastguard Worker ~ppdcArray(); 115*5e7646d2SAndroid Build Coastguard Worker 116*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcArray") 117*5e7646d2SAndroid Build Coastguard Worker 118*5e7646d2SAndroid Build Coastguard Worker void add(ppdcShared *d); 119*5e7646d2SAndroid Build Coastguard Worker ppdcShared *first(); 120*5e7646d2SAndroid Build Coastguard Worker ppdcShared *next(); 121*5e7646d2SAndroid Build Coastguard Worker void remove(ppdcShared *d); 122*5e7646d2SAndroid Build Coastguard Worker }; 123*5e7646d2SAndroid Build Coastguard Worker 124*5e7646d2SAndroid Build Coastguard Worker class ppdcString //// Shared String 125*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 126*5e7646d2SAndroid Build Coastguard Worker { 127*5e7646d2SAndroid Build Coastguard Worker public: 128*5e7646d2SAndroid Build Coastguard Worker 129*5e7646d2SAndroid Build Coastguard Worker char *value; // String value 130*5e7646d2SAndroid Build Coastguard Worker 131*5e7646d2SAndroid Build Coastguard Worker ppdcString(const char *v); 132*5e7646d2SAndroid Build Coastguard Worker ~ppdcString(); 133*5e7646d2SAndroid Build Coastguard Worker 134*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcString") 135*5e7646d2SAndroid Build Coastguard Worker }; 136*5e7646d2SAndroid Build Coastguard Worker 137*5e7646d2SAndroid Build Coastguard Worker class ppdcInteger //// Shared integer 138*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 139*5e7646d2SAndroid Build Coastguard Worker { 140*5e7646d2SAndroid Build Coastguard Worker public: 141*5e7646d2SAndroid Build Coastguard Worker 142*5e7646d2SAndroid Build Coastguard Worker int *value; // Integer value 143*5e7646d2SAndroid Build Coastguard Worker ppdcInteger(int * v)144*5e7646d2SAndroid Build Coastguard Worker ppdcInteger(int *v) { value = v; } 145*5e7646d2SAndroid Build Coastguard Worker 146*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcInteger") 147*5e7646d2SAndroid Build Coastguard Worker }; 148*5e7646d2SAndroid Build Coastguard Worker 149*5e7646d2SAndroid Build Coastguard Worker class ppdcMessage //// Translation message 150*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 151*5e7646d2SAndroid Build Coastguard Worker { 152*5e7646d2SAndroid Build Coastguard Worker public: 153*5e7646d2SAndroid Build Coastguard Worker 154*5e7646d2SAndroid Build Coastguard Worker ppdcString *id, // Translation ID 155*5e7646d2SAndroid Build Coastguard Worker *string; // Translation string 156*5e7646d2SAndroid Build Coastguard Worker 157*5e7646d2SAndroid Build Coastguard Worker ppdcMessage(const char *i, const char *s); 158*5e7646d2SAndroid Build Coastguard Worker ~ppdcMessage(); 159*5e7646d2SAndroid Build Coastguard Worker 160*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcMessage") 161*5e7646d2SAndroid Build Coastguard Worker }; 162*5e7646d2SAndroid Build Coastguard Worker 163*5e7646d2SAndroid Build Coastguard Worker class ppdcCatalog //// Translation catalog 164*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 165*5e7646d2SAndroid Build Coastguard Worker { 166*5e7646d2SAndroid Build Coastguard Worker public: 167*5e7646d2SAndroid Build Coastguard Worker 168*5e7646d2SAndroid Build Coastguard Worker ppdcString *locale; // Name of locale 169*5e7646d2SAndroid Build Coastguard Worker ppdcString *filename; // Name of translation file 170*5e7646d2SAndroid Build Coastguard Worker ppdcArray *messages; // Array of translation messages 171*5e7646d2SAndroid Build Coastguard Worker 172*5e7646d2SAndroid Build Coastguard Worker ppdcCatalog(const char *l, const char *f = 0); 173*5e7646d2SAndroid Build Coastguard Worker ~ppdcCatalog(); 174*5e7646d2SAndroid Build Coastguard Worker 175*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcCatalog") 176*5e7646d2SAndroid Build Coastguard Worker 177*5e7646d2SAndroid Build Coastguard Worker void add_message(const char *id, const char *string = NULL); 178*5e7646d2SAndroid Build Coastguard Worker const char *find_message(const char *id); 179*5e7646d2SAndroid Build Coastguard Worker int load_messages(const char *f); 180*5e7646d2SAndroid Build Coastguard Worker int save_messages(const char *f); 181*5e7646d2SAndroid Build Coastguard Worker }; 182*5e7646d2SAndroid Build Coastguard Worker 183*5e7646d2SAndroid Build Coastguard Worker class ppdcAttr //// Attribute 184*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 185*5e7646d2SAndroid Build Coastguard Worker { 186*5e7646d2SAndroid Build Coastguard Worker public: 187*5e7646d2SAndroid Build Coastguard Worker 188*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Name of attribute 189*5e7646d2SAndroid Build Coastguard Worker *selector, // Selector string 190*5e7646d2SAndroid Build Coastguard Worker *text, // Text string 191*5e7646d2SAndroid Build Coastguard Worker *value; // Value string 192*5e7646d2SAndroid Build Coastguard Worker bool localizable; // Should this attribute be localized? 193*5e7646d2SAndroid Build Coastguard Worker 194*5e7646d2SAndroid Build Coastguard Worker ppdcAttr(const char *n, const char *s, const char *t, const char *v, 195*5e7646d2SAndroid Build Coastguard Worker bool loc = false); 196*5e7646d2SAndroid Build Coastguard Worker ~ppdcAttr(); 197*5e7646d2SAndroid Build Coastguard Worker 198*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcAttr") 199*5e7646d2SAndroid Build Coastguard Worker }; 200*5e7646d2SAndroid Build Coastguard Worker 201*5e7646d2SAndroid Build Coastguard Worker class ppdcFont //// Shared Font 202*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 203*5e7646d2SAndroid Build Coastguard Worker { 204*5e7646d2SAndroid Build Coastguard Worker public: 205*5e7646d2SAndroid Build Coastguard Worker 206*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Font name 207*5e7646d2SAndroid Build Coastguard Worker *encoding, // Font base encoding 208*5e7646d2SAndroid Build Coastguard Worker *version, // Font version 209*5e7646d2SAndroid Build Coastguard Worker *charset; // Font charset 210*5e7646d2SAndroid Build Coastguard Worker ppdcFontStatus status; // Font status (ROM or Disk) 211*5e7646d2SAndroid Build Coastguard Worker 212*5e7646d2SAndroid Build Coastguard Worker ppdcFont(const char *n, const char *e, const char *v, const char *c, 213*5e7646d2SAndroid Build Coastguard Worker ppdcFontStatus s); 214*5e7646d2SAndroid Build Coastguard Worker ~ppdcFont(); 215*5e7646d2SAndroid Build Coastguard Worker 216*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcFont") 217*5e7646d2SAndroid Build Coastguard Worker }; 218*5e7646d2SAndroid Build Coastguard Worker 219*5e7646d2SAndroid Build Coastguard Worker class ppdcChoice //// Option Choice 220*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 221*5e7646d2SAndroid Build Coastguard Worker { 222*5e7646d2SAndroid Build Coastguard Worker public: 223*5e7646d2SAndroid Build Coastguard Worker 224*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Name of choice 225*5e7646d2SAndroid Build Coastguard Worker *text, // Human-readable text of choice 226*5e7646d2SAndroid Build Coastguard Worker *code; // PS code of choice 227*5e7646d2SAndroid Build Coastguard Worker 228*5e7646d2SAndroid Build Coastguard Worker ppdcChoice(const char *n, const char *t, const char *c); 229*5e7646d2SAndroid Build Coastguard Worker ~ppdcChoice(); 230*5e7646d2SAndroid Build Coastguard Worker 231*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcChoice") 232*5e7646d2SAndroid Build Coastguard Worker }; 233*5e7646d2SAndroid Build Coastguard Worker 234*5e7646d2SAndroid Build Coastguard Worker class ppdcOption //// Option 235*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 236*5e7646d2SAndroid Build Coastguard Worker { 237*5e7646d2SAndroid Build Coastguard Worker public: 238*5e7646d2SAndroid Build Coastguard Worker 239*5e7646d2SAndroid Build Coastguard Worker ppdcOptType type; // Type of option 240*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Name of option 241*5e7646d2SAndroid Build Coastguard Worker *text; // Human-readable text of option 242*5e7646d2SAndroid Build Coastguard Worker ppdcOptSection section; // Section for option code 243*5e7646d2SAndroid Build Coastguard Worker float order; // Order number 244*5e7646d2SAndroid Build Coastguard Worker ppdcArray *choices; // Choices 245*5e7646d2SAndroid Build Coastguard Worker ppdcString *defchoice; // Default choice 246*5e7646d2SAndroid Build Coastguard Worker 247*5e7646d2SAndroid Build Coastguard Worker ppdcOption(ppdcOptType ot, const char *n, const char *t, ppdcOptSection s, 248*5e7646d2SAndroid Build Coastguard Worker float o); 249*5e7646d2SAndroid Build Coastguard Worker ppdcOption(ppdcOption *o); 250*5e7646d2SAndroid Build Coastguard Worker ~ppdcOption(); 251*5e7646d2SAndroid Build Coastguard Worker 252*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcOption") 253*5e7646d2SAndroid Build Coastguard Worker add_choice(ppdcChoice * c)254*5e7646d2SAndroid Build Coastguard Worker void add_choice(ppdcChoice *c) { choices->add(c); } 255*5e7646d2SAndroid Build Coastguard Worker ppdcChoice *find_choice(const char *n); 256*5e7646d2SAndroid Build Coastguard Worker void set_defchoice(ppdcChoice *c); 257*5e7646d2SAndroid Build Coastguard Worker }; 258*5e7646d2SAndroid Build Coastguard Worker 259*5e7646d2SAndroid Build Coastguard Worker class ppdcGroup //// Group of Options 260*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 261*5e7646d2SAndroid Build Coastguard Worker { 262*5e7646d2SAndroid Build Coastguard Worker public: 263*5e7646d2SAndroid Build Coastguard Worker 264*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Name of option 265*5e7646d2SAndroid Build Coastguard Worker *text; // Human-readable text of option 266*5e7646d2SAndroid Build Coastguard Worker ppdcArray *options; // Options 267*5e7646d2SAndroid Build Coastguard Worker 268*5e7646d2SAndroid Build Coastguard Worker ppdcGroup(const char *n, const char *t); 269*5e7646d2SAndroid Build Coastguard Worker ppdcGroup(ppdcGroup *g); 270*5e7646d2SAndroid Build Coastguard Worker ~ppdcGroup(); 271*5e7646d2SAndroid Build Coastguard Worker 272*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcGroup") 273*5e7646d2SAndroid Build Coastguard Worker add_option(ppdcOption * o)274*5e7646d2SAndroid Build Coastguard Worker void add_option(ppdcOption *o) { options->add(o); } 275*5e7646d2SAndroid Build Coastguard Worker ppdcOption *find_option(const char *n); 276*5e7646d2SAndroid Build Coastguard Worker }; 277*5e7646d2SAndroid Build Coastguard Worker 278*5e7646d2SAndroid Build Coastguard Worker class ppdcConstraint //// Constraint 279*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 280*5e7646d2SAndroid Build Coastguard Worker { 281*5e7646d2SAndroid Build Coastguard Worker public: 282*5e7646d2SAndroid Build Coastguard Worker 283*5e7646d2SAndroid Build Coastguard Worker ppdcString *option1, // First option 284*5e7646d2SAndroid Build Coastguard Worker *choice1, // First choice 285*5e7646d2SAndroid Build Coastguard Worker *option2, // Second option 286*5e7646d2SAndroid Build Coastguard Worker *choice2; // Second choice 287*5e7646d2SAndroid Build Coastguard Worker 288*5e7646d2SAndroid Build Coastguard Worker ppdcConstraint(const char *o1, const char *c1, const char *o2, 289*5e7646d2SAndroid Build Coastguard Worker const char *c2); 290*5e7646d2SAndroid Build Coastguard Worker ~ppdcConstraint(); 291*5e7646d2SAndroid Build Coastguard Worker 292*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcConstraint") 293*5e7646d2SAndroid Build Coastguard Worker }; 294*5e7646d2SAndroid Build Coastguard Worker 295*5e7646d2SAndroid Build Coastguard Worker class ppdcFilter //// Filter Program 296*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 297*5e7646d2SAndroid Build Coastguard Worker { 298*5e7646d2SAndroid Build Coastguard Worker public: 299*5e7646d2SAndroid Build Coastguard Worker 300*5e7646d2SAndroid Build Coastguard Worker ppdcString *mime_type, // MIME type 301*5e7646d2SAndroid Build Coastguard Worker *program; // Filter program 302*5e7646d2SAndroid Build Coastguard Worker int cost; // Relative cost of filter 303*5e7646d2SAndroid Build Coastguard Worker 304*5e7646d2SAndroid Build Coastguard Worker ppdcFilter(const char *t, const char *p, int c); 305*5e7646d2SAndroid Build Coastguard Worker ~ppdcFilter(); 306*5e7646d2SAndroid Build Coastguard Worker 307*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcFilter") 308*5e7646d2SAndroid Build Coastguard Worker }; 309*5e7646d2SAndroid Build Coastguard Worker 310*5e7646d2SAndroid Build Coastguard Worker class ppdcMediaSize //// Media Size 311*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 312*5e7646d2SAndroid Build Coastguard Worker { 313*5e7646d2SAndroid Build Coastguard Worker public: 314*5e7646d2SAndroid Build Coastguard Worker 315*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Name of size 316*5e7646d2SAndroid Build Coastguard Worker *text; // Human-readable text 317*5e7646d2SAndroid Build Coastguard Worker float width, // Width in points 318*5e7646d2SAndroid Build Coastguard Worker length, // Length in points 319*5e7646d2SAndroid Build Coastguard Worker left, // Left limit in points 320*5e7646d2SAndroid Build Coastguard Worker bottom, // Bottom limit in points 321*5e7646d2SAndroid Build Coastguard Worker right, // Right limit in points 322*5e7646d2SAndroid Build Coastguard Worker top; // Top limit in points 323*5e7646d2SAndroid Build Coastguard Worker ppdcString *size_code, // PageSize code, if any 324*5e7646d2SAndroid Build Coastguard Worker *region_code; // PageRegion code, if any 325*5e7646d2SAndroid Build Coastguard Worker 326*5e7646d2SAndroid Build Coastguard Worker ppdcMediaSize(const char *n, const char *t, float w, float l, 327*5e7646d2SAndroid Build Coastguard Worker float lm, float bm, float rm, float tm, 328*5e7646d2SAndroid Build Coastguard Worker const char *sc = 0, const char *rc = 0); 329*5e7646d2SAndroid Build Coastguard Worker ~ppdcMediaSize(); 330*5e7646d2SAndroid Build Coastguard Worker 331*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcMediaSize") 332*5e7646d2SAndroid Build Coastguard Worker }; 333*5e7646d2SAndroid Build Coastguard Worker 334*5e7646d2SAndroid Build Coastguard Worker class ppdcProfile //// Color Profile 335*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 336*5e7646d2SAndroid Build Coastguard Worker { 337*5e7646d2SAndroid Build Coastguard Worker public: 338*5e7646d2SAndroid Build Coastguard Worker 339*5e7646d2SAndroid Build Coastguard Worker ppdcString *resolution, // Resolution name 340*5e7646d2SAndroid Build Coastguard Worker *media_type; // Media type name 341*5e7646d2SAndroid Build Coastguard Worker float density, // Color profile density 342*5e7646d2SAndroid Build Coastguard Worker gamma, // Color profile gamma 343*5e7646d2SAndroid Build Coastguard Worker profile[9]; // Color profile matrix 344*5e7646d2SAndroid Build Coastguard Worker 345*5e7646d2SAndroid Build Coastguard Worker ppdcProfile(const char *r, const char *m, float d, float g, const float *p); 346*5e7646d2SAndroid Build Coastguard Worker ~ppdcProfile(); 347*5e7646d2SAndroid Build Coastguard Worker 348*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcProfile") 349*5e7646d2SAndroid Build Coastguard Worker }; 350*5e7646d2SAndroid Build Coastguard Worker 351*5e7646d2SAndroid Build Coastguard Worker class ppdcSource; 352*5e7646d2SAndroid Build Coastguard Worker 353*5e7646d2SAndroid Build Coastguard Worker class ppdcDriver //// Printer Driver Data 354*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 355*5e7646d2SAndroid Build Coastguard Worker { 356*5e7646d2SAndroid Build Coastguard Worker public: 357*5e7646d2SAndroid Build Coastguard Worker 358*5e7646d2SAndroid Build Coastguard Worker ppdcDrvType type; // Driver type 359*5e7646d2SAndroid Build Coastguard Worker ppdcArray *copyright; // Copyright strings 360*5e7646d2SAndroid Build Coastguard Worker ppdcString *manufacturer, // Manufacturer 361*5e7646d2SAndroid Build Coastguard Worker *model_name, // Name of printer model 362*5e7646d2SAndroid Build Coastguard Worker *file_name, // Output filename for PPD 363*5e7646d2SAndroid Build Coastguard Worker *pc_file_name, // 8 character PC filename for PPD 364*5e7646d2SAndroid Build Coastguard Worker *version; // Version number 365*5e7646d2SAndroid Build Coastguard Worker int model_number, // Model number for driver 366*5e7646d2SAndroid Build Coastguard Worker manual_copies, // Do manual copies? 367*5e7646d2SAndroid Build Coastguard Worker color_device, // Support color? 368*5e7646d2SAndroid Build Coastguard Worker throughput; // Throughput in pages per minute 369*5e7646d2SAndroid Build Coastguard Worker ppdcArray *attrs, // Attributes 370*5e7646d2SAndroid Build Coastguard Worker *constraints, // Constraints 371*5e7646d2SAndroid Build Coastguard Worker *filters, // Filters 372*5e7646d2SAndroid Build Coastguard Worker *fonts, // Fonts 373*5e7646d2SAndroid Build Coastguard Worker *groups, // Option groups 374*5e7646d2SAndroid Build Coastguard Worker *profiles, // Color profiles 375*5e7646d2SAndroid Build Coastguard Worker *sizes; // Fixed sizes 376*5e7646d2SAndroid Build Coastguard Worker ppdcString *default_font, // Default font 377*5e7646d2SAndroid Build Coastguard Worker *default_size; // Default size option 378*5e7646d2SAndroid Build Coastguard Worker int variable_paper_size; // Support variable sizes? 379*5e7646d2SAndroid Build Coastguard Worker ppdcString *custom_size_code; // Custom page size code, if any 380*5e7646d2SAndroid Build Coastguard Worker float left_margin, // Margins for device in points 381*5e7646d2SAndroid Build Coastguard Worker bottom_margin, 382*5e7646d2SAndroid Build Coastguard Worker right_margin, 383*5e7646d2SAndroid Build Coastguard Worker top_margin, 384*5e7646d2SAndroid Build Coastguard Worker max_width, // Maximum width (points) 385*5e7646d2SAndroid Build Coastguard Worker max_length, // Maximum length (points) 386*5e7646d2SAndroid Build Coastguard Worker min_width, // Minimum width (points) 387*5e7646d2SAndroid Build Coastguard Worker min_length; // Minimum length (points) 388*5e7646d2SAndroid Build Coastguard Worker 389*5e7646d2SAndroid Build Coastguard Worker ppdcDriver(ppdcDriver *d = 0); 390*5e7646d2SAndroid Build Coastguard Worker ~ppdcDriver(); 391*5e7646d2SAndroid Build Coastguard Worker 392*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcDriver") 393*5e7646d2SAndroid Build Coastguard Worker add_attr(ppdcAttr * a)394*5e7646d2SAndroid Build Coastguard Worker void add_attr(ppdcAttr *a) { attrs->add(a); } add_constraint(ppdcConstraint * c)395*5e7646d2SAndroid Build Coastguard Worker void add_constraint(ppdcConstraint *c) { constraints->add(c); } add_copyright(const char * c)396*5e7646d2SAndroid Build Coastguard Worker void add_copyright(const char *c) { 397*5e7646d2SAndroid Build Coastguard Worker copyright->add(new ppdcString(c)); 398*5e7646d2SAndroid Build Coastguard Worker } add_filter(ppdcFilter * f)399*5e7646d2SAndroid Build Coastguard Worker void add_filter(ppdcFilter *f) { filters->add(f); } add_font(ppdcFont * f)400*5e7646d2SAndroid Build Coastguard Worker void add_font(ppdcFont *f) { fonts->add(f); } add_group(ppdcGroup * g)401*5e7646d2SAndroid Build Coastguard Worker void add_group(ppdcGroup *g) { groups->add(g); } add_profile(ppdcProfile * p)402*5e7646d2SAndroid Build Coastguard Worker void add_profile(ppdcProfile *p) { profiles->add(p); } add_size(ppdcMediaSize * m)403*5e7646d2SAndroid Build Coastguard Worker void add_size(ppdcMediaSize *m) { sizes->add(m); } 404*5e7646d2SAndroid Build Coastguard Worker 405*5e7646d2SAndroid Build Coastguard Worker ppdcAttr *find_attr(const char *k, const char *s); 406*5e7646d2SAndroid Build Coastguard Worker ppdcGroup *find_group(const char *n); 407*5e7646d2SAndroid Build Coastguard Worker ppdcOption *find_option(const char *n); 408*5e7646d2SAndroid Build Coastguard Worker ppdcOption *find_option_group(const char *n, ppdcGroup **mg); 409*5e7646d2SAndroid Build Coastguard Worker 410*5e7646d2SAndroid Build Coastguard Worker void set_custom_size_code(const char *c); 411*5e7646d2SAndroid Build Coastguard Worker void set_default_font(ppdcFont *f); 412*5e7646d2SAndroid Build Coastguard Worker void set_default_size(ppdcMediaSize *m); 413*5e7646d2SAndroid Build Coastguard Worker void set_file_name(const char *f); 414*5e7646d2SAndroid Build Coastguard Worker void set_manufacturer(const char *m); 415*5e7646d2SAndroid Build Coastguard Worker void set_model_name(const char *m); 416*5e7646d2SAndroid Build Coastguard Worker void set_pc_file_name(const char *f); 417*5e7646d2SAndroid Build Coastguard Worker void set_version(const char *v); 418*5e7646d2SAndroid Build Coastguard Worker 419*5e7646d2SAndroid Build Coastguard Worker int write_ppd_file(cups_file_t *fp, ppdcCatalog *catalog, 420*5e7646d2SAndroid Build Coastguard Worker ppdcArray *locales, ppdcSource *src, 421*5e7646d2SAndroid Build Coastguard Worker ppdcLineEnding le); 422*5e7646d2SAndroid Build Coastguard Worker }; 423*5e7646d2SAndroid Build Coastguard Worker 424*5e7646d2SAndroid Build Coastguard Worker class ppdcVariable //// Variable Definition 425*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 426*5e7646d2SAndroid Build Coastguard Worker { 427*5e7646d2SAndroid Build Coastguard Worker public: 428*5e7646d2SAndroid Build Coastguard Worker 429*5e7646d2SAndroid Build Coastguard Worker ppdcString *name, // Name of variable 430*5e7646d2SAndroid Build Coastguard Worker *value; // Value of variable 431*5e7646d2SAndroid Build Coastguard Worker 432*5e7646d2SAndroid Build Coastguard Worker ppdcVariable(const char *n, const char *v); 433*5e7646d2SAndroid Build Coastguard Worker ~ppdcVariable(); 434*5e7646d2SAndroid Build Coastguard Worker 435*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcVariable") 436*5e7646d2SAndroid Build Coastguard Worker 437*5e7646d2SAndroid Build Coastguard Worker void set_value(const char *v); 438*5e7646d2SAndroid Build Coastguard Worker }; 439*5e7646d2SAndroid Build Coastguard Worker 440*5e7646d2SAndroid Build Coastguard Worker class ppdcFile //// File 441*5e7646d2SAndroid Build Coastguard Worker { 442*5e7646d2SAndroid Build Coastguard Worker public: 443*5e7646d2SAndroid Build Coastguard Worker 444*5e7646d2SAndroid Build Coastguard Worker bool close_on_delete; // Close file on delete? 445*5e7646d2SAndroid Build Coastguard Worker cups_file_t *fp; // File pointer 446*5e7646d2SAndroid Build Coastguard Worker const char *filename; // Filename 447*5e7646d2SAndroid Build Coastguard Worker int line; // Line in file 448*5e7646d2SAndroid Build Coastguard Worker 449*5e7646d2SAndroid Build Coastguard Worker ppdcFile(const char *f, cups_file_t *ffp = (cups_file_t *)0); 450*5e7646d2SAndroid Build Coastguard Worker ~ppdcFile(); 451*5e7646d2SAndroid Build Coastguard Worker 452*5e7646d2SAndroid Build Coastguard Worker int get(); 453*5e7646d2SAndroid Build Coastguard Worker int peek(); 454*5e7646d2SAndroid Build Coastguard Worker }; 455*5e7646d2SAndroid Build Coastguard Worker 456*5e7646d2SAndroid Build Coastguard Worker class ppdcSource //// Source File 457*5e7646d2SAndroid Build Coastguard Worker : public ppdcShared 458*5e7646d2SAndroid Build Coastguard Worker { 459*5e7646d2SAndroid Build Coastguard Worker public: 460*5e7646d2SAndroid Build Coastguard Worker 461*5e7646d2SAndroid Build Coastguard Worker static ppdcArray *includes; // Include directories 462*5e7646d2SAndroid Build Coastguard Worker static const char *driver_types[]; // Driver types 463*5e7646d2SAndroid Build Coastguard Worker 464*5e7646d2SAndroid Build Coastguard Worker ppdcString *filename; // Filename 465*5e7646d2SAndroid Build Coastguard Worker ppdcArray *base_fonts, // Base fonts 466*5e7646d2SAndroid Build Coastguard Worker *drivers, // Printer drivers 467*5e7646d2SAndroid Build Coastguard Worker *po_files, // Message catalogs 468*5e7646d2SAndroid Build Coastguard Worker *sizes, // Predefined media sizes 469*5e7646d2SAndroid Build Coastguard Worker *vars; // Defined variables 470*5e7646d2SAndroid Build Coastguard Worker int cond_state, // Cummulative conditional state 471*5e7646d2SAndroid Build Coastguard Worker *cond_current, // Current #if state 472*5e7646d2SAndroid Build Coastguard Worker cond_stack[101]; // #if state stack 473*5e7646d2SAndroid Build Coastguard Worker 474*5e7646d2SAndroid Build Coastguard Worker 475*5e7646d2SAndroid Build Coastguard Worker ppdcSource(const char *f = 0, cups_file_t *ffp = (cups_file_t *)0); 476*5e7646d2SAndroid Build Coastguard Worker ~ppdcSource(); 477*5e7646d2SAndroid Build Coastguard Worker 478*5e7646d2SAndroid Build Coastguard Worker PPDC_NAME("ppdcSource") 479*5e7646d2SAndroid Build Coastguard Worker 480*5e7646d2SAndroid Build Coastguard Worker static void add_include(const char *d); 481*5e7646d2SAndroid Build Coastguard Worker ppdcDriver *find_driver(const char *f); 482*5e7646d2SAndroid Build Coastguard Worker static char *find_include(const char *f, const char *base, char *n, 483*5e7646d2SAndroid Build Coastguard Worker int nlen); 484*5e7646d2SAndroid Build Coastguard Worker ppdcCatalog *find_po(const char *l); 485*5e7646d2SAndroid Build Coastguard Worker ppdcMediaSize *find_size(const char *s); 486*5e7646d2SAndroid Build Coastguard Worker ppdcVariable *find_variable(const char *n); 487*5e7646d2SAndroid Build Coastguard Worker ppdcAttr *get_attr(ppdcFile *fp, bool loc = false); 488*5e7646d2SAndroid Build Coastguard Worker int get_boolean(ppdcFile *fp); 489*5e7646d2SAndroid Build Coastguard Worker ppdcChoice *get_choice(ppdcFile *fp); 490*5e7646d2SAndroid Build Coastguard Worker ppdcChoice *get_color_model(ppdcFile *fp); 491*5e7646d2SAndroid Build Coastguard Worker int get_color_order(const char *co); 492*5e7646d2SAndroid Build Coastguard Worker ppdcProfile *get_color_profile(ppdcFile *fp); 493*5e7646d2SAndroid Build Coastguard Worker int get_color_space(const char *cs); 494*5e7646d2SAndroid Build Coastguard Worker ppdcConstraint *get_constraint(ppdcFile *fp); 495*5e7646d2SAndroid Build Coastguard Worker ppdcMediaSize *get_custom_size(ppdcFile *fp); 496*5e7646d2SAndroid Build Coastguard Worker void get_duplex(ppdcFile *fp, ppdcDriver *d); 497*5e7646d2SAndroid Build Coastguard Worker ppdcFilter *get_filter(ppdcFile *fp); 498*5e7646d2SAndroid Build Coastguard Worker float get_float(ppdcFile *fp); 499*5e7646d2SAndroid Build Coastguard Worker ppdcFont *get_font(ppdcFile *fp); 500*5e7646d2SAndroid Build Coastguard Worker ppdcChoice *get_generic(ppdcFile *fp, const char *keyword, 501*5e7646d2SAndroid Build Coastguard Worker const char *tattr, const char *nattr); 502*5e7646d2SAndroid Build Coastguard Worker ppdcGroup *get_group(ppdcFile *fp, ppdcDriver *d); 503*5e7646d2SAndroid Build Coastguard Worker ppdcOption *get_installable(ppdcFile *fp); 504*5e7646d2SAndroid Build Coastguard Worker int get_integer(const char *v); 505*5e7646d2SAndroid Build Coastguard Worker int get_integer(ppdcFile *fp); 506*5e7646d2SAndroid Build Coastguard Worker float get_measurement(ppdcFile *fp); 507*5e7646d2SAndroid Build Coastguard Worker ppdcOption *get_option(ppdcFile *fp, ppdcDriver *d, ppdcGroup *g); 508*5e7646d2SAndroid Build Coastguard Worker ppdcCatalog *get_po(ppdcFile *fp); 509*5e7646d2SAndroid Build Coastguard Worker ppdcChoice *get_resolution(ppdcFile *fp); 510*5e7646d2SAndroid Build Coastguard Worker ppdcProfile *get_simple_profile(ppdcFile *fp); 511*5e7646d2SAndroid Build Coastguard Worker ppdcMediaSize *get_size(ppdcFile *fp); 512*5e7646d2SAndroid Build Coastguard Worker char *get_token(ppdcFile *fp, char *buffer, int buflen); 513*5e7646d2SAndroid Build Coastguard Worker ppdcVariable *get_variable(ppdcFile *fp); 514*5e7646d2SAndroid Build Coastguard Worker int import_ppd(const char *f); 515*5e7646d2SAndroid Build Coastguard Worker int quotef(cups_file_t *fp, const char *format, ...); 516*5e7646d2SAndroid Build Coastguard Worker void read_file(const char *f, cups_file_t *ffp = (cups_file_t *)0); 517*5e7646d2SAndroid Build Coastguard Worker void scan_file(ppdcFile *fp, ppdcDriver *td = 0, bool inc = false); 518*5e7646d2SAndroid Build Coastguard Worker ppdcVariable *set_variable(const char *name, const char *value); 519*5e7646d2SAndroid Build Coastguard Worker int write_file(const char *f); 520*5e7646d2SAndroid Build Coastguard Worker }; 521*5e7646d2SAndroid Build Coastguard Worker 522*5e7646d2SAndroid Build Coastguard Worker 523*5e7646d2SAndroid Build Coastguard Worker #endif // !_PPDC_H_ 524