Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qpaintengine_preview.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
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
#
include
<
private
/
qpaintengine_preview_p
.
h
>
6
#
include
<
private
/
qpainter_p
.
h
>
7
#
include
<
private
/
qpaintengine_p
.
h
>
8
#
include
<
private
/
qpicture_p
.
h
>
9
10
#
include
<
QtPrintSupport
/
qprintengine
.
h
>
11
#
include
<
QtGui
/
qpainter
.
h
>
12
#
include
<
QtGui
/
qpicture
.
h
>
13
14
QT_BEGIN_NAMESPACE
15
16
class
QPreviewPaintEnginePrivate :
public
QPaintEnginePrivate
17
{
18
Q_DECLARE_PUBLIC(QPreviewPaintEngine)
19
public
:
20
QPreviewPaintEnginePrivate() : state(QPrinter::Idle) {}
21
~QPreviewPaintEnginePrivate() {}
22
23
QList<
const
QPicture *> pages;
24
QPaintEngine *engine =
nullptr
;
25
QPainter *painter =
nullptr
;
26
QPrinter::PrinterState state;
27
28
QPaintEngine *proxy_paint_engine;
29
QPrintEngine *proxy_print_engine;
30
};
31
32
33
QPreviewPaintEngine::QPreviewPaintEngine()
34
: QPaintEngine(*(
new
QPreviewPaintEnginePrivate), PaintEngineFeatures(AllFeatures & ~ObjectBoundingModeGradients))
35
{
36
Q_D(QPreviewPaintEngine);
37
d->proxy_print_engine =
nullptr
;
38
d->proxy_paint_engine =
nullptr
;
39
}
40
41
QPreviewPaintEngine::~QPreviewPaintEngine()
42
{
43
Q_D(QPreviewPaintEngine);
44
45
qDeleteAll(d->pages);
46
}
47
48
bool
QPreviewPaintEngine::begin(QPaintDevice *)
49
{
50
Q_D(QPreviewPaintEngine);
51
52
qDeleteAll(d->pages);
53
d->pages.clear();
54
55
startPage();
56
d->state = QPrinter::Active;
57
return
true
;
58
}
59
60
bool
QPreviewPaintEngine::end()
61
{
62
Q_D(QPreviewPaintEngine);
63
64
delete
d->painter;
65
d->painter =
nullptr
;
66
d->engine =
nullptr
;
67
d->state = QPrinter::Idle;
68
return
true
;
69
}
70
71
void
QPreviewPaintEngine::updateState(
const
QPaintEngineState &state)
72
{
73
Q_D(QPreviewPaintEngine);
74
d->engine->updateState(state);
75
}
76
77
void
QPreviewPaintEngine::drawPath(
const
QPainterPath &path)
78
{
79
Q_D(QPreviewPaintEngine);
80
d->engine->drawPath(path);
81
}
82
83
void
QPreviewPaintEngine::drawPolygon(
const
QPointF *points,
int
pointCount, PolygonDrawMode mode)
84
{
85
Q_D(QPreviewPaintEngine);
86
d->engine->drawPolygon(points, pointCount, mode);
87
}
88
89
void
QPreviewPaintEngine::drawTextItem(
const
QPointF &p,
const
QTextItem &textItem)
90
{
91
Q_D(QPreviewPaintEngine);
92
d->engine->drawTextItem(p, textItem);
93
}
94
95
void
QPreviewPaintEngine::drawPixmap(
const
QRectF &r,
const
QPixmap &pm,
const
QRectF &sr)
96
{
97
Q_D(QPreviewPaintEngine);
98
d->engine->drawPixmap(r, pm, sr);
99
}
100
101
void
QPreviewPaintEngine::drawTiledPixmap(
const
QRectF &r,
const
QPixmap &pm,
const
QPointF &p)
102
{
103
Q_D(QPreviewPaintEngine);
104
d->engine->drawTiledPixmap(r, pm, p);
105
}
106
107
void
QPreviewPaintEngine::startPage()
108
{
109
Q_D(QPreviewPaintEngine);
110
111
QPicture *page =
new
QPicture;
112
page->d_func()->in_memory_only =
true
;
113
QPainter *pagePainter =
new
QPainter(page);
114
QPaintEngine *pageEngine = pagePainter->paintEngine();
115
116
Q_ASSERT(painter()->d_func()->state && pagePainter->d_func()->state);
117
*pagePainter->d_func()->state = *painter()->d_func()->state;
118
119
// composition modes aren't supported on a QPrinter and yields a
120
// warning, so ignore it for now
121
pageEngine->setDirty(DirtyFlags(AllDirty & ~DirtyCompositionMode));
122
pageEngine->syncState();
123
124
delete
d->painter;
125
d->painter = pagePainter;
126
d->pages.append(page);
127
d->engine = pageEngine;
128
}
129
130
bool
QPreviewPaintEngine::newPage()
131
{
132
startPage();
133
return
true
;
134
}
135
136
bool
QPreviewPaintEngine::abort()
137
{
138
Q_D(QPreviewPaintEngine);
139
end();
140
qDeleteAll(d->pages);
141
d->state = QPrinter::Aborted;
142
143
return
true
;
144
}
145
146
QList<
const
QPicture *> QPreviewPaintEngine::pages()
147
{
148
Q_D(QPreviewPaintEngine);
149
return
d->pages;
150
}
151
152
void
QPreviewPaintEngine::setProxyEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine)
153
{
154
Q_D(QPreviewPaintEngine);
155
d->proxy_print_engine = printEngine;
156
d->proxy_paint_engine = paintEngine;
157
}
158
159
void
QPreviewPaintEngine::setProperty(PrintEnginePropertyKey key,
const
QVariant &value)
160
{
161
Q_D(QPreviewPaintEngine);
162
d->proxy_print_engine->setProperty(key, value);
163
}
164
165
QVariant QPreviewPaintEngine::property(PrintEnginePropertyKey key)
const
166
{
167
Q_D(
const
QPreviewPaintEngine);
168
return
d->proxy_print_engine->property(key);
169
}
170
171
int
QPreviewPaintEngine::metric(QPaintDevice::PaintDeviceMetric id)
const
172
{
173
Q_D(
const
QPreviewPaintEngine);
174
return
d->proxy_print_engine->metric(id);
175
}
176
177
QPrinter::PrinterState QPreviewPaintEngine::printerState()
const
178
{
179
Q_D(
const
QPreviewPaintEngine);
180
return
d->state;
181
}
182
183
QT_END_NAMESPACE
qtbase
src
printsupport
kernel
qpaintengine_preview.cpp
Generated on
for Qt by
1.18.0