// Copyright (C) 2016 Klaralvdalens Datakonsult AB (KDAB). // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include #include QT_BEGIN_NAMESPACE namespace Qt3DRender { namespace Render { namespace Quick { Quick3DLayerFilter::Quick3DLayerFilter(QObject *parent) : QObject(parent) { } QQmlListProperty Quick3DLayerFilter::qmlLayers() { #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) using qt_size_type = qsizetype; #else using qt_size_type = int; #endif using ListContentType = QLayer; auto appendFunction = [](QQmlListProperty *list, ListContentType *layer) { Quick3DLayerFilter *filter = qobject_cast(list->object); if (filter) { filter->parentFilter()->addLayer(layer); } }; auto countFunction = [](QQmlListProperty *list) -> qt_size_type { Quick3DLayerFilter *filter = qobject_cast(list->object); if (filter) return filter->parentFilter()->layers().count(); return 0; }; auto atFunction = [](QQmlListProperty *list, qt_size_type index) -> ListContentType * { Quick3DLayerFilter *filter = qobject_cast(list->object); if (filter) return filter->parentFilter()->layers().at(index); return nullptr; }; auto clearFunction = [](QQmlListProperty *list) { Quick3DLayerFilter *filter = qobject_cast(list->object); if (filter) { const auto layers = filter->parentFilter()->layers(); for (QLayer *layer : layers) filter->parentFilter()->removeLayer(layer); } }; return QQmlListProperty(this, nullptr, appendFunction, countFunction, atFunction, clearFunction); } } // Quick } // namespace Render } // Qt3D QT_END_NAMESPACE