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
11const 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
18const 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
25const 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
32const 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
39const 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
46const 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
53const 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
60const 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
67const 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
74const 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
81const 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/*
88const 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*/
95const PaperSourceCap autobin("Auto",  true,  JobData::kAuto);
96const PaperSourceCap manual("Manual", false, JobData::kManual);
97const PaperSourceCap upper("Upper",   false, JobData::kUpper);
98const PaperSourceCap middle("Middle", false, JobData::kMiddle);
99const PaperSourceCap lower("Lower",   false, JobData::kLower);
100
101const ResolutionCap dpi1200("1200dpi", false, 0, 1200, 1200);
102const ResolutionCap dpi600("600dpi",   true,  1, 600,  600);
103const ResolutionCap dpi300("300dpi",   false, 2, 300,  300);
104
105const PrintStyleCap simplex("Simplex", true,  JobData::kSimplex);
106const PrintStyleCap duplex("Duplex",   false, JobData::kDuplex);
107const PrintStyleCap booklet("Booklet", false, JobData::kBooklet);
108
109const BindingLocationCap longedge1("Long Edge (left)",     true,
110	JobData::kLongEdgeLeft);
111const BindingLocationCap longedge2("Long Edge (right)",    false,
112	JobData::kLongEdgeRight);
113const BindingLocationCap shortedge1("Short Edge (top)",    false,
114	JobData::kShortEdgeTop);
115const BindingLocationCap shortedge2("Short Edge (bottom)", false,
116	JobData::kShortEdgeBottom);
117
118const 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
132const PaperSourceCap* papersources[] = {
133	&autobin,
134	&manual,
135	&upper,
136	&middle,
137	&lower
138};
139
140const ResolutionCap* resolutions[] = {
141	&dpi1200,
142	&dpi600,
143	&dpi300
144};
145
146const PrintStyleCap* printstyles[] = {
147	&simplex,
148	&duplex,
149	&booklet
150};
151
152const BindingLocationCap *bindinglocations[] = {
153	&longedge1,
154	&longedge2,
155	&shortedge1,
156	&shortedge2
157};
158
159const ColorCap color("Color", false, JobData::kColor);
160const ColorCap monochrome("Shades of Gray", true, JobData::kMonochrome);
161
162const ColorCap* colors[] = {
163	&color,
164	&monochrome
165};
166
167
168int
169Lips4Cap::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
190const BaseCap**
191Lips4Cap::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
212bool
213Lips4Cap::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