summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJulien Brianceau <jbrianceau@nds.com>2012-11-07 11:01:08 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-07 14:19:00 +0100
commit07ea3cf0b3883979e84bd91a5dc6a7a126de3123 (patch)
tree0f7164f0dafc3b4c637f07f445e6945884930386 /src
parent2027f204b5deba93135349da27e58c9d6f6a8aed (diff)
qpa: Fix rendering issue in blitter engine (negative scaling factors)
A 180° rotation results in a TxScale QTransform with negative scaling factors (x=-1.0 y=-1.0). This is not properly handled by blitter paint engine yet, so use software rendering fallback in this case. This rendering issue can be seen when using "-webkit-transform" CSS property in WebKit with DirectFB QPA platform. Change-Id: Iee496b6bf0c90ffe36c4235ceaa2c80f296b2ca4 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
index 1acdf8c433..c45513b4aa 100644
--- a/src/gui/painting/qpaintengine_blitter.cpp
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -330,7 +330,11 @@ void QBlitterPaintEnginePrivate::updateTransformState(QPainterState *s)
{
QTransform::TransformationType type = s->matrix.type();
- caps.updateState(STATE_XFORM_COMPLEX, type > QTransform::TxScale);
+ // consider scaling operations with a negative factor as "complex" for now.
+ // as some blitters could handle axisymmetrical operations, we should improve blitter
+ // paint engine to handle them as a capability
+ caps.updateState(STATE_XFORM_COMPLEX, (type > QTransform::TxScale) ||
+ ((type == QTransform::TxScale) && ((s->matrix.m11() < 0.0) || (s->matrix.m22() < 0.0))));
caps.updateState(STATE_XFORM_SCALE, type > QTransform::TxTranslate);
hasXForm = type >= QTransform::TxTranslate;