diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-21 19:18:05 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-21 19:18:05 +0000 |
commit | b719142cac87c33ec2d6e99a238b5ecd48f87d68 (patch) | |
tree | cb073e88f553db6c3acab1c18c1f9e31793a80b7 /printing/print_settings.cc | |
parent | b119a1e6bdd11040f93245e0b71d654a4883b40a (diff) | |
download | chromium_src-b719142cac87c33ec2d6e99a238b5ecd48f87d68.zip chromium_src-b719142cac87c33ec2d6e99a238b5ecd48f87d68.tar.gz chromium_src-b719142cac87c33ec2d6e99a238b5ecd48f87d68.tar.bz2 |
Printing: Implement PrintingContext::UseDefaultSettings for Linux/Cairo.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/3389005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/print_settings.cc')
-rw-r--r-- | printing/print_settings.cc | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/printing/print_settings.cc b/printing/print_settings.cc index bfc7868..98a9ebf 100644 --- a/printing/print_settings.cc +++ b/printing/print_settings.cc @@ -4,9 +4,16 @@ #include "printing/print_settings.h" +// TODO(jhawkins): Move platform-specific implementations to their own files. +#if defined(USE_X11) +#include <gtk/gtk.h> +#endif // defined(USE_X11) + #include "base/atomic_sequence_num.h" #include "base/logging.h" +#include "base/string_piece.h" #include "base/sys_string_conversions.h" +#include "base/utf_string_conversions.h" #include "printing/units.h" namespace printing { @@ -37,7 +44,7 @@ void PrintSettings::Clear() { landscape_ = false; } -#ifdef WIN32 +#if defined(OS_WIN) void PrintSettings::Init(HDC hdc, const DEVMODE& dev_mode, const PageRanges& new_ranges, @@ -119,6 +126,38 @@ void PrintSettings::Init(PMPrinter printer, PMPageFormat page_format, printable_area_device_units, 72); } +#elif defined(OS_LINUX) +void PrintSettings::Init(GtkPrintSettings* settings, + GtkPageSetup* page_setup, + const PageRanges& new_ranges, + bool print_selection_only) { + // TODO(jhawkins): |printer_name_| and |device_name_| should be string16. + base::StringPiece name( + reinterpret_cast<const char*>(gtk_print_settings_get_printer(settings))); + printer_name_ = UTF8ToWide(name); + device_name_ = printer_name_; + ranges = new_ranges; + + GtkPageOrientation orientation = gtk_print_settings_get_orientation(settings); + landscape_ = orientation == GTK_PAGE_ORIENTATION_LANDSCAPE; + selection_only = print_selection_only; + + dpi_ = gtk_print_settings_get_resolution(settings); + + // Initialize page_setup_device_units_. + gfx::Size physical_size_device_units( + gtk_page_setup_get_paper_width(page_setup, GTK_UNIT_INCH) * dpi_, + gtk_page_setup_get_paper_height(page_setup, GTK_UNIT_INCH) * dpi_); + gfx::Rect printable_area_device_units( + gtk_page_setup_get_left_margin(page_setup, GTK_UNIT_INCH) * dpi_, + gtk_page_setup_get_top_margin(page_setup, GTK_UNIT_INCH) * dpi_, + gtk_page_setup_get_page_width(page_setup, GTK_UNIT_INCH) * dpi_, + gtk_page_setup_get_page_height(page_setup, GTK_UNIT_INCH) * dpi_); + + SetPrinterPrintableArea(physical_size_device_units, + printable_area_device_units, + dpi_); +} #endif void PrintSettings::SetPrinterPrintableArea( |