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>bb10
parent
cef3eb5211
commit
ca1921ffe9
|
|
@ -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 ®ion, 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 ®ion, 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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ®ion, 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 ®ion, Qt::ClipOperation op);
|
||||
|
||||
virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue