1 /* 2 * PrinterCap.h 3 * Copyright 1999-2000 Y.Takagi. All Rights Reserved. 4 */ 5 6 #ifndef __PRINTERCAP_H 7 #define __PRINTERCAP_H 8 9 #include <string> 10 #include <Rect.h> 11 #include "JobData.h" 12 13 using namespace std; 14 15 enum { 16 kUnknownPrinter = 0 17 }; 18 19 struct BaseCap { 20 BaseCap(const string &label, bool isDefault); 21 virtual ~BaseCap(); 22 23 virtual int ID() const = 0; 24 const char* Key() const; 25 26 string fLabel; 27 bool fIsDefault; 28 string fKey; 29 }; 30 31 struct PaperCap : public BaseCap { 32 PaperCap(const string &label, bool isDefault, 33 JobData::Paper paper, const BRect &paperRect, 34 const BRect &physicalRect); 35 36 int ID() const; 37 38 JobData::Paper fPaper; 39 BRect fPaperRect; 40 BRect fPhysicalRect; 41 }; 42 43 struct PaperSourceCap : public BaseCap { 44 PaperSourceCap(const string &label, bool isDefault, 45 JobData::PaperSource paperSource); 46 47 int ID() const; 48 49 JobData::PaperSource fPaperSource; 50 }; 51 52 struct ResolutionCap : public BaseCap { 53 ResolutionCap(const string &label, bool isDefault, 54 int id, int xResolution, int yResolution); 55 56 int ID() const; 57 58 int fID; 59 int fXResolution; 60 int fYResolution; 61 }; 62 63 struct OrientationCap : public BaseCap { 64 OrientationCap(const string &label, bool isDefault, 65 JobData::Orientation orientation); 66 67 int ID() const; 68 69 JobData::Orientation fOrientation; 70 }; 71 72 struct PrintStyleCap : public BaseCap { 73 PrintStyleCap(const string &label, bool isDefault, 74 JobData::PrintStyle printStyle); 75 76 int ID() const; 77 78 JobData::PrintStyle fPrintStyle; 79 }; 80 81 struct BindingLocationCap : public BaseCap { 82 BindingLocationCap(const string &label, 83 bool isDefault, 84 JobData::BindingLocation bindingLocation); 85 86 int ID() const; 87 88 JobData::BindingLocation fBindingLocation; 89 }; 90 91 struct ColorCap : public BaseCap { 92 ColorCap(const string &label, bool isDefault, 93 JobData::Color color); 94 95 int ID() const; 96 97 JobData::Color fColor; 98 }; 99 100 struct ProtocolClassCap : public BaseCap { 101 ProtocolClassCap(const string &label, 102 bool isDefault, int protocolClass, 103 const string &description); 104 105 int ID() const; 106 107 int fProtocolClass; 108 string fDescription; 109 }; 110 111 112 struct DriverSpecificCap : public BaseCap { 113 enum Type { 114 kList, 115 kCheckBox, 116 kRange 117 }; 118 119 DriverSpecificCap(const string& label, 120 bool isDefault, int category, Type type); 121 122 int ID() const; 123 124 int fCategory; 125 Type fType; 126 }; 127 128 129 class PrinterData; 130 131 class PrinterCap { 132 public: 133 PrinterCap(const PrinterData *printer_data); 134 virtual ~PrinterCap(); 135 136 enum CapID { 137 kPaper, 138 kPaperSource, 139 kResolution, 140 kOrientation, 141 kPrintStyle, 142 kBindingLocation, 143 kColor, 144 kProtocolClass, 145 kDriverSpecifcCapababilities, 146 147 // Static boolean settings follow. 148 // For them isSupport() has to be implemented only. 149 kCopyCommand, // supports printer page copy command? 150 kHalftone, // needs the printer driver the configuration 151 // for class Halftone? 152 153 // The driver specific generic capabilities start here 154 kDriverSpecificCapabablitiesBegin = 100 155 }; 156 157 virtual int countCap(CapID category) const = 0; 158 virtual bool isSupport(CapID category) const = 0; 159 virtual const BaseCap** enumCap(CapID category) const = 0; 160 const BaseCap* getDefaultCap(CapID category) const; 161 const BaseCap* findCap(CapID category, int id) const; 162 const BaseCap* findCap(CapID category, const char* label) const; 163 164 int getPrinterId() const; 165 int getProtocolClass() const; 166 167 protected: 168 PrinterCap(const PrinterCap &printerCap); 169 PrinterCap& operator=(const PrinterCap &printerCap); 170 171 const PrinterData* getPrinterData() const; 172 void setPrinterId(int id); 173 174 private: 175 const PrinterData* fPrinterData; 176 int fPrinterID; 177 }; 178 179 180 #endif /* __PRINTERCAP_H */ 181