123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef PRINTING_PAGE_SETUP_H_
- #define PRINTING_PAGE_SETUP_H_
- #include "base/component_export.h"
- #include "ui/gfx/geometry/rect.h"
- namespace printing {
- // Margins for a page setup.
- class COMPONENT_EXPORT(PRINTING) PageMargins {
- public:
- PageMargins();
- PageMargins(int header, int footer, int left, int right, int top, int bottom);
- void Clear();
- // Equality operator.
- bool Equals(const PageMargins& rhs) const;
- // Vertical space for the overlay from the top of the sheet.
- int header;
- // Vertical space for the overlay from the bottom of the sheet.
- int footer;
- // Margin on each side of the sheet.
- int left;
- int right;
- int top;
- int bottom;
- };
- // Settings that define the size and printable areas of a page. Unit is
- // unspecified.
- class COMPONENT_EXPORT(PRINTING) PageSetup {
- public:
- PageSetup();
- PageSetup(const gfx::Size& physical_size,
- const gfx::Rect& printable_area,
- const PageMargins& requested_margins,
- bool forced_margins,
- int text_height);
- PageSetup(const PageSetup& other);
- ~PageSetup();
- // Gets a symmetrical printable area.
- static gfx::Rect GetSymmetricalPrintableArea(const gfx::Size& page_size,
- const gfx::Rect& printable_area);
- void Clear();
- // Equality operator.
- bool Equals(const PageSetup& rhs) const;
- void Init(const gfx::Size& physical_size,
- const gfx::Rect& printable_area,
- int text_height);
- // Use `requested_margins` as long as they fall inside the printable area.
- void SetRequestedMargins(const PageMargins& requested_margins);
- // Ignore the printable area, and set the margins to `requested_margins`.
- void ForceRequestedMargins(const PageMargins& requested_margins);
- // Flips the orientation of the page and recalculates all page areas.
- void FlipOrientation();
- const gfx::Size& physical_size() const { return physical_size_; }
- const gfx::Rect& overlay_area() const { return overlay_area_; }
- const gfx::Rect& content_area() const { return content_area_; }
- const gfx::Rect& printable_area() const { return printable_area_; }
- const PageMargins& effective_margins() const { return effective_margins_; }
- const PageMargins& requested_margins() const { return requested_margins_; }
- bool forced_margins() const { return forced_margins_; }
- int text_height() const { return text_height_; }
- private:
- // Store `requested_margins_` and update page setup values.
- void SetRequestedMarginsAndCalculateSizes(
- const PageMargins& requested_margins);
- // Calculate overlay_area_, effective_margins_, and content_area_, based on
- // a constraint of `bounds` and `text_height`.
- void CalculateSizesWithinRect(const gfx::Rect& bounds, int text_height);
- // Physical size of the page, including non-printable margins.
- gfx::Size physical_size_;
- // The printable area as specified by the printer driver. We can't get
- // larger than this.
- gfx::Rect printable_area_;
- // The printable area for headers and footers.
- gfx::Rect overlay_area_;
- // The printable area as selected by the user's margins.
- gfx::Rect content_area_;
- // Effective margins.
- PageMargins effective_margins_;
- // Requested margins.
- PageMargins requested_margins_;
- // True when `effective_margins_` respects `printable_area_` else false.
- bool forced_margins_;
- // Space that must be kept free for the overlays.
- int text_height_;
- };
- } // namespace printing
- #endif // PRINTING_PAGE_SETUP_H_
|