summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-04 23:36:29 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-04 23:36:29 +0000
commitf3256b0d8029d6395be08d2f566220162219b6ea (patch)
tree8cac804aa7bf76c82702ebe29c8baad5263bcf3e /printing
parent5270ee85676f2d2314084b713d9b4f1070f95df8 (diff)
downloadchromium_src-f3256b0d8029d6395be08d2f566220162219b6ea.zip
chromium_src-f3256b0d8029d6395be08d2f566220162219b6ea.tar.gz
chromium_src-f3256b0d8029d6395be08d2f566220162219b6ea.tar.bz2
PrintPreview: Fixed RICOH MP C3501 color print job issues.
BUG=92358 TEST=Please refer to bug description. Review URL: http://codereview.chromium.org/7826040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99615 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r--printing/print_job_constants.h7
-rw-r--r--printing/printing_context_mac.h2
-rw-r--r--printing/printing_context_mac.mm15
-rw-r--r--printing/printing_context_win.cc10
4 files changed, 25 insertions, 9 deletions
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index 7240340..99b2892 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -67,6 +67,13 @@ enum VerticalHeaderFooterPosition {
BOTTOM
};
+// Print job color mode values.
+enum ColorMode {
+ GRAY = 1,
+ COLOR,
+ CMYK,
+};
+
} // namespace printing
#endif // PRINTING_PRINT_JOB_CONSTANTS_H_
diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h
index e7e6342..2fd0c18 100644
--- a/printing/printing_context_mac.h
+++ b/printing/printing_context_mac.h
@@ -75,7 +75,7 @@ class PRINTING_EXPORT PrintingContextMac : public PrintingContext {
// Sets output color mode in PMPrintSettings.
// Returns true if color mode is set.
- bool SetOutputIsColor(bool color);
+ bool SetOutputColor(int color_mode);
// The native print info object.
scoped_nsobject<NSPrintInfo> print_info_;
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm
index f839802..8ba4db8 100644
--- a/printing/printing_context_mac.mm
+++ b/printing/printing_context_mac.mm
@@ -17,6 +17,7 @@
static const CFStringRef kColorModel = CFSTR("ColorModel");
static const CFStringRef kGrayColor = CFSTR("Gray");
+static const CFStringRef kCMYK = CFSTR("CMYK");
namespace printing {
@@ -107,7 +108,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings(
print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]);
bool collate;
- bool color;
+ int color;
bool landscape;
bool print_to_pdf;
int copies;
@@ -116,7 +117,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings(
if (!job_settings.GetBoolean(kSettingLandscape, &landscape) ||
!job_settings.GetBoolean(kSettingCollate, &collate) ||
- !job_settings.GetBoolean(kSettingColor, &color) ||
+ !job_settings.GetInteger(kSettingColor, &color) ||
!job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) ||
!job_settings.GetInteger(kSettingDuplexMode, &duplex_mode) ||
!job_settings.GetInteger(kSettingCopies, &copies) ||
@@ -141,7 +142,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings(
return OnError();
}
- if (!SetOutputIsColor(color))
+ if (!SetOutputColor(color))
return OnError();
}
@@ -245,10 +246,14 @@ bool PrintingContextMac::SetDuplexModeInPrintSettings(DuplexMode mode) {
return PMSetDuplex(pmPrintSettings, duplexSetting) == noErr;
}
-bool PrintingContextMac::SetOutputIsColor(bool color) {
+bool PrintingContextMac::SetOutputColor(int color_mode) {
PMPrintSettings pmPrintSettings =
static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]);
- CFStringRef output_color = color ? NULL : kGrayColor;
+ CFStringRef output_color = NULL;
+ if (color_mode == printing::GRAY)
+ output_color = kGrayColor;
+ else if (color_mode == printing::CMYK)
+ output_color = kCMYK;
return PMPrintSettingsSetValue(pmPrintSettings,
kColorModel,
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc
index ef45060..c2ace8e 100644
--- a/printing/printing_context_win.cc
+++ b/printing/printing_context_win.cc
@@ -308,7 +308,7 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings(
DCHECK(!in_print_job_);
bool collate;
- bool color;
+ int color;
bool landscape;
bool print_to_pdf;
int copies;
@@ -317,7 +317,7 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings(
if (!job_settings.GetBoolean(kSettingLandscape, &landscape) ||
!job_settings.GetBoolean(kSettingCollate, &collate) ||
- !job_settings.GetBoolean(kSettingColor, &color) ||
+ !job_settings.GetInteger(kSettingColor, &color) ||
!job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) ||
!job_settings.GetInteger(kSettingDuplexMode, &duplex_mode) ||
!job_settings.GetInteger(kSettingCopies, &copies) ||
@@ -365,7 +365,11 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings(
return OnError();
}
- dev_mode->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME;
+ if (color == printing::GRAY)
+ dev_mode->dmColor = DMCOLOR_MONOCHROME;
+ else
+ dev_mode->dmColor = DMCOLOR_COLOR;
+
dev_mode->dmCopies = std::max(copies, 1);
if (dev_mode->dmCopies > 1) // do not change collate unless multiple copies
dev_mode->dmCollate = collate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE;