diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 00:40:39 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 00:40:39 +0000 |
commit | 63313aed25758c7a634414f88b6d0549d572c155 (patch) | |
tree | 64da60df5fb0373fc5b7bf8ac85fcfc3625f1165 /printing/print_settings.cc | |
parent | 611b6f634dbdbc87a40810cc60f5713f4d5eb434 (diff) | |
download | chromium_src-63313aed25758c7a634414f88b6d0549d572c155.zip chromium_src-63313aed25758c7a634414f88b6d0549d572c155.tar.gz chromium_src-63313aed25758c7a634414f88b6d0549d572c155.tar.bz2 |
Reland 105087: PrintPreview: Fix printer color settings issues based on printer ppd/schema info.
Show/Hide the color options based on printer ppd/schema information. Some printers does not provide sufficient information in the printer schema/ppd regarding the color settings and they use custom advance settings to print in black & white/greyscale. In those cases, users need to print using native dialog in order to set these advance color settings.
BUG=93811, 93490, 87344, 96658, 98768
TEST= Please refer to bug description.
Review URL: http://codereview.chromium.org/8138020
Review URL: http://codereview.chromium.org/8226024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105217 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/print_settings.cc')
-rw-r--r-- | printing/print_settings.cc | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/printing/print_settings.cc b/printing/print_settings.cc index d08d02f5..06aac453d 100644 --- a/printing/print_settings.cc +++ b/printing/print_settings.cc @@ -10,6 +10,102 @@ namespace printing { +#if defined (USE_CUPS) +void GetColorModelForMode( + int color_mode, std::string* color_setting_name, std::string* color_value) { +#if defined(OS_MACOSX) + const char kCUPSColorMode[] = "ColorMode"; + const char kCUPSColorModel[] = "ColorModel"; + const char kCUPSPrintoutMode[] = "PrintoutMode"; + const char kCUPSProcessColorModel[] = "ProcessColorModel"; +#else + const char kCUPSColorMode[] = "cups-ColorMode"; + const char kCUPSColorModel[] = "cups-ColorModel"; + const char kCUPSPrintoutMode[] = "cups-PrintoutMode"; + const char kCUPSProcessColorModel[] = "cups-ProcessColorModel"; +#endif + + color_setting_name->assign(kCUPSColorModel); + switch (color_mode) { + case printing::COLOR: + color_value->assign(printing::kColor); + break; + case printing::CMYK: + color_value->assign(printing::kCMYK); + break; + case printing::PRINTOUTMODE_NORMAL: + color_value->assign(printing::kNormal); + color_setting_name->assign(kCUPSPrintoutMode); + break; + case printing::PRINTOUTMODE_NORMAL_GRAY: + color_value->assign(printing::kNormalGray); + color_setting_name->assign(kCUPSPrintoutMode); + break; + case printing::RGB16: + color_value->assign(printing::kRGB16); + break; + case printing::RGBA: + color_value->assign(printing::kRGBA); + break; + case printing::RGB: + color_value->assign(printing::kRGB); + break; + case printing::CMY: + color_value->assign(printing::kCMY); + break; + case printing::CMY_K: + color_value->assign(printing::kCMY_K); + break; + case printing::BLACK: + color_value->assign(printing::kBlack); + break; + case printing::GRAY: + color_value->assign(printing::kGray); + break; + case printing::COLORMODE_COLOR: + color_setting_name->assign(kCUPSColorMode); + color_value->assign(printing::kColor); + break; + case printing::COLORMODE_MONOCHROME: + color_setting_name->assign(kCUPSColorMode); + color_value->assign(printing::kMonochrome); + break; + case printing::HP_COLOR_COLOR: + color_setting_name->assign(kColor); + color_value->assign(printing::kColor); + break; + case printing::HP_COLOR_BLACK: + color_setting_name->assign(kColor); + color_value->assign(printing::kBlack); + break; + case printing::PROCESSCOLORMODEL_CMYK: + color_setting_name->assign(kCUPSProcessColorModel); + color_value->assign(printing::kCMYK); + break; + case printing::PROCESSCOLORMODEL_GREYSCALE: + color_setting_name->assign(kCUPSProcessColorModel); + color_value->assign(printing::kGreyscale); + break; + case printing::PROCESSCOLORMODEL_RGB: + color_setting_name->assign(kCUPSProcessColorModel); + color_value->assign(printing::kRGB); + break; + default: + color_value->assign(printing::kGrayscale); + break; + } +} +#endif + +bool isColorModelSelected(int model) { + return (model != printing::GRAY && + model != printing::BLACK && + model != printing::PRINTOUTMODE_NORMAL_GRAY && + model != printing::COLORMODE_MONOCHROME && + model != printing::PROCESSCOLORMODEL_GREYSCALE && + model != printing::HP_COLOR_BLACK); +} + // Global SequenceNumber used for generating unique cookie values. static base::AtomicSequenceNumber cookie_seq(base::LINKER_INITIALIZED); |