summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qpaintengine_blitter_p.h
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2009-11-09 13:07:50 (GMT)
committerJørgen Lind <jorgen.lind@nokia.com>2009-11-09 13:08:55 (GMT)
commit49696780e9cf026b2a7063976eb42f823a6792d8 (patch)
tree2c7ef648030b63494372fca92751d7321b1f7002 /src/gui/painting/qpaintengine_blitter_p.h
parenta43f98dea9024f84223ae8c8c59db1b4e5ead588 (diff)
downloadQt-49696780e9cf026b2a7063976eb42f823a6792d8.zip
Qt-49696780e9cf026b2a7063976eb42f823a6792d8.tar.gz
Qt-49696780e9cf026b2a7063976eb42f823a6792d8.tar.bz2
Adding the blitter paint engine
Diffstat (limited to 'src/gui/painting/qpaintengine_blitter_p.h')
-rw-r--r--src/gui/painting/qpaintengine_blitter_p.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/gui/painting/qpaintengine_blitter_p.h b/src/gui/painting/qpaintengine_blitter_p.h
new file mode 100644
index 0000000..90493a4
--- /dev/null
+++ b/src/gui/painting/qpaintengine_blitter_p.h
@@ -0,0 +1,94 @@
+#ifndef QPAINTENGINE_BLITTER_P_H
+#define QPAINTENGINE_BLITTER_P_H
+
+#include "private/qpaintengineex_p.h"
+
+class QRasterPaintEngine;
+class QBlittablePrivate;
+class QBlitterPaintEnginePrivate;
+
+// ### find name
+class Q_GUI_EXPORT QBlittable
+{
+ Q_DECLARE_PRIVATE(QBlittable);
+public:
+ enum Capability {
+
+ SolidRectCapability = 0x0001,
+ SourcePixmapCapability = 0x0002,
+ SourceOverPixmapCapability = 0x0004,
+ SourceOverScaledPixmapCapability = 0x0008,
+
+ // Internal ones
+ OutlineCapability = 0x0001000,
+ };
+ Q_DECLARE_FLAGS(Capabilities, Capability);
+
+ QBlittable(Capabilities caps);
+ virtual ~QBlittable();
+
+ Capabilities capabilities() const;
+
+ virtual void fillRect(const QRectF &rect, const QColor &color) = 0;
+ virtual void drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &subrect) = 0;
+
+ virtual QImage *lock() = 0;
+ virtual void unlock() = 0;
+
+protected:
+ QBlittablePrivate *d_ptr;
+
+ QBlittable(QBlittablePrivate &d, Capabilities caps);
+};
+
+
+class Q_GUI_EXPORT QBlitterPaintEngine : public QPaintEngineEx
+{
+ Q_DECLARE_PRIVATE(QBlitterPaintEngine);
+public:
+ QBlitterPaintEngine(QPaintDevice *p);
+ ~QBlitterPaintEngine();
+
+ virtual QPainterState *createState(QPainterState *orig) const;
+
+ virtual QPaintEngine::Type type() const { return Blitter; }
+
+ virtual bool begin(QPaintDevice *pdev);
+ virtual bool end();
+
+ virtual void fill(const QVectorPath &path, const QBrush &brush);
+ virtual void stroke(const QVectorPath &path, const QPen &pen);
+
+ virtual void clip(const QVectorPath &path, Qt::ClipOperation op);
+ virtual void clip(const QRect &rect, Qt::ClipOperation op);
+ virtual void clip(const QRegion &region, Qt::ClipOperation op);
+
+ virtual void clipEnabledChanged();
+ virtual void penChanged();
+ virtual void brushChanged();
+ virtual void brushOriginChanged();
+ virtual void opacityChanged();
+ virtual void compositionModeChanged();
+ virtual void renderHintsChanged();
+ virtual void transformChanged();
+
+ virtual void fillRect(const QRectF &rect, const QBrush &brush);
+ virtual void fillRect(const QRectF &rect, const QColor &color);
+
+ virtual void drawRects(const QRect *rects, int rectCount);
+ virtual void drawRects(const QRectF *rects, int rectCount);
+
+ virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
+
+ virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags);
+
+ virtual void drawTextItem(const QPointF &pos, const QTextItem &ti);
+
+ virtual void setState(QPainterState *s);
+
+ inline QPainterState *state() { return static_cast<QPainterState *>(QPaintEngine::state); }
+ inline const QPainterState *state() const { return static_cast<const QPainterState *>(QPaintEngine::state); }
+
+};
+
+#endif // QPAINTENGINE_BLITTER_P_H