| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 // See MSDN documentation regarding DocumentProperties. | 315 // See MSDN documentation regarding DocumentProperties. |
| 316 scoped_ptr<DEVMODE, base::FreeDeleter> scoped_dev_mode = | 316 scoped_ptr<DEVMODE, base::FreeDeleter> scoped_dev_mode = |
| 317 CreateDevModeWithColor(printer, settings_.device_name(), | 317 CreateDevModeWithColor(printer, settings_.device_name(), |
| 318 settings_.color() != GRAY); | 318 settings_.color() != GRAY); |
| 319 if (!scoped_dev_mode) | 319 if (!scoped_dev_mode) |
| 320 return OnError(); | 320 return OnError(); |
| 321 | 321 |
| 322 { | 322 { |
| 323 DEVMODE* dev_mode = scoped_dev_mode.get(); | 323 DEVMODE* dev_mode = scoped_dev_mode.get(); |
| 324 dev_mode->dmCopies = std::max(settings_.copies(), 1); | 324 dev_mode->dmCopies = std::max(settings_.copies(), 1); |
| 325 if (dev_mode->dmCopies > 1) { // do not change unless multiple copies | 325 if (dev_mode->dmCopies > 1) { // do not change unless multiple copies |
| 326 dev_mode->dmFields |= DM_COPIES; | 326 dev_mode->dmFields |= DM_COPIES; |
| 327 dev_mode->dmCollate = settings_.collate() ? DMCOLLATE_TRUE : | 327 dev_mode->dmCollate = settings_.collate() ? DMCOLLATE_TRUE : |
| 328 DMCOLLATE_FALSE; | 328 DMCOLLATE_FALSE; |
| 329 } | 329 } |
| 330 | 330 |
| 331 switch (settings_.duplex_mode()) { | 331 switch (settings_.duplex_mode()) { |
| 332 case LONG_EDGE: | 332 case LONG_EDGE: |
| 333 dev_mode->dmFields |= DM_DUPLEX; | 333 dev_mode->dmFields |= DM_DUPLEX; |
| 334 dev_mode->dmDuplex = DMDUP_VERTICAL; | 334 dev_mode->dmDuplex = DMDUP_VERTICAL; |
| 335 break; | 335 break; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 abort_printing_ = false; | 398 abort_printing_ = false; |
| 399 | 399 |
| 400 in_print_job_ = true; | 400 in_print_job_ = true; |
| 401 | 401 |
| 402 // Register the application's AbortProc function with GDI. | 402 // Register the application's AbortProc function with GDI. |
| 403 if (SP_ERROR == SetAbortProc(context_, &AbortProc)) | 403 if (SP_ERROR == SetAbortProc(context_, &AbortProc)) |
| 404 return OnError(); | 404 return OnError(); |
| 405 | 405 |
| 406 DCHECK(SimplifyDocumentTitle(document_name) == document_name); | 406 DCHECK(SimplifyDocumentTitle(document_name) == document_name); |
| 407 DOCINFO di = { sizeof(DOCINFO) }; | 407 DOCINFO di = { sizeof(DOCINFO) }; |
| 408 const std::wstring& document_name_wide = base::UTF16ToWide(document_name); | 408 di.lpszDocName = document_name.c_str(); |
| 409 di.lpszDocName = document_name_wide.c_str(); | |
| 410 | 409 |
| 411 // Is there a debug dump directory specified? If so, force to print to a file. | 410 // Is there a debug dump directory specified? If so, force to print to a file. |
| 412 base::FilePath debug_dump_path = PrintedDocument::debug_dump_path(); | 411 base::FilePath debug_dump_path = PrintedDocument::debug_dump_path(); |
| 413 if (!debug_dump_path.empty()) { | 412 if (!debug_dump_path.empty()) { |
| 414 // Create a filename. | 413 // Create a filename. |
| 415 std::wstring filename; | 414 std::wstring filename; |
| 416 Time now(Time::Now()); | 415 Time now(Time::Now()); |
| 417 filename = base::TimeFormatShortDateNumeric(now); | 416 filename = base::TimeFormatShortDateNumeric(now); |
| 418 filename += L"_"; | 417 filename += L"_"; |
| 419 filename += base::TimeFormatTimeOfDay(now); | 418 filename += base::TimeFormatTimeOfDay(now); |
| 420 filename += L"_"; | 419 filename += L"_"; |
| 421 filename += base::UTF16ToWide(document_name); | 420 filename += document_name; |
| 422 filename += L"_"; | 421 filename += L"_"; |
| 423 filename += L"buffer.prn"; | 422 filename += L"buffer.prn"; |
| 424 file_util::ReplaceIllegalCharactersInPath(&filename, '_'); | 423 file_util::ReplaceIllegalCharactersInPath(&filename, '_'); |
| 425 debug_dump_path = debug_dump_path.Append(filename); | 424 debug_dump_path = debug_dump_path.Append(filename); |
| 426 di.lpszOutput = debug_dump_path.value().c_str(); | 425 di.lpszOutput = debug_dump_path.value().c_str(); |
| 427 } | 426 } |
| 428 | 427 |
| 429 // No message loop running in unit tests. | 428 // No message loop running in unit tests. |
| 430 DCHECK(!base::MessageLoop::current() || | 429 DCHECK(!base::MessageLoop::current() || |
| 431 !base::MessageLoop::current()->NestableTasksAllowed()); | 430 !base::MessageLoop::current()->NestableTasksAllowed()); |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 | 711 |
| 713 if (dialog_options.hDevMode != NULL) | 712 if (dialog_options.hDevMode != NULL) |
| 714 GlobalFree(dialog_options.hDevMode); | 713 GlobalFree(dialog_options.hDevMode); |
| 715 if (dialog_options.hDevNames != NULL) | 714 if (dialog_options.hDevNames != NULL) |
| 716 GlobalFree(dialog_options.hDevNames); | 715 GlobalFree(dialog_options.hDevNames); |
| 717 | 716 |
| 718 return context_ ? OK : FAILED; | 717 return context_ ? OK : FAILED; |
| 719 } | 718 } |
| 720 | 719 |
| 721 } // namespace printing | 720 } // namespace printing |
| OLD | NEW |