From 0e5fde17dab3527e8dae4553b93158241c98e9fa Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 5 Jun 2022 18:34:29 +0300 Subject: [PATCH] better QDebug streaming operator for QEasingCurve Signed-off-by: Ivailo Monev --- src/core/tools/qeasingcurve.cpp | 168 ++++++++++++++++++++++++++++++++++++++-- src/core/tools/qeasingcurve.h | 4 +- 2 files changed, 164 insertions(+), 8 deletions(-) diff --git a/src/core/tools/qeasingcurve.cpp b/src/core/tools/qeasingcurve.cpp index 9dc90010a..1fc08ebfe 100644 --- a/src/core/tools/qeasingcurve.cpp +++ b/src/core/tools/qeasingcurve.cpp @@ -708,14 +708,170 @@ qreal QEasingCurve::valueForProgress(qreal progress) const } #ifndef QT_NO_DEBUG_STREAM -QDebug operator<<(QDebug debug, const QEasingCurve &item) +static const char* const easingTypeName(const QEasingCurve::Type type) { - debug << "type:" << item.d_ptr->type - << "func:" << item.d_ptr->func; - debug << QString::fromAscii("period:%1").arg(item.d_ptr->per, 0, 'f', 20) - << QString::fromAscii("amp:%1").arg(item.d_ptr->amp, 0, 'f', 20) - << QString::fromAscii("overshoot:%1").arg(item.d_ptr->over, 0, 'f', 20); + switch (type) { + case QEasingCurve::Linear: { + return "Linear"; + } + case QEasingCurve::InQuad: { + return "InQuad"; + } + case QEasingCurve::OutQuad: { + return "OutQuad"; + } + case QEasingCurve::InOutQuad: { + return "InOutQuad"; + } + case QEasingCurve::OutInQuad: { + return "OutInQuad"; + } + case QEasingCurve::InCubic: { + return "InCubic"; + } + case QEasingCurve::OutCubic: { + return "OutCubic"; + } + case QEasingCurve::InOutCubic: { + return "InOutCubic"; + } + case QEasingCurve::OutInCubic: { + return "OutInCubic"; + } + case QEasingCurve::InQuart: { + return "InQuart"; + } + case QEasingCurve::OutQuart: { + return "OutQuart"; + } + case QEasingCurve::InOutQuart: { + return "InOutQuart"; + } + case QEasingCurve::OutInQuart: { + return "OutInQuart"; + } + case QEasingCurve::InQuint: { + return "InQuint"; + } + case QEasingCurve::OutQuint: { + return "OutQuint"; + } + case QEasingCurve::InOutQuint: { + return "InOutQuint"; + } + case QEasingCurve::OutInQuint: { + return "OutInQuint"; + } + case QEasingCurve::InSine: { + return "InSine"; + } + case QEasingCurve::OutSine: { + return "OutSine"; + } + case QEasingCurve::InOutSine: { + return "InOutSine"; + } + case QEasingCurve::OutInSine: { + return "OutInSine"; + } + case QEasingCurve::InExpo: { + return "InExpo"; + } + case QEasingCurve::OutExpo: { + return "OutExpo"; + } + case QEasingCurve::InOutExpo: { + return "InOutExpo"; + } + case QEasingCurve::OutInExpo: { + return "OutInExpo"; + } + case QEasingCurve::InCirc: { + return "InCirc"; + } + case QEasingCurve::OutCirc: { + return "OutCirc"; + } + case QEasingCurve::InOutCirc: { + return "InOutCirc"; + } + case QEasingCurve::OutInCirc: { + return "OutInCirc"; + } + case QEasingCurve::InCurve: { + return "InCurve"; + } + case QEasingCurve::OutCurve: { + return "OutCurve"; + } + case QEasingCurve::SineCurve: { + return "SineCurve"; + } + case QEasingCurve::CosineCurve: { + return "CosineCurve"; + } + case QEasingCurve::InElastic: { + return "InElastic"; + } + case QEasingCurve::OutElastic: { + return "OutElastic"; + } + case QEasingCurve::InOutElastic: { + return "InOutElastic"; + } + case QEasingCurve::OutInElastic: { + return "OutInElastic"; + } + case QEasingCurve::InBounce: { + return "InBounce"; + } + case QEasingCurve::OutBounce: { + return "OutBounce"; + } + case QEasingCurve::InOutBounce: { + return "InOutBounce"; + } + case QEasingCurve::OutInBounce: { + return "OutInBounce"; + } + case QEasingCurve::InBack: { + return "InBack"; + } + case QEasingCurve::OutBack: { + return "OutBack"; + } + case QEasingCurve::InOutBack: { + return "InOutBack"; + } + case QEasingCurve::OutInBack: { + return "OutInBack"; + } + case QEasingCurve::Custom: { + return "Custom"; + } + default: { + Q_ASSERT(false); + return ""; + } + } + Q_UNREACHABLE(); +} + +QDebug operator<<(QDebug debug, const QEasingCurve &easing) +{ +#ifndef Q_BROKEN_DEBUG_STREAM + debug.nospace() << "QEasingCurve(" + << easingTypeName(easing.type()) << ", " + << easing.period() << ", " + << easing.amplitude() << ", " + << easing.overshoot(); + debug.nospace() << ')'; + return debug.space(); +#else + qWarning("This compiler doesn't support streaming QEasingCurve to QDebug"); return debug; + Q_UNUSED(v); +#endif } #endif // QT_NO_DEBUG_STREAM diff --git a/src/core/tools/qeasingcurve.h b/src/core/tools/qeasingcurve.h index bcb92f612..fa1418c5c 100644 --- a/src/core/tools/qeasingcurve.h +++ b/src/core/tools/qeasingcurve.h @@ -80,7 +80,7 @@ public: private: QEasingCurvePrivate *d_ptr; #ifndef QT_NO_DEBUG_STREAM - friend Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item); + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QEasingCurve &); #endif #ifndef QT_NO_DATASTREAM friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve&); @@ -89,7 +89,7 @@ private: }; #ifndef QT_NO_DEBUG_STREAM -Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item); +Q_CORE_EXPORT QDebug operator<<(QDebug, const QEasingCurve &); #endif #ifndef QT_NO_DATASTREAM -- 2.11.0