diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2009-11-09 13:07:50 (GMT) |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2009-11-09 13:08:55 (GMT) |
commit | 49696780e9cf026b2a7063976eb42f823a6792d8 (patch) | |
tree | 2c7ef648030b63494372fca92751d7321b1f7002 /src/gui/painting/qpaintengine_blitter_p.h | |
parent | a43f98dea9024f84223ae8c8c59db1b4e5ead588 (diff) | |
download | Qt-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.h | 94 |
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 ®ion, 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 |