Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-16 09:05:13

0001 // Copyright (C) 2014 John Layt <jlayt@kde.org>
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 
0004 #ifndef QPAGELAYOUT_H
0005 #define QPAGELAYOUT_H
0006 
0007 #include <QtGui/qtguiglobal.h>
0008 #include <QtCore/qshareddata.h>
0009 #include <QtCore/qstring.h>
0010 #include <QtCore/qmargins.h>
0011 
0012 #include <QtGui/qpagesize.h>
0013 
0014 QT_BEGIN_NAMESPACE
0015 
0016 class QPageLayoutPrivate;
0017 class QMarginsF;
0018 
0019 class Q_GUI_EXPORT QPageLayout
0020 {
0021 public:
0022 
0023     // NOTE: Must keep in sync with QPageSize::Unit and QPrinter::Unit
0024     enum Unit {
0025         Millimeter,
0026         Point,
0027         Inch,
0028         Pica,
0029         Didot,
0030         Cicero
0031     };
0032 
0033     enum Orientation {
0034         Portrait,
0035         Landscape
0036     };
0037 
0038     enum Mode {
0039         StandardMode,  // Paint Rect includes margins
0040         FullPageMode   // Paint Rect excludes margins
0041     };
0042 
0043     enum class OutOfBoundsPolicy {
0044         Reject,
0045         Clamp,
0046     };
0047 
0048     QPageLayout();
0049     QPageLayout(const QPageSize &pageSize, Orientation orientation,
0050                 const QMarginsF &margins, Unit units = Point,
0051                 const QMarginsF &minMargins = QMarginsF(0, 0, 0, 0));
0052     QPageLayout(const QPageLayout &other);
0053     QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QPageLayout)
0054     QPageLayout &operator=(const QPageLayout &other);
0055     ~QPageLayout();
0056 
0057     void swap(QPageLayout &other) noexcept { d.swap(other.d); }
0058 
0059     bool isEquivalentTo(const QPageLayout &other) const;
0060 
0061     bool isValid() const;
0062 
0063     void setMode(Mode mode);
0064     Mode mode() const;
0065 
0066     void setPageSize(const QPageSize &pageSize,
0067                      const QMarginsF &minMargins = QMarginsF(0, 0, 0, 0));
0068     QPageSize pageSize() const;
0069 
0070     void setOrientation(Orientation orientation);
0071     Orientation orientation() const;
0072 
0073     void setUnits(Unit units);
0074     Unit units() const;
0075 
0076 #if QT_GUI_REMOVED_SINCE(6, 8)
0077     bool setMargins(const QMarginsF &margins);
0078     bool setLeftMargin(qreal leftMargin);
0079     bool setRightMargin(qreal rightMargin);
0080     bool setTopMargin(qreal topMargin);
0081     bool setBottomMargin(qreal bottomMargin);
0082 #endif
0083 
0084     bool setMargins(const QMarginsF &margins, OutOfBoundsPolicy outOfBoundsPolicy = OutOfBoundsPolicy::Reject);
0085     bool setLeftMargin(qreal leftMargin, OutOfBoundsPolicy outOfBoundsPolicy = OutOfBoundsPolicy::Reject);
0086     bool setRightMargin(qreal rightMargin, OutOfBoundsPolicy outOfBoundsPolicy = OutOfBoundsPolicy::Reject);
0087     bool setTopMargin(qreal topMargin, OutOfBoundsPolicy outOfBoundsPolicy = OutOfBoundsPolicy::Reject);
0088     bool setBottomMargin(qreal bottomMargin, OutOfBoundsPolicy outOfBoundsPolicy = OutOfBoundsPolicy::Reject);
0089 
0090     QMarginsF margins() const;
0091     QMarginsF margins(Unit units) const;
0092     QMargins marginsPoints() const;
0093     QMargins marginsPixels(int resolution) const;
0094 
0095     void setMinimumMargins(const QMarginsF &minMargins);
0096     QMarginsF minimumMargins() const;
0097     QMarginsF maximumMargins() const;
0098 
0099     QRectF fullRect() const;
0100     QRectF fullRect(Unit units) const;
0101     QRect fullRectPoints() const;
0102     QRect fullRectPixels(int resolution) const;
0103 
0104     QRectF paintRect() const;
0105     QRectF paintRect(Unit units) const;
0106     QRect paintRectPoints() const;
0107     QRect paintRectPixels(int resolution) const;
0108 
0109 private:
0110     friend class QPageLayoutPrivate;
0111     bool equals(const QPageLayout &other) const;
0112 
0113     friend inline bool operator==(const QPageLayout &lhs, const QPageLayout &rhs)
0114     { return lhs.equals(rhs); }
0115     friend inline bool operator!=(const QPageLayout &lhs, const QPageLayout &rhs)
0116     { return !lhs.equals(rhs); }
0117 
0118     QExplicitlySharedDataPointer<QPageLayoutPrivate> d;
0119 };
0120 
0121 Q_DECLARE_SHARED(QPageLayout)
0122 
0123 #ifndef QT_NO_DEBUG_STREAM
0124 Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QPageLayout &pageLayout);
0125 #endif
0126 
0127 QT_END_NAMESPACE
0128 
0129 QT_DECL_METATYPE_EXTERN(QPageLayout, Q_GUI_EXPORT)
0130 QT_DECL_METATYPE_EXTERN_TAGGED(QPageLayout::Unit, QPageLayout__Unit, Q_GUI_EXPORT)
0131 QT_DECL_METATYPE_EXTERN_TAGGED(QPageLayout::Orientation, QPageLayout__Orientation, Q_GUI_EXPORT)
0132 
0133 #endif // QPAGELAYOUT_H