diff options
Diffstat (limited to 'printing/printing_context_mac.mm')
-rw-r--r-- | printing/printing_context_mac.mm | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm index 25f0ef6..063197e 100644 --- a/printing/printing_context_mac.mm +++ b/printing/printing_context_mac.mm @@ -93,10 +93,12 @@ PrintingContext::Result PrintingContextMac::UpdatePrintSettings( std::string printer_name; int copies; bool collate; + bool two_sided; if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || !job_settings.GetString(kSettingPrinterName, &printer_name) || !job_settings.GetInteger(kSettingCopies, &copies) || - !job_settings.GetBoolean(kSettingCollate, &collate)) { + !job_settings.GetBoolean(kSettingCollate, &collate) || + !job_settings.GetBoolean(kSettingTwoSided, &two_sided)) { return OnError(); } @@ -112,6 +114,9 @@ PrintingContext::Result PrintingContextMac::UpdatePrintSettings( if (!SetOrientationIsLandscape(landscape)) return OnError(); + if (!SetDuplexModeIsTwoSided(two_sided)) + return OnError(); + [print_info_.get() updateFromPMPrintSettings]; InitPrintSettingsFromPrintInfo(ranges); @@ -173,6 +178,13 @@ bool PrintingContextMac::SetOrientationIsLandscape(bool landscape) { return true; } +bool PrintingContextMac::SetDuplexModeIsTwoSided(bool two_sided) { + PMDuplexMode duplexSetting = two_sided ? kPMDuplexNoTumble : kPMDuplexNone; + PMPrintSettings pmPrintSettings = + static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]); + return PMSetDuplex(pmPrintSettings, duplexSetting) == noErr; +} + void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { ResetSettings(); print_info_.reset([print_info retain]); |