Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Unified Diff: printing/print_settings.cc

Issue 8201027: Move margin processing code to the browser process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix issue that turned up on Windows Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/print_settings.cc
diff --git a/printing/print_settings.cc b/printing/print_settings.cc
index 06aac453d089ab1fb0936aeb6fa1370f414b0a76..0e1a74304a965d5a9c7501eee06d0290c3b0c602 100644
--- a/printing/print_settings.cc
+++ b/printing/print_settings.cc
@@ -5,6 +5,7 @@
#include "printing/print_settings.h"
#include "base/atomic_sequence_num.h"
+#include "base/logging.h"
#include "printing/print_job_constants.h"
#include "printing/units.h"
@@ -114,7 +115,7 @@ PrintSettings::PrintSettings()
max_shrink(2.0),
desired_dpi(72),
selection_only(false),
- use_overlays(true),
+ margin_type(DEFAULT_MARGINS),
display_header_footer(false),
dpi_(0),
landscape_(false),
@@ -146,34 +147,67 @@ void PrintSettings::SetPrinterPrintableArea(
gfx::Size const& physical_size_device_units,
gfx::Rect const& printable_area_device_units,
int units_per_inch) {
-
int header_footer_text_height = 0;
- int margin_printer_units = 0;
- if (use_overlays) {
+ if (display_header_footer) {
// Hard-code text_height = 0.5cm = ~1/5 of inch.
header_footer_text_height = ConvertUnit(kSettingHeaderFooterInterstice,
kPointsPerInch, units_per_inch);
- // Default margins 1.0cm = ~2/5 of an inch.
- margin_printer_units = ConvertUnit(1000, kHundrethsMMPerInch,
- units_per_inch);
}
- // Start by setting the user configuration
page_setup_device_units_.Init(physical_size_device_units,
printable_area_device_units,
header_footer_text_height);
-
- // Apply default margins (not user configurable just yet).
- // Since the font height is half the margin we put the header and footers at
- // the font height from the margins.
PageMargins margins;
margins.header = header_footer_text_height;
margins.footer = header_footer_text_height;
- margins.left = margin_printer_units;
- margins.top = margin_printer_units;
- margins.right = margin_printer_units;
- margins.bottom = margin_printer_units;
- page_setup_device_units_.SetRequestedMargins(margins);
+ switch (margin_type) {
+ case DEFAULT_MARGINS: {
+ // Default margins 1.0cm = ~2/5 of an inch.
+ int margin_printer_units = ConvertUnit(1000, kHundrethsMMPerInch,
+ units_per_inch);
+ margins.top = margin_printer_units;
+ margins.bottom = margin_printer_units;
+ margins.left = margin_printer_units;
+ margins.right = margin_printer_units;
+ break;
+ }
+ case NO_MARGINS:
+ case PRINTABLE_AREA_MARGINS: {
+ margins.top = 0;
+ margins.bottom = 0;
+ margins.left = 0;
+ margins.right = 0;
+ break;
+ }
+ case CUSTOM_MARGINS: {
+ margins.top = ConvertUnitDouble(custom_margins_in_points_.top,
+ printing::kPointsPerInch,
+ units_per_inch);
+ margins.bottom = ConvertUnitDouble(custom_margins_in_points_.bottom,
+ printing::kPointsPerInch,
+ units_per_inch);
+ margins.left = ConvertUnitDouble(custom_margins_in_points_.left,
+ printing::kPointsPerInch,
+ units_per_inch);
+ margins.right = ConvertUnitDouble(custom_margins_in_points_.right,
+ printing::kPointsPerInch,
+ units_per_inch);
+ break;
+ }
+ default: {
+ NOTREACHED();
+ }
+ }
+
+ if (margin_type == DEFAULT_MARGINS || margin_type == PRINTABLE_AREA_MARGINS)
+ page_setup_device_units_.SetRequestedMargins(margins);
+ else
+ page_setup_device_units_.ForceRequestedMargins(margins);
Lei Zhang 2011/10/15 03:42:19 why does custom margins get to go outside of the p
vandebo (ex-Chrome) 2011/10/15 20:52:08 If the user wants to set margins to a specific val
+}
+
+void PrintSettings::SetCustomMargins(const PageMargins& margins_in_points) {
+ custom_margins_in_points_ = margins_in_points;
+ margin_type = CUSTOM_MARGINS;
}
bool PrintSettings::Equals(const PrintSettings& rhs) const {

Powered by Google App Engine
This is Rietveld 408576698