From 76be819345228d589cbc4f5129617151ea604750 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 27 May 2019 09:30:29 +0200 Subject: 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 Reviewed-by: Edward Welbourne --- src/corelib/tools/qtimeline.cpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'src/corelib') diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp index e3c3836764..0b11e7c77b 100644 --- a/src/corelib/tools/qtimeline.cpp +++ b/src/corelib/tools/qtimeline.cpp @@ -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)); } /*! -- cgit v1.2.3