diff options
author | Andy Nichols <andy.nichols@theqtcompany.com> | 2016-04-02 23:59:48 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2016-04-06 21:27:35 +0000 |
commit | 62df019fc367511da4f949bed5afefcf5f3c0940 (patch) | |
tree | 45946b5054f446ad9ec44e395615cf6701a7ee8e /src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h | |
parent | 8ab2625c42a904681fa95a888aebe87b6b5626ff (diff) |
2DRenderer: Allow clipping when items are rotated
Previously clipping was only possible if items were rotated in
increments of 90 degrees. Now it is possible to clip items that are
rotated at any angle, but there is a performance and accuracy penalty
because QRegion is terrible.
Change-Id: Ibcb57b6d8718458eff718de117d113975cfe26db
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h')
-rw-r--r-- | src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h b/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h index 1c7e6bb8ab..37f953d576 100644 --- a/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h +++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater_p.h @@ -83,7 +83,7 @@ public: private: struct NodeState { float opacity; - QRectF clip; + QRegion clip; QTransform transform; QSGNode *parent; }; @@ -95,7 +95,7 @@ private: QSGAbstractSoftwareRenderer *m_renderer; QStack<float> m_opacityState; - QStack<QRectF> m_clipState; + QStack<QRegion> m_clipState; QStack<QTransform> m_transformState; QHash<QSGNode*,NodeState> m_stateMap; }; @@ -113,7 +113,7 @@ bool QSGSoftwareRenderableNodeUpdater::updateRenderableNode(QSGSoftwareRenderabl //Update the node renderableNode->setTransform(m_transformState.top()); renderableNode->setOpacity(m_opacityState.top()); - renderableNode->setClipRect(m_clipState.top()); + renderableNode->setClipRegion(m_clipState.top()); renderableNode->update(); m_stateMap[node] = currentState(node); |