QEasingCurve: reduce code duplication in setCurveShape()

Instead of creating an explicit QEasingCurve object in each
switched-over case, extract the conversion between the enums
involved into a helper and just call setEasingCurve() with
the result (implicitly converted to QEasingCurve).

Saves 0.5KiB in text size on optimized AMD64 Linux GCC 9.1
builds.

Change-Id: I81b5d7199d9dd99ba3735c910a50e371e0b99838
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
bb10
Marc Mutz 2019-05-27 09:30:29 +02:00
parent bcf6f99237
commit 76be819345
1 changed files with 15 additions and 19 deletions

View File

@ -526,28 +526,24 @@ QTimeLine::CurveShape QTimeLine::curveShape() const
return EaseInOutCurve;
}
void QTimeLine::setCurveShape(CurveShape shape)
static QEasingCurve::Type convert(QTimeLine::CurveShape shape)
{
switch (shape) {
case EaseInOutCurve:
setEasingCurve(QEasingCurve(QEasingCurve::InOutSine));
break;
case EaseInCurve:
setEasingCurve(QEasingCurve(QEasingCurve::InCurve));
break;
case EaseOutCurve:
setEasingCurve(QEasingCurve(QEasingCurve::OutCurve));
break;
case LinearCurve:
setEasingCurve(QEasingCurve(QEasingCurve::Linear));
break;
case SineCurve:
setEasingCurve(QEasingCurve(QEasingCurve::SineCurve));
break;
case CosineCurve:
setEasingCurve(QEasingCurve(QEasingCurve::CosineCurve));
break;
#define CASE(x, y) case QTimeLine::x: return QEasingCurve::y
CASE(EaseInOutCurve, InOutSine);
CASE(EaseInCurve, InCurve);
CASE(EaseOutCurve, OutCurve);
CASE(LinearCurve, Linear);
CASE(SineCurve, SineCurve);
CASE(CosineCurve, CosineCurve);
#undef CASE
}
Q_UNREACHABLE();
}
void QTimeLine::setCurveShape(CurveShape shape)
{
setEasingCurve(convert(shape));
}
/*!