code of QskBoxNode/QskArcNode aligned

This commit is contained in:
Uwe Rathmann 2024-09-24 10:17:10 +02:00
parent 25b9423ae4
commit a946394e9d
2 changed files with 24 additions and 14 deletions

View File

@ -120,7 +120,10 @@ void QskArcNode::setArcData( const QRectF& rect, const QskArcMetrics& arcMetrics
if ( hasBorder && hasFilling )
{
if ( !QskArcRenderer::isGradientSupported( rect, metricsArc, gradient ) )
const bool doCombine = arcNode->hasHint( QskFillNode::PreferColoredGeometry )
&& QskArcRenderer::isGradientSupported( rect, metricsArc, gradient );
if ( !doCombine )
fillNode = qskNode< QskArcRenderNode >( this, FillRole );
}

View File

@ -70,7 +70,10 @@ void QskBoxNode::updateNode( const QRectF& rect,
if ( !rect.isEmpty() )
{
const auto hasShadow = !shadowMetrics.isNull()
const auto hasFilling = gradient.isVisible();
const auto hasBorder = !borderMetrics.isNull() && borderColors.isVisible();
const auto hasShadow = hasFilling && !shadowMetrics.isNull()
&& QskRgb::isVisible( shadowColor );
if ( hasShadow )
@ -80,24 +83,28 @@ void QskBoxNode::updateNode( const QRectF& rect,
shape, shadowMetrics.blurRadius(), shadowColor );
}
if ( QskBoxRectangleNode::isCombinedGeometrySupported( gradient ) )
if ( hasBorder || hasFilling )
{
rectNode = qskNode< QskBoxRectangleNode >( this, BoxRole );
rectNode->updateBox( rect, shape, borderMetrics, borderColors, gradient );
}
else
{
if ( !borderMetrics.isNull() && borderColors.isVisible() )
{
rectNode = qskNode< QskBoxRectangleNode >( this, BoxRole );
rectNode->updateBorder( rect, shape, borderMetrics, borderColors );
}
if ( gradient.isVisible() )
if ( hasBorder && hasFilling )
{
fillNode = qskNode< QskBoxRectangleNode >( this, FillRole );
const bool doCombine = rectNode->hasHint( QskFillNode::PreferColoredGeometry )
&& QskBoxRectangleNode::isCombinedGeometrySupported( gradient );
if ( !doCombine )
fillNode = qskNode< QskBoxRectangleNode >( this, FillRole );
}
if ( fillNode )
{
rectNode->updateBorder( rect, shape, borderMetrics, borderColors );
fillNode->updateFilling( rect, shape, borderMetrics, gradient );
}
else
{
rectNode->updateBox( rect, shape, borderMetrics, borderColors, gradient );
}
}
}