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

Side by Side 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: Address nits 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « printing/print_settings.h ('k') | printing/printing_context.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "printing/print_settings.h" 5 #include "printing/print_settings.h"
6 6
7 #include "base/atomic_sequence_num.h" 7 #include "base/atomic_sequence_num.h"
8 #include "base/logging.h"
8 #include "printing/print_job_constants.h" 9 #include "printing/print_job_constants.h"
9 #include "printing/units.h" 10 #include "printing/units.h"
10 11
11 namespace printing { 12 namespace printing {
12 13
13 #if defined (USE_CUPS) 14 #if defined (USE_CUPS)
14 void GetColorModelForMode( 15 void GetColorModelForMode(
15 int color_mode, std::string* color_setting_name, std::string* color_value) { 16 int color_mode, std::string* color_setting_name, std::string* color_value) {
16 #if defined(OS_MACOSX) 17 #if defined(OS_MACOSX)
17 const char kCUPSColorMode[] = "ColorMode"; 18 const char kCUPSColorMode[] = "ColorMode";
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 } 108 }
108 109
109 // Global SequenceNumber used for generating unique cookie values. 110 // Global SequenceNumber used for generating unique cookie values.
110 static base::AtomicSequenceNumber cookie_seq(base::LINKER_INITIALIZED); 111 static base::AtomicSequenceNumber cookie_seq(base::LINKER_INITIALIZED);
111 112
112 PrintSettings::PrintSettings() 113 PrintSettings::PrintSettings()
113 : min_shrink(1.25), 114 : min_shrink(1.25),
114 max_shrink(2.0), 115 max_shrink(2.0),
115 desired_dpi(72), 116 desired_dpi(72),
116 selection_only(false), 117 selection_only(false),
117 use_overlays(true), 118 margin_type(DEFAULT_MARGINS),
118 display_header_footer(false), 119 display_header_footer(false),
119 dpi_(0), 120 dpi_(0),
120 landscape_(false), 121 landscape_(false),
121 supports_alpha_blend_(true) { 122 supports_alpha_blend_(true) {
122 } 123 }
123 124
124 PrintSettings::~PrintSettings() { 125 PrintSettings::~PrintSettings() {
125 } 126 }
126 127
127 void PrintSettings::Clear() { 128 void PrintSettings::Clear() {
(...skipping 11 matching lines...) Expand all
139 page_setup_device_units_.Clear(); 140 page_setup_device_units_.Clear();
140 dpi_ = 0; 141 dpi_ = 0;
141 landscape_ = false; 142 landscape_ = false;
142 supports_alpha_blend_ = true; 143 supports_alpha_blend_ = true;
143 } 144 }
144 145
145 void PrintSettings::SetPrinterPrintableArea( 146 void PrintSettings::SetPrinterPrintableArea(
146 gfx::Size const& physical_size_device_units, 147 gfx::Size const& physical_size_device_units,
147 gfx::Rect const& printable_area_device_units, 148 gfx::Rect const& printable_area_device_units,
148 int units_per_inch) { 149 int units_per_inch) {
149
150 int header_footer_text_height = 0; 150 int header_footer_text_height = 0;
151 int margin_printer_units = 0; 151 if (display_header_footer) {
152 if (use_overlays) {
153 // Hard-code text_height = 0.5cm = ~1/5 of inch. 152 // Hard-code text_height = 0.5cm = ~1/5 of inch.
154 header_footer_text_height = ConvertUnit(kSettingHeaderFooterInterstice, 153 header_footer_text_height = ConvertUnit(kSettingHeaderFooterInterstice,
155 kPointsPerInch, units_per_inch); 154 kPointsPerInch, units_per_inch);
156 // Default margins 1.0cm = ~2/5 of an inch.
157 margin_printer_units = ConvertUnit(1000, kHundrethsMMPerInch,
158 units_per_inch);
159 } 155 }
160 // Start by setting the user configuration
161 page_setup_device_units_.Init(physical_size_device_units, 156 page_setup_device_units_.Init(physical_size_device_units,
162 printable_area_device_units, 157 printable_area_device_units,
163 header_footer_text_height); 158 header_footer_text_height);
164 159
165
166 // Apply default margins (not user configurable just yet).
167 // Since the font height is half the margin we put the header and footers at
168 // the font height from the margins.
169 PageMargins margins; 160 PageMargins margins;
170 margins.header = header_footer_text_height; 161 margins.header = header_footer_text_height;
171 margins.footer = header_footer_text_height; 162 margins.footer = header_footer_text_height;
172 margins.left = margin_printer_units; 163 switch (margin_type) {
173 margins.top = margin_printer_units; 164 case DEFAULT_MARGINS: {
174 margins.right = margin_printer_units; 165 // Default margins 1.0cm = ~2/5 of an inch.
175 margins.bottom = margin_printer_units; 166 int margin_printer_units = ConvertUnit(1000, kHundrethsMMPerInch,
176 page_setup_device_units_.SetRequestedMargins(margins); 167 units_per_inch);
168 margins.top = margin_printer_units;
169 margins.bottom = margin_printer_units;
170 margins.left = margin_printer_units;
171 margins.right = margin_printer_units;
172 break;
173 }
174 case NO_MARGINS:
175 case PRINTABLE_AREA_MARGINS: {
176 margins.top = 0;
177 margins.bottom = 0;
178 margins.left = 0;
179 margins.right = 0;
180 break;
181 }
182 case CUSTOM_MARGINS: {
183 margins.top = ConvertUnitDouble(custom_margins_in_points_.top,
184 printing::kPointsPerInch,
185 units_per_inch);
186 margins.bottom = ConvertUnitDouble(custom_margins_in_points_.bottom,
187 printing::kPointsPerInch,
188 units_per_inch);
189 margins.left = ConvertUnitDouble(custom_margins_in_points_.left,
190 printing::kPointsPerInch,
191 units_per_inch);
192 margins.right = ConvertUnitDouble(custom_margins_in_points_.right,
193 printing::kPointsPerInch,
194 units_per_inch);
195 break;
196 }
197 default: {
198 NOTREACHED();
199 }
200 }
201
202 if (margin_type == DEFAULT_MARGINS || margin_type == PRINTABLE_AREA_MARGINS)
203 page_setup_device_units_.SetRequestedMargins(margins);
204 else
205 page_setup_device_units_.ForceRequestedMargins(margins);
206 }
207
208 void PrintSettings::SetCustomMargins(const PageMargins& margins_in_points) {
209 custom_margins_in_points_ = margins_in_points;
210 margin_type = CUSTOM_MARGINS;
177 } 211 }
178 212
179 bool PrintSettings::Equals(const PrintSettings& rhs) const { 213 bool PrintSettings::Equals(const PrintSettings& rhs) const {
180 // Do not test the display device name (printer_name_) for equality since it 214 // Do not test the display device name (printer_name_) for equality since it
181 // may sometimes be chopped off at 30 chars. As long as device_name is the 215 // may sometimes be chopped off at 30 chars. As long as device_name is the
182 // same, that's fine. 216 // same, that's fine.
183 return ranges == rhs.ranges && 217 return ranges == rhs.ranges &&
184 min_shrink == rhs.min_shrink && 218 min_shrink == rhs.min_shrink &&
185 max_shrink == rhs.max_shrink && 219 max_shrink == rhs.max_shrink &&
186 desired_dpi == rhs.desired_dpi && 220 desired_dpi == rhs.desired_dpi &&
187 device_name_ == rhs.device_name_ && 221 device_name_ == rhs.device_name_ &&
188 page_setup_device_units_.Equals(rhs.page_setup_device_units_) && 222 page_setup_device_units_.Equals(rhs.page_setup_device_units_) &&
189 dpi_ == rhs.dpi_ && 223 dpi_ == rhs.dpi_ &&
190 landscape_ == rhs.landscape_; 224 landscape_ == rhs.landscape_;
191 } 225 }
192 226
193 int PrintSettings::NewCookie() { 227 int PrintSettings::NewCookie() {
194 // A cookie of 0 is used to mark a document as unassigned, count from 1. 228 // A cookie of 0 is used to mark a document as unassigned, count from 1.
195 return cookie_seq.GetNext() + 1; 229 return cookie_seq.GetNext() + 1;
196 } 230 }
197 231
198 void PrintSettings::SetOrientation(bool landscape) { 232 void PrintSettings::SetOrientation(bool landscape) {
199 if (landscape_ != landscape) { 233 if (landscape_ != landscape) {
200 landscape_ = landscape; 234 landscape_ = landscape;
201 page_setup_device_units_.FlipOrientation(); 235 page_setup_device_units_.FlipOrientation();
202 } 236 }
203 } 237 }
204 238
205 } // namespace printing 239 } // namespace printing
OLDNEW
« no previous file with comments | « printing/print_settings.h ('k') | printing/printing_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698