summaryrefslogtreecommitdiffstats
path: root/printing/print_settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'printing/print_settings.h')
-rw-r--r--printing/print_settings.h107
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_