From 37bae591b7829cd8ac6a9c8556bbe6b96b365bc3 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Tue, 16 Jul 2019 10:31:18 +0900 Subject: Introduce a new feature called easingcurve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit features.animation and features.scroller depend on the feature. In total, this saves around 180KB from QtCore and 75KB from QtWidgets. Change-Id: I65aac3ec4d50d62424ee33f44b99f3cfb91121d6 Reviewed-by: Thomas Hartmann Reviewed-by: Jan Arve Sæther Reviewed-by: Edward Welbourne --- src/corelib/configure.json | 8 +++++++- src/corelib/global/qconfig-bootstrapped.h | 1 + src/corelib/kernel/qmetatype.cpp | 2 ++ src/corelib/kernel/qmetatype.h | 9 ++++++++- src/corelib/kernel/qmetatype_p.h | 2 ++ src/corelib/kernel/qvariant.cpp | 8 ++++++-- src/corelib/kernel/qvariant.h | 8 ++++++++ src/corelib/tools/qeasingcurve.h | 3 +++ src/corelib/tools/qtimeline.h | 4 ++++ src/corelib/tools/tools.pri | 14 ++++++++++---- src/gui/kernel/qguivariant.cpp | 1 - src/widgets/configure.json | 1 + src/widgets/graphicsview/graphicsview.pri | 7 +++++-- 13 files changed, 57 insertions(+), 11 deletions(-) diff --git a/src/corelib/configure.json b/src/corelib/configure.json index 83c30fb47b..b2f032a667 100644 --- a/src/corelib/configure.json +++ b/src/corelib/configure.json @@ -1009,11 +1009,17 @@ "condition": "features.textcodec", "output": [ "publicFeature", "feature" ] }, + "easingcurve": { + "label": "Easing curve", + "purpose": "Provides easing curve.", + "section": "Utilities", + "output": [ "publicFeature" ] + }, "animation": { "label": "Animation", "purpose": "Provides a framework for animations.", "section": "Utilities", - "condition": "features.properties", + "condition": "features.properties && features.easingcurve", "output": [ "publicFeature", "feature" ] }, "statemachine": { diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h index 10458e41d7..ce3b672637 100644 --- a/src/corelib/global/qconfig-bootstrapped.h +++ b/src/corelib/global/qconfig-bootstrapped.h @@ -79,6 +79,7 @@ #define QT_NO_DATASTREAM #define QT_FEATURE_datestring 1 #define QT_FEATURE_datetimeparser -1 +#define QT_FEATURE_easingcurve -1 #define QT_FEATURE_etw -1 #define QT_FEATURE_getauxval (QT_HAS_INCLUDE() ? 1 : -1) #define QT_FEATURE_getentropy -1 diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 754f5a13e4..356a675517 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -47,7 +47,9 @@ #include "qstringlist.h" #include "qvector.h" #include "qlocale.h" +#if QT_CONFIG(easingcurve) #include "qeasingcurve.h" +#endif #include "quuid.h" #include "qvariant.h" #include "qdatastream.h" diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index a6c90fc3ed..d41f7ee80e 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -94,6 +94,13 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId(); #define QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)\ F(VoidStar, 31, void*) \ +#if QT_CONFIG(easingcurve) +#define QT_FOR_EACH_STATIC_EASINGCURVE(F)\ + F(QEasingCurve, 29, QEasingCurve) +#else +#define QT_FOR_EACH_STATIC_EASINGCURVE(F) +#endif + #if QT_CONFIG(itemmodel) #define QT_FOR_EACH_STATIC_ITEMMODEL_CLASS(F)\ F(QModelIndex, 42, QModelIndex) \ @@ -122,7 +129,7 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId(); F(QPoint, 25, QPoint) \ F(QPointF, 26, QPointF) \ F(QRegExp, 27, QRegExp) \ - F(QEasingCurve, 29, QEasingCurve) \ + QT_FOR_EACH_STATIC_EASINGCURVE(F) \ F(QUuid, 30, QUuid) \ F(QVariant, 41, QVariant) \ F(QRegularExpression, 44, QRegularExpression) \ diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h index fa7208369a..d743d5a5c7 100644 --- a/src/corelib/kernel/qmetatype_p.h +++ b/src/corelib/kernel/qmetatype_p.h @@ -206,7 +206,9 @@ template<> struct TypeDefinition { static const bool IsAvailable = f template<> struct TypeDefinition { static const bool IsAvailable = false; }; template<> struct TypeDefinition { static const bool IsAvailable = false; }; template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#if QT_CONFIG(easingcurve) template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif template<> struct TypeDefinition { static const bool IsAvailable = false; }; template<> struct TypeDefinition { static const bool IsAvailable = false; }; template<> struct TypeDefinition { static const bool IsAvailable = false; }; diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 511dc3c81c..43a3fb1db0 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -46,7 +46,9 @@ #include "qdebug.h" #include "qmap.h" #include "qdatetime.h" +#if QT_CONFIG(easingcurve) #include "qeasingcurve.h" +#endif #include "qlist.h" #if QT_CONFIG(regularexpression) #include "qregularexpression.h" @@ -2194,7 +2196,7 @@ QVariant::QVariant(const QTime &val) QVariant::QVariant(const QDateTime &val) : d(DateTime) { v_construct(&d, val); } -#ifndef QT_BOOTSTRAPPED +#if QT_CONFIG(easingcurve) QVariant::QVariant(const QEasingCurve &val) : d(EasingCurve) { v_construct(&d, val); } @@ -2471,7 +2473,9 @@ static const ushort mapIdFromQt3ToCurrent[MapFromThreeCount] = QVariant::Pen, QVariant::LongLong, QVariant::ULongLong, +#if QT_CONFIG(easingcurve) QVariant::EasingCurve +#endif }; /*! @@ -2788,7 +2792,7 @@ QDateTime QVariant::toDateTime() const \sa canConvert(int targetTypeId), convert() */ -#ifndef QT_BOOTSTRAPPED +#if QT_CONFIG(easingcurve) QEasingCurve QVariant::toEasingCurve() const { return qVariantToHelper(d, handlerManager); diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 39b7e4c0ce..e7d3d9c835 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -66,7 +66,9 @@ class QBitArray; class QDataStream; class QDate; class QDateTime; +#if QT_CONFIG(easingcurve) class QEasingCurve; +#endif class QLine; class QLineF; class QLocale; @@ -162,7 +164,9 @@ class Q_CORE_EXPORT QVariant RegExp = QMetaType::QRegExp, RegularExpression = QMetaType::QRegularExpression, Hash = QMetaType::QVariantHash, +#if QT_CONFIG(easingcurve) EasingCurve = QMetaType::QEasingCurve, +#endif Uuid = QMetaType::QUuid, #if QT_CONFIG(itemmodel) ModelIndex = QMetaType::QModelIndex, @@ -254,7 +258,9 @@ class Q_CORE_EXPORT QVariant #endif // QT_CONFIG(regularexpression) #ifndef QT_BOOTSTRAPPED QVariant(const QUrl &url); +#if QT_CONFIG(easingcurve) QVariant(const QEasingCurve &easing); +#endif QVariant(const QUuid &uuid); QVariant(const QJsonValue &jsonValue); QVariant(const QJsonObject &jsonObject); @@ -328,7 +334,9 @@ class Q_CORE_EXPORT QVariant #endif // QT_CONFIG(regularexpression) #ifndef QT_BOOTSTRAPPED QUrl toUrl() const; +#if QT_CONFIG(easingcurve) QEasingCurve toEasingCurve() const; +#endif QUuid toUuid() const; QJsonValue toJsonValue() const; QJsonObject toJsonObject() const; diff --git a/src/corelib/tools/qeasingcurve.h b/src/corelib/tools/qeasingcurve.h index 725ddd5dcc..d3a468bb22 100644 --- a/src/corelib/tools/qeasingcurve.h +++ b/src/corelib/tools/qeasingcurve.h @@ -41,6 +41,9 @@ #define QEASINGCURVE_H #include + +QT_REQUIRE_CONFIG(easingcurve); + #include #include #if QT_DEPRECATED_SINCE(5, 0) diff --git a/src/corelib/tools/qtimeline.h b/src/corelib/tools/qtimeline.h index d9982bdb58..9a60cd679f 100644 --- a/src/corelib/tools/qtimeline.h +++ b/src/corelib/tools/qtimeline.h @@ -40,6 +40,10 @@ #ifndef QTIMELINE_H #define QTIMELINE_H +#include + +QT_REQUIRE_CONFIG(easingcurve); + #include #include diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index a2236f90f2..40c84157cd 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -12,7 +12,6 @@ HEADERS += \ tools/qcontainerfwd.h \ tools/qcontainertools_impl.h \ tools/qcryptographichash.h \ - tools/qeasingcurve.h \ tools/qfreelist_p.h \ tools/qhash.h \ tools/qhashfunctions.h \ @@ -43,7 +42,6 @@ HEADERS += \ tools/qsimd_p.h \ tools/qsize.h \ tools/qstack.h \ - tools/qtimeline.h \ tools/qtools_p.h \ tools/qvarlengtharray.h \ tools/qvector.h \ @@ -54,7 +52,6 @@ SOURCES += \ tools/qarraydata.cpp \ tools/qbitarray.cpp \ tools/qcryptographichash.cpp \ - tools/qeasingcurve.cpp \ tools/qfreelist.cpp \ tools/qhash.cpp \ tools/qline.cpp \ @@ -72,7 +69,6 @@ SOURCES += \ tools/qsharedpointer.cpp \ tools/qsimd.cpp \ tools/qsize.cpp \ - tools/qtimeline.cpp \ tools/qversionnumber.cpp msvc: NO_PCH_SOURCES += tools/qvector_msvc.cpp @@ -104,6 +100,16 @@ qtConfig(system-doubleconversion) { include($$PWD/../../3rdparty/double-conversion/double-conversion.pri) } +qtConfig(easingcurve) { + HEADERS += \ + tools/qeasingcurve.h \ + tools/qtimeline.h + + SOURCES += \ + tools/qeasingcurve.cpp \ + tools/qtimeline.cpp +} + # Note: libm should be present by default becaue this is C++ unix:!macx-icc:!vxworks:!haiku:!integrity:!wasm: LIBS_PRIVATE += -lm diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp index 090217187e..edca8d9423 100644 --- a/src/gui/kernel/qguivariant.cpp +++ b/src/gui/kernel/qguivariant.cpp @@ -68,7 +68,6 @@ #include "qdebug.h" #include "qmap.h" #include "qdatetime.h" -#include "qeasingcurve.h" #include "qlist.h" #include "qstring.h" #include "qstringlist.h" diff --git a/src/widgets/configure.json b/src/widgets/configure.json index cc9019dfdd..e8aa4c6cf9 100644 --- a/src/widgets/configure.json +++ b/src/widgets/configure.json @@ -378,6 +378,7 @@ "label": "QScroller", "purpose": "Enables kinetic scrolling for any scrolling widget or graphics item.", "section": "Widgets", + "condition": "features.easingcurve", "output": [ "publicFeature" ] }, "graphicsview": { diff --git a/src/widgets/graphicsview/graphicsview.pri b/src/widgets/graphicsview/graphicsview.pri index 7d10244634..d69a6f5c3f 100644 --- a/src/widgets/graphicsview/graphicsview.pri +++ b/src/widgets/graphicsview/graphicsview.pri @@ -4,7 +4,6 @@ qtConfig(graphicsview) { HEADERS += graphicsview/qgraphicsgridlayout.h \ graphicsview/qgraphicsitem.h \ graphicsview/qgraphicsitem_p.h \ - graphicsview/qgraphicsitemanimation.h \ graphicsview/qgraphicslayout.h \ graphicsview/qgraphicslayout_p.h \ graphicsview/qgraphicslayoutitem.h \ @@ -34,7 +33,6 @@ HEADERS += graphicsview/qgraphicsgridlayout.h \ SOURCES += graphicsview/qgraphicsgridlayout.cpp \ graphicsview/qgraphicsitem.cpp \ - graphicsview/qgraphicsitemanimation.cpp \ graphicsview/qgraphicslayout.cpp \ graphicsview/qgraphicslayout_p.cpp \ graphicsview/qgraphicslayoutitem.cpp \ @@ -55,4 +53,9 @@ SOURCES += graphicsview/qgraphicsgridlayout.cpp \ graphicsview/qsimplex_p.cpp \ graphicsview/qgraphicsanchorlayout_p.cpp \ graphicsview/qgraphicsanchorlayout.cpp + + qtConfig(easingcurve) { + HEADERS += graphicsview/qgraphicsitemanimation.h + SOURCES += graphicsview/qgraphicsitemanimation.cpp + } } -- cgit v1.2.3