summaryrefslogtreecommitdiffstats
path: root/printing/page_setup.cc
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-04 00:29:21 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-04 00:29:21 +0000
commitb89615d44dda84e025b625f21beb6787c75650be (patch)
treee60d46498a008d48e0c0793af607b78d2f411795 /printing/page_setup.cc
parente1444cbc545780f86766f842756ba17f5a8970ae (diff)
downloadchromium_src-b89615d44dda84e025b625f21beb6787c75650be.zip
chromium_src-b89615d44dda84e025b625f21beb6787c75650be.tar.gz
chromium_src-b89615d44dda84e025b625f21beb6787c75650be.tar.bz2
PrintPreview: [LINUX] Update the margin values after flipping the paper orientation.
BUG=101419 TEST=Please refer to bug description. Review URL: http://codereview.chromium.org/8351063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108598 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/page_setup.cc')
-rw-r--r--printing/page_setup.cc33
1 files changed, 26 insertions, 7 deletions
diff --git a/printing/page_setup.cc b/printing/page_setup.cc
index b870323e..ad0156e 100644
--- a/printing/page_setup.cc
+++ b/printing/page_setup.cc
@@ -19,6 +19,14 @@ PageMargins::PageMargins()
bottom(0) {
}
+void PageMargins::Rotate() {
+ int temp_right = right;
+ right = bottom;
+ bottom = left;
+ left = top;
+ top = temp_right;
+}
+
void PageMargins::Clear() {
header = 0;
footer = 0;
@@ -50,6 +58,7 @@ void PageSetup::Clear() {
content_area_.SetRect(0, 0, 0, 0);
effective_margins_.Clear();
text_height_ = 0;
+ forced_margins_ = false;
}
bool PageSetup::Equals(const PageSetup& rhs) const {
@@ -76,19 +85,17 @@ void PageSetup::Init(const gfx::Size& physical_size,
printable_area_ = printable_area;
text_height_ = text_height;
- CalculateSizesWithinRect(printable_area_, text_height_);
+ SetRequestedMarginsAndCalculateSizes(requested_margins_);
}
void PageSetup::SetRequestedMargins(const PageMargins& requested_margins) {
- requested_margins_ = requested_margins;
- if (printable_area_.width() && printable_area_.height())
- CalculateSizesWithinRect(printable_area_, text_height_);
+ forced_margins_ = false;
+ SetRequestedMarginsAndCalculateSizes(requested_margins);
}
void PageSetup::ForceRequestedMargins(const PageMargins& requested_margins) {
- requested_margins_ = requested_margins;
- if (physical_size_.width() && physical_size_.height())
- CalculateSizesWithinRect(gfx::Rect(physical_size_), 0);
+ forced_margins_ = true;
+ SetRequestedMarginsAndCalculateSizes(requested_margins);
}
void PageSetup::FlipOrientation() {
@@ -100,10 +107,22 @@ void PageSetup::FlipOrientation() {
new_y,
printable_area_.height(),
printable_area_.width());
+ requested_margins_.Rotate();
Init(new_size, new_printable_area, text_height_);
}
}
+void PageSetup::SetRequestedMarginsAndCalculateSizes(
+ const PageMargins& requested_margins) {
+ requested_margins_ = requested_margins;
+ if (physical_size_.width() && physical_size_.height()) {
+ if (forced_margins_)
+ CalculateSizesWithinRect(gfx::Rect(physical_size_), 0);
+ else
+ CalculateSizesWithinRect(printable_area_, text_height_);
+ }
+}
+
void PageSetup::CalculateSizesWithinRect(const gfx::Rect& bounds,
int text_height) {
// Calculate the effective margins. The tricky part.