summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/quick3dextras/items/quick3dspritesheet.cpp')
-rw-r--r--src/quick3d/quick3dextras/items/quick3dspritesheet.cpp56
1 files changed, 25 insertions, 31 deletions
diff --git a/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp b/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
index e0b5d77b6..361295382 100644
--- a/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
+++ b/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
@@ -57,39 +57,33 @@ Quick3DSpriteSheet::~Quick3DSpriteSheet()
QQmlListProperty<Qt3DExtras::QSpriteSheetItem> Quick3DSpriteSheet::sprites()
{
- return QQmlListProperty<Qt3DExtras::QSpriteSheetItem>(this, 0,
- &Quick3DSpriteSheet::appendSprite,
- &Quick3DSpriteSheet::spriteCount,
- &Quick3DSpriteSheet::spriteAt,
- &Quick3DSpriteSheet::clearSprites);
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ using qt_size_type = qsizetype;
+#else
+ using qt_size_type = int;
+#endif
-}
-
-void Quick3DSpriteSheet::appendSprite(QQmlListProperty<Qt3DExtras::QSpriteSheetItem> *list,
- Qt3DExtras::QSpriteSheetItem *sprite)
-{
- Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
- spritesheet->parentSpriteSheet()->addSprite(sprite);
-}
+ using ListContentType = Qt3DExtras::QSpriteSheetItem;
+ auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *sprite) {
+ Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
+ spritesheet->parentSpriteSheet()->addSprite(sprite);
+ };
+ auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type {
+ Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
+ return spritesheet->parentSpriteSheet()->sprites().count();
+ };
+ auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * {
+ Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
+ return spritesheet->parentSpriteSheet()->sprites().at(index);
+ };
+ auto clearFunction = [](QQmlListProperty<ListContentType> *list) {
+ Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
+ const auto sprites = spritesheet->parentSpriteSheet()->sprites();
+ for (QSpriteSheetItem *sprite : sprites)
+ spritesheet->parentSpriteSheet()->removeSprite(sprite);
+ };
-Qt3DExtras::QSpriteSheetItem *Quick3DSpriteSheet::spriteAt(QQmlListProperty<Qt3DExtras::QSpriteSheetItem> *list, qsizetype index)
-{
- Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
- return spritesheet->parentSpriteSheet()->sprites().at(index);
-}
-
-qsizetype Quick3DSpriteSheet::spriteCount(QQmlListProperty<Qt3DExtras::QSpriteSheetItem> *list)
-{
- Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
- return spritesheet->parentSpriteSheet()->sprites().count();
-}
-
-void Quick3DSpriteSheet::clearSprites(QQmlListProperty<Qt3DExtras::QSpriteSheetItem> *list)
-{
- Quick3DSpriteSheet *spritesheet = qobject_cast<Quick3DSpriteSheet *>(list->object);
- const auto sprites = spritesheet->parentSpriteSheet()->sprites();
- for (QSpriteSheetItem *sprite : sprites)
- spritesheet->parentSpriteSheet()->removeSprite(sprite);
+ return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction);
}
} // namespace Quick