summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drender/items/quick3deffect.cpp
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-11-23 09:06:01 +0000
committerMike Krus <mike.krus@kdab.com>2021-01-08 11:32:08 +0000
commitd2fe37b3480cc55cf301426d7fa40475080cc6f9 (patch)
tree8c0ef31cdc3d2f75f4eed7d851a6d22e793d4c00 /src/quick3d/quick3drender/items/quick3deffect.cpp
parenteee0fca4abc800883dde40559290403e7e550d14 (diff)
Update QQMLPropertyList API
Use lambdas with local typedefs for index type Change-Id: I2876c71d619815e7e777f936e8bb0835b8269336 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drender/items/quick3deffect.cpp')
-rw-r--r--src/quick3d/quick3drender/items/quick3deffect.cpp136
1 files changed, 64 insertions, 72 deletions
diff --git a/src/quick3d/quick3drender/items/quick3deffect.cpp b/src/quick3d/quick3drender/items/quick3deffect.cpp
index 617b52e85..09045011b 100644
--- a/src/quick3d/quick3drender/items/quick3deffect.cpp
+++ b/src/quick3d/quick3drender/items/quick3deffect.cpp
@@ -54,82 +54,74 @@ Quick3DEffect::Quick3DEffect(QObject *parent)
QQmlListProperty<QTechnique> Quick3DEffect::techniqueList()
{
- return QQmlListProperty<QTechnique>(this, 0,
- &Quick3DEffect::appendTechnique,
- &Quick3DEffect::techniqueCount,
- &Quick3DEffect::techniqueAt,
- &Quick3DEffect::clearTechniqueList);
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ using qt_size_type = qsizetype;
+#else
+ using qt_size_type = int;
+#endif
+
+ using ListContentType = QTechnique;
+ auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *bar) {
+ Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
+ if (eff)
+ eff->parentEffect()->addTechnique(bar);
+ };
+ auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type {
+ Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
+ if (eff)
+ return eff->parentEffect()->techniques().count();
+ return 0;
+ };
+ auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * {
+ // TO DO : Return a QAbstractTechnique once properly defined
+ Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
+ if (eff)
+ return qobject_cast<QTechnique*>(eff->parentEffect()->techniques().at(index));
+ return nullptr;
+ };
+ auto clearFunction = [](QQmlListProperty<ListContentType> *list) {
+ Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
+ if (eff) {
+ // Ownership of techniques is handled by the QmlEngine so we shouldn't class clearTechniques
+ // which deletes techniques
+ const auto techniques = eff->parentEffect()->techniques();
+ for (QTechnique *tech : techniques)
+ eff->parentEffect()->removeTechnique(tech);
+ }
+ };
+
+ return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction);
}
QQmlListProperty<QParameter> Quick3DEffect::parameterList()
{
- return QQmlListProperty<QParameter>(this, 0,
- &Quick3DEffect::appendParameter,
- &Quick3DEffect::parametersCount,
- &Quick3DEffect::parameterAt,
- &Quick3DEffect::clearParameterList);
-}
-
-void Quick3DEffect::appendTechnique(QQmlListProperty<QTechnique> *list, QTechnique *bar)
-{
- Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
- if (eff)
- eff->parentEffect()->addTechnique(bar);
-}
-
-// TO DO : Return a QAbstractTechnique once properly defined
-QTechnique *Quick3DEffect::techniqueAt(QQmlListProperty<QTechnique> *list, qsizetype index)
-{
- Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
- if (eff)
- return qobject_cast<QTechnique*>(eff->parentEffect()->techniques().at(index));
- return nullptr;
-}
-
-qsizetype Quick3DEffect::techniqueCount(QQmlListProperty<QTechnique> *list)
-{
- Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
- if (eff)
- return eff->parentEffect()->techniques().count();
- return 0;
-}
-
-void Quick3DEffect::clearTechniqueList(QQmlListProperty<QTechnique> *list)
-{
- Quick3DEffect *eff = qobject_cast<Quick3DEffect*>(list->object);
- if (eff) {
- // Ownership of techniques is handled by the QmlEngine so we shouldn't class clearTechniques
- // which deletes techniques
- const auto techniques = eff->parentEffect()->techniques();
- for (QTechnique *tech : techniques)
- eff->parentEffect()->removeTechnique(tech);
- }
-}
-
-void Quick3DEffect::appendParameter(QQmlListProperty<QParameter> *list, QParameter *param)
-{
- Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
- qobject_cast<QEffect *>(effect->parentEffect())->addParameter(param);
-}
-
-QParameter *Quick3DEffect::parameterAt(QQmlListProperty<QParameter> *list, qsizetype index)
-{
- Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
- return qobject_cast<QEffect *>(effect->parentEffect())->parameters().at(index);
-}
-
-qsizetype Quick3DEffect::parametersCount(QQmlListProperty<QParameter> *list)
-{
- Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
- return qobject_cast<QEffect *>(effect->parentEffect())->parameters().count();
-}
-
-void Quick3DEffect::clearParameterList(QQmlListProperty<QParameter> *list)
-{
- Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
- const auto parameters = qobject_cast<QEffect *>(effect->parentEffect())->parameters();
- for (QParameter *p : parameters)
- qobject_cast<QEffect *>(effect->parentEffect())->removeParameter(p);
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ using qt_size_type = qsizetype;
+#else
+ using qt_size_type = int;
+#endif
+
+ using ListContentType = QParameter;
+ auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *param) {
+ Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
+ qobject_cast<QEffect *>(effect->parentEffect())->addParameter(param);
+ };
+ auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type {
+ Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
+ return qobject_cast<QEffect *>(effect->parentEffect())->parameters().count();
+ };
+ auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * {
+ Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
+ return qobject_cast<QEffect *>(effect->parentEffect())->parameters().at(index);
+ };
+ auto clearFunction = [](QQmlListProperty<ListContentType> *list) {
+ Quick3DEffect *effect = qobject_cast<Quick3DEffect *>(list->object);
+ const auto parameters = qobject_cast<QEffect *>(effect->parentEffect())->parameters();
+ for (QParameter *p : parameters)
+ qobject_cast<QEffect *>(effect->parentEffect())->removeParameter(p);
+ };
+
+ return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction);
}
} // namespace Quick