| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_CLOUD_DEVICES_COMMON_CLOUD_PRINTER_DESCRIPTION_H_ |
| #define COMPONENTS_CLOUD_DEVICES_COMMON_CLOUD_PRINTER_DESCRIPTION_H_ |
| |
| #include <string> |
| |
| #include "base/logging.h" |
| #include "components/cloud_devices/common/description_items.h" |
| |
| // Defines printer options, CDD and CJT items. |
| // https://developers.google.com/cloud-print/docs/cdd |
| |
| namespace cloud_devices { |
| |
| namespace printer { |
| |
| typedef std::string ContentType; |
| |
| enum DocumentSheetBack { NORMAL, ROTATED, MANUAL_TUMBLE, FLIPPED }; |
| |
| struct PwgRasterConfig { |
| PwgRasterConfig(); |
| |
| DocumentSheetBack document_sheet_back; |
| bool reverse_order_streaming; |
| bool rotate_all_pages; |
| }; |
| |
| enum ColorType { |
| STANDARD_COLOR, |
| STANDARD_MONOCHROME, |
| CUSTOM_COLOR, |
| CUSTOM_MONOCHROME, |
| AUTO_COLOR, |
| }; |
| |
| struct Color { |
| Color(); |
| explicit Color(ColorType type); |
| |
| bool IsValid() const; |
| bool operator==(const Color& other) const; |
| bool operator!=(const Color& other) const { return !(*this == other); } |
| |
| ColorType type; |
| std::string vendor_id; |
| std::string custom_display_name; |
| }; |
| |
| enum DuplexType { |
| NO_DUPLEX, |
| LONG_EDGE, |
| SHORT_EDGE, |
| }; |
| |
| enum OrientationType { |
| PORTRAIT, |
| LANDSCAPE, |
| AUTO_ORIENTATION, |
| }; |
| |
| enum MarginsType { |
| NO_MARGINS, |
| STANDARD_MARGINS, |
| CUSTOM_MARGINS, |
| }; |
| |
| struct Margins { |
| Margins(); |
| Margins(MarginsType type, |
| int32 top_um, |
| int32 right_um, |
| int32 bottom_um, |
| int32 left_um); |
| |
| bool operator==(const Margins& other) const; |
| bool operator!=(const Margins& other) const { return !(*this == other); } |
| |
| MarginsType type; |
| int32 top_um; |
| int32 right_um; |
| int32 bottom_um; |
| int32 left_um; |
| }; |
| |
| struct Dpi { |
| Dpi(); |
| Dpi(int32 horizontal, int32 vertical); |
| |
| bool IsValid() const; |
| bool operator==(const Dpi& other) const; |
| bool operator!=(const Dpi& other) const { return !(*this == other); } |
| |
| int32 horizontal; |
| int32 vertical; |
| }; |
| |
| enum FitToPageType { |
| NO_FITTING, |
| FIT_TO_PAGE, |
| GROW_TO_PAGE, |
| SHRINK_TO_PAGE, |
| FILL_PAGE, |
| }; |
| |
| enum MediaType { |
| CUSTOM_MEDIA, |
| |
| // North American standard sheet media names. |
| NA_INDEX_3X5, |
| NA_PERSONAL, |
| NA_MONARCH, |
| NA_NUMBER_9, |
| NA_INDEX_4X6, |
| NA_NUMBER_10, |
| NA_A2, |
| NA_NUMBER_11, |
| NA_NUMBER_12, |
| NA_5X7, |
| NA_INDEX_5X8, |
| NA_NUMBER_14, |
| NA_INVOICE, |
| NA_INDEX_4X6_EXT, |
| NA_6X9, |
| NA_C5, |
| NA_7X9, |
| NA_EXECUTIVE, |
| NA_GOVT_LETTER, |
| NA_GOVT_LEGAL, |
| NA_QUARTO, |
| NA_LETTER, |
| NA_FANFOLD_EUR, |
| NA_LETTER_PLUS, |
| NA_FOOLSCAP, |
| NA_LEGAL, |
| NA_SUPER_A, |
| NA_9X11, |
| NA_ARCH_A, |
| NA_LETTER_EXTRA, |
| NA_LEGAL_EXTRA, |
| NA_10X11, |
| NA_10X13, |
| NA_10X14, |
| NA_10X15, |
| NA_11X12, |
| NA_EDP, |
| NA_FANFOLD_US, |
| NA_11X15, |
| NA_LEDGER, |
| NA_EUR_EDP, |
| NA_ARCH_B, |
| NA_12X19, |
| NA_B_PLUS, |
| NA_SUPER_B, |
| NA_C, |
| NA_ARCH_C, |
| NA_D, |
| NA_ARCH_D, |
| NA_ASME_F, |
| NA_WIDE_FORMAT, |
| NA_E, |
| NA_ARCH_E, |
| NA_F, |
| |
| // Chinese standard sheet media size names. |
| ROC_16K, |
| ROC_8K, |
| PRC_32K, |
| PRC_1, |
| PRC_2, |
| PRC_4, |
| PRC_5, |
| PRC_8, |
| PRC_6, |
| PRC_3, |
| PRC_16K, |
| PRC_7, |
| OM_JUURO_KU_KAI, |
| OM_PA_KAI, |
| OM_DAI_PA_KAI, |
| PRC_10, |
| |
| // ISO standard sheet media size names. |
| ISO_A10, |
| ISO_A9, |
| ISO_A8, |
| ISO_A7, |
| ISO_A6, |
| ISO_A5, |
| ISO_A5_EXTRA, |
| ISO_A4, |
| ISO_A4_TAB, |
| ISO_A4_EXTRA, |
| ISO_A3, |
| ISO_A4X3, |
| ISO_A4X4, |
| ISO_A4X5, |
| ISO_A4X6, |
| ISO_A4X7, |
| ISO_A4X8, |
| ISO_A4X9, |
| ISO_A3_EXTRA, |
| ISO_A2, |
| ISO_A3X3, |
| ISO_A3X4, |
| ISO_A3X5, |
| ISO_A3X6, |
| ISO_A3X7, |
| ISO_A1, |
| ISO_A2X3, |
| ISO_A2X4, |
| ISO_A2X5, |
| ISO_A0, |
| ISO_A1X3, |
| ISO_A1X4, |
| ISO_2A0, |
| ISO_A0X3, |
| ISO_B10, |
| ISO_B9, |
| ISO_B8, |
| ISO_B7, |
| ISO_B6, |
| ISO_B6C4, |
| ISO_B5, |
| ISO_B5_EXTRA, |
| ISO_B4, |
| ISO_B3, |
| ISO_B2, |
| ISO_B1, |
| ISO_B0, |
| ISO_C10, |
| ISO_C9, |
| ISO_C8, |
| ISO_C7, |
| ISO_C7C6, |
| ISO_C6, |
| ISO_C6C5, |
| ISO_C5, |
| ISO_C4, |
| ISO_C3, |
| ISO_C2, |
| ISO_C1, |
| ISO_C0, |
| ISO_DL, |
| ISO_RA2, |
| ISO_SRA2, |
| ISO_RA1, |
| ISO_SRA1, |
| ISO_RA0, |
| ISO_SRA0, |
| |
| // Japanese standard sheet media size names. |
| JIS_B10, |
| JIS_B9, |
| JIS_B8, |
| JIS_B7, |
| JIS_B6, |
| JIS_B5, |
| JIS_B4, |
| JIS_B3, |
| JIS_B2, |
| JIS_B1, |
| JIS_B0, |
| JIS_EXEC, |
| JPN_CHOU4, |
| JPN_HAGAKI, |
| JPN_YOU4, |
| JPN_CHOU2, |
| JPN_CHOU3, |
| JPN_OUFUKU, |
| JPN_KAHU, |
| JPN_KAKU2, |
| |
| // Other metric standard sheet media size names. |
| OM_SMALL_PHOTO, |
| OM_ITALIAN, |
| OM_POSTFIX, |
| OM_LARGE_PHOTO, |
| OM_FOLIO, |
| OM_FOLIO_SP, |
| OM_INVITE, |
| }; |
| |
| struct Media { |
| Media(); |
| |
| explicit Media(MediaType type); |
| |
| Media(MediaType type, int32 width_um, int32 height_um); |
| |
| Media(const std::string& custom_display_name, |
| const std::string& vendor_id, |
| int32 width_um, |
| int32 height_um); |
| |
| bool MatchBySize(); |
| |
| bool IsValid() const; |
| bool operator==(const Media& other) const; |
| bool operator!=(const Media& other) const { return !(*this == other); } |
| |
| MediaType type; |
| int32 width_um; |
| int32 height_um; |
| bool is_continuous_feed; |
| std::string custom_display_name; |
| std::string vendor_id; |
| }; |
| |
| struct Interval { |
| Interval(); |
| Interval(int32 start, int32 end); |
| Interval(int32 start); |
| |
| bool operator==(const Interval& other) const; |
| bool operator!=(const Interval& other) const { return !(*this == other); } |
| |
| int32 start; |
| int32 end; |
| }; |
| |
| typedef std::vector<Interval> PageRange; |
| |
| class ContentTypeTraits; |
| class PwgRasterConfigTraits; |
| class ColorTraits; |
| class DuplexTraits; |
| class OrientationTraits; |
| class MarginsTraits; |
| class DpiTraits; |
| class FitToPageTraits; |
| class MediaTraits; |
| class CopiesTraits; |
| class PageRangeTraits; |
| class CollateTraits; |
| |
| typedef ListCapability<ContentType, ContentTypeTraits> ContentTypesCapability; |
| typedef ValueCapability<PwgRasterConfig, PwgRasterConfigTraits> |
| PwgRasterConfigCapability; |
| typedef SelectionCapability<Color, ColorTraits> ColorCapability; |
| typedef SelectionCapability<DuplexType, DuplexTraits> DuplexCapability; |
| typedef SelectionCapability<OrientationType, OrientationTraits> |
| OrientationCapability; |
| typedef SelectionCapability<Margins, MarginsTraits> MarginsCapability; |
| typedef SelectionCapability<Dpi, DpiTraits> DpiCapability; |
| typedef SelectionCapability<FitToPageType, FitToPageTraits> FitToPageCapability; |
| typedef SelectionCapability<Media, MediaTraits> MediaCapability; |
| typedef EmptyCapability<class CopiesTraits> CopiesCapability; |
| typedef EmptyCapability<class PageRangeTraits> PageRangeCapability; |
| typedef BooleanCapability<class CollateTraits> CollateCapability; |
| typedef BooleanCapability<class ReverseTraits> ReverseCapability; |
| |
| typedef TicketItem<PwgRasterConfig, PwgRasterConfigTraits> |
| PwgRasterConfigTicketItem; |
| typedef TicketItem<Color, ColorTraits> ColorTicketItem; |
| typedef TicketItem<DuplexType, DuplexTraits> DuplexTicketItem; |
| typedef TicketItem<OrientationType, OrientationTraits> OrientationTicketItem; |
| typedef TicketItem<Margins, MarginsTraits> MarginsTicketItem; |
| typedef TicketItem<Dpi, DpiTraits> DpiTicketItem; |
| typedef TicketItem<FitToPageType, FitToPageTraits> FitToPageTicketItem; |
| typedef TicketItem<Media, MediaTraits> MediaTicketItem; |
| typedef TicketItem<int32, CopiesTraits> CopiesTicketItem; |
| typedef TicketItem<PageRange, PageRangeTraits> PageRangeTicketItem; |
| typedef TicketItem<bool, CollateTraits> CollateTicketItem; |
| typedef TicketItem<bool, ReverseTraits> ReverseTicketItem; |
| |
| } // namespace printer |
| |
| } // namespace cloud_devices |
| |
| #endif // COMPONENTS_CLOUD_DEVICES_COMMON_CLOUD_PRINTER_DESCRIPTION_H_ |