diff options
author | sverrir@google.com <sverrir@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-07 21:31:39 +0000 |
---|---|---|
committer | sverrir@google.com <sverrir@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-07 21:31:39 +0000 |
commit | 8ff1d42631e79e842669dc3051d91ed7db80f1dc (patch) | |
tree | 55c1987549e982bfbf60a33fad3b60b5113d7864 /printing/print_settings.h | |
parent | 395f9295b3e370746846dbe6073a0d43ab7e4af5 (diff) | |
download | chromium_src-8ff1d42631e79e842669dc3051d91ed7db80f1dc.zip chromium_src-8ff1d42631e79e842669dc3051d91ed7db80f1dc.tar.gz chromium_src-8ff1d42631e79e842669dc3051d91ed7db80f1dc.tar.bz2 |
Move printing related stuff to the root printing project from the browser project. This simplifies further refactoring and eases understanding of the printing part of Chrome.
Also renamed win_printing_context to printing_context_win (correct naming convention) and added stub implementations for _linux and mac.
Now all but one file is compiling on all platforms.
TEST=none (no functional change).
BUG=none
Review URL: http://codereview.chromium.org/149212
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20086 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/print_settings.h')
-rw-r--r-- | printing/print_settings.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/printing/print_settings.h b/printing/print_settings.h new file mode 100644 index 0000000..d1929c3 --- /dev/null +++ b/printing/print_settings.h @@ -0,0 +1,107 @@ +// Copyright (c) 2006-2008 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. + +#ifndef PRINTING_PRINT_SETTINGS_H_ +#define PRINTING_PRINT_SETTINGS_H_ + +#include "base/gfx/rect.h" +#include "printing/page_overlays.h" +#include "printing/page_range.h" +#include "printing/page_setup.h" + +typedef struct HDC__* HDC; +typedef struct _devicemodeW DEVMODE; + +namespace printing { + +// OS-independent print settings. +class PrintSettings { + public: + PrintSettings(); + + // Reinitialize the settings to the default values. + void Clear(); + +#ifdef WIN32 + // Reads the settings from the selected device context. Calculates derived + // values like printable_area_. + void Init(HDC hdc, + const DEVMODE& dev_mode, + const PageRanges& new_ranges, + const std::wstring& new_device_name, + bool selection_only); +#endif + + // Set printer printable area in in pixels. + void SetPrinterPrintableArea(gfx::Size const& physical_size_pixels, + gfx::Rect const& printable_area_pixels); + + // Equality operator. + // NOTE: printer_name is NOT tested for equality since it doesn't affect the + // output. + bool Equals(const PrintSettings& rhs) const; + + const std::wstring& printer_name() const { return printer_name_; } + void set_device_name(const std::wstring& device_name) { + device_name_ = device_name; + } + const std::wstring& device_name() const { return device_name_; } + int dpi() const { return dpi_; } + const PageSetup& page_setup_pixels() const { return page_setup_pixels_; } + + // Multi-page printing. Each PageRange describes a from-to page combination. + // This permits printing selected pages only. + PageRanges ranges; + + // By imaging to a width a little wider than the available pixels, thin pages + // will be scaled down a little, matching the way they print in IE and Camino. + // This lets them use fewer sheets than they would otherwise, which is + // presumably why other browsers do this. Wide pages will be scaled down more + // than this. + double min_shrink; + + // This number determines how small we are willing to reduce the page content + // in order to accommodate the widest line. If the page would have to be + // reduced smaller to make the widest line fit, we just clip instead (this + // behavior matches MacIE and Mozilla, at least) + double max_shrink; + + // Desired visible dots per inch rendering for output. Printing should be + // scaled to ScreenDpi/dpix*desired_dpi. + int desired_dpi; + + // The various overlays (headers and footers). + PageOverlays overlays; + + // Indicates if the user only wants to print the current selection. + bool selection_only; + + // Cookie generator. It is used to initialize PrintedDocument with its + // associated PrintSettings, to be sure that each generated PrintedPage is + // correctly associated with its corresponding PrintedDocument. + static int NewCookie(); + + private: + ////////////////////////////////////////////////////////////////////////////// + // Settings that can't be changed without side-effects. + + // Printer name as shown to the user. + std::wstring printer_name_; + + // Printer device name as opened by the OS. + std::wstring device_name_; + + // Page setup in pixel units, dpi adjusted. + PageSetup page_setup_pixels_; + + // Printer's device effective dots per inch in both axis. + int dpi_; + + // Is the orientation landscape or portrait. + bool landscape_; +}; + +} // namespace printing + +#endif // PRINTING_PRINT_SETTINGS_H_ |