xref: /haiku/headers/libs/print/libprint/PrinterCap.h (revision 961e35fb58bd8c133f3006e4793cf4200f5d0595)
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