add QskTickmarksMetrics to QskVariantAnimator

This commit is contained in:
Rick Vogel 2023-11-07 20:30:24 +01:00
parent e37fe4d685
commit 7df1a84cab
3 changed files with 35 additions and 1 deletions

View File

@ -10,6 +10,7 @@
#include "QskBoxShapeMetrics.h"
#include "QskShadowMetrics.h"
#include "QskStippleMetrics.h"
#include "QskTickmarksMetrics.h"
#include "QskColorFilter.h"
#include "QskGradient.h"
#include "QskMargins.h"
@ -49,6 +50,7 @@ static void qskRegisterInterpolator()
qRegisterAnimationInterpolator< QskShadowMetrics >( QskShadowMetrics::interpolate );
qRegisterAnimationInterpolator< QskStippleMetrics >( QskStippleMetrics::interpolate );
qRegisterAnimationInterpolator< QskArcMetrics >( QskArcMetrics::interpolate );
qRegisterAnimationInterpolator< QskTickmarksMetrics >( QskTickmarksMetrics::interpolate );
}
Q_CONSTRUCTOR_FUNCTION( qskRegisterInterpolator )

View File

@ -1,6 +1,6 @@
#include "QskTickmarksMetrics.h"
#include <QVariant>
#include <qvariant.h>
static void qskRegisterTickmarksMetrics()
{
@ -13,6 +13,33 @@ static void qskRegisterTickmarksMetrics()
Q_CONSTRUCTOR_FUNCTION( qskRegisterTickmarksMetrics )
static inline qreal qskInterpolated( qreal from, qreal to, qreal ratio )
{
return from + ( to - from ) * ratio;
}
QskTickmarksMetrics QskTickmarksMetrics::interpolated(
const QskTickmarksMetrics& to, const qreal ratio ) const noexcept
{
if ( ( *this == to ) ) // TODO QskTickmarksMetrics::sizeMode
{
return to;
}
return
{
qskInterpolated(m_minorRatio, to.m_minorRatio, ratio),
qskInterpolated(m_mediumRatio, to.m_mediumRatio, ratio),
qskInterpolated(m_majorRatio, to.m_majorRatio, ratio)
};
}
QVariant QskTickmarksMetrics::interpolate(
const QskTickmarksMetrics& from, const QskTickmarksMetrics& to, const qreal progress )
{
return QVariant::fromValue( from.interpolated( to, progress ) );
}
#ifndef QT_NO_DEBUG_STREAM
#include <qdebug.h>

View File

@ -40,6 +40,11 @@ class QSK_EXPORT QskTickmarksMetrics
Q_REQUIRED_RESULT constexpr qreal ratio( int index ) const noexcept;
constexpr void setRatio(int index, qreal ratio) noexcept;
Q_REQUIRED_RESULT QskTickmarksMetrics interpolated( const QskTickmarksMetrics&,
qreal progress ) const noexcept;
Q_REQUIRED_RESULT static QVariant interpolate(
const QskTickmarksMetrics& , const QskTickmarksMetrics& , qreal progress );
Q_REQUIRED_RESULT QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
private: