diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-04 00:29:21 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-04 00:29:21 +0000 |
commit | b89615d44dda84e025b625f21beb6787c75650be (patch) | |
tree | e60d46498a008d48e0c0793af607b78d2f411795 /printing/page_setup.cc | |
parent | e1444cbc545780f86766f842756ba17f5a8970ae (diff) | |
download | chromium_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.cc | 33 |
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. |