From 5fd71e9bd83935c907eb5ad8ffc270ae42ff05ae Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 8 Aug 2014 12:10:11 +0200 Subject: Adapt to new visitor pattern for rendering Change-Id: I32b5d748a5cadcb88511f401924d3b3635275881 Reviewed-by: Lars Knoll --- softwarecontext/context.cpp | 34 ++-------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) (limited to 'softwarecontext/context.cpp') diff --git a/softwarecontext/context.cpp b/softwarecontext/context.cpp index 9d0b7a3097..d656125f0c 100644 --- a/softwarecontext/context.cpp +++ b/softwarecontext/context.cpp @@ -45,6 +45,7 @@ #include "imagenode.h" #include "pixmaptexture.h" #include "glyphnode.h" +#include "renderingvisitor.h" #include #include @@ -99,42 +100,12 @@ void Renderer::render() painter.setRenderHint(QPainter::Antialiasing); painter.fillRect(rect, Qt::white); - renderNode(&painter, rootNode()); + RenderingVisitor(&painter).visitChildren(rootNode()); backingStore->endPaint(); backingStore->flush(rect); } -void Renderer::renderNode(QPainter *painter, QSGNode *node) -{ - bool restore = false; - - if (node->type() == QSGNode::TransformNodeType) { - QSGTransformNode *tn = static_cast(node); - painter->save(); - restore = true; - painter->setTransform(tn->matrix().toTransform(), /*combine*/true); - } else if (node->type() == QSGNode::ClipNodeType) { - QSGClipNode *cn = static_cast(node); - painter->save(); - restore = true; - painter->setClipRect(cn->clipRect(), Qt::IntersectClip); - } else if (node->type() == QSGNode::OpacityNodeType) { - QSGOpacityNode *on = static_cast(node); - painter->save(); - restore = true; - painter->setOpacity(on->opacity()); - } - - node->paint(painter); - - for (QSGNode *child = node->firstChild(); child; child = child->nextSibling()) - renderNode(painter, child); - - if (restore) - painter->restore(); -} - RenderContext::RenderContext(QSGContext *ctx) : QSGRenderContext(ctx) , currentWindow(0) @@ -192,5 +163,4 @@ void RenderContext::renderNextFrame(QSGRenderer *renderer, GLuint fbo) QSGRenderContext::renderNextFrame(renderer, fbo); } - } // namespace -- cgit v1.2.3