From 6ed417873eb1d7b2ab4a65ea6d0b164fa2982cbc Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Mon, 5 Dec 2022 17:00:54 +0100 Subject: [PATCH] QskSGNode::resetGeometry added --- src/nodes/QskBoxFillNode.cpp | 13 ++----------- src/nodes/QskSGNode.cpp | 15 +++++++++++++++ src/nodes/QskSGNode.h | 2 ++ src/nodes/QskShapeNode.cpp | 13 ++----------- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/nodes/QskBoxFillNode.cpp b/src/nodes/QskBoxFillNode.cpp index fbb3db7f..02e8bd81 100644 --- a/src/nodes/QskBoxFillNode.cpp +++ b/src/nodes/QskBoxFillNode.cpp @@ -10,6 +10,7 @@ #include "QskBoxShapeMetrics.h" #include "QskBoxBorderMetrics.h" #include "QskBoxRenderer.h" +#include "QskSGNode.h" #include @@ -41,16 +42,6 @@ static inline QskGradient qskEffectiveGradient( const QskGradient& gradient ) return gradient; } -static inline void qskResetGeometry( QskBoxFillNode* node ) -{ - auto g = node->geometry(); - if ( g->vertexCount() > 0 ) - { - g->allocate( 0 ); - node->markDirty( QSGNode::DirtyGeometry ); - } -} - class QskBoxFillNodePrivate final : public QSGGeometryNodePrivate { public: @@ -86,7 +77,7 @@ void QskBoxFillNode::updateNode( { d->rect = QRectF(); d->metricsHash = 0; - qskResetGeometry( this ); + QskSGNode::resetGeometry( this ); return; } diff --git a/src/nodes/QskSGNode.cpp b/src/nodes/QskSGNode.cpp index ce9e9011..30b11785 100644 --- a/src/nodes/QskSGNode.cpp +++ b/src/nodes/QskSGNode.cpp @@ -166,3 +166,18 @@ void QskSGNode::replaceChildNode( delete oldNode; } } + +void QskSGNode::resetGeometry( QSGGeometryNode* node ) +{ + if ( node ) + { + if ( auto g = node->geometry() ) + { + if ( g->vertexCount() > 0 || g->indexCount() > 0 ) + { + g->allocate( 0, 0 ); + node->markDirty( QSGNode::DirtyGeometry ); + } + } + } +} diff --git a/src/nodes/QskSGNode.h b/src/nodes/QskSGNode.h index a0c02786..539dc404 100644 --- a/src/nodes/QskSGNode.h +++ b/src/nodes/QskSGNode.h @@ -84,6 +84,8 @@ namespace QskSGNode return static_cast< Node* >( node ); } + + void resetGeometry( QSGGeometryNode* ); } #endif diff --git a/src/nodes/QskShapeNode.cpp b/src/nodes/QskShapeNode.cpp index a95101a1..016d6431 100644 --- a/src/nodes/QskShapeNode.cpp +++ b/src/nodes/QskShapeNode.cpp @@ -7,6 +7,7 @@ #include "QskGradientMaterial.h" #include "QskGradient.h" #include "QskGradientDirection.h" +#include "QskSGNode.h" #include @@ -73,16 +74,6 @@ static void qskUpdateGeometry( const QPainterPath& path, #endif } -static inline void qskResetGeometry( QskShapeNode* node ) -{ - auto g = node->geometry(); - if ( g->vertexCount() > 0 ) - { - g->allocate( 0 ); - node->markDirty( QSGNode::DirtyGeometry ); - } -} - class QskShapeNodePrivate final : public QSGGeometryNodePrivate { public: @@ -122,7 +113,7 @@ void QskShapeNode::updateNode( const QPainterPath& path, { d->path = QPainterPath(); d->transform = QTransform(); - qskResetGeometry( this ); + QskSGNode::resetGeometry( this ); return; }