1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#ifndef QPAGEDPAINTDEVICE_H
41#define QPAGEDPAINTDEVICE_H
42
43#include <QtGui/qtguiglobal.h>
44#include <QtGui/qpaintdevice.h>
45#include <QtGui/qpagelayout.h>
46
47QT_BEGIN_NAMESPACE
48
49#if defined(B0)
50#undef B0 // Terminal hang-up. We assume that you do not want that.
51#endif
52
53class QPagedPaintDevicePrivate;
54
55class Q_GUI_EXPORT QPagedPaintDevice : public QPaintDevice
56{
57public:
58 QT_DEPRECATED QPagedPaintDevice();
59 ~QPagedPaintDevice();
60
61 virtual bool newPage() = 0;
62
63 // ### Qt6 Remove in favor of QPage::PageSize
64 // NOTE: Must keep in sync with QPageSize and QPrinter
65 enum PageSize {
66 // Existing Qt sizes
67 A4,
68 B5,
69 Letter,
70 Legal,
71 Executive,
72 A0,
73 A1,
74 A2,
75 A3,
76 A5,
77 A6,
78 A7,
79 A8,
80 A9,
81 B0,
82 B1,
83 B10,
84 B2,
85 B3,
86 B4,
87 B6,
88 B7,
89 B8,
90 B9,
91 C5E,
92 Comm10E,
93 DLE,
94 Folio,
95 Ledger,
96 Tabloid,
97 Custom,
98
99 // New values derived from PPD standard
100 A10,
101 A3Extra,
102 A4Extra,
103 A4Plus,
104 A4Small,
105 A5Extra,
106 B5Extra,
107
108 JisB0,
109 JisB1,
110 JisB2,
111 JisB3,
112 JisB4,
113 JisB5,
114 JisB6,
115 JisB7,
116 JisB8,
117 JisB9,
118 JisB10,
119
120 // AnsiA = Letter,
121 // AnsiB = Ledger,
122 AnsiC,
123 AnsiD,
124 AnsiE,
125 LegalExtra,
126 LetterExtra,
127 LetterPlus,
128 LetterSmall,
129 TabloidExtra,
130
131 ArchA,
132 ArchB,
133 ArchC,
134 ArchD,
135 ArchE,
136
137 Imperial7x9,
138 Imperial8x10,
139 Imperial9x11,
140 Imperial9x12,
141 Imperial10x11,
142 Imperial10x13,
143 Imperial10x14,
144 Imperial12x11,
145 Imperial15x11,
146
147 ExecutiveStandard,
148 Note,
149 Quarto,
150 Statement,
151 SuperA,
152 SuperB,
153 Postcard,
154 DoublePostcard,
155 Prc16K,
156 Prc32K,
157 Prc32KBig,
158
159 FanFoldUS,
160 FanFoldGerman,
161 FanFoldGermanLegal,
162
163 EnvelopeB4,
164 EnvelopeB5,
165 EnvelopeB6,
166 EnvelopeC0,
167 EnvelopeC1,
168 EnvelopeC2,
169 EnvelopeC3,
170 EnvelopeC4,
171 // EnvelopeC5 = C5E,
172 EnvelopeC6,
173 EnvelopeC65,
174 EnvelopeC7,
175 // EnvelopeDL = DLE,
176
177 Envelope9,
178 // Envelope10 = Comm10E,
179 Envelope11,
180 Envelope12,
181 Envelope14,
182 EnvelopeMonarch,
183 EnvelopePersonal,
184
185 EnvelopeChou3,
186 EnvelopeChou4,
187 EnvelopeInvite,
188 EnvelopeItalian,
189 EnvelopeKaku2,
190 EnvelopeKaku3,
191 EnvelopePrc1,
192 EnvelopePrc2,
193 EnvelopePrc3,
194 EnvelopePrc4,
195 EnvelopePrc5,
196 EnvelopePrc6,
197 EnvelopePrc7,
198 EnvelopePrc8,
199 EnvelopePrc9,
200 EnvelopePrc10,
201 EnvelopeYou4,
202
203 // Last item, with commonly used synynoms from QPagedPrintEngine / QPrinter
204 LastPageSize = EnvelopeYou4,
205 NPageSize = LastPageSize,
206 NPaperSize = LastPageSize,
207
208 // Convenience overloads for naming consistency
209 AnsiA = Letter,
210 AnsiB = Ledger,
211 EnvelopeC5 = C5E,
212 EnvelopeDL = DLE,
213 Envelope10 = Comm10E
214 };
215
216 // keep in sync with QPdfEngine::PdfVersion!
217 enum PdfVersion { PdfVersion_1_4, PdfVersion_A1b, PdfVersion_1_6 };
218
219 // ### Qt6 Make these virtual
220 bool setPageLayout(const QPageLayout &pageLayout);
221 bool setPageSize(const QPageSize &pageSize);
222 bool setPageOrientation(QPageLayout::Orientation orientation);
223 bool setPageMargins(const QMarginsF &margins);
224 bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units);
225 QPageLayout pageLayout() const;
226
227#if QT_DEPRECATED_SINCE(5,15)
228 QT_DEPRECATED_VERSION_X_5_15("Use setPageSize(QPageSize) instead.")
229 virtual void setPageSize(PageSize size);
230 QT_DEPRECATED_VERSION_X_5_15("Use pageLayout().pageSize().id() instead.")
231 PageSize pageSize() const;
232
233 QT_DEPRECATED_VERSION_X_5_15("Use setPageSize(QPageSize) instead.")
234 virtual void setPageSizeMM(const QSizeF &size);
235 QT_DEPRECATED_VERSION_X_5_15("Use pageLayout().pageSize() instead.")
236 QSizeF pageSizeMM() const;
237#endif
238
239 // ### Qt6 Remove in favor of QMarginsF
240 struct Margins {
241 qreal left;
242 qreal right;
243 qreal top;
244 qreal bottom;
245 };
246
247#if QT_DEPRECATED_SINCE(5,15)
248 QT_DEPRECATED_VERSION_X_5_15("Use setPageMargins(QMarginsF, QPageLayout::Unit) instead.")
249 virtual void setMargins(const Margins &margins);
250 QT_DEPRECATED_VERSION_X_5_15("Use pageLayout().margins() instead.")
251 Margins margins() const;
252#endif
253
254protected:
255 QPagedPaintDevice(QPagedPaintDevicePrivate *dd);
256 QPagedPaintDevicePrivate *dd();
257 QT_DEPRECATED QPageLayout devicePageLayout() const;
258 QT_DEPRECATED QPageLayout &devicePageLayout();
259 friend class QPagedPaintDevicePrivate;
260 QPagedPaintDevicePrivate *d;
261};
262
263QT_END_NAMESPACE
264
265#endif
266