summaryrefslogtreecommitdiffstats
path: root/printing/print_settings.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-21 19:18:05 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-21 19:18:05 +0000
commitb719142cac87c33ec2d6e99a238b5ecd48f87d68 (patch)
treecb073e88f553db6c3acab1c18c1f9e31793a80b7 /printing/print_settings.cc
parentb119a1e6bdd11040f93245e0b71d654a4883b40a (diff)
downloadchromium_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.cc41
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(