diff --git a/src/nodes/QskArcNode.cpp b/src/nodes/QskArcNode.cpp index 737bb164..187cd53e 100644 --- a/src/nodes/QskArcNode.cpp +++ b/src/nodes/QskArcNode.cpp @@ -43,20 +43,6 @@ static inline QskGradient qskEffectiveGradient( return gradient; } -static inline QskArcMetrics qskEffectiveMetrics( - const QskArcMetrics& metrics, const QRectF& rect ) -{ - if ( metrics.sizeMode() == Qt::RelativeSize ) - { - const auto rx = 0.5 * rect.width(); - const auto ry = 0.5 * rect.height(); - - return metrics.toAbsolute( rx, ry ); - } - - return metrics; -} - static inline QRectF qskEffectiveRect( const QRectF& rect, const qreal borderWidth ) { @@ -98,7 +84,7 @@ void QskArcNode::setArcData( const QRectF& rect, const QskArcMetrics& arcMetrics const qreal borderWidth, const QColor& borderColor, const QskGradient& fillGradient, const QColor& shadowColor, const QskShadowMetrics& shadowMetrics ) { - const auto metricsArc = qskEffectiveMetrics( arcMetrics, rect ); + const auto metricsArc = arcMetrics.toAbsolute( rect.size() ); const auto gradient = qskEffectiveGradient( fillGradient, metricsArc ); auto shadowNode = static_cast< QskArcShadowNode* >( @@ -111,7 +97,7 @@ void QskArcNode::setArcData( const QRectF& rect, const QskArcMetrics& arcMetrics QskSGNode::findChildNode( this, BorderRole ) ); const auto arcRect = qskEffectiveRect( rect, borderWidth ); - if ( arcRect.isEmpty() ) + if ( metricsArc.isNull() || arcRect.isEmpty() ) { delete shadowNode; delete fillNode; @@ -119,7 +105,7 @@ void QskArcNode::setArcData( const QRectF& rect, const QskArcMetrics& arcMetrics return; } - const auto isFillNodeVisible = gradient.isVisible() && !metricsArc.isNull(); + const auto isFillNodeVisible = gradient.isVisible(); const auto isStrokeNodeVisible = ( borderWidth > 0.0 ) && ( borderColor.alpha() > 0 ); const auto isShadowNodeVisible = isFillNodeVisible && shadowColor.isValid() && ( shadowColor.alpha() > 0.0 );