diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-06 11:21:31 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-06 11:21:31 +0000 |
commit | b35b8842ab5d889c88eb637a96d5ec909e2a4f06 (patch) | |
tree | f96a276fd61d34545b768df61e7c7dd167ae4d45 /components/cloud_devices | |
parent | fb55c7005db14ba9383c5de3de71f264bda11ff1 (diff) | |
download | chromium_src-b35b8842ab5d889c88eb637a96d5ec909e2a4f06.zip chromium_src-b35b8842ab5d889c88eb637a96d5ec909e2a4f06.tar.gz chromium_src-b35b8842ab5d889c88eb637a96d5ec909e2a4f06.tar.bz2 |
Paper definitions extended with width and hight.
Function to find paper by size.
BUG=317027
Review URL: https://codereview.chromium.org/154563002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249357 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components/cloud_devices')
-rw-r--r-- | components/cloud_devices/printer_description.cc | 547 | ||||
-rw-r--r-- | components/cloud_devices/printer_description.h | 26 |
2 files changed, 301 insertions, 272 deletions
diff --git a/components/cloud_devices/printer_description.cc b/components/cloud_devices/printer_description.cc index 13f8710..41918f5 100644 --- a/components/cloud_devices/printer_description.cc +++ b/components/cloud_devices/printer_description.cc @@ -43,10 +43,10 @@ extern const char kOptionPageOrientation[] = "page_orientation"; extern const char kOptionPageRange[] = "page_range"; extern const char kOptionReverse[] = "reverse_order"; -const char kMargineBottomMicrons[] = "bottom_microns"; -const char kMargineLeftMicrons[] = "left_microns"; -const char kMargineRightMicrons[] = "right_microns"; -const char kMargineTopMicrons[] = "top_microns"; +const char kMargineBottom[] = "bottom_microns"; +const char kMargineLeft[] = "left_microns"; +const char kMargineRight[] = "right_microns"; +const char kMargineTop[] = "top_microns"; const char kDpiHorizontal[] = "horizontal_dpi"; const char kDpiVertical[] = "vertical_dpi"; @@ -83,15 +83,10 @@ const char kTypeOrientationAuto[] = "AUTO"; const char kTypeOrientationLandscape[] = "LANDSCAPE"; const char kTypeOrientationPortrait[] = "PORTRAIT"; -template <class IdType> -struct TypePair { - IdType id; +const struct ColorNames { + ColorType id; const char* const json_name; - static const TypePair kTypeMap[]; -}; - -template<> -const TypePair<ColorType> TypePair<ColorType>::kTypeMap[] = { +} kColorNames[] = { { STANDARD_COLOR, kTypeColorColor }, { STANDARD_MONOCHROME, kTypeColorMonochrome }, { CUSTOM_COLOR, kTypeColorCustomColor }, @@ -99,33 +94,37 @@ const TypePair<ColorType> TypePair<ColorType>::kTypeMap[] = { { AUTO_COLOR, kTypeColorAuto }, }; -template<> -const TypePair<DuplexType> - TypePair<DuplexType>::kTypeMap[] = { +const struct DuplexNames { + DuplexType id; + const char* const json_name; +} kDuplexNames[] = { { NO_DUPLEX, kTypeDuplexNoDuplex }, { LONG_EDGE, kTypeDuplexLongEdge }, { SHORT_EDGE, kTypeDuplexShortEdge }, }; -template<> -const TypePair<OrientationType> - TypePair<OrientationType>::kTypeMap[] = { +const struct OrientationNames { + OrientationType id; + const char* const json_name; +} kOrientationNames[] = { { PORTRAIT, kTypeOrientationPortrait }, { LANDSCAPE, kTypeOrientationLandscape }, { AUTO_ORIENTATION, kTypeOrientationAuto }, }; -template<> -const TypePair<MarginsType> - TypePair<MarginsType>::kTypeMap[] = { +const struct MarginsNames { + MarginsType id; + const char* const json_name; +} kMarginsNames[] = { { NO_MARGINS, kTypeMarginsBorderless }, { STANDARD_MARGINS, kTypeMarginsStandard }, { CUSTOM_MARGINS, kTypeMarginsCustom }, }; -template<> -const TypePair<FitToPageType> - TypePair<FitToPageType>::kTypeMap[] = { +const struct FitToPageNames { + FitToPageType id; + const char* const json_name; +} kFitToPageNames[] = { { NO_FITTING, kTypeFitToPageNoFitting }, { FIT_TO_PAGE, kTypeFitToPageFitToPage }, { GROW_TO_PAGE, kTypeFitToPageGrowToPage }, @@ -133,194 +132,213 @@ const TypePair<FitToPageType> { FILL_PAGE, kTypeFitToPageFillPage }, }; +const int32 kInchToUm = 25400; +const int32 kMmToUm = 1000; +const int32 kSizeTrasholdUm = 1000; -template<> -const TypePair<MediaType> - TypePair<MediaType>::kTypeMap[] = { -#define MAP_CLOUD_PRINT_MEDIA_TYPE(type) { type, #type } - { CUSTOM_MEDIA, "CUSTOM" }, - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_3X5), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_PERSONAL), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_MONARCH), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_9), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_4X6), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_10), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_A2), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_11), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_12), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_5X7), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_5X8), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_14), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INVOICE), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_4X6_EXT), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_6X9), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_C5), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_7X9), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_EXECUTIVE), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_GOVT_LETTER), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_GOVT_LEGAL), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_QUARTO), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LETTER), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_FANFOLD_EUR), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LETTER_PLUS), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_FOOLSCAP), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LEGAL), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_SUPER_A), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_9X11), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_A), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LETTER_EXTRA), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LEGAL_EXTRA), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X11), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X13), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X14), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X15), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_11X12), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_EDP), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_FANFOLD_US), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_11X15), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LEDGER), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_EUR_EDP), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_B), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_12X19), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_B_PLUS), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_SUPER_B), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_C), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_C), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_D), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_D), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ASME_F), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_WIDE_FORMAT), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_E), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_E), - MAP_CLOUD_PRINT_MEDIA_TYPE(NA_F), - MAP_CLOUD_PRINT_MEDIA_TYPE(ROC_16K), - MAP_CLOUD_PRINT_MEDIA_TYPE(ROC_8K), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_32K), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_1), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_2), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_4), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_5), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_8), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_6), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_3), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_16K), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_7), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_JUURO_KU_KAI), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_PA_KAI), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_DAI_PA_KAI), - MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_10), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A10), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A9), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A8), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A7), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A6), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A5_EXTRA), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4_TAB), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4_EXTRA), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X6), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X7), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X8), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X9), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3_EXTRA), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X6), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X7), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A1), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2X3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2X4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2X5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A0), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A1X3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A1X4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_2A0), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A0X3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B10), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B9), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B8), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B7), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B6), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B6C4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B5_EXTRA), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B2), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B1), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B0), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C10), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C9), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C8), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C7), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C7C6), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C6), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C6C5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C5), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C4), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C3), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C2), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C1), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C0), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_DL), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_RA2), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_SRA2), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_RA1), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_SRA1), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_RA0), - MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_SRA0), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B10), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B9), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B8), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B7), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B6), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B5), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B4), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B3), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B2), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B1), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B0), - MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_EXEC), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_CHOU4), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_HAGAKI), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_YOU4), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_CHOU2), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_CHOU3), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_OUFUKU), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_KAHU), - MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_KAKU2), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_SMALL_PHOTO), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_ITALIAN), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_POSTFIX), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_LARGE_PHOTO), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO_SP), - MAP_CLOUD_PRINT_MEDIA_TYPE(OM_INVITE), -#undef MAP_CLOUD_PRINT_MEDIA_TYPE +#define MAP_CLOUD_PRINT_MEDIA_TYPE(type, width, height, unit_um) \ + { type, #type, width*unit_um, height*unit_um } + +const struct MadiaDefinition { + MediaType id; + const char* const json_name; + int32 width_um; + int32 height_um; +} kMediaDefinitions[] = { + { CUSTOM_MEDIA, "CUSTOM" , 0, 0}, + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_3X5, 3, 5, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_PERSONAL, 3.625f, 6.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_MONARCH, 3.875f, 7.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_9, 3.875f, 8.875f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_4X6, 4, 6, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_10, 4.125f, 9.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_A2, 4.375f, 5.75f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_11, 4.5f, 10.375f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_12, 4.75f, 11, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_5X7, 5, 7, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_5X8, 5, 8, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_NUMBER_14, 5, 11.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INVOICE, 5.5f, 8.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_INDEX_4X6_EXT, 6, 8, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_6X9, 6, 9, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_C5, 6.5f, 9.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_7X9, 7, 9, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_EXECUTIVE, 7.25f, 10.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_GOVT_LETTER, 8, 10, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_GOVT_LEGAL, 8, 13, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_QUARTO, 8.5f, 10.83f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LETTER, 8.5f, 11, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_FANFOLD_EUR, 8.5f, 12, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LETTER_PLUS, 8.5f, 12.69f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_FOOLSCAP, 8.5f, 13, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LEGAL, 8.5f, 14, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_SUPER_A, 8.94f, 14, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_9X11, 9, 11, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_A, 9, 12, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LETTER_EXTRA, 9.5f, 12, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LEGAL_EXTRA, 9.5f, 15, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X11, 10, 11, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X13, 10, 13, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X14, 10, 14, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_10X15, 10, 15, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_11X12, 11, 12, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_EDP, 11, 14, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_FANFOLD_US, 11, 14.875f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_11X15, 11, 15, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_LEDGER, 11, 17, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_EUR_EDP, 12, 14, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_B, 12, 18, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_12X19, 12, 19, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_B_PLUS, 12, 19.17f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_SUPER_B, 13, 19, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_C, 17, 22, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_C, 18, 24, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_D, 22, 34, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_D, 24, 36, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ASME_F, 28, 40, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_WIDE_FORMAT, 30, 42, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_E, 34, 44, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_ARCH_E, 36, 48, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(NA_F, 44, 68, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ROC_16K, 7.75f, 10.75f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ROC_8K, 10.75f, 15.5f, kInchToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_32K, 97, 151, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_1, 102, 165, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_2, 102, 176, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_4, 110, 208, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_5, 110, 220, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_8, 120, 309, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_6, 120, 320, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_3, 125, 176, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_16K, 146, 215, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_7, 160, 230, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_JUURO_KU_KAI, 198, 275, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_PA_KAI, 267, 389, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_DAI_PA_KAI, 275, 395, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(PRC_10, 324, 458, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A10, 26, 37, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A9, 37, 52, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A8, 52, 74, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A7, 74, 105, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A6, 105, 148, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A5, 148, 210, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A5_EXTRA, 235.5f, 322.3f, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4, 210, 297, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4_TAB, 225, 297, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4_EXTRA, 235.5f, 322.3f, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3, 297, 420, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X3, 297, 630, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X4, 297, 841, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X5, 297, 1051, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X6, 297, 1261, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X7, 297, 1471, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X8, 297, 1682, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A4X9, 297, 1892, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3_EXTRA, 322, 445, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2, 420, 594, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X3, 420, 891, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X4, 420, 1189, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X5, 420, 1486, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X6, 420, 1783, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A3X7, 420, 2080, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A1, 594, 841, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2X3, 594, 1261, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2X4, 594, 1682, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A2X5, 594, 2102, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A0, 841, 1189, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A1X3, 841, 1783, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A1X4, 841, 2378, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_2A0, 1189, 1682, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_A0X3, 1189, 2523, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B10, 31, 44, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B9, 44, 62, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B8, 62, 88, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B7, 88, 125, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B6, 125, 176, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B6C4, 125, 324, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B5, 176, 250, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B5_EXTRA, 201, 276, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B4, 250, 353, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B3, 353, 500, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B2, 500, 707, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B1, 707, 1000, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_B0, 1000, 1414, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C10, 28, 40, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C9, 40, 57, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C8, 57, 81, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C7, 81, 114, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C7C6, 81, 162, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C6, 114, 162, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C6C5, 114, 229, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C5, 162, 229, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C4, 229, 324, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C3, 324, 458, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C2, 458, 648, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C1, 648, 917, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_C0, 917, 1297, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_DL, 110, 220, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_RA2, 430, 610, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_SRA2, 450, 640, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_RA1, 610, 860, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_SRA1, 640, 900, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_RA0, 860, 1220, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(ISO_SRA0, 900, 1280, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B10, 32, 45, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B9, 45, 64, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B8, 64, 91, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B7, 91, 128, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B6, 128, 182, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B5, 182, 257, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B4, 257, 364, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B3, 364, 515, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B2, 515, 728, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B1, 728, 1030, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_B0, 1030, 1456, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JIS_EXEC, 216, 330, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_CHOU4, 90, 205, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_HAGAKI, 100, 148, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_YOU4, 105, 235, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_CHOU2, 111.1f, 146, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_CHOU3, 120, 235, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_OUFUKU, 148, 200, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_KAHU, 240, 322.1f, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(JPN_KAKU2, 240, 332, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_SMALL_PHOTO, 100, 150, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_ITALIAN, 110, 230, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_POSTFIX, 114, 229, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_LARGE_PHOTO, 200, 300, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO, 210, 330, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_FOLIO_SP, 215, 315, kMmToUm), + MAP_CLOUD_PRINT_MEDIA_TYPE(OM_INVITE, 220, 220, kMmToUm) }; +#undef MAP_CLOUD_PRINT_MEDIA_TYPE + +const MadiaDefinition* FindMediaBySize(int32 width_um, int32 height_um) { + const MadiaDefinition* result = NULL; + for (size_t i = 0; i < arraysize(kMediaDefinitions); ++i) { + int32 diff = std::max(std::abs(width_um - kMediaDefinitions[i].width_um), + std::abs(height_um - kMediaDefinitions[i].height_um)); + if (diff < kSizeTrasholdUm) + result = &kMediaDefinitions[i]; + } + return result; +} -template<class IdType> -std::string TypeToString(IdType id) { - for (size_t i = 0; i < arraysize(TypePair<IdType>::kTypeMap); ++i) { - if (id == TypePair<IdType>::kTypeMap[i].id) - return TypePair<IdType>::kTypeMap[i].json_name; +template<class T, class IdType> +std::string TypeToString(const T& names, IdType id) { + for (size_t i = 0; i < arraysize(names); ++i) { + if (id == names[i].id) + return names[i].json_name; } NOTREACHED(); return std::string(); } -template<class IdType> -bool TypeFromString(const std::string& type, IdType* id) { - for (size_t i = 0; i < arraysize(TypePair<IdType>::kTypeMap); ++i) { - if (type == TypePair<IdType>::kTypeMap[i].json_name) { - *id = TypePair<IdType>::kTypeMap[i].id; +template<class T, class IdType> +bool TypeFromString(const T& names, const std::string& type, IdType* id) { + for (size_t i = 0; i < arraysize(names); ++i) { + if (type == names[i].json_name) { + *id = names[i].id; return true; } } @@ -346,29 +364,29 @@ bool Color::IsValid() const { Margins::Margins() : type(STANDARD_MARGINS), - top_microns(0), - right_microns(0), - bottom_microns(0), - left_microns(0) { + top_um(0), + right_um(0), + bottom_um(0), + left_um(0) { } Margins::Margins(MarginsType type, - int32 top_microns, - int32 right_microns, - int32 bottom_microns, - int32 left_microns) + int32 top_um, + int32 right_um, + int32 bottom_um, + int32 left_um) : type(type), - top_microns(top_microns), - right_microns(right_microns), - bottom_microns(bottom_microns), - left_microns(left_microns) { + top_um(top_um), + right_um(right_um), + bottom_um(bottom_um), + left_um(left_um) { } bool Margins::operator==(const Margins& other) const { return type == other.type && - top_microns == other.top_microns && - right_microns == other.right_microns && - bottom_microns == other.bottom_microns; + top_um == other.top_um && + right_um == other.right_um && + bottom_um == other.bottom_um; } Dpi::Dpi() : horizontal(0), vertical(0) {} @@ -382,34 +400,43 @@ bool Dpi::operator==(const Dpi& other) const { Media::Media() : type(CUSTOM_MEDIA), - width_microns(0), - height_microns(0), + width_um(0), + height_um(0), is_continuous_feed(false) { } -Media::Media(MediaType type, int32 width_microns, int32 height_microns) +Media::Media(MediaType type, int32 width_um, int32 height_um) : type(type), - width_microns(width_microns), - height_microns(height_microns), - is_continuous_feed(width_microns <= 0 || height_microns <= 0) { + width_um(width_um), + height_um(height_um), + is_continuous_feed(width_um <= 0 || height_um <= 0) { } -Media::Media(const std::string& custom_display_name, int32 width_microns, - int32 height_microns) +Media::Media(const std::string& custom_display_name, int32 width_um, + int32 height_um) : type(CUSTOM_MEDIA), - width_microns(width_microns), - height_microns(height_microns), - is_continuous_feed(width_microns <= 0 || height_microns <= 0), + width_um(width_um), + height_um(height_um), + is_continuous_feed(width_um <= 0 || height_um <= 0), custom_display_name(custom_display_name) { } +bool Media::MatchBySize() { + const MadiaDefinition* media = FindMediaBySize(width_um, height_um); + if (!media) + return false; + type = media->id; + custom_display_name.clear(); + return true; +} + bool Media::IsValid() const { if (is_continuous_feed) { - if (width_microns <= 0 && height_microns <= 0) + if (width_um <= 0 && height_um <= 0) return false; } else { - if (width_microns <= 0 || height_microns <= 0) + if (width_um <= 0 || height_um <= 0) return false; } return true; @@ -417,8 +444,8 @@ bool Media::IsValid() const { bool Media::operator==(const Media& other) const { return type == other.type && - width_microns == other.width_microns && - height_microns == other.height_microns && + width_um == other.width_um && + height_um == other.height_um && is_continuous_feed == other.is_continuous_feed; } @@ -475,7 +502,7 @@ class ColorTraits : public ItemsTraits<kOptionColor> { std::string type_str; if (!dict.GetString(kKeyType, &type_str)) return false; - if (!TypeFromString(type_str, &option->type)) + if (!TypeFromString(kColorNames, type_str, &option->type)) return false; dict.GetString(kKeyVendorId, &option->vendor_id); dict.GetString(kCustomName, &option->custom_display_name); @@ -483,7 +510,7 @@ class ColorTraits : public ItemsTraits<kOptionColor> { } static void Save(const Color& option, base::DictionaryValue* dict) { - dict->SetString(kKeyType, TypeToString(option.type)); + dict->SetString(kKeyType, TypeToString(kColorNames, option.type)); if (!option.vendor_id.empty()) dict->SetString(kKeyVendorId, option.vendor_id); if (!option.custom_display_name.empty()) @@ -497,11 +524,11 @@ class DuplexTraits : public NoValueValidation, static bool Load(const base::DictionaryValue& dict, DuplexType* option) { std::string type_str; return dict.GetString(kKeyType, &type_str) && - TypeFromString(type_str, option); + TypeFromString(kDuplexNames, type_str, option); } static void Save(DuplexType option, base::DictionaryValue* dict) { - dict->SetString(kKeyType, TypeToString(option)); + dict->SetString(kKeyType, TypeToString(kDuplexNames, option)); } }; @@ -511,11 +538,11 @@ class OrientationTraits : public NoValueValidation, static bool Load(const base::DictionaryValue& dict, OrientationType* option) { std::string type_str; return dict.GetString(kKeyType, &type_str) && - TypeFromString(type_str, option); + TypeFromString(kOrientationNames, type_str, option); } static void Save(OrientationType option, base::DictionaryValue* dict) { - dict->SetString(kKeyType, TypeToString(option)); + dict->SetString(kKeyType, TypeToString(kOrientationNames, option)); } }; @@ -541,21 +568,21 @@ class MarginsTraits : public NoValueValidation, std::string type_str; if (!dict.GetString(kKeyType, &type_str)) return false; - if (!TypeFromString(type_str, &option->type)) + if (!TypeFromString(kMarginsNames, type_str, &option->type)) return false; return - dict.GetInteger(kMargineTopMicrons, &option->top_microns) && - dict.GetInteger(kMargineRightMicrons, &option->right_microns) && - dict.GetInteger(kMargineBottomMicrons, &option->bottom_microns) && - dict.GetInteger(kMargineLeftMicrons, &option->left_microns); + dict.GetInteger(kMargineTop, &option->top_um) && + dict.GetInteger(kMargineRight, &option->right_um) && + dict.GetInteger(kMargineBottom, &option->bottom_um) && + dict.GetInteger(kMargineLeft, &option->left_um); } static void Save(const Margins& option, base::DictionaryValue* dict) { - dict->SetString(kKeyType, TypeToString(option.type)); - dict->SetInteger(kMargineTopMicrons, option.top_microns); - dict->SetInteger(kMargineRightMicrons, option.right_microns); - dict->SetInteger(kMargineBottomMicrons, option.bottom_microns); - dict->SetInteger(kMargineLeftMicrons, option.left_microns); + dict->SetString(kKeyType, TypeToString(kMarginsNames, option.type)); + dict->SetInteger(kMargineTop, option.top_um); + dict->SetInteger(kMargineRight, option.right_um); + dict->SetInteger(kMargineBottom, option.bottom_um); + dict->SetInteger(kMargineLeft, option.left_um); } }; @@ -585,11 +612,11 @@ class FitToPageTraits : public NoValueValidation, static bool Load(const base::DictionaryValue& dict, FitToPageType* option) { std::string type_str; return dict.GetString(kKeyType, &type_str) && - TypeFromString(type_str, option); + TypeFromString(kFitToPageNames, type_str, option); } static void Save(FitToPageType option, base::DictionaryValue* dict) { - dict->SetString(kKeyType, TypeToString(option)); + dict->SetString(kKeyType, TypeToString(kFitToPageNames, option)); } }; @@ -644,12 +671,12 @@ class MediaTraits : public ItemsTraits<kOptionMediaSize> { static bool Load(const base::DictionaryValue& dict, Media* option) { std::string type_str; if (dict.GetString(kKeyName, &type_str)) { - if (!TypeFromString(type_str, &option->type)) + if (!TypeFromString(kMediaDefinitions, type_str, &option->type)) return false; } - dict.GetInteger(kMediaWidth, &option->width_microns); - dict.GetInteger(kMediaHeight, &option->height_microns); + dict.GetInteger(kMediaWidth, &option->width_um); + dict.GetInteger(kMediaHeight, &option->height_um); dict.GetBoolean(kMediaIsContinuous, &option->is_continuous_feed); dict.GetString(kCustomName, &option->custom_display_name); return true; @@ -657,13 +684,13 @@ class MediaTraits : public ItemsTraits<kOptionMediaSize> { static void Save(const Media& option, base::DictionaryValue* dict) { if (option.type != CUSTOM_MEDIA) - dict->SetString(kKeyName, TypeToString(option.type)); + dict->SetString(kKeyName, TypeToString(kMediaDefinitions, option.type)); if (!option.custom_display_name.empty()) dict->SetString(kCustomName, option.custom_display_name); - if (option.width_microns > 0) - dict->SetInteger(kMediaWidth, option.width_microns); - if (option.height_microns > 0) - dict->SetInteger(kMediaHeight, option.height_microns); + if (option.width_um > 0) + dict->SetInteger(kMediaWidth, option.width_um); + if (option.height_um > 0) + dict->SetInteger(kMediaHeight, option.height_um); if (option.is_continuous_feed) dict->SetBoolean(kMediaIsContinuous, true); } diff --git a/components/cloud_devices/printer_description.h b/components/cloud_devices/printer_description.h index cc9b654..d40d615 100644 --- a/components/cloud_devices/printer_description.h +++ b/components/cloud_devices/printer_description.h @@ -63,10 +63,10 @@ enum MarginsType { struct Margins { Margins(); Margins(MarginsType type, - int32 top_microns, - int32 right_microns, - int32 bottom_microns, - int32 left_microns); + int32 top_um, + int32 right_um, + int32 bottom_um, + int32 left_um); bool operator==(const Margins& other) const; bool operator!=(const Margins& other) const { @@ -74,10 +74,10 @@ struct Margins { } MarginsType type; - int32 top_microns; - int32 right_microns; - int32 bottom_microns; - int32 left_microns; + int32 top_um; + int32 right_um; + int32 bottom_um; + int32 left_um; }; struct Dpi { @@ -282,10 +282,12 @@ enum MediaType { struct Media { Media(); - Media(MediaType type, int32 width_microns, int32 height_microns); + Media(MediaType type, int32 width_um, int32 height_um); Media(const std::string& custom_display_name, - int32 width_microns, int32 height_microns); + int32 width_um, int32 height_um); + + bool MatchBySize(); bool IsValid() const; bool operator==(const Media& other) const; @@ -294,8 +296,8 @@ struct Media { } MediaType type; - int32 width_microns; - int32 height_microns; + int32 width_um; + int32 height_um; bool is_continuous_feed; std::string custom_display_name; }; |