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 25 string fLabel; 26 bool fIsDefault; 27 string fKey; 28 }; 29 30 struct PaperCap : public BaseCap { 31 PaperCap(const string &label, bool isDefault, 32 JobData::Paper paper, const BRect &paperRect, 33 const BRect &physicalRect); 34 35 int ID() const; 36 37 JobData::Paper fPaper; 38 BRect fPaperRect; 39 BRect fPhysicalRect; 40 }; 41 42 struct PaperSourceCap : public BaseCap { 43 PaperSourceCap(const string &label, bool isDefault, 44 JobData::PaperSource paperSource); 45 46 int ID() const; 47 48 JobData::PaperSource fPaperSource; 49 }; 50 51 struct ResolutionCap : public BaseCap { 52 ResolutionCap(const string &label, bool isDefault, 53 int id, int xResolution, int yResolution); 54 55 int ID() const; 56 57 int fID; 58 int fXResolution; 59 int fYResolution; 60 }; 61 62 struct OrientationCap : public BaseCap { 63 OrientationCap(const string &label, bool isDefault, 64 JobData::Orientation orientation); 65 66 int ID() const; 67 68 JobData::Orientation fOrientation; 69 }; 70 71 struct PrintStyleCap : public BaseCap { 72 PrintStyleCap(const string &label, bool isDefault, 73 JobData::PrintStyle printStyle); 74 75 int ID() const; 76 77 JobData::PrintStyle fPrintStyle; 78 }; 79 80 struct BindingLocationCap : public BaseCap { 81 BindingLocationCap(const string &label, 82 bool isDefault, 83 JobData::BindingLocation bindingLocation); 84 85 int ID() const; 86 87 JobData::BindingLocation fBindingLocation; 88 }; 89 90 struct ColorCap : public BaseCap { 91 ColorCap(const string &label, bool isDefault, 92 JobData::Color color); 93 94 int ID() const; 95 96 JobData::Color fColor; 97 }; 98 99 struct ProtocolClassCap : public BaseCap { 100 ProtocolClassCap(const string &label, 101 bool isDefault, int protocolClass, 102 const string &description); 103 104 int ID() const; 105 106 int fProtocolClass; 107 string fDescription; 108 }; 109 110 111 class PrinterData; 112 113 class PrinterCap { 114 public: 115 PrinterCap(const PrinterData *printer_data); 116 virtual ~PrinterCap(); 117 118 enum CapID { 119 kPaper, 120 kPaperSource, 121 kResolution, 122 kOrientation, 123 kPrintStyle, 124 kBindingLocation, 125 kColor, 126 kProtocolClass, 127 // Static boolean settings follow. 128 // For them isSupport() has to be implemented only. 129 kCopyCommand, // supports printer page copy command? 130 }; 131 132 virtual int countCap(CapID category) const = 0; 133 virtual bool isSupport(CapID category) const = 0; 134 virtual const BaseCap** enumCap(CapID category) const = 0; 135 const BaseCap* getDefaultCap(CapID category) const; 136 const BaseCap* findCap(CapID category, int id) const; 137 const BaseCap* findCap(CapID category, const char* label) const; 138 139 int getPrinterId() const; 140 int getProtocolClass() const; 141 142 protected: 143 PrinterCap(const PrinterCap &printerCap); 144 PrinterCap& operator=(const PrinterCap &printerCap); 145 146 const PrinterData* getPrinterData() const; 147 void setPrinterId(int id); 148 149 private: 150 const PrinterData* fPrinterData; 151 int fPrinterID; 152 }; 153 154 155 #endif /* __PRINTERCAP_H */ 156