1/*
2 * Lips3Cap.cpp
3 * Copyright 1999-2000 Y.Takagi. All Rights Reserved.
4 */
5
6
7#include "Lips3Cap.h"
8
9#include "PrinterData.h"
10
11#define TO72DPI(a)	(a * 72.0f / 600.0f)
12
13const PaperCap a3(
14	"A3",
15	false,
16	JobData::kA3,
17	BRect(0.0f,            0.0f,            TO72DPI(7014.0f), TO72DPI(9920.0f)),
18	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(6894.0f), TO72DPI(9800.0f)));
19
20const PaperCap a4(
21	"A4",
22	true,
23	JobData::kA4,
24	BRect(0.0f,            0.0f,            TO72DPI(4960.0f), TO72DPI(7014.0f)),
25	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4840.0f), TO72DPI(6894.0f)));
26
27const PaperCap a5(
28	"A5",
29	false,
30	JobData::kA5,
31	BRect(0.0f,            0.0f,            TO72DPI(3506.0f), TO72DPI(4960.0f)),
32	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(3386.0f), TO72DPI(4840.0f)));
33
34const PaperCap japanese_postcard(
35	"Japanese Postcard",
36	false,
37	JobData::kJapanesePostcard,
38	BRect(0.0f,           0.0f,             TO72DPI(2362.0f), TO72DPI(3506.0f)),
39	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(2242.0f), TO72DPI(3386.0f)));
40
41const PaperCap b4(
42	"B4",
43	false,
44	JobData::kB4,
45	BRect(0.0f,            0.0f,            TO72DPI(6070.0f), TO72DPI(8598.0f)),
46	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(5950.0f), TO72DPI(8478.0f)));
47
48const PaperCap b5(
49	"B5",
50	false,
51	JobData::kB5,
52	BRect(0.0f,            0.0f,            TO72DPI(4298.0f), TO72DPI(6070.0f)),
53	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4178.0f), TO72DPI(5950.0f)));
54
55const PaperCap letter(
56	"Letter",
57	false,
58	JobData::kLetter,
59	BRect(0.0f,            0.0f,            TO72DPI(5100.0f), TO72DPI(6600.0f)),
60	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4980.0f), TO72DPI(6480.0f)));
61
62const PaperCap legal(
63	"Legal",
64	false,
65	JobData::kLegal,
66	BRect(0.0f,            0.0f,            TO72DPI(5100.0f), TO72DPI(8400.0f)),
67	BRect(TO72DPI(120.0f), TO72DPI(120.0f), TO72DPI(4980.0f), TO72DPI(8280.0f)));
68
69const PaperSourceCap autobin("Auto",  true,  JobData::kAuto);
70const PaperSourceCap manual("Manual", false, JobData::kManual);
71const PaperSourceCap upper("Upper",   false, JobData::kUpper);
72const PaperSourceCap lower("Lower",   false, JobData::kLower);
73
74const ResolutionCap dpi300("300dpi",   true, 0, 300,  300);
75
76const PaperCap* papers[] = {
77	&a4,
78	&a3,
79	&a5,
80	&b4,
81	&b5,
82	&letter,
83	&legal
84};
85
86const PaperSourceCap* papersources[] = {
87	&autobin,
88	&manual,
89	&upper,
90	&lower
91};
92
93const ResolutionCap* resolutions[] = {
94	&dpi300
95};
96
97const ColorCap color("Color", false, JobData::kColor);
98const ColorCap monochrome("Shades of Gray", true, JobData::kMonochrome);
99
100const ColorCap* colors[] = {
101	&color,
102	&monochrome
103};
104
105
106Lips3Cap::Lips3Cap(const PrinterData* printer_data)
107	:
108	PrinterCap(printer_data)
109{
110}
111
112
113int
114Lips3Cap::CountCap(CapID capid) const
115{
116	switch (capid) {
117		case kPaper:
118			return sizeof(papers) / sizeof(papers[0]);
119		case kPaperSource:
120			return sizeof(papersources) / sizeof(papersources[0]);
121		case kResolution:
122			return sizeof(resolutions) / sizeof(resolutions[0]);
123		case kColor:
124			return sizeof(colors) / sizeof(colors[0]);
125		default:
126			return 0;
127	}
128}
129
130
131const
132BaseCap **Lips3Cap::GetCaps(CapID capid) const
133{
134	switch (capid) {
135		case kPaper:
136			return (const BaseCap **)papers;
137		case kPaperSource:
138			return (const BaseCap **)papersources;
139		case kResolution:
140			return (const BaseCap **)resolutions;
141		case kColor:
142			return (const BaseCap **)colors;
143		default:
144			return NULL;
145	}
146}
147
148
149bool
150Lips3Cap::Supports(CapID capid) const
151{
152	switch (capid) {
153		case kPaper:
154		case kPaperSource:
155		case kResolution:
156		case kColor:
157		case kCopyCommand:
158		case kHalftone:
159			return true;
160		default:
161			return false;
162	}
163}
164