summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drender/items/quick3dstateset.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/quick3drender/items/quick3dstateset.cpp')
-rw-r--r--src/quick3d/quick3drender/items/quick3dstateset.cpp55
1 files changed, 25 insertions, 30 deletions
diff --git a/src/quick3d/quick3drender/items/quick3dstateset.cpp b/src/quick3d/quick3drender/items/quick3dstateset.cpp
index 49fa0b96a..396fab309 100644
--- a/src/quick3d/quick3drender/items/quick3dstateset.cpp
+++ b/src/quick3d/quick3drender/items/quick3dstateset.cpp
@@ -56,38 +56,33 @@ Quick3DStateSet::~Quick3DStateSet()
QQmlListProperty<QRenderState> Quick3DStateSet::renderStateList()
{
- return QQmlListProperty<QRenderState>(this, 0,
- &Quick3DStateSet::appendRenderState,
- &Quick3DStateSet::renderStateCount,
- &Quick3DStateSet::renderStateAt,
- &Quick3DStateSet::clearRenderStates);
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ using qt_size_type = qsizetype;
+#else
+ using qt_size_type = int;
+#endif
-}
-
-void Quick3DStateSet::appendRenderState(QQmlListProperty<QRenderState> *list, QRenderState *state)
-{
- Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
- stateSet->parentStateSet()->addRenderState(state);
-}
+ using ListContentType = QRenderState;
+ auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *state) {
+ Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
+ stateSet->parentStateSet()->addRenderState(state);
+ };
+ auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type {
+ Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
+ return stateSet->parentStateSet()->renderStates().count();
+ };
+ auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * {
+ Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
+ return stateSet->parentStateSet()->renderStates().at(index);
+ };
+ auto clearFunction = [](QQmlListProperty<ListContentType> *list) {
+ Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
+ const auto states = stateSet->parentStateSet()->renderStates();
+ for (QRenderState *s : states)
+ stateSet->parentStateSet()->removeRenderState(s);
+ };
-QRenderState *Quick3DStateSet::renderStateAt(QQmlListProperty<QRenderState> *list, qsizetype index)
-{
- Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
- return stateSet->parentStateSet()->renderStates().at(index);
-}
-
-qsizetype Quick3DStateSet::renderStateCount(QQmlListProperty<QRenderState> *list)
-{
- Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
- return stateSet->parentStateSet()->renderStates().count();
-}
-
-void Quick3DStateSet::clearRenderStates(QQmlListProperty<QRenderState> *list)
-{
- Quick3DStateSet *stateSet = qobject_cast<Quick3DStateSet *>(list->object);
- const auto states = stateSet->parentStateSet()->renderStates();
- for (QRenderState *s : states)
- stateSet->parentStateSet()->removeRenderState(s);
+ return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction);
}
} // namespace Quick