From 03a38f4609a69f6a8b3a5ed776f62d0277935709 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 13 Aug 2014 10:15:34 +0200 Subject: Adapt to internal scene graph API changes The changed visitor API requires a boolean to visit() to indicate whether a sub-tree should be processed or not. Change-Id: Iede12fb50d5aad7843af19855d72c18f968b8d55 Reviewed-by: Lars Knoll --- softwarecontext/renderingvisitor.cpp | 36 ++++++++++++++++++++++++++---------- softwarecontext/renderingvisitor.h | 18 ++++++++++-------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/softwarecontext/renderingvisitor.cpp b/softwarecontext/renderingvisitor.cpp index fb4d2f4025..dcad6b35ae 100644 --- a/softwarecontext/renderingvisitor.cpp +++ b/softwarecontext/renderingvisitor.cpp @@ -30,10 +30,11 @@ RenderingVisitor::RenderingVisitor(QPainter *painter) } -void RenderingVisitor::visit(QSGTransformNode *node) +bool RenderingVisitor::visit(QSGTransformNode *node) { painter->save(); painter->setTransform(node->matrix().toTransform(), /*combine*/true); + return true; } void RenderingVisitor::endVisit(QSGTransformNode *) @@ -41,10 +42,11 @@ void RenderingVisitor::endVisit(QSGTransformNode *) painter->restore(); } -void RenderingVisitor::visit(QSGClipNode *node) +bool RenderingVisitor::visit(QSGClipNode *node) { painter->save(); painter->setClipRect(node->clipRect(), Qt::IntersectClip); + return true; } void RenderingVisitor::endVisit(QSGClipNode *) @@ -52,20 +54,22 @@ void RenderingVisitor::endVisit(QSGClipNode *) painter->restore(); } -void RenderingVisitor::visit(QSGGeometryNode *node) +bool RenderingVisitor::visit(QSGGeometryNode *node) { -// Q_UNREACHABLE(); + Q_UNREACHABLE(); + return true; } void RenderingVisitor::endVisit(QSGGeometryNode *node) { -// Q_UNREACHABLE(); + Q_UNREACHABLE(); } -void RenderingVisitor::visit(QSGOpacityNode *node) +bool RenderingVisitor::visit(QSGOpacityNode *node) { painter->save(); painter->setOpacity(node->opacity()); + return true; } void RenderingVisitor::endVisit(QSGOpacityNode *node) @@ -73,39 +77,51 @@ void RenderingVisitor::endVisit(QSGOpacityNode *node) painter->restore(); } -void RenderingVisitor::visit(QSGImageNode *node) +bool RenderingVisitor::visit(QSGImageNode *node) { static_cast(node)->paint(painter); + return true; } void RenderingVisitor::endVisit(QSGImageNode *) { } -void RenderingVisitor::visit(QSGRectangleNode *node) +bool RenderingVisitor::visit(QSGRectangleNode *node) { static_cast(node)->paint(painter); + return true; } void RenderingVisitor::endVisit(QSGRectangleNode *) { } -void RenderingVisitor::visit(QSGGlyphNode *node) +bool RenderingVisitor::visit(QSGGlyphNode *node) { static_cast(node)->paint(painter); + return true; } void RenderingVisitor::endVisit(QSGGlyphNode *) { } -void RenderingVisitor::visit(QSGNinePatchNode *node) +bool RenderingVisitor::visit(QSGNinePatchNode *node) { static_cast(node)->paint(painter); + return true; } void RenderingVisitor::endVisit(QSGNinePatchNode *) { +} +bool RenderingVisitor::visit(QSGRootNode *) +{ + return true; +} + +void RenderingVisitor::endVisit(QSGRootNode *) +{ } diff --git a/softwarecontext/renderingvisitor.h b/softwarecontext/renderingvisitor.h index 7e30c85968..397c2053c2 100644 --- a/softwarecontext/renderingvisitor.h +++ b/softwarecontext/renderingvisitor.h @@ -27,22 +27,24 @@ class RenderingVisitor : public QSGNodeVisitorEx public: RenderingVisitor(QPainter *painter); - virtual void visit(QSGTransformNode *node); + virtual bool visit(QSGTransformNode *node); virtual void endVisit(QSGTransformNode *); - virtual void visit(QSGClipNode *node); + virtual bool visit(QSGClipNode *node); virtual void endVisit(QSGClipNode *node); - virtual void visit(QSGGeometryNode *node); + virtual bool visit(QSGGeometryNode *node); virtual void endVisit(QSGGeometryNode *node); - virtual void visit(QSGOpacityNode *node); + virtual bool visit(QSGOpacityNode *node); virtual void endVisit(QSGOpacityNode *node); - virtual void visit(QSGImageNode *node); + virtual bool visit(QSGImageNode *node); virtual void endVisit(QSGImageNode *node); - virtual void visit(QSGRectangleNode *node); + virtual bool visit(QSGRectangleNode *node); virtual void endVisit(QSGRectangleNode *node); - virtual void visit(QSGGlyphNode *node); + virtual bool visit(QSGGlyphNode *node); virtual void endVisit(QSGGlyphNode *node); - virtual void visit(QSGNinePatchNode *node); + virtual bool visit(QSGNinePatchNode *node); virtual void endVisit(QSGNinePatchNode *); + virtual bool visit(QSGRootNode *); + virtual void endVisit(QSGRootNode *); private: QPainter *painter; -- cgit v1.2.3