Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: components/cloud_devices/printer_description.h

Issue 150993002: Reading, writing of CDD and CJT JSON formats. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_CLOUD_DEVICES_CLOUD_PRINTER_DESCRIPTION_H_
6 #define COMPONENTS_CLOUD_DEVICES_CLOUD_PRINTER_DESCRIPTION_H_
7
8 #include <string>
9
10 #include "base/logging.h"
11 #include "components/cloud_devices/description_items.h"
12
13 // Defines printer options, CDD and CJT items.
14 // https://developers.google.com/cloud-print/docs/cdd
15
16 namespace cloud_devices {
17
18 namespace printer {
19
20 typedef std::string ContentType;
21
22 enum ColorType {
23 STANDARD_COLOR,
24 STANDARD_MONOCHROME,
25 CUSTOM_COLOR,
26 CUSTOM_MONOCHROME,
27 AUTO_COLOR,
28 };
29
30 struct Color {
31 Color();
32 explicit Color(ColorType type);
33
34 bool IsValid() const;
35 bool operator==(const Color& other) const;
36 bool operator!=(const Color& other) const {
37 return !(*this == other);
38 }
39
40 ColorType type;
41 std::string vendor_id;
42 std::string custom_display_name;
43 };
44
45 enum DuplexType {
46 NO_DUPLEX,
47 LONG_EDGE,
48 SHORT_EDGE,
49 };
50
51 enum OrientationType {
52 PORTRAIT,
53 LANDSCAPE,
54 AUTO_ORIENTATION,
55 };
56
57 enum MarginsType {
58 NO_MARGINS,
59 STANDARD_MARGINS,
60 CUSTOM_MARGINS,
61 };
62
63 struct Margins {
64 Margins();
65 Margins(MarginsType type,
66 int32 top_microns,
67 int32 right_microns,
68 int32 bottom_microns,
69 int32 left_microns);
70
71 bool operator==(const Margins& other) const;
72 bool operator!=(const Margins& other) const {
73 return !(*this == other);
74 }
75
76 MarginsType type;
77 int32 top_microns;
78 int32 right_microns;
79 int32 bottom_microns;
80 int32 left_microns;
81 };
82
83 struct Dpi {
84 Dpi();
85 Dpi(int32 horizontal, int32 vertical);
86
87 bool operator==(const Dpi& other) const;
88 bool operator!=(const Dpi& other) const {
89 return !(*this == other);
90 }
91
92 int32 horizontal;
93 int32 vertical;
94 };
95
96 enum FitToPageType {
97 NO_FITTING,
98 FIT_TO_PAGE,
99 GROW_TO_PAGE,
100 SHRINK_TO_PAGE,
101 FILL_PAGE,
102 };
103
104 enum MediaType {
105 CUSTOM_MEDIA,
106
107 // North American standard sheet media names.
108 NA_INDEX_3X5,
109 NA_PERSONAL,
110 NA_MONARCH,
111 NA_NUMBER_9,
112 NA_INDEX_4X6,
113 NA_NUMBER_10,
114 NA_A2,
115 NA_NUMBER_11,
116 NA_NUMBER_12,
117 NA_5X7,
118 NA_INDEX_5X8,
119 NA_NUMBER_14,
120 NA_INVOICE,
121 NA_INDEX_4X6_EXT,
122 NA_6X9,
123 NA_C5,
124 NA_7X9,
125 NA_EXECUTIVE,
126 NA_GOVT_LETTER,
127 NA_GOVT_LEGAL,
128 NA_QUARTO,
129 NA_LETTER,
130 NA_FANFOLD_EUR,
131 NA_LETTER_PLUS,
132 NA_FOOLSCAP,
133 NA_LEGAL,
134 NA_SUPER_A,
135 NA_9X11,
136 NA_ARCH_A,
137 NA_LETTER_EXTRA,
138 NA_LEGAL_EXTRA,
139 NA_10X11,
140 NA_10X13,
141 NA_10X14,
142 NA_10X15,
143 NA_11X12,
144 NA_EDP,
145 NA_FANFOLD_US,
146 NA_11X15,
147 NA_LEDGER,
148 NA_EUR_EDP,
149 NA_ARCH_B,
150 NA_12X19,
151 NA_B_PLUS,
152 NA_SUPER_B,
153 NA_C,
154 NA_ARCH_C,
155 NA_D,
156 NA_ARCH_D,
157 NA_ASME_F,
158 NA_WIDE_FORMAT,
159 NA_E,
160 NA_ARCH_E,
161 NA_F,
162
163 // Chinese standard sheet media size names.
164 ROC_16K,
165 ROC_8K,
166 PRC_32K,
167 PRC_1,
168 PRC_2,
169 PRC_4,
170 PRC_5,
171 PRC_8,
172 PRC_6,
173 PRC_3,
174 PRC_16K,
175 PRC_7,
176 OM_JUURO_KU_KAI,
177 OM_PA_KAI,
178 OM_DAI_PA_KAI,
179 PRC_10,
180
181 // ISO standard sheet media size names.
182 ISO_A10,
183 ISO_A9,
184 ISO_A8,
185 ISO_A7,
186 ISO_A6,
187 ISO_A5,
188 ISO_A5_EXTRA,
189 ISO_A4,
190 ISO_A4_TAB,
191 ISO_A4_EXTRA,
192 ISO_A3,
193 ISO_A4X3,
194 ISO_A4X4,
195 ISO_A4X5,
196 ISO_A4X6,
197 ISO_A4X7,
198 ISO_A4X8,
199 ISO_A4X9,
200 ISO_A3_EXTRA,
201 ISO_A2,
202 ISO_A3X3,
203 ISO_A3X4,
204 ISO_A3X5,
205 ISO_A3X6,
206 ISO_A3X7,
207 ISO_A1,
208 ISO_A2X3,
209 ISO_A2X4,
210 ISO_A2X5,
211 ISO_A0,
212 ISO_A1X3,
213 ISO_A1X4,
214 ISO_2A0,
215 ISO_A0X3,
216 ISO_B10,
217 ISO_B9,
218 ISO_B8,
219 ISO_B7,
220 ISO_B6,
221 ISO_B6C4,
222 ISO_B5,
223 ISO_B5_EXTRA,
224 ISO_B4,
225 ISO_B3,
226 ISO_B2,
227 ISO_B1,
228 ISO_B0,
229 ISO_C10,
230 ISO_C9,
231 ISO_C8,
232 ISO_C7,
233 ISO_C7C6,
234 ISO_C6,
235 ISO_C6C5,
236 ISO_C5,
237 ISO_C4,
238 ISO_C3,
239 ISO_C2,
240 ISO_C1,
241 ISO_C0,
242 ISO_DL,
243 ISO_RA2,
244 ISO_SRA2,
245 ISO_RA1,
246 ISO_SRA1,
247 ISO_RA0,
248 ISO_SRA0,
249
250 // Japanese standard sheet media size names.
251 JIS_B10,
252 JIS_B9,
253 JIS_B8,
254 JIS_B7,
255 JIS_B6,
256 JIS_B5,
257 JIS_B4,
258 JIS_B3,
259 JIS_B2,
260 JIS_B1,
261 JIS_B0,
262 JIS_EXEC,
263 JPN_CHOU4,
264 JPN_HAGAKI,
265 JPN_YOU4,
266 JPN_CHOU2,
267 JPN_CHOU3,
268 JPN_OUFUKU,
269 JPN_KAHU,
270 JPN_KAKU2,
271
272 // Other metric standard sheet media size names.
273 OM_SMALL_PHOTO,
274 OM_ITALIAN,
275 OM_POSTFIX,
276 OM_LARGE_PHOTO,
277 OM_FOLIO,
278 OM_FOLIO_SP,
279 OM_INVITE,
280 };
281
282 struct Media {
283 Media();
284
285 Media(MediaType type, int32 width_microns, int32 height_microns);
286
287 Media(const std::string& custom_display_name,
288 int32 width_microns, int32 height_microns);
289
290 bool IsValid() const;
291 bool operator==(const Media& other) const;
292 bool operator!=(const Media& other) const {
293 return !(*this == other);
294 }
295
296 MediaType type;
297 int32 width_microns;
298 int32 height_microns;
299 bool is_continuous_feed;
300 std::string custom_display_name;
301 };
302
303 struct Interval {
304 Interval();
305 Interval(int32 start, int32 end);
306 Interval(int32 start);
307
308 bool operator==(const Interval& other) const;
309 bool operator!=(const Interval& other) const {
310 return !(*this == other);
311 }
312
313 int32 start;
314 int32 end;
315 };
316
317 typedef std::vector<Interval> PageRange;
318
319 class ContentTypeTraits;
320 class ColorTraits;
321 class DuplexTraits;
322 class OrientationTraits;
323 class MarginsTraits;
324 class DpiTraits;
325 class FitToPageTraits;
326 class MediaTraits;
327 class CopiesTraits;
328 class PageRangeTraits;
329 class CollateTraits;
330 class ReverseTraits;
331
332 typedef ListCapability<ContentType, ContentTypeTraits> ContentTypesCapability;
333 typedef SelectionCapability<Color, ColorTraits> ColorCapability;
334 typedef SelectionCapability<DuplexType, DuplexTraits> DuplexCapability;
335 typedef SelectionCapability<OrientationType,
336 OrientationTraits> OrientationCapability;
337 typedef SelectionCapability<Margins, MarginsTraits> MarginsCapability;
338 typedef SelectionCapability<Dpi, DpiTraits> DpiCapability;
339 typedef SelectionCapability<FitToPageType, FitToPageTraits> FitToPageCapability;
340 typedef SelectionCapability<Media, MediaTraits> MediaCapability;
341 typedef EmptyCapability<class CopiesTraits> CopiesCapability;
342 typedef EmptyCapability<class PageRangeTraits> PageRangeCapability;
343 typedef BooleanCapability<class CollateTraits> CollateCapability;
344 typedef BooleanCapability<class ReverseTraits> ReverseCapability;
345
346 typedef TicketItem<Color, ColorTraits> ColorTicketItem;
347 typedef TicketItem<DuplexType, DuplexTraits> DuplexTicketItem;
348 typedef TicketItem<OrientationType, OrientationTraits> OrientationTicketItem;
349 typedef TicketItem<Margins, MarginsTraits> MarginsTicketItem;
350 typedef TicketItem<Dpi, DpiTraits> DpiTicketItem;
351 typedef TicketItem<FitToPageType, FitToPageTraits> FitToPageTicketItem;
352 typedef TicketItem<Media, MediaTraits> MediaTicketItem;
353 typedef TicketItem<int32, CopiesTraits> CopiesTicketItem;
354 typedef TicketItem<PageRange, PageRangeTraits> PageRangeTicketItem;
355 typedef TicketItem<bool, CollateTraits> CollateTicketItem;
356 typedef TicketItem<bool, ReverseTraits> ReverseTicketItem;
357
358 } // namespace printer
359
360 } // namespace cloud_devices
361
362 #endif // COMPONENTS_CLOUD_DEVICES_CLOUD_PRINTER_DESCRIPTION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698