Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: printing/backend/print_backend_win.cc

Issue 170013002: Removed unnecessary comparison checking bits in DEVMODE::dmFields. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | printing/backend/win_helper.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/backend/print_backend.h" 5 #include "printing/backend/print_backend.h"
6 6
7 #include <objidl.h> 7 #include <objidl.h>
8 #include <winspool.h> 8 #include <winspool.h>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 tmp_name = tmp_name.c_str(); 89 tmp_name = tmp_name.c_str();
90 paper.name = base::WideToUTF8(tmp_name); 90 paper.name = base::WideToUTF8(tmp_name);
91 } 91 }
92 caps->papers.push_back(paper); 92 caps->papers.push_back(paper);
93 } 93 }
94 94
95 if (devmode) { 95 if (devmode) {
96 short default_id = 0; 96 short default_id = 0;
97 gfx::Size default_size; 97 gfx::Size default_size;
98 98
99 if ((devmode->dmFields & DM_PAPERSIZE) == DM_PAPERSIZE) 99 if (devmode->dmFields & DM_PAPERSIZE)
100 default_id = devmode->dmPaperSize; 100 default_id = devmode->dmPaperSize;
101 if ((devmode->dmFields & DM_PAPERWIDTH) == DM_PAPERWIDTH) 101 if (devmode->dmFields & DM_PAPERWIDTH)
102 default_size.set_width(devmode->dmPaperWidth * kToUm); 102 default_size.set_width(devmode->dmPaperWidth * kToUm);
103 if ((devmode->dmFields & DM_PAPERLENGTH) == DM_PAPERLENGTH) 103 if (devmode->dmFields & DM_PAPERLENGTH)
104 default_size.set_height(devmode->dmPaperLength * kToUm); 104 default_size.set_height(devmode->dmPaperLength * kToUm);
105 105
106 if (default_size.IsEmpty()) { 106 if (default_size.IsEmpty()) {
107 for (size_t i = 0; i < ids.size(); ++i) { 107 for (size_t i = 0; i < ids.size(); ++i) {
108 if (ids[i] == default_id) { 108 if (ids[i] == default_id) {
109 PrinterSemanticCapsAndDefaults::Paper paper; 109 PrinterSemanticCapsAndDefaults::Paper paper;
110 paper.size_um.SetSize(sizes[i].x * kToUm, sizes[i].y * kToUm); 110 paper.size_um.SetSize(sizes[i].x * kToUm, sizes[i].y * kToUm);
111 if (!names.empty()) { 111 if (!names.empty()) {
112 const wchar_t* name_start = names[i].chars; 112 const wchar_t* name_start = names[i].chars;
113 base::string16 tmp_name(name_start, kMaxPaperName); 113 base::string16 tmp_name(name_start, kMaxPaperName);
(...skipping 15 matching lines...) Expand all
129 const wchar_t* port, 129 const wchar_t* port,
130 const DEVMODE* devmode, 130 const DEVMODE* devmode,
131 PrinterSemanticCapsAndDefaults* caps) { 131 PrinterSemanticCapsAndDefaults* caps) {
132 std::vector<POINT> dpis; 132 std::vector<POINT> dpis;
133 GetDeviceCapabilityArray(printer, port, DC_ENUMRESOLUTIONS, &dpis); 133 GetDeviceCapabilityArray(printer, port, DC_ENUMRESOLUTIONS, &dpis);
134 134
135 for (size_t i = 0; i < dpis.size() ; ++i) 135 for (size_t i = 0; i < dpis.size() ; ++i)
136 caps->dpis.push_back(gfx::Size(dpis[i].x, dpis[i].y)); 136 caps->dpis.push_back(gfx::Size(dpis[i].x, dpis[i].y));
137 137
138 if (devmode) { 138 if (devmode) {
139 if ((devmode->dmFields & DM_PRINTQUALITY) == DM_PRINTQUALITY && 139 if ((devmode->dmFields & DM_PRINTQUALITY) && devmode->dmPrintQuality > 0) {
140 devmode->dmPrintQuality > 0) {
141 caps->default_dpi.SetSize(devmode->dmPrintQuality, 140 caps->default_dpi.SetSize(devmode->dmPrintQuality,
142 devmode->dmPrintQuality); 141 devmode->dmPrintQuality);
143 if ((devmode->dmFields & DM_YRESOLUTION) == DM_PRINTQUALITY) { 142 if (devmode->dmFields & DM_YRESOLUTION) {
144 caps->default_dpi.set_height(devmode->dmYResolution); 143 caps->default_dpi.set_height(devmode->dmYResolution);
145 } 144 }
146 } 145 }
147 } 146 }
148 } 147 }
149 148
150 } // namespace 149 } // namespace
151 150
152 class PrintBackendWin : public PrintBackend { 151 class PrintBackendWin : public PrintBackend {
153 public: 152 public:
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 PrinterInfo5 info_5; 221 PrinterInfo5 info_5;
223 if (!info_5.Init(printer_handle)) 222 if (!info_5.Init(printer_handle))
224 return false; 223 return false;
225 const wchar_t* name = info_5.get()->pPrinterName; 224 const wchar_t* name = info_5.get()->pPrinterName;
226 const wchar_t* port = info_5.get()->pPortName; 225 const wchar_t* port = info_5.get()->pPortName;
227 DCHECK_EQ(name, base::UTF8ToUTF16(printer_name)); 226 DCHECK_EQ(name, base::UTF8ToUTF16(printer_name));
228 227
229 PrinterSemanticCapsAndDefaults caps; 228 PrinterSemanticCapsAndDefaults caps;
230 UserDefaultDevMode user_settings; 229 UserDefaultDevMode user_settings;
231 if (user_settings.Init(printer_handle)) { 230 if (user_settings.Init(printer_handle)) {
232 if ((user_settings.get()->dmFields & DM_COLOR) == DM_COLOR) 231 if (user_settings.get()->dmFields & DM_COLOR)
233 caps.color_default = (user_settings.get()->dmColor == DMCOLOR_COLOR); 232 caps.color_default = (user_settings.get()->dmColor == DMCOLOR_COLOR);
234 233
235 if ((user_settings.get()->dmFields & DM_DUPLEX) == DM_DUPLEX) { 234 if (user_settings.get()->dmFields & DM_DUPLEX) {
236 switch (user_settings.get()->dmDuplex) { 235 switch (user_settings.get()->dmDuplex) {
237 case DMDUP_SIMPLEX: 236 case DMDUP_SIMPLEX:
238 caps.duplex_default = SIMPLEX; 237 caps.duplex_default = SIMPLEX;
239 break; 238 break;
240 case DMDUP_VERTICAL: 239 case DMDUP_VERTICAL:
241 caps.duplex_default = LONG_EDGE; 240 caps.duplex_default = LONG_EDGE;
242 break; 241 break;
243 case DMDUP_HORIZONTAL: 242 case DMDUP_HORIZONTAL:
244 caps.duplex_default = SHORT_EDGE; 243 caps.duplex_default = SHORT_EDGE;
245 break; 244 break;
246 default: 245 default:
247 NOTREACHED(); 246 NOTREACHED();
248 } 247 }
249 } 248 }
250 249
251 if ((user_settings.get()->dmFields & DM_COLLATE) == DM_COLLATE) 250 if (user_settings.get()->dmFields & DM_COLLATE)
252 caps.collate_default = (user_settings.get()->dmCollate == DMCOLLATE_TRUE); 251 caps.collate_default = (user_settings.get()->dmCollate == DMCOLLATE_TRUE);
253 } else { 252 } else {
254 LOG(WARNING) << "Fallback to color/simplex mode."; 253 LOG(WARNING) << "Fallback to color/simplex mode.";
255 caps.color_default = caps.color_changeable; 254 caps.color_default = caps.color_changeable;
256 caps.duplex_default = SIMPLEX; 255 caps.duplex_default = SIMPLEX;
257 } 256 }
258 257
259 // Get printer capabilities. For more info see here: 258 // Get printer capabilities. For more info see here:
260 // http://msdn.microsoft.com/en-us/library/windows/desktop/dd183552(v=vs.85).a spx 259 // http://msdn.microsoft.com/en-us/library/windows/desktop/dd183552(v=vs.85).a spx
261 caps.color_changeable = 260 caps.color_changeable =
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 ScopedPrinterHandle printer_handle; 353 ScopedPrinterHandle printer_handle;
355 return printer_handle.OpenPrinter(base::UTF8ToWide(printer_name).c_str()); 354 return printer_handle.OpenPrinter(base::UTF8ToWide(printer_name).c_str());
356 } 355 }
357 356
358 scoped_refptr<PrintBackend> PrintBackend::CreateInstance( 357 scoped_refptr<PrintBackend> PrintBackend::CreateInstance(
359 const base::DictionaryValue* print_backend_settings) { 358 const base::DictionaryValue* print_backend_settings) {
360 return new PrintBackendWin; 359 return new PrintBackendWin;
361 } 360 }
362 361
363 } // namespace printing 362 } // namespace printing
OLDNEW
« no previous file with comments | « no previous file | printing/backend/win_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698