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