| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/service/cloud_print/cdd_conversion_win.h" | 5 #include "chrome/service/cloud_print/cdd_conversion_win.h" |
| 6 | 6 |
| 7 #include "components/cloud_devices/printer_description.h" | 7 #include "components/cloud_devices/printer_description.h" |
| 8 #include "printing/backend/print_backend.h" | 8 #include "printing/backend/print_backend.h" |
| 9 #include "printing/backend/win_helper.h" | 9 #include "printing/backend/win_helper.h" |
| 10 | 10 |
| 11 namespace cloud_print { | 11 namespace cloud_print { |
| 12 | 12 |
| 13 bool IsValidCjt(const std::string& print_ticket_data) { | 13 bool IsValidCjt(const std::string& print_ticket_data) { |
| 14 cloud_devices::CloudDeviceDescription description; | 14 cloud_devices::CloudDeviceDescription description; |
| 15 return description.InitFromString(print_ticket_data); | 15 return description.InitFromString(print_ticket_data); |
| 16 } | 16 } |
| 17 | 17 |
| 18 scoped_ptr<DEVMODE[]> CjtToDevMode(const base::string16& printer_name, | 18 scoped_ptr<DEVMODE, base::FreeDeleter> CjtToDevMode( |
| 19 const std::string& print_ticket) { | 19 const base::string16& printer_name, |
| 20 using namespace cloud_devices::printer; | 20 const std::string& print_ticket) { |
| 21 scoped_ptr<DEVMODE, base::FreeDeleter> dev_mode; |
| 22 |
| 21 cloud_devices::CloudDeviceDescription description; | 23 cloud_devices::CloudDeviceDescription description; |
| 22 if (!description.InitFromString(print_ticket)) | 24 if (!description.InitFromString(print_ticket)) |
| 23 return scoped_ptr<DEVMODE[]>(); | 25 return dev_mode.Pass(); |
| 24 | 26 |
| 27 using namespace cloud_devices::printer; |
| 25 printing::ScopedPrinterHandle printer; | 28 printing::ScopedPrinterHandle printer; |
| 26 if (!printer.OpenPrinter(printer_name.c_str())) | 29 if (!printer.OpenPrinter(printer_name.c_str())) |
| 27 return scoped_ptr<DEVMODE[]>(); | 30 return dev_mode.Pass(); |
| 28 | 31 |
| 29 scoped_ptr<DEVMODE[]> scoped_dev_mode; | |
| 30 { | 32 { |
| 31 ColorTicketItem color; | 33 ColorTicketItem color; |
| 32 if (color.LoadFrom(description)) { | 34 if (color.LoadFrom(description)) { |
| 33 bool is_color = color.value().type == STANDARD_COLOR; | 35 bool is_color = color.value().type == STANDARD_COLOR; |
| 34 scoped_dev_mode = CreateDevModeWithColor(printer, printer_name, is_color); | 36 dev_mode = CreateDevModeWithColor(printer, printer_name, is_color); |
| 35 } else { | 37 } else { |
| 36 scoped_dev_mode = printing::CreateDevMode(printer, NULL); | 38 dev_mode = printing::CreateDevMode(printer, NULL); |
| 37 } | 39 } |
| 38 } | 40 } |
| 39 | 41 |
| 40 if (!scoped_dev_mode) | 42 if (!dev_mode) |
| 41 return scoped_ptr<DEVMODE[]>(); | 43 return dev_mode.Pass(); |
| 42 | |
| 43 DEVMODE* dev_mode = scoped_dev_mode.get(); | |
| 44 | 44 |
| 45 ColorTicketItem color; | 45 ColorTicketItem color; |
| 46 DuplexTicketItem duplex; | 46 DuplexTicketItem duplex; |
| 47 OrientationTicketItem orientation; | 47 OrientationTicketItem orientation; |
| 48 MarginsTicketItem margins; | 48 MarginsTicketItem margins; |
| 49 DpiTicketItem dpi; | 49 DpiTicketItem dpi; |
| 50 FitToPageTicketItem fit_to_page; | 50 FitToPageTicketItem fit_to_page; |
| 51 MediaTicketItem media; | 51 MediaTicketItem media; |
| 52 CopiesTicketItem copies; | 52 CopiesTicketItem copies; |
| 53 PageRangeTicketItem page_range; | 53 PageRangeTicketItem page_range; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 if (width > 0) { | 115 if (width > 0) { |
| 116 dev_mode->dmFields |= DM_PAPERWIDTH; | 116 dev_mode->dmFields |= DM_PAPERWIDTH; |
| 117 dev_mode->dmPaperWidth = width; | 117 dev_mode->dmPaperWidth = width; |
| 118 } | 118 } |
| 119 if (height > 0) { | 119 if (height > 0) { |
| 120 dev_mode->dmFields |= DM_PAPERLENGTH; | 120 dev_mode->dmFields |= DM_PAPERLENGTH; |
| 121 dev_mode->dmPaperLength = height; | 121 dev_mode->dmPaperLength = height; |
| 122 } | 122 } |
| 123 } | 123 } |
| 124 | 124 |
| 125 return printing::CreateDevMode(printer, dev_mode); | 125 return printing::CreateDevMode(printer, dev_mode.get()); |
| 126 } | 126 } |
| 127 | 127 |
| 128 std::string CapabilitiesToCdd( | 128 std::string CapabilitiesToCdd( |
| 129 const printing::PrinterSemanticCapsAndDefaults& semantic_info) { | 129 const printing::PrinterSemanticCapsAndDefaults& semantic_info) { |
| 130 using namespace cloud_devices::printer; | 130 using namespace cloud_devices::printer; |
| 131 cloud_devices::CloudDeviceDescription description; | 131 cloud_devices::CloudDeviceDescription description; |
| 132 | 132 |
| 133 ContentTypesCapability content_types; | 133 ContentTypesCapability content_types; |
| 134 content_types.AddOption("application/pdf"); | 134 content_types.AddOption("application/pdf"); |
| 135 content_types.SaveTo(&description); | 135 content_types.SaveTo(&description); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 OrientationCapability orientation; | 226 OrientationCapability orientation; |
| 227 orientation.AddDefaultOption(PORTRAIT, true); | 227 orientation.AddDefaultOption(PORTRAIT, true); |
| 228 orientation.AddOption(LANDSCAPE); | 228 orientation.AddOption(LANDSCAPE); |
| 229 orientation.AddOption(AUTO_ORIENTATION); | 229 orientation.AddOption(AUTO_ORIENTATION); |
| 230 orientation.SaveTo(&description); | 230 orientation.SaveTo(&description); |
| 231 | 231 |
| 232 return description.ToString(); | 232 return description.ToString(); |
| 233 } | 233 } |
| 234 | 234 |
| 235 } // namespace cloud_print | 235 } // namespace cloud_print |
| OLD | NEW |