diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-26 17:57:52 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-26 17:57:52 +0000 |
commit | 4993f34cdf20cf9e1124656164e2c647efba6989 (patch) | |
tree | 272b55c8054c6a79444efafe55ad2311e89fa5dd /printing/print_settings_initializer_win.cc | |
parent | caf706f870d1d9d576277110ab1df022b2756203 (diff) | |
download | chromium_src-4993f34cdf20cf9e1124656164e2c647efba6989.zip chromium_src-4993f34cdf20cf9e1124656164e2c647efba6989.tar.gz chromium_src-4993f34cdf20cf9e1124656164e2c647efba6989.tar.bz2 |
Printing: Refactor PrintSettings::Init into a PrintSettingsFactory class
per-platform.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/4040001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63907 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/print_settings_initializer_win.cc')
-rw-r--r-- | printing/print_settings_initializer_win.cc | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/printing/print_settings_initializer_win.cc b/printing/print_settings_initializer_win.cc new file mode 100644 index 0000000..f840f4d --- /dev/null +++ b/printing/print_settings_initializer_win.cc @@ -0,0 +1,54 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "printing/print_settings_initializer_win.h" + +#include <windows.h> + +#include "printing/print_settings.h" + +namespace printing { + +// static +void PrintSettingsInitializerWin::InitPrintSettings( + HDC hdc, + const DEVMODE& dev_mode, + const PageRanges& new_ranges, + const std::wstring& new_device_name, + bool print_selection_only, + PrintSettings* print_settings) { + DCHECK(hdc); + DCHECK(print_settings); + + print_settings->set_printer_name(dev_mode.dmDeviceName); + print_settings->set_device_name(new_device_name); + print_settings->ranges = new_ranges; + print_settings->set_landscape(dev_mode.dmOrientation == DMORIENT_LANDSCAPE); + print_settings->selection_only = print_selection_only; + + int dpi = GetDeviceCaps(hdc, LOGPIXELSX); + print_settings->set_dpi(dpi); + // No printer device is known to advertise different dpi in X and Y axis; even + // the fax device using the 200x100 dpi setting. It's ought to break so many + // applications that it's not even needed to care about. WebKit doesn't + // support different dpi settings in X and Y axis. + DCHECK_EQ(dpi, GetDeviceCaps(hdc, LOGPIXELSY)); + + DCHECK_EQ(GetDeviceCaps(hdc, SCALINGFACTORX), 0); + DCHECK_EQ(GetDeviceCaps(hdc, SCALINGFACTORY), 0); + + // Initialize page_setup_device_units_. + gfx::Size physical_size_device_units(GetDeviceCaps(hdc, PHYSICALWIDTH), + GetDeviceCaps(hdc, PHYSICALHEIGHT)); + gfx::Rect printable_area_device_units(GetDeviceCaps(hdc, PHYSICALOFFSETX), + GetDeviceCaps(hdc, PHYSICALOFFSETY), + GetDeviceCaps(hdc, HORZRES), + GetDeviceCaps(hdc, VERTRES)); + + print_settings->SetPrinterPrintableArea(physical_size_device_units, + printable_area_device_units, + dpi); +} + +} // namespace printing |