Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "printing/printing_context_win.h" | 5 #include "printing/printing_context_win.h" |
| 6 | 6 |
| 7 #include <winspool.h> | 7 #include <winspool.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 305 PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( | 305 PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( |
| 306 const DictionaryValue& job_settings, | 306 const DictionaryValue& job_settings, |
| 307 const PageRanges& ranges) { | 307 const PageRanges& ranges) { |
| 308 DCHECK(!in_print_job_); | 308 DCHECK(!in_print_job_); |
| 309 | 309 |
| 310 bool collate; | 310 bool collate; |
| 311 bool color; | 311 bool color; |
| 312 bool landscape; | 312 bool landscape; |
| 313 bool print_to_pdf; | 313 bool print_to_pdf; |
| 314 int copies; | 314 int copies; |
| 315 int duplex_mode; | 315 DictionaryValue* duplex_info; |
| 316 int printer_default_duplex_value; | |
| 317 int user_selected_duplex_value; | |
| 316 string16 device_name; | 318 string16 device_name; |
| 317 | 319 |
| 318 if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || | 320 if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || |
| 319 !job_settings.GetBoolean(kSettingCollate, &collate) || | 321 !job_settings.GetBoolean(kSettingCollate, &collate) || |
| 320 !job_settings.GetBoolean(kSettingColor, &color) || | 322 !job_settings.GetBoolean(kSettingColor, &color) || |
| 321 !job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) || | 323 !job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) || |
| 322 !job_settings.GetInteger(kSettingDuplexMode, &duplex_mode) || | 324 !job_settings.GetDictionary(kSettingDuplexModeInfo, &duplex_info) || |
| 325 !duplex_info->GetInteger(kPrinterDefaultDuplexValue, | |
| 326 &printer_default_duplex_value) || | |
| 327 !duplex_info->GetInteger(kUserSelectedDuplexValue, | |
| 328 &user_selected_duplex_value) || | |
| 323 !job_settings.GetInteger(kSettingCopies, &copies) || | 329 !job_settings.GetInteger(kSettingCopies, &copies) || |
| 324 !job_settings.GetString(kSettingDeviceName, &device_name)) { | 330 !job_settings.GetString(kSettingDeviceName, &device_name)) { |
| 325 return OnError(); | 331 return OnError(); |
| 326 } | 332 } |
| 327 | 333 |
| 328 bool print_to_cloud = job_settings.HasKey(printing::kSettingCloudPrintId); | 334 bool print_to_cloud = job_settings.HasKey(printing::kSettingCloudPrintId); |
| 329 | 335 |
| 330 if (print_to_pdf || print_to_cloud) { | 336 if (print_to_pdf || print_to_cloud) { |
| 331 // Pseudo printer: handle orientation and ranges only. | 337 // Pseudo printer: handle orientation and ranges only. |
| 332 settings_.SetOrientation(landscape); | 338 settings_.SetOrientation(landscape); |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 362 if (dev_mode == NULL) { | 368 if (dev_mode == NULL) { |
| 363 buffer.reset(); | 369 buffer.reset(); |
| 364 ClosePrinter(printer); | 370 ClosePrinter(printer); |
| 365 return OnError(); | 371 return OnError(); |
| 366 } | 372 } |
| 367 | 373 |
| 368 dev_mode->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME; | 374 dev_mode->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME; |
| 369 dev_mode->dmCopies = std::max(copies, 1); | 375 dev_mode->dmCopies = std::max(copies, 1); |
| 370 if (dev_mode->dmCopies > 1) // do not change collate unless multiple copies | 376 if (dev_mode->dmCopies > 1) // do not change collate unless multiple copies |
| 371 dev_mode->dmCollate = collate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE; | 377 dev_mode->dmCollate = collate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE; |
| 372 switch (duplex_mode) { | 378 if (printer_default_duplex_value == printing::UNKNOWN) { |
| 373 case LONG_EDGE: | 379 dev_mode->dmDuplex = user_selected_duplex_value ? DMDUP_HORIZONTAL : |
|
vandebo (ex-Chrome)
2011/09/02 18:12:50
This assumes that SIMPLEX is "false." Instead, yo
kmadhusu
2011/09/03 00:34:00
As we discussed, I reverted the printing context c
| |
| 374 dev_mode->dmDuplex = DMDUP_VERTICAL; | 380 DMDUP_SIMPLEX; |
| 375 break; | 381 } else { |
| 376 case SHORT_EDGE: | 382 switch (user_selected_duplex_value) { |
| 377 dev_mode->dmDuplex = DMDUP_HORIZONTAL; | 383 case LONG_EDGE: |
| 378 break; | 384 dev_mode->dmDuplex = DMDUP_VERTICAL; |
| 379 default: // simplex | 385 break; |
| 380 dev_mode->dmDuplex = DMDUP_SIMPLEX; | 386 case SHORT_EDGE: |
| 381 break; | 387 dev_mode->dmDuplex = DMDUP_HORIZONTAL; |
| 388 break; | |
| 389 default: // simplex | |
| 390 dev_mode->dmDuplex = DMDUP_SIMPLEX; | |
| 391 break; | |
| 392 } | |
| 382 } | 393 } |
| 383 dev_mode->dmOrientation = landscape ? DMORIENT_LANDSCAPE : DMORIENT_PORTRAIT; | 394 dev_mode->dmOrientation = landscape ? DMORIENT_LANDSCAPE : DMORIENT_PORTRAIT; |
| 384 | 395 |
| 385 // Update data using DocumentProperties. | 396 // Update data using DocumentProperties. |
| 386 if (DocumentProperties(NULL, printer, device_name_wide, dev_mode, dev_mode, | 397 if (DocumentProperties(NULL, printer, device_name_wide, dev_mode, dev_mode, |
| 387 DM_IN_BUFFER | DM_OUT_BUFFER) != IDOK) { | 398 DM_IN_BUFFER | DM_OUT_BUFFER) != IDOK) { |
| 388 ClosePrinter(printer); | 399 ClosePrinter(printer); |
| 389 return OnError(); | 400 return OnError(); |
| 390 } | 401 } |
| 391 | 402 |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 756 if (buf_size) { | 767 if (buf_size) { |
| 757 buffer->reset(new uint8[buf_size]); | 768 buffer->reset(new uint8[buf_size]); |
| 758 memset(buffer->get(), 0, buf_size); | 769 memset(buffer->get(), 0, buf_size); |
| 759 if (!GetPrinter(printer, level, buffer->get(), buf_size, &buf_size)) { | 770 if (!GetPrinter(printer, level, buffer->get(), buf_size, &buf_size)) { |
| 760 buffer->reset(); | 771 buffer->reset(); |
| 761 } | 772 } |
| 762 } | 773 } |
| 763 } | 774 } |
| 764 | 775 |
| 765 } // namespace printing | 776 } // namespace printing |
| OLD | NEW |