| 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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 ResetSettings(); | 301 ResetSettings(); |
| 302 return FAILED; | 302 return FAILED; |
| 303 } | 303 } |
| 304 | 304 |
| 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 int 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 int duplex_mode; |
| 316 string16 device_name; | 316 string16 device_name; |
| 317 | 317 |
| 318 if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || | 318 if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || |
| 319 !job_settings.GetBoolean(kSettingCollate, &collate) || | 319 !job_settings.GetBoolean(kSettingCollate, &collate) || |
| 320 !job_settings.GetBoolean(kSettingColor, &color) || | 320 !job_settings.GetInteger(kSettingColor, &color) || |
| 321 !job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) || | 321 !job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) || |
| 322 !job_settings.GetInteger(kSettingDuplexMode, &duplex_mode) || | 322 !job_settings.GetInteger(kSettingDuplexMode, &duplex_mode) || |
| 323 !job_settings.GetInteger(kSettingCopies, &copies) || | 323 !job_settings.GetInteger(kSettingCopies, &copies) || |
| 324 !job_settings.GetString(kSettingDeviceName, &device_name)) { | 324 !job_settings.GetString(kSettingDeviceName, &device_name)) { |
| 325 return OnError(); | 325 return OnError(); |
| 326 } | 326 } |
| 327 | 327 |
| 328 bool print_to_cloud = job_settings.HasKey(printing::kSettingCloudPrintId); | 328 bool print_to_cloud = job_settings.HasKey(printing::kSettingCloudPrintId); |
| 329 | 329 |
| 330 if (print_to_pdf || print_to_cloud) { | 330 if (print_to_pdf || print_to_cloud) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 358 DM_OUT_BUFFER) == IDOK) { | 358 DM_OUT_BUFFER) == IDOK) { |
| 359 dev_mode = reinterpret_cast<PDEVMODE>(buffer.get()); | 359 dev_mode = reinterpret_cast<PDEVMODE>(buffer.get()); |
| 360 } | 360 } |
| 361 } | 361 } |
| 362 if (dev_mode == NULL) { | 362 if (dev_mode == NULL) { |
| 363 buffer.reset(); | 363 buffer.reset(); |
| 364 ClosePrinter(printer); | 364 ClosePrinter(printer); |
| 365 return OnError(); | 365 return OnError(); |
| 366 } | 366 } |
| 367 | 367 |
| 368 dev_mode->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME; | 368 if (color == printing::GRAY) |
| 369 dev_mode->dmColor = DMCOLOR_MONOCHROME; |
| 370 else |
| 371 dev_mode->dmColor = DMCOLOR_COLOR; |
| 372 |
| 369 dev_mode->dmCopies = std::max(copies, 1); | 373 dev_mode->dmCopies = std::max(copies, 1); |
| 370 if (dev_mode->dmCopies > 1) // do not change collate unless multiple copies | 374 if (dev_mode->dmCopies > 1) // do not change collate unless multiple copies |
| 371 dev_mode->dmCollate = collate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE; | 375 dev_mode->dmCollate = collate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE; |
| 372 switch (duplex_mode) { | 376 switch (duplex_mode) { |
| 373 case LONG_EDGE: | 377 case LONG_EDGE: |
| 374 dev_mode->dmDuplex = DMDUP_VERTICAL; | 378 dev_mode->dmDuplex = DMDUP_VERTICAL; |
| 375 break; | 379 break; |
| 376 case SHORT_EDGE: | 380 case SHORT_EDGE: |
| 377 dev_mode->dmDuplex = DMDUP_HORIZONTAL; | 381 dev_mode->dmDuplex = DMDUP_HORIZONTAL; |
| 378 break; | 382 break; |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 if (buf_size) { | 760 if (buf_size) { |
| 757 buffer->reset(new uint8[buf_size]); | 761 buffer->reset(new uint8[buf_size]); |
| 758 memset(buffer->get(), 0, buf_size); | 762 memset(buffer->get(), 0, buf_size); |
| 759 if (!GetPrinter(printer, level, buffer->get(), buf_size, &buf_size)) { | 763 if (!GetPrinter(printer, level, buffer->get(), buf_size, &buf_size)) { |
| 760 buffer->reset(); | 764 buffer->reset(); |
| 761 } | 765 } |
| 762 } | 766 } |
| 763 } | 767 } |
| 764 | 768 |
| 765 } // namespace printing | 769 } // namespace printing |
| OLD | NEW |