1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://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 http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://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 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QPAINTENGINE_BLITTER_P_H 43 #define QPAINTENGINE_BLITTER_P_H 44 45 #include "private/qpaintengine_raster_p.h" 46 47 #ifndef QT_NO_BLITTABLE 48 QT_BEGIN_NAMESPACE 49 50 class QBlitterPaintEnginePrivate; 51 class QBlittablePixmapData; 52 class QBlittable; 53 54 class Q_GUI_EXPORT QBlitterPaintEngine : public QRasterPaintEngine 55 { 56 Q_DECLARE_PRIVATE(QBlitterPaintEngine); 57 public: 58 QBlitterPaintEngine(QBlittablePixmapData *p); 59 type()60 virtual QPaintEngine::Type type() const { return Blitter; } 61 62 virtual bool begin(QPaintDevice *pdev); 63 virtual bool end(); 64 65 // Call down into QBlittable 66 virtual void fill(const QVectorPath &path, const QBrush &brush); 67 virtual void fillRect(const QRectF &rect, const QBrush &brush); 68 virtual void fillRect(const QRectF &rect, const QColor &color); 69 virtual void drawRects(const QRect *rects, int rectCount); 70 virtual void drawRects(const QRectF *rects, int rectCount); 71 void drawPixmap(const QPointF &p, const QPixmap &pm); 72 void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr); 73 74 // State tracking 75 void setState(QPainterState *s); 76 virtual void clipEnabledChanged(); 77 virtual void penChanged(); 78 virtual void brushChanged(); 79 virtual void opacityChanged(); 80 virtual void compositionModeChanged(); 81 virtual void renderHintsChanged(); 82 virtual void transformChanged(); 83 84 // Override to lock the QBlittable before using raster 85 void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode); 86 void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode); 87 void fillPath(const QPainterPath &path, QSpanData *fillData); 88 void fillPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode); 89 void drawEllipse(const QRectF &rect); 90 void drawImage(const QPointF &p, const QImage &img); 91 void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, 92 Qt::ImageConversionFlags flags = Qt::AutoColor); 93 void drawTiledPixmap(const QRectF &r, const QPixmap &pm, const QPointF &sr); 94 void drawTextItem(const QPointF &p, const QTextItem &textItem); 95 void drawPoints(const QPointF *points, int pointCount); 96 void drawPoints(const QPoint *points, int pointCount); 97 void stroke(const QVectorPath &path, const QPen &pen); 98 void drawStaticTextItem(QStaticTextItem *); 99 }; 100 101 QT_END_NAMESPACE 102 #endif //QT_NO_BLITTABLE 103 #endif // QPAINTENGINE_BLITTER_P_H 104 105