From 998153f6ecf432415c53ab060dd08b89fb1c0c52 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Wed, 21 Dec 2022 13:26:46 +0100 Subject: [PATCH] minor improvements --- playground/gradients/GradientView.cpp | 66 ++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/playground/gradients/GradientView.cpp b/playground/gradients/GradientView.cpp index 377ba676..d7c82195 100644 --- a/playground/gradients/GradientView.cpp +++ b/playground/gradients/GradientView.cpp @@ -11,9 +11,12 @@ #include #include -#include +#include #include #include +#include +#include +#include #include #include @@ -32,6 +35,11 @@ namespace class PaintedNode final : public QskPaintedNode { public: + PaintedNode() + { + setRenderHint( QskPaintedNode::Raster ); + } + void updateNode( QQuickWindow* window, const QRectF& rect, const QskGradient& gradient ) { @@ -53,6 +61,49 @@ namespace painter->fillRect( rect, gradient->toQGradient( rect ) ); } }; + + class InfoLabel : public QskTextLabel + { + public: + InfoLabel( GradientView::NodeType nodeType, QQuickItem* parent ) + : QskTextLabel( parent ) + { + QString text; + + switch( nodeType ) + { + case GradientView::Painted: + text = "QskPaintedNode"; + break; + + case GradientView::Rectangle: + text = "QskRectangleNode"; + break; + + case GradientView::BoxFill: + text = "QskBoxRectangleNode"; + break; + + #ifdef SHAPE_GRADIENT + case GradientView::Shape: + text = "QQuickShapeGenericNode"; + break; + #endif + + default: + break; + } + + if ( !text.isEmpty() ) + { + QColor c( Qt::white ); + c.setAlpha( 200 ); + setBackgroundColor( c ); + + setText( text ); + } + } + }; } GradientView::GradientView( NodeType nodeType, QQuickItem* parent ) @@ -60,6 +111,10 @@ GradientView::GradientView( NodeType nodeType, QQuickItem* parent ) , m_nodeType( nodeType ) { setFlag( QQuickItem::ItemHasContents, true ); + + auto label = new InfoLabel( nodeType, this ); + label->setPosition( 10, 10 ); + label->setSize( label->sizeHint() ); } GradientView::NodeType GradientView::GradientView::nodeType() const @@ -110,7 +165,14 @@ QSGNode* GradientView::updatePaintNode( } case BoxFill: { - auto node = gradientNode< QskBoxFillNode >( oldNode ); + if ( !QskBoxRenderer::isGradientSupported( + QskBoxShapeMetrics(), m_gradient ) ) + { + delete oldNode; + return nullptr; + } + + auto node = gradientNode< QskBoxRectangleNode >( oldNode ); node->updateNode( rect, m_gradient ); return node;