xref: /haiku/src/add-ons/print/drivers/canon_lips/lips4/Lips4Cap.cpp (revision 331c922016dbd43c36016819fdff52db2a0e4e6d)
1 /*
2  * Lips4Cap.cpp
3  * Copyright 1999-2000 Y.Takagi. All Rights Reserved.
4  */
5 
6 
7 #include "Lips4Cap.h"
8 
9 #define TO72DPI(a)	(a * 72.0f / 600.0f)
10 
11 const PaperCap a3(
12 	"A3",
13 	false,
14 	JobData::kA3,
15 	BRect(0.0f,            0.0f,            TO72DPI(7014.0f), TO72DPI(9920.0f)),
16 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(6894.0f), TO72DPI(9800.0f)));
17 
18 const PaperCap a4(
19 	"A4",
20 	true,
21 	JobData::kA4,
22 	BRect(0.0f,            0.0f,            TO72DPI(4960.0f), TO72DPI(7014.0f)),
23 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4840.0f), TO72DPI(6894.0f)));
24 
25 const PaperCap a5(
26 	"A5",
27 	false,
28 	JobData::kA5,
29 	BRect(0.0f,            0.0f,            TO72DPI(3506.0f), TO72DPI(4960.0f)),
30 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(3386.0f), TO72DPI(4840.0f)));
31 
32 const PaperCap japanese_postcard(
33 	"Japanese Postcard",
34 	false,
35 	JobData::kJapanesePostcard,
36 	BRect(0.0f,           0.0f,             TO72DPI(2362.0f), TO72DPI(3506.0f)),
37 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(2242.0f), TO72DPI(3386.0f)));
38 
39 const PaperCap b4(
40 	"B4",
41 	false,
42 	JobData::kB4,
43 	BRect(0.0f,            0.0f,            TO72DPI(6070.0f), TO72DPI(8598.0f)),
44 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(5950.0f), TO72DPI(8478.0f)));
45 
46 const PaperCap b5(
47 	"B5",
48 	false,
49 	JobData::kB5,
50 	BRect(0.0f,            0.0f,            TO72DPI(4298.0f), TO72DPI(6070.0f)),
51 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4178.0f), TO72DPI(5950.0f)));
52 
53 const PaperCap letter(
54 	"Letter",
55 	false,
56 	JobData::kLetter,
57 	BRect(0.0f,            0.0f,            TO72DPI(5100.0f), TO72DPI(6600.0f)),
58 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4980.0f), TO72DPI(6480.0f)));
59 
60 const PaperCap legal(
61 	"Legal",
62 	false,
63 	JobData::kLegal,
64 	BRect(0.0f,            0.0f,            TO72DPI(5100.0f), TO72DPI(8400.0f)),
65 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4980.0f), TO72DPI(8280.0f)));
66 
67 const PaperCap tabloid(
68 	"Tabloid",
69 	false,
70 	JobData::kTabloid,
71 	BRect(0.0f,            0.0f,            TO72DPI(6600.0), TO72DPI(10200.0)),
72 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(6480.0), TO72DPI(10080.0)));
73 
74 const PaperCap executive(
75 	"Executive",
76 	false,
77 	JobData::kExecutive,
78 	BRect(0.0f,            0.0f,            TO72DPI(4350.0f), TO72DPI(6300.0f)),
79 	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4230.0f), TO72DPI(6180.0f)));
80 
81 const PaperCap japanese_envelope_you4(
82 	"Japanese Envelope You#4",
83 	false,
84 	JobData::kJEnvYou4,
85 	BRect(0.0f,            0.0f,            TO72DPI(2480.0f), TO72DPI(5550.0f)),
86 	BRect(TO72DPI(236.0f), TO72DPI(236.0f), TO72DPI(2244.0f), TO72DPI(5314.0f)));
87 /*
88 const PaperCap japanese_envelope_kaku2(
89 	"Japanese Envelope Kaku#2",
90 	false,
91 	JobData::kJEnvKaku2,
92 	BRect(0.0f,            0.0f,            TO72DPI(5568.0f), TO72DPI(7842.0f)),
93 	BRect(TO72DPI(236.0f), TO72DPI(236.0f), TO72DPI(5432.0f), TO72DPI(7606.0f)));
94 */
95 const PaperSourceCap autobin("Auto",  true,  JobData::kAuto);
96 const PaperSourceCap manual("Manual", false, JobData::kManual);
97 const PaperSourceCap upper("Upper",   false, JobData::kUpper);
98 const PaperSourceCap middle("Middle", false, JobData::kMiddle);
99 const PaperSourceCap lower("Lower",   false, JobData::kLower);
100 
101 const ResolutionCap dpi1200("1200dpi", false, 0, 1200, 1200);
102 const ResolutionCap dpi600("600dpi",   true,  1, 600,  600);
103 const ResolutionCap dpi300("300dpi",   false, 2, 300,  300);
104 
105 const PrintStyleCap simplex("Simplex", true,  JobData::kSimplex);
106 const PrintStyleCap duplex("Duplex",   false, JobData::kDuplex);
107 const PrintStyleCap booklet("Booklet", false, JobData::kBooklet);
108 
109 const BindingLocationCap longedge1("Long Edge (left)",     true,
110 	JobData::kLongEdgeLeft);
111 const BindingLocationCap longedge2("Long Edge (right)",    false,
112 	JobData::kLongEdgeRight);
113 const BindingLocationCap shortedge1("Short Edge (top)",    false,
114 	JobData::kShortEdgeTop);
115 const BindingLocationCap shortedge2("Short Edge (bottom)", false,
116 	JobData::kShortEdgeBottom);
117 
118 const PaperCap* papers[] = {
119 	&a4,
120 	&a3,
121 	&a5,
122 	&b4,
123 	&b5,
124 	&letter,
125 	&legal,
126 	&tabloid,
127 	&executive,
128 	&japanese_postcard,
129 	&japanese_envelope_you4
130 };
131 
132 const PaperSourceCap* papersources[] = {
133 	&autobin,
134 	&manual,
135 	&upper,
136 	&middle,
137 	&lower
138 };
139 
140 const ResolutionCap* resolutions[] = {
141 	&dpi1200,
142 	&dpi600,
143 	&dpi300
144 };
145 
146 const PrintStyleCap* printstyles[] = {
147 	&simplex,
148 	&duplex,
149 	&booklet
150 };
151 
152 const BindingLocationCap *bindinglocations[] = {
153 	&longedge1,
154 	&longedge2,
155 	&shortedge1,
156 	&shortedge2
157 };
158 
159 const ColorCap color("Color", false, JobData::kColor);
160 const ColorCap monochrome("Shades of Gray", true, JobData::kMonochrome);
161 
162 const ColorCap* colors[] = {
163 	&color,
164 	&monochrome
165 };
166 
167 
168 int
CountCap(CapID capid) const169 Lips4Cap::CountCap(CapID capid) const
170 {
171 	switch (capid) {
172 		case kPaper:
173 			return sizeof(papers) / sizeof(papers[0]);
174 		case kPaperSource:
175 			return sizeof(papersources) / sizeof(papersources[0]);
176 		case kResolution:
177 			return sizeof(resolutions) / sizeof(resolutions[0]);
178 		case kPrintStyle:
179 			return sizeof(printstyles) / sizeof(printstyles[0]);
180 		case kBindingLocation:
181 			return sizeof(bindinglocations) / sizeof(bindinglocations[0]);
182 		case kColor:
183 			return sizeof(colors) / sizeof(colors[0]);
184 		default:
185 			return 0;
186 		}
187 }
188 
189 
190 const BaseCap**
GetCaps(CapID capid) const191 Lips4Cap::GetCaps(CapID capid) const
192 {
193 	switch (capid) {
194 		case kPaper:
195 			return (const BaseCap **)papers;
196 		case kPaperSource:
197 			return (const BaseCap **)papersources;
198 		case kResolution:
199 			return (const BaseCap **)resolutions;
200 		case kPrintStyle:
201 			return (const BaseCap **)printstyles;
202 		case kBindingLocation:
203 			return (const BaseCap **)bindinglocations;
204 		case kColor:
205 			return (const BaseCap **)colors;
206 		default:
207 			return NULL;
208 	}
209 }
210 
211 
212 bool
Supports(CapID capid) const213 Lips4Cap::Supports(CapID capid) const
214 {
215 	switch (capid) {
216 		case kPaper:
217 		case kPaperSource:
218 		case kResolution:
219 		case kPrintStyle:
220 		case kBindingLocation:
221 		case kColor:
222 		case kCopyCommand:
223 		case kHalftone:
224 			return true;
225 		default:
226 			return false;
227 		}
228 }
229