code moved to QskArcMetrics

This commit is contained in:
Uwe Rathmann 2024-06-12 12:40:11 +02:00
parent 8775976f0b
commit 69098643ff

View File

@ -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 );