summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2012-01-01 21:26:56 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-02 10:44:00 +0100
commitca1921ffe99c95847b810317f9143e27a7cb0967 (patch)
tree8551e641fdbe177ae7212b1396825605787f012c /src/gui/painting
parentcef3eb52110c140a09f41276a1452f80f21fb9c6 (diff)
blitter: Group code by functionality in header and cpp file
* Group code responsible for tracking the render pipeline state to check if we can easily accelerate it * Code that will call into the QBlittable * Code that will lock the QBlittable before calling into raster Change-Id: I862e242d59805de5094ed363b486afcdbc23ff78 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp217
-rw-r--r--src/gui/painting/qpaintengine_blitter_p.h21
2 files changed, 118 insertions, 120 deletions
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
index 0b7571b949..6eeb97bb82 100644
--- a/src/gui/painting/qpaintengine_blitter.cpp
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -360,6 +360,58 @@ QBlitterPaintEngine::QBlitterPaintEngine(QBlittablePlatformPixmap *p)
QBlitterPaintEngine::~QBlitterPaintEngine()
{}
+// State tracking
+void QBlitterPaintEngine::penChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->penChanged();
+
+ d->updatePenState(state());
+}
+
+void QBlitterPaintEngine::brushChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->brushChanged();
+
+ d->updateBrushState(state());
+}
+
+void QBlitterPaintEngine::brushOriginChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->brushOriginChanged();
+}
+
+void QBlitterPaintEngine::opacityChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->opacityChanged();
+ d->updateOpacityState(state());
+}
+
+void QBlitterPaintEngine::compositionModeChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->compositionModeChanged();
+ d->updateCompositionModeState(state());
+}
+
+void QBlitterPaintEngine::renderHintsChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->renderHintsChanged();
+ d->updateRenderHintsState(state());
+}
+
+void QBlitterPaintEngine::transformChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->transformChanged();
+ d->updateTransformState(state());
+}
+
QPainterState *QBlitterPaintEngine::createState(QPainterState *orig) const
{
Q_D(const QBlitterPaintEngine);
@@ -378,7 +430,6 @@ bool QBlitterPaintEngine::begin(QPaintDevice *pdev)
return ok;
}
-
bool QBlitterPaintEngine::end()
{
Q_D(QBlitterPaintEngine);
@@ -390,7 +441,23 @@ bool QBlitterPaintEngine::end()
return d->raster->end();
}
+void QBlitterPaintEngine::setState(QPainterState *s)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ QPaintEngineEx::setState(s);
+ d->raster->setState(s);
+
+ d->updateCompleteState(s);
+}
+inline QRasterPaintEngine *QBlitterPaintEngine::raster() const
+{
+ Q_D(const QBlitterPaintEngine);
+ return d->raster.data();
+}
+
+// Accelerated paths
void QBlitterPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
{
Q_D(QBlitterPaintEngine);
@@ -492,96 +559,6 @@ void QBlitterPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
}
-void QBlitterPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
-{
- Q_D(QBlitterPaintEngine);
- d->lock();
- d->pmData->markRasterOverlay(path);
- d->raster->stroke(path, pen);
-}
-
-void QBlitterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
-{
- Q_D(QBlitterPaintEngine);
- d->lock();
- d->raster->clip(path, op);
- d->updateClipState(state());
-}
-
-void QBlitterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op){
- Q_D(QBlitterPaintEngine);
- d->lock();
- d->raster->clip(rect, op);
- d->updateClipState(state());
-}
-
-void QBlitterPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
-{
- Q_D(QBlitterPaintEngine);
- d->lock();
- d->raster->clip(region, op);
- d->updateClipState(state());
-}
-
-void QBlitterPaintEngine::clipEnabledChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->lock();
- d->raster->clipEnabledChanged();
- d->updateClipState(state());
-}
-
-void QBlitterPaintEngine::penChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->lock();
- d->raster->penChanged();
-
- d->updatePenState(state());
-}
-
-void QBlitterPaintEngine::brushChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->raster->brushChanged();
-
- d->updateBrushState(state());
-}
-
-void QBlitterPaintEngine::brushOriginChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->raster->brushOriginChanged();
-}
-
-void QBlitterPaintEngine::opacityChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->raster->opacityChanged();
- d->updateOpacityState(state());
-}
-
-void QBlitterPaintEngine::compositionModeChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->raster->compositionModeChanged();
- d->updateCompositionModeState(state());
-}
-
-void QBlitterPaintEngine::renderHintsChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->raster->renderHintsChanged();
- d->updateRenderHintsState(state());
-}
-
-void QBlitterPaintEngine::transformChanged()
-{
- Q_D(QBlitterPaintEngine);
- d->raster->transformChanged();
- d->updateTransformState(state());
-}
-
void QBlitterPaintEngine::drawRects(const QRect *rects, int rectCount)
{
Q_D(QBlitterPaintEngine);
@@ -635,6 +612,46 @@ void QBlitterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const Q
}
}
+// Overriden methods to lock the graphics memory
+void QBlitterPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->pmData->markRasterOverlay(path);
+ d->raster->stroke(path, pen);
+}
+
+void QBlitterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clip(path, op);
+ d->updateClipState(state());
+}
+
+void QBlitterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op){
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clip(rect, op);
+ d->updateClipState(state());
+}
+
+void QBlitterPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clip(region, op);
+ d->updateClipState(state());
+}
+
+void QBlitterPaintEngine::clipEnabledChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clipEnabledChanged();
+ d->updateClipState(state());
+}
+
void QBlitterPaintEngine::drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
Qt::ImageConversionFlags flags)
{
@@ -644,7 +661,6 @@ void QBlitterPaintEngine::drawImage(const QRectF &r, const QImage &pm, const QRe
d->raster->drawImage(r, pm, sr, flags);
}
-
void QBlitterPaintEngine::drawTextItem(const QPointF &pos, const QTextItem &ti)
{
Q_D(QBlitterPaintEngine);
@@ -664,7 +680,6 @@ void QBlitterPaintEngine::drawStaticTextItem(QStaticTextItem *sti)
}
-
void QBlitterPaintEngine::drawEllipse(const QRectF &r)
{
Q_D(QBlitterPaintEngine);
@@ -673,22 +688,6 @@ void QBlitterPaintEngine::drawEllipse(const QRectF &r)
d->raster->drawEllipse(r);
}
-void QBlitterPaintEngine::setState(QPainterState *s)
-{
- Q_D(QBlitterPaintEngine);
- d->lock();
- QPaintEngineEx::setState(s);
- d->raster->setState(s);
-
- d->updateCompleteState(s);
-}
-
-inline QRasterPaintEngine *QBlitterPaintEngine::raster() const
-{
- Q_D(const QBlitterPaintEngine);
- return d->raster.data();
-}
-
QT_END_NAMESPACE
#endif //QT_NO_BLITTABLE
diff --git a/src/gui/painting/qpaintengine_blitter_p.h b/src/gui/painting/qpaintengine_blitter_p.h
index 13a059705c..105cf489c2 100644
--- a/src/gui/painting/qpaintengine_blitter_p.h
+++ b/src/gui/painting/qpaintengine_blitter_p.h
@@ -66,12 +66,14 @@ public:
virtual bool begin(QPaintDevice *pdev);
virtual bool end();
+ // Call down into QBlittable
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 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 clipEnabledChanged();
virtual void penChanged();
@@ -82,13 +84,10 @@ public:
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);
+ // Override to lock the QBlittable before using raster
+ 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 drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags);