elliptic scaling fixed
This commit is contained in:
parent
1dcdca3489
commit
67b10cca0a
@ -89,45 +89,32 @@ QskBoxShapeMetrics QskBoxShapeMetrics::toAbsolute( const QSizeF& size ) const no
|
|||||||
if ( m_sizeMode != Qt::RelativeSize )
|
if ( m_sizeMode != Qt::RelativeSize )
|
||||||
return *this;
|
return *this;
|
||||||
|
|
||||||
QskBoxShapeMetrics absoluted = *this;
|
|
||||||
absoluted.m_sizeMode = Qt::AbsoluteSize;
|
|
||||||
|
|
||||||
if ( size.isEmpty() )
|
if ( size.isEmpty() )
|
||||||
{
|
return QskBoxShapeMetrics();
|
||||||
for ( int i = 0; i < 4; i++ )
|
|
||||||
absoluted.m_radii[ i ] = QSizeF( 0.0, 0.0 );
|
|
||||||
|
|
||||||
return absoluted;
|
QskBoxShapeMetrics shape = *this;
|
||||||
|
shape.m_sizeMode = Qt::AbsoluteSize;
|
||||||
|
|
||||||
|
for ( int i = 0; i < 4; i++ )
|
||||||
|
{
|
||||||
|
auto& radius = shape.m_radii[ i ];
|
||||||
|
|
||||||
|
if ( radius.isEmpty() )
|
||||||
|
{
|
||||||
|
radius.rheight() = radius.rwidth() = 0.0;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const qreal rx = qskAbsoluted( size.width(), radius.width() );
|
||||||
|
const qreal ry = qskAbsoluted( size.height(), radius.height() );
|
||||||
|
|
||||||
if ( m_scalingMode == Circular )
|
if ( m_scalingMode == Circular )
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < 4; i++ )
|
|
||||||
{
|
|
||||||
auto& radius = absoluted.m_radii[ i ];
|
|
||||||
|
|
||||||
const qreal rx = qskAbsoluted( size.width(), radius.width() );
|
|
||||||
const qreal ry = qskAbsoluted( size.height(), radius.height() );
|
|
||||||
|
|
||||||
radius.rheight() = radius.rwidth() = std::min( rx, ry );
|
radius.rheight() = radius.rwidth() = std::min( rx, ry );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const auto ratio = size.height() / size.width();
|
const auto ratio = radius.height() / radius.width();
|
||||||
|
|
||||||
for ( int i = 0; i < 4; i++ )
|
|
||||||
{
|
|
||||||
auto& radius = absoluted.m_radii[ i ];
|
|
||||||
|
|
||||||
const qreal rx = qskAbsoluted( size.width(), radius.width() );
|
|
||||||
const qreal ry = qskAbsoluted( size.height(), radius.height() );
|
|
||||||
|
|
||||||
if ( rx <= 0.0 || ry <= 0.0 )
|
|
||||||
{
|
|
||||||
radius.rwidth() = radius.rheight() = 0.0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ratio >= 1.0 )
|
if ( ratio >= 1.0 )
|
||||||
{
|
{
|
||||||
@ -142,7 +129,7 @@ QskBoxShapeMetrics QskBoxShapeMetrics::toAbsolute( const QSizeF& size ) const no
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return absoluted;
|
return shape;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskBoxShapeMetrics QskBoxShapeMetrics::interpolated(
|
QskBoxShapeMetrics QskBoxShapeMetrics::interpolated(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user