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 int32 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 int32 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 int32 ID() const; 48 49 JobData::PaperSource fPaperSource; 50 }; 51 52 struct ResolutionCap : public BaseCap { 53 ResolutionCap(const string &label, bool isDefault, 54 int32 id, int xResolution, int yResolution); 55 56 int32 ID() const; 57 58 int32 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 int32 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 int32 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 int32 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 int32 ID() const; 96 97 JobData::Color fColor; 98 }; 99 100 struct ProtocolClassCap : public BaseCap { 101 ProtocolClassCap(const string &label, 102 bool isDefault, int32 protocolClass, 103 const string &description); 104 105 int32 ID() const; 106 107 int32 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, int32 category, Type type); 121 122 int32 ID() const; 123 124 int32 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 getProtocolClass() const; 165 166 protected: 167 PrinterCap(const PrinterCap& printerCap); 168 PrinterCap& operator=(const PrinterCap& printerCap); 169 170 const PrinterData* getPrinterData() const; 171 172 private: 173 const PrinterData* fPrinterData; 174 }; 175 176 177 #endif /* __PRINTERCAP_H */ 178