/src/qtbase/src/gui/painting/qpagesize.h
Line | Count | Source |
1 | | // Copyright (C) 2014 John Layt <jlayt@kde.org> |
2 | | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | | // Qt-Security score:significant reason:default |
4 | | |
5 | | #ifndef QPAGESIZE_H |
6 | | #define QPAGESIZE_H |
7 | | |
8 | | #include <QtGui/qtguiglobal.h> |
9 | | #include <QtCore/qmetatype.h> |
10 | | #include <QtCore/qshareddata.h> |
11 | | |
12 | | QT_BEGIN_NAMESPACE |
13 | | |
14 | | #if defined(B0) |
15 | | #undef B0 // Terminal hang-up. We assume that you do not want that. |
16 | | #endif |
17 | | |
18 | | class QPageSizePrivate; |
19 | | class QString; |
20 | | class QSize; |
21 | | class QSizeF; |
22 | | |
23 | | class Q_GUI_EXPORT QPageSize |
24 | | { |
25 | | public: |
26 | | |
27 | | enum PageSizeId { |
28 | | // Old Qt sizes |
29 | | Letter, |
30 | | Legal, |
31 | | Executive, |
32 | | A0, |
33 | | A1, |
34 | | A2, |
35 | | A3, |
36 | | A4, |
37 | | A5, |
38 | | A6, |
39 | | A7, |
40 | | A8, |
41 | | A9, |
42 | | A10, |
43 | | B0, |
44 | | B1, |
45 | | B2, |
46 | | B3, |
47 | | B4, |
48 | | B5, |
49 | | B6, |
50 | | B7, |
51 | | B8, |
52 | | B9, |
53 | | B10, |
54 | | C5E, |
55 | | Comm10E, |
56 | | DLE, |
57 | | Folio, |
58 | | Ledger, |
59 | | Tabloid, |
60 | | Custom, |
61 | | |
62 | | // New values derived from PPD standard |
63 | | A3Extra, |
64 | | A4Extra, |
65 | | A4Plus, |
66 | | A4Small, |
67 | | A5Extra, |
68 | | B5Extra, |
69 | | |
70 | | JisB0, |
71 | | JisB1, |
72 | | JisB2, |
73 | | JisB3, |
74 | | JisB4, |
75 | | JisB5, |
76 | | JisB6, |
77 | | JisB7, |
78 | | JisB8, |
79 | | JisB9, |
80 | | JisB10, |
81 | | |
82 | | // AnsiA = Letter, |
83 | | // AnsiB = Ledger, |
84 | | AnsiC, |
85 | | AnsiD, |
86 | | AnsiE, |
87 | | LegalExtra, |
88 | | LetterExtra, |
89 | | LetterPlus, |
90 | | LetterSmall, |
91 | | TabloidExtra, |
92 | | |
93 | | ArchA, |
94 | | ArchB, |
95 | | ArchC, |
96 | | ArchD, |
97 | | ArchE, |
98 | | |
99 | | Imperial7x9, |
100 | | Imperial8x10, |
101 | | Imperial9x11, |
102 | | Imperial9x12, |
103 | | Imperial10x11, |
104 | | Imperial10x13, |
105 | | Imperial10x14, |
106 | | Imperial12x11, |
107 | | Imperial15x11, |
108 | | |
109 | | ExecutiveStandard, |
110 | | Note, |
111 | | Quarto, |
112 | | Statement, |
113 | | SuperA, |
114 | | SuperB, |
115 | | Postcard, |
116 | | DoublePostcard, |
117 | | Prc16K, |
118 | | Prc32K, |
119 | | Prc32KBig, |
120 | | |
121 | | FanFoldUS, |
122 | | FanFoldGerman, |
123 | | FanFoldGermanLegal, |
124 | | |
125 | | EnvelopeB4, |
126 | | EnvelopeB5, |
127 | | EnvelopeB6, |
128 | | EnvelopeC0, |
129 | | EnvelopeC1, |
130 | | EnvelopeC2, |
131 | | EnvelopeC3, |
132 | | EnvelopeC4, |
133 | | // EnvelopeC5 = C5E, |
134 | | EnvelopeC6, |
135 | | EnvelopeC65, |
136 | | EnvelopeC7, |
137 | | // EnvelopeDL = DLE, |
138 | | |
139 | | Envelope9, |
140 | | // Envelope10 = Comm10E, |
141 | | Envelope11, |
142 | | Envelope12, |
143 | | Envelope14, |
144 | | EnvelopeMonarch, |
145 | | EnvelopePersonal, |
146 | | |
147 | | EnvelopeChou3, |
148 | | EnvelopeChou4, |
149 | | EnvelopeInvite, |
150 | | EnvelopeItalian, |
151 | | EnvelopeKaku2, |
152 | | EnvelopeKaku3, |
153 | | EnvelopePrc1, |
154 | | EnvelopePrc2, |
155 | | EnvelopePrc3, |
156 | | EnvelopePrc4, |
157 | | EnvelopePrc5, |
158 | | EnvelopePrc6, |
159 | | EnvelopePrc7, |
160 | | EnvelopePrc8, |
161 | | EnvelopePrc9, |
162 | | EnvelopePrc10, |
163 | | EnvelopeYou4, |
164 | | |
165 | | // Last item |
166 | | LastPageSize = EnvelopeYou4, |
167 | | |
168 | | // Convenience overloads for naming consistency |
169 | | AnsiA = Letter, |
170 | | AnsiB = Ledger, |
171 | | EnvelopeC5 = C5E, |
172 | | EnvelopeDL = DLE, |
173 | | Envelope10 = Comm10E |
174 | | }; |
175 | | |
176 | | // NOTE: Must keep in sync with QPageLayout::Unit and QPrinter::Unit |
177 | | enum Unit { |
178 | | Millimeter, |
179 | | Point, |
180 | | Inch, |
181 | | Pica, |
182 | | Didot, |
183 | | Cicero |
184 | | }; |
185 | | |
186 | | enum SizeMatchPolicy { |
187 | | FuzzyMatch, |
188 | | FuzzyOrientationMatch, |
189 | | ExactMatch |
190 | | }; |
191 | | |
192 | | QPageSize(); |
193 | | Q_IMPLICIT QPageSize(PageSizeId pageSizeId); |
194 | | explicit QPageSize(const QSize &pointSize, |
195 | | const QString &name = QString(), |
196 | | SizeMatchPolicy matchPolicy = FuzzyMatch); |
197 | | explicit QPageSize(const QSizeF &size, Unit units, |
198 | | const QString &name = QString(), |
199 | | SizeMatchPolicy matchPolicy = FuzzyMatch); |
200 | | QPageSize(const QPageSize &other); |
201 | | QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QPageSize) |
202 | | QPageSize &operator=(const QPageSize &other); |
203 | | ~QPageSize(); |
204 | | |
205 | | |
206 | 0 | void swap(QPageSize &other) noexcept { d.swap(other.d); } |
207 | | |
208 | | #if QT_GUI_REMOVED_SINCE(6, 4) |
209 | | friend Q_GUI_EXPORT bool operator==(const QPageSize &lhs, const QPageSize &rhs); |
210 | | #endif |
211 | | bool isEquivalentTo(const QPageSize &other) const; |
212 | | |
213 | | bool isValid() const; |
214 | | |
215 | | QString key() const; |
216 | | QString name() const; |
217 | | |
218 | | PageSizeId id() const; |
219 | | |
220 | | int windowsId() const; |
221 | | |
222 | | QSizeF definitionSize() const; |
223 | | Unit definitionUnits() const; |
224 | | |
225 | | QSizeF size(Unit units) const; |
226 | | QSize sizePoints() const; |
227 | | QSize sizePixels(int resolution) const; |
228 | | |
229 | | QRectF rect(Unit units) const; |
230 | | QRect rectPoints() const; |
231 | | QRect rectPixels(int resolution) const; |
232 | | |
233 | | static QString key(PageSizeId pageSizeId); |
234 | | static QString name(PageSizeId pageSizeId); |
235 | | |
236 | | static PageSizeId id(const QSize &pointSize, |
237 | | SizeMatchPolicy matchPolicy = FuzzyMatch); |
238 | | static PageSizeId id(const QSizeF &size, Unit units, |
239 | | SizeMatchPolicy matchPolicy = FuzzyMatch); |
240 | | |
241 | | static PageSizeId id(int windowsId); |
242 | | static int windowsId(PageSizeId pageSizeId); |
243 | | |
244 | | static QSizeF definitionSize(PageSizeId pageSizeId); |
245 | | static Unit definitionUnits(PageSizeId pageSizeId); |
246 | | |
247 | | static QSizeF size(PageSizeId pageSizeId, Unit units); |
248 | | static QSize sizePoints(PageSizeId pageSizeId); |
249 | | static QSize sizePixels(PageSizeId pageSizeId, int resolution); |
250 | | |
251 | | private: |
252 | | friend class QPageSizePrivate; |
253 | | friend class QPlatformPrintDevice; |
254 | | |
255 | | bool equals(const QPageSize &other) const; |
256 | | friend inline bool operator==(const QPageSize &lhs, const QPageSize &rhs) |
257 | 0 | { return lhs.equals(rhs); } |
258 | | friend inline bool operator!=(const QPageSize &lhs, const QPageSize &rhs) |
259 | 0 | { return !(lhs == rhs); } |
260 | | |
261 | | QPageSize(const QString &key, const QSize &pointSize, const QString &name); |
262 | | QPageSize(int windowsId, const QSize &pointSize, const QString &name); |
263 | | QPageSize(QPageSizePrivate &dd); |
264 | | QSharedDataPointer<QPageSizePrivate> d; |
265 | | }; |
266 | | |
267 | | Q_DECLARE_SHARED(QPageSize) |
268 | | |
269 | | #ifndef QT_NO_DEBUG_STREAM |
270 | | Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QPageSize &pageSize); |
271 | | #endif |
272 | | |
273 | | QT_END_NAMESPACE |
274 | | |
275 | | QT_DECL_METATYPE_EXTERN(QPageSize, Q_GUI_EXPORT) |
276 | | QT_DECL_METATYPE_EXTERN_TAGGED(QPageSize::PageSizeId, QPageSize__PageSizeId, Q_GUI_EXPORT) |
277 | | QT_DECL_METATYPE_EXTERN_TAGGED(QPageSize::Unit, QPageSize__Unit, Q_GUI_EXPORT) |
278 | | |
279 | | #endif // QPAGESIZE_H |