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 QPAINTER_H
41#define QPAINTER_H
42
43#include <QtGui/qtguiglobal.h>
44#include <QtCore/qnamespace.h>
45#include <QtCore/qrect.h>
46#include <QtCore/qpoint.h>
47#include <QtCore/qscopedpointer.h>
48#include <QtGui/qpixmap.h>
49#include <QtGui/qimage.h>
50#include <QtGui/qtextoption.h>
51
52#ifndef QT_INCLUDE_COMPAT
53#include <QtGui/qpolygon.h>
54#include <QtGui/qpen.h>
55#include <QtGui/qbrush.h>
56#include <QtGui/qtransform.h>
57#include <QtGui/qfontinfo.h>
58#include <QtGui/qfontmetrics.h>
59#endif
60
61QT_BEGIN_NAMESPACE
62
63
64class QBrush;
65class QFontInfo;
66class QFontMetrics;
67class QPaintDevice;
68class QPainterPath;
69class QPainterPrivate;
70class QPen;
71class QPolygon;
72class QTextItem;
73class QTextEngine;
74class QTransform;
75class QStaticText;
76class QGlyphRun;
77
78class QPainterPrivateDeleter;
79
80class Q_GUI_EXPORT QPainter
81{
82 Q_DECLARE_PRIVATE(QPainter)
83 Q_GADGET
84
85public:
86 enum RenderHint {
87 Antialiasing = 0x01,
88 TextAntialiasing = 0x02,
89 SmoothPixmapTransform = 0x04,
90 VerticalSubpixelPositioning = 0x08,
91 LosslessImageRendering = 0x40,
92 };
93 Q_FLAG(RenderHint)
94
95 Q_DECLARE_FLAGS(RenderHints, RenderHint)
96 Q_FLAG(RenderHints)
97
98 class PixmapFragment {
99 public:
100 qreal x;
101 qreal y;
102 qreal sourceLeft;
103 qreal sourceTop;
104 qreal width;
105 qreal height;
106 qreal scaleX;
107 qreal scaleY;
108 qreal rotation;
109 qreal opacity;
110 static PixmapFragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect,
111 qreal scaleX = 1, qreal scaleY = 1,
112 qreal rotation = 0, qreal opacity = 1);
113 };
114
115 enum PixmapFragmentHint {
116 OpaqueHint = 0x01
117 };
118
119 Q_DECLARE_FLAGS(PixmapFragmentHints, PixmapFragmentHint)
120
121 QPainter();
122 explicit QPainter(QPaintDevice *);
123 ~QPainter();
124
125 QPaintDevice *device() const;
126
127 bool begin(QPaintDevice *);
128 bool end();
129 bool isActive() const;
130
131 enum CompositionMode {
132 CompositionMode_SourceOver,
133 CompositionMode_DestinationOver,
134 CompositionMode_Clear,
135 CompositionMode_Source,
136 CompositionMode_Destination,
137 CompositionMode_SourceIn,
138 CompositionMode_DestinationIn,
139 CompositionMode_SourceOut,
140 CompositionMode_DestinationOut,
141 CompositionMode_SourceAtop,
142 CompositionMode_DestinationAtop,
143 CompositionMode_Xor,
144
145 //svg 1.2 blend modes
146 CompositionMode_Plus,
147 CompositionMode_Multiply,
148 CompositionMode_Screen,
149 CompositionMode_Overlay,
150 CompositionMode_Darken,
151 CompositionMode_Lighten,
152 CompositionMode_ColorDodge,
153 CompositionMode_ColorBurn,
154 CompositionMode_HardLight,
155 CompositionMode_SoftLight,
156 CompositionMode_Difference,
157 CompositionMode_Exclusion,
158
159 // ROPs
160 RasterOp_SourceOrDestination,
161 RasterOp_SourceAndDestination,
162 RasterOp_SourceXorDestination,
163 RasterOp_NotSourceAndNotDestination,
164 RasterOp_NotSourceOrNotDestination,
165 RasterOp_NotSourceXorDestination,
166 RasterOp_NotSource,
167 RasterOp_NotSourceAndDestination,
168 RasterOp_SourceAndNotDestination,
169 RasterOp_NotSourceOrDestination,
170 RasterOp_SourceOrNotDestination,
171 RasterOp_ClearDestination,
172 RasterOp_SetDestination,
173 RasterOp_NotDestination
174 };
175 void setCompositionMode(CompositionMode mode);
176 CompositionMode compositionMode() const;
177
178 const QFont &font() const;
179 void setFont(const QFont &f);
180
181 QFontMetrics fontMetrics() const;
182 QFontInfo fontInfo() const;
183
184 void setPen(const QColor &color);
185 void setPen(const QPen &pen);
186 void setPen(Qt::PenStyle style);
187 const QPen &pen() const;
188
189 void setBrush(const QBrush &brush);
190 void setBrush(Qt::BrushStyle style);
191 const QBrush &brush() const;
192
193 // attributes/modes
194 void setBackgroundMode(Qt::BGMode mode);
195 Qt::BGMode backgroundMode() const;
196
197 QPoint brushOrigin() const;
198 inline void setBrushOrigin(int x, int y);
199 inline void setBrushOrigin(const QPoint &);
200 void setBrushOrigin(const QPointF &);
201
202 void setBackground(const QBrush &bg);
203 const QBrush &background() const;
204
205 qreal opacity() const;
206 void setOpacity(qreal opacity);
207
208 // Clip functions
209 QRegion clipRegion() const;
210 QPainterPath clipPath() const;
211
212 void setClipRect(const QRectF &, Qt::ClipOperation op = Qt::ReplaceClip);
213 void setClipRect(const QRect &, Qt::ClipOperation op = Qt::ReplaceClip);
214 inline void setClipRect(int x, int y, int w, int h, Qt::ClipOperation op = Qt::ReplaceClip);
215
216 void setClipRegion(const QRegion &, Qt::ClipOperation op = Qt::ReplaceClip);
217
218 void setClipPath(const QPainterPath &path, Qt::ClipOperation op = Qt::ReplaceClip);
219
220 void setClipping(bool enable);
221 bool hasClipping() const;
222
223 QRectF clipBoundingRect() const;
224
225 void save();
226 void restore();
227
228 // XForm functions
229 void setTransform(const QTransform &transform, bool combine = false);
230 const QTransform &transform() const;
231 const QTransform &deviceTransform() const;
232 void resetTransform();
233
234 void setWorldTransform(const QTransform &matrix, bool combine = false);
235 const QTransform &worldTransform() const;
236
237 QTransform combinedTransform() const;
238
239 void setWorldMatrixEnabled(bool enabled);
240 bool worldMatrixEnabled() const;
241
242 void scale(qreal sx, qreal sy);
243 void shear(qreal sh, qreal sv);
244 void rotate(qreal a);
245
246 void translate(const QPointF &offset);
247 inline void translate(const QPoint &offset);
248 inline void translate(qreal dx, qreal dy);
249
250 QRect window() const;
251 void setWindow(const QRect &window);
252 inline void setWindow(int x, int y, int w, int h);
253
254 QRect viewport() const;
255 void setViewport(const QRect &viewport);
256 inline void setViewport(int x, int y, int w, int h);
257
258 void setViewTransformEnabled(bool enable);
259 bool viewTransformEnabled() const;
260
261 // drawing functions
262 void strokePath(const QPainterPath &path, const QPen &pen);
263 void fillPath(const QPainterPath &path, const QBrush &brush);
264 void drawPath(const QPainterPath &path);
265
266 inline void drawPoint(const QPointF &pt);
267 inline void drawPoint(const QPoint &p);
268 inline void drawPoint(int x, int y);
269
270 void drawPoints(const QPointF *points, int pointCount);
271 inline void drawPoints(const QPolygonF &points);
272 void drawPoints(const QPoint *points, int pointCount);
273 inline void drawPoints(const QPolygon &points);
274
275 inline void drawLine(const QLineF &line);
276 inline void drawLine(const QLine &line);
277 inline void drawLine(int x1, int y1, int x2, int y2);
278 inline void drawLine(const QPoint &p1, const QPoint &p2);
279 inline void drawLine(const QPointF &p1, const QPointF &p2);
280
281 void drawLines(const QLineF *lines, int lineCount);
282 inline void drawLines(const QList<QLineF> &lines);
283 void drawLines(const QPointF *pointPairs, int lineCount);
284 inline void drawLines(const QList<QPointF> &pointPairs);
285 void drawLines(const QLine *lines, int lineCount);
286 inline void drawLines(const QList<QLine> &lines);
287 void drawLines(const QPoint *pointPairs, int lineCount);
288 inline void drawLines(const QList<QPoint> &pointPairs);
289
290 inline void drawRect(const QRectF &rect);
291 inline void drawRect(int x1, int y1, int w, int h);
292 inline void drawRect(const QRect &rect);
293
294 void drawRects(const QRectF *rects, int rectCount);
295 inline void drawRects(const QList<QRectF> &rectangles);
296 void drawRects(const QRect *rects, int rectCount);
297 inline void drawRects(const QList<QRect> &rectangles);
298
299 void drawEllipse(const QRectF &r);
300 void drawEllipse(const QRect &r);
301 inline void drawEllipse(int x, int y, int w, int h);
302
303 inline void drawEllipse(const QPointF &center, qreal rx, qreal ry);
304 inline void drawEllipse(const QPoint &center, int rx, int ry);
305
306 void drawPolyline(const QPointF *points, int pointCount);
307 inline void drawPolyline(const QPolygonF &polyline);
308 void drawPolyline(const QPoint *points, int pointCount);
309 inline void drawPolyline(const QPolygon &polygon);
310
311 void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
312 inline void drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
313 void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
314 inline void drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
315
316 void drawConvexPolygon(const QPointF *points, int pointCount);
317 inline void drawConvexPolygon(const QPolygonF &polygon);
318 void drawConvexPolygon(const QPoint *points, int pointCount);
319 inline void drawConvexPolygon(const QPolygon &polygon);
320
321 void drawArc(const QRectF &rect, int a, int alen);
322 inline void drawArc(const QRect &, int a, int alen);
323 inline void drawArc(int x, int y, int w, int h, int a, int alen);
324
325 void drawPie(const QRectF &rect, int a, int alen);
326 inline void drawPie(int x, int y, int w, int h, int a, int alen);
327 inline void drawPie(const QRect &, int a, int alen);
328
329 void drawChord(const QRectF &rect, int a, int alen);
330 inline void drawChord(int x, int y, int w, int h, int a, int alen);
331 inline void drawChord(const QRect &, int a, int alen);
332
333 void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius,
334 Qt::SizeMode mode = Qt::AbsoluteSize);
335 inline void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
336 Qt::SizeMode mode = Qt::AbsoluteSize);
337 inline void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
338 Qt::SizeMode mode = Qt::AbsoluteSize);
339
340 void drawTiledPixmap(const QRectF &rect, const QPixmap &pm, const QPointF &offset = QPointF());
341 inline void drawTiledPixmap(int x, int y, int w, int h, const QPixmap &, int sx=0, int sy=0);
342 inline void drawTiledPixmap(const QRect &, const QPixmap &, const QPoint & = QPoint());
343#ifndef QT_NO_PICTURE
344 void drawPicture(const QPointF &p, const QPicture &picture);
345 inline void drawPicture(int x, int y, const QPicture &picture);
346 inline void drawPicture(const QPoint &p, const QPicture &picture);
347#endif
348
349 void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect);
350 inline void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect);
351 inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
352 int sx, int sy, int sw, int sh);
353 inline void drawPixmap(int x, int y, const QPixmap &pm,
354 int sx, int sy, int sw, int sh);
355 inline void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr);
356 inline void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr);
357 void drawPixmap(const QPointF &p, const QPixmap &pm);
358 inline void drawPixmap(const QPoint &p, const QPixmap &pm);
359 inline void drawPixmap(int x, int y, const QPixmap &pm);
360 inline void drawPixmap(const QRect &r, const QPixmap &pm);
361 inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm);
362
363 void drawPixmapFragments(const PixmapFragment *fragments, int fragmentCount,
364 const QPixmap &pixmap, PixmapFragmentHints hints = PixmapFragmentHints());
365
366 void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect,
367 Qt::ImageConversionFlags flags = Qt::AutoColor);
368 inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
369 Qt::ImageConversionFlags flags = Qt::AutoColor);
370 inline void drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
371 Qt::ImageConversionFlags flags = Qt::AutoColor);
372 inline void drawImage(const QPoint &p, const QImage &image, const QRect &sr,
373 Qt::ImageConversionFlags flags = Qt::AutoColor);
374 inline void drawImage(const QRectF &r, const QImage &image);
375 inline void drawImage(const QRect &r, const QImage &image);
376 void drawImage(const QPointF &p, const QImage &image);
377 inline void drawImage(const QPoint &p, const QImage &image);
378 inline void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0,
379 int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor);
380
381 void setLayoutDirection(Qt::LayoutDirection direction);
382 Qt::LayoutDirection layoutDirection() const;
383
384#if !defined(QT_NO_RAWFONT)
385 void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun);
386#endif
387
388 void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText);
389 inline void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText);
390 inline void drawStaticText(int left, int top, const QStaticText &staticText);
391
392 void drawText(const QPointF &p, const QString &s);
393 inline void drawText(const QPoint &p, const QString &s);
394 inline void drawText(int x, int y, const QString &s);
395
396 void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding);
397
398 void drawText(const QRectF &r, int flags, const QString &text, QRectF *br = nullptr);
399 void drawText(const QRect &r, int flags, const QString &text, QRect *br = nullptr);
400 inline void drawText(int x, int y, int w, int h, int flags, const QString &text, QRect *br = nullptr);
401
402 void drawText(const QRectF &r, const QString &text, const QTextOption &o = QTextOption());
403
404 QRectF boundingRect(const QRectF &rect, int flags, const QString &text);
405 QRect boundingRect(const QRect &rect, int flags, const QString &text);
406 inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text);
407
408 QRectF boundingRect(const QRectF &rect, const QString &text, const QTextOption &o = QTextOption());
409
410 void drawTextItem(const QPointF &p, const QTextItem &ti);
411 inline void drawTextItem(int x, int y, const QTextItem &ti);
412 inline void drawTextItem(const QPoint &p, const QTextItem &ti);
413
414 void fillRect(const QRectF &, const QBrush &);
415 inline void fillRect(int x, int y, int w, int h, const QBrush &);
416 void fillRect(const QRect &, const QBrush &);
417
418 void fillRect(const QRectF &, const QColor &color);
419 inline void fillRect(int x, int y, int w, int h, const QColor &color);
420 void fillRect(const QRect &, const QColor &color);
421
422 inline void fillRect(int x, int y, int w, int h, Qt::GlobalColor c);
423 inline void fillRect(const QRect &r, Qt::GlobalColor c);
424 inline void fillRect(const QRectF &r, Qt::GlobalColor c);
425
426 inline void fillRect(int x, int y, int w, int h, Qt::BrushStyle style);
427 inline void fillRect(const QRect &r, Qt::BrushStyle style);
428 inline void fillRect(const QRectF &r, Qt::BrushStyle style);
429
430 inline void fillRect(int x, int y, int w, int h, QGradient::Preset preset);
431 inline void fillRect(const QRect &r, QGradient::Preset preset);
432 inline void fillRect(const QRectF &r, QGradient::Preset preset);
433
434 void eraseRect(const QRectF &);
435 inline void eraseRect(int x, int y, int w, int h);
436 inline void eraseRect(const QRect &);
437
438 void setRenderHint(RenderHint hint, bool on = true);
439 void setRenderHints(RenderHints hints, bool on = true);
440 RenderHints renderHints() const;
441 inline bool testRenderHint(RenderHint hint) const { return renderHints() & hint; }
442
443 QPaintEngine *paintEngine() const;
444
445 void beginNativePainting();
446 void endNativePainting();
447
448private:
449 Q_DISABLE_COPY(QPainter)
450
451 QScopedPointer<QPainterPrivate> d_ptr;
452
453 friend class QWidget;
454 friend class QFontEngine;
455 friend class QFontEngineBox;
456 friend class QFontEngineFT;
457 friend class QFontEngineMac;
458 friend class QFontEngineWin;
459 friend class QPaintEngine;
460 friend class QPaintEngineExPrivate;
461 friend class QOpenGLPaintEngine;
462 friend class QWin32PaintEngine;
463 friend class QWin32PaintEnginePrivate;
464 friend class QRasterPaintEngine;
465 friend class QAlphaPaintEngine;
466 friend class QPreviewPaintEngine;
467 friend class QTextEngine;
468};
469Q_DECLARE_TYPEINFO(QPainter::PixmapFragment, Q_RELOCATABLE_TYPE);
470
471Q_DECLARE_OPERATORS_FOR_FLAGS(QPainter::RenderHints)
472
473//
474// functions
475//
476inline void QPainter::drawLine(const QLineF &l)
477{
478 drawLines(&l, 1);
479}
480
481inline void QPainter::drawLine(const QLine &line)
482{
483 drawLines(&line, 1);
484}
485
486inline void QPainter::drawLine(int x1, int y1, int x2, int y2)
487{
488 QLine l(x1, y1, x2, y2);
489 drawLines(&l, 1);
490}
491
492inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
493{
494 QLine l(p1, p2);
495 drawLines(&l, 1);
496}
497
498inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
499{
500 drawLine(QLineF(p1, p2));
501}
502
503inline void QPainter::drawLines(const QList<QLineF> &lines)
504{
505 drawLines(lines.constData(), int(lines.size()));
506}
507
508inline void QPainter::drawLines(const QList<QLine> &lines)
509{
510 drawLines(lines.constData(), int(lines.size()));
511}
512
513inline void QPainter::drawLines(const QList<QPointF> &pointPairs)
514{
515 drawLines(pointPairs.constData(), int(pointPairs.size() / 2));
516}
517
518inline void QPainter::drawLines(const QList<QPoint> &pointPairs)
519{
520 drawLines(pointPairs.constData(), int(pointPairs.size() / 2));
521}
522
523inline void QPainter::drawPolyline(const QPolygonF &polyline)
524{
525 drawPolyline(polyline.constData(), int(polyline.size()));
526}
527
528inline void QPainter::drawPolyline(const QPolygon &polyline)
529{
530 drawPolyline(polyline.constData(), int(polyline.size()));
531}
532
533inline void QPainter::drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule)
534{
535 drawPolygon(polygon.constData(), int(polygon.size()), fillRule);
536}
537
538inline void QPainter::drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule)
539{
540 drawPolygon(polygon.constData(), int(polygon.size()), fillRule);
541}
542
543inline void QPainter::drawConvexPolygon(const QPolygonF &poly)
544{
545 drawConvexPolygon(poly.constData(), int(poly.size()));
546}
547
548inline void QPainter::drawConvexPolygon(const QPolygon &poly)
549{
550 drawConvexPolygon(poly.constData(), int(poly.size()));
551}
552
553inline void QPainter::drawRect(const QRectF &rect)
554{
555 drawRects(&rect, 1);
556}
557
558inline void QPainter::drawRect(int x, int y, int w, int h)
559{
560 QRect r(x, y, w, h);
561 drawRects(&r, 1);
562}
563
564inline void QPainter::drawRect(const QRect &r)
565{
566 drawRects(&r, 1);
567}
568
569inline void QPainter::drawRects(const QList<QRectF> &rects)
570{
571 drawRects(rects.constData(), int(rects.size()));
572}
573
574inline void QPainter::drawRects(const QList<QRect> &rects)
575{
576 drawRects(rects.constData(), int(rects.size()));
577}
578
579inline void QPainter::drawPoint(const QPointF &p)
580{
581 drawPoints(&p, 1);
582}
583
584inline void QPainter::drawPoint(int x, int y)
585{
586 QPoint p(x, y);
587 drawPoints(&p, 1);
588}
589
590inline void QPainter::drawPoint(const QPoint &p)
591{
592 drawPoints(&p, 1);
593}
594
595inline void QPainter::drawPoints(const QPolygonF &points)
596{
597 drawPoints(points.constData(), int(points.size()));
598}
599
600inline void QPainter::drawPoints(const QPolygon &points)
601{
602 drawPoints(points.constData(), int(points.size()));
603}
604
605inline void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
606 Qt::SizeMode mode)
607{
608 drawRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode);
609}
610
611inline void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
612 Qt::SizeMode mode)
613{
614 drawRoundedRect(QRectF(rect), xRadius, yRadius, mode);
615}
616
617inline void QPainter::drawEllipse(int x, int y, int w, int h)
618{
619 drawEllipse(QRect(x, y, w, h));
620}
621
622inline void QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ry)
623{
624 drawEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
625}
626
627inline void QPainter::drawEllipse(const QPoint &center, int rx, int ry)
628{
629 drawEllipse(QRect(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
630}
631
632inline void QPainter::drawArc(const QRect &r, int a, int alen)
633{
634 drawArc(QRectF(r), a, alen);
635}
636
637inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen)
638{
639 drawArc(QRectF(x, y, w, h), a, alen);
640}
641
642inline void QPainter::drawPie(const QRect &rect, int a, int alen)
643{
644 drawPie(QRectF(rect), a, alen);
645}
646
647inline void QPainter::drawPie(int x, int y, int w, int h, int a, int alen)
648{
649 drawPie(QRectF(x, y, w, h), a, alen);
650}
651
652inline void QPainter::drawChord(const QRect &rect, int a, int alen)
653{
654 drawChord(QRectF(rect), a, alen);
655}
656
657inline void QPainter::drawChord(int x, int y, int w, int h, int a, int alen)
658{
659 drawChord(QRectF(x, y, w, h), a, alen);
660}
661
662inline void QPainter::setClipRect(int x, int y, int w, int h, Qt::ClipOperation op)
663{
664 setClipRect(QRect(x, y, w, h), op);
665}
666
667inline void QPainter::eraseRect(const QRect &rect)
668{
669 eraseRect(QRectF(rect));
670}
671
672inline void QPainter::eraseRect(int x, int y, int w, int h)
673{
674 eraseRect(QRectF(x, y, w, h));
675}
676
677inline void QPainter::fillRect(int x, int y, int w, int h, const QBrush &b)
678{
679 fillRect(QRect(x, y, w, h), b);
680}
681
682inline void QPainter::fillRect(int x, int y, int w, int h, const QColor &b)
683{
684 fillRect(QRect(x, y, w, h), b);
685}
686
687inline void QPainter::fillRect(int x, int y, int w, int h, Qt::GlobalColor c)
688{
689 fillRect(QRect(x, y, w, h), QColor(c));
690}
691
692inline void QPainter::fillRect(const QRect &r, Qt::GlobalColor c)
693{
694 fillRect(r, QColor(c));
695}
696
697inline void QPainter::fillRect(const QRectF &r, Qt::GlobalColor c)
698{
699 fillRect(r, QColor(c));
700}
701
702inline void QPainter::fillRect(int x, int y, int w, int h, Qt::BrushStyle style)
703{
704 fillRect(QRectF(x, y, w, h), QBrush(style));
705}
706
707inline void QPainter::fillRect(const QRect &r, Qt::BrushStyle style)
708{
709 fillRect(QRectF(r), QBrush(style));
710}
711
712inline void QPainter::fillRect(const QRectF &r, Qt::BrushStyle style)
713{
714 fillRect(r, QBrush(style));
715}
716
717inline void QPainter::fillRect(int x, int y, int w, int h, QGradient::Preset p)
718{
719 fillRect(QRect(x, y, w, h), QGradient(p));
720}
721
722inline void QPainter::fillRect(const QRect &r, QGradient::Preset p)
723{
724 fillRect(r, QGradient(p));
725}
726
727inline void QPainter::fillRect(const QRectF &r, QGradient::Preset p)
728{
729 fillRect(r, QGradient(p));
730}
731
732inline void QPainter::setBrushOrigin(int x, int y)
733{
734 setBrushOrigin(QPoint(x, y));
735}
736
737inline void QPainter::setBrushOrigin(const QPoint &p)
738{
739 setBrushOrigin(QPointF(p));
740}
741
742inline void QPainter::drawTiledPixmap(const QRect &rect, const QPixmap &pm, const QPoint &offset)
743{
744 drawTiledPixmap(QRectF(rect), pm, QPointF(offset));
745}
746
747inline void QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy)
748{
749 drawTiledPixmap(QRectF(x, y, w, h), pm, QPointF(sx, sy));
750}
751
752inline void QPainter::drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect)
753{
754 drawPixmap(QRectF(targetRect), pixmap, QRectF(sourceRect));
755}
756
757inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm)
758{
759 drawPixmap(QPointF(p), pm);
760}
761
762inline void QPainter::drawPixmap(const QRect &r, const QPixmap &pm)
763{
764 drawPixmap(QRectF(r), pm, QRectF());
765}
766
767inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm)
768{
769 drawPixmap(QPointF(x, y), pm);
770}
771
772inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm)
773{
774 drawPixmap(QRectF(x, y, w, h), pm, QRectF());
775}
776
777inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
778 int sx, int sy, int sw, int sh)
779{
780 drawPixmap(QRectF(x, y, w, h), pm, QRectF(sx, sy, sw, sh));
781}
782
783inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm,
784 int sx, int sy, int sw, int sh)
785{
786 drawPixmap(QRectF(x, y, -1, -1), pm, QRectF(sx, sy, sw, sh));
787}
788
789inline void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr)
790{
791 drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
792}
793
794inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr)
795{
796 drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
797}
798
799inline void QPainter::drawTextItem(int x, int y, const QTextItem &ti)
800{
801 drawTextItem(QPointF(x, y), ti);
802}
803
804inline void QPainter::drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
805 Qt::ImageConversionFlags flags)
806{
807 drawImage(QRectF(targetRect), image, QRectF(sourceRect), flags);
808}
809
810inline void QPainter::drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
811 Qt::ImageConversionFlags flags)
812{
813 drawImage(QRectF(p.x(), p.y(), -1, -1), image, sr, flags);
814}
815
816inline void QPainter::drawImage(const QPoint &p, const QImage &image, const QRect &sr,
817 Qt::ImageConversionFlags flags)
818{
819 drawImage(QRect(p.x(), p.y(), -1, -1), image, sr, flags);
820}
821
822
823inline void QPainter::drawImage(const QRectF &r, const QImage &image)
824{
825 drawImage(r, image, QRect(0, 0, image.width(), image.height()));
826}
827
828inline void QPainter::drawImage(const QRect &r, const QImage &image)
829{
830 drawImage(r, image, QRectF(0, 0, image.width(), image.height()));
831}
832
833inline void QPainter::drawImage(const QPoint &p, const QImage &image)
834{
835 drawImage(QPointF(p), image);
836}
837
838inline void QPainter::drawImage(int x, int y, const QImage &image, int sx, int sy, int sw, int sh,
839 Qt::ImageConversionFlags flags)
840{
841 if (sx == 0 && sy == 0 && sw == -1 && sh == -1 && flags == Qt::AutoColor)
842 drawImage(QPointF(x, y), image);
843 else
844 drawImage(QRectF(x, y, -1, -1), image, QRectF(sx, sy, sw, sh), flags);
845}
846
847inline void QPainter::drawStaticText(const QPoint &p, const QStaticText &staticText)
848{
849 drawStaticText(QPointF(p), staticText);
850}
851
852inline void QPainter::drawStaticText(int x, int y, const QStaticText &staticText)
853{
854 drawStaticText(QPointF(x, y), staticText);
855}
856
857inline void QPainter::drawTextItem(const QPoint &p, const QTextItem &ti)
858{
859 drawTextItem(QPointF(p), ti);
860}
861
862inline void QPainter::drawText(const QPoint &p, const QString &s)
863{
864 drawText(QPointF(p), s);
865}
866
867inline void QPainter::drawText(int x, int y, int w, int h, int flags, const QString &str, QRect *br)
868{
869 drawText(QRect(x, y, w, h), flags, str, br);
870}
871
872inline void QPainter::drawText(int x, int y, const QString &s)
873{
874 drawText(QPointF(x, y), s);
875}
876
877inline QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
878{
879 return boundingRect(QRect(x, y, w, h), flags, text);
880}
881
882inline void QPainter::translate(qreal dx, qreal dy)
883{
884 translate(QPointF(dx, dy));
885}
886
887inline void QPainter::translate(const QPoint &offset)
888{
889 translate(offset.x(), offset.y());
890}
891
892inline void QPainter::setViewport(int x, int y, int w, int h)
893{
894 setViewport(QRect(x, y, w, h));
895}
896
897inline void QPainter::setWindow(int x, int y, int w, int h)
898{
899 setWindow(QRect(x, y, w, h));
900}
901
902#ifndef QT_NO_PICTURE
903inline void QPainter::drawPicture(int x, int y, const QPicture &p)
904{
905 drawPicture(QPoint(x, y), p);
906}
907
908inline void QPainter::drawPicture(const QPoint &pt, const QPicture &p)
909{
910 drawPicture(QPointF(pt), p);
911}
912#endif
913
914QT_END_NAMESPACE
915
916#endif // QPAINTER_H
917

source code of qtbase/src/gui/painting/qpainter.h