diff options
Diffstat (limited to 'sources/pyside6/PySide6/QtQuick')
4 files changed, 235 insertions, 300 deletions
diff --git a/sources/pyside6/PySide6/QtQuick/CMakeLists.txt b/sources/pyside6/PySide6/QtQuick/CMakeLists.txt index 1516af153..775230242 100644 --- a/sources/pyside6/PySide6/QtQuick/CMakeLists.txt +++ b/sources/pyside6/PySide6/QtQuick/CMakeLists.txt @@ -1,11 +1,26 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + project(QtQuick) +set(QtQuick_DROPPED_ENTRIES) + set(QtQuick_registerType "${QtQuick_SOURCE_DIR}/pysidequickregistertype.cpp") +# Exclude sources that have clashing static helper functions named "renderstate_..." +set(QtQuick_SRC_UNITY_EXCLUDED_SRC + ${QtQuick_GEN_DIR}/qsgrendernode_renderstate_wrapper.cpp + ${QtQuick_GEN_DIR}/qsgmaterialshader_renderstate_wrapper.cpp +) + +set_property(SOURCE ${QtQuick_SRC_UNITY_EXCLUDED_SRC} + PROPERTY SKIP_UNITY_BUILD_INCLUSION ON) + set(QtQuick_SRC +${QtQuick_SRC_UNITY_EXCLUDED_SRC} ${QtQuick_GEN_DIR}/qquickasyncimageprovider_wrapper.cpp -${QtQuick_GEN_DIR}/qquickframebufferobject_wrapper.cpp -${QtQuick_GEN_DIR}/qquickframebufferobject_renderer_wrapper.cpp +${QtQuick_GEN_DIR}/qquickgraphicsconfiguration_wrapper.cpp +${QtQuick_GEN_DIR}/qquickgraphicsdevice_wrapper.cpp ${QtQuick_GEN_DIR}/qquicktexturefactory_wrapper.cpp ${QtQuick_GEN_DIR}/qquickimageprovider_wrapper.cpp ${QtQuick_GEN_DIR}/qquickimageresponse_wrapper.cpp @@ -16,13 +31,17 @@ ${QtQuick_GEN_DIR}/qquickitemgrabresult_wrapper.cpp ${QtQuick_GEN_DIR}/qsharedpointer_qquickitemgrabresult_wrapper.cpp ${QtQuick_GEN_DIR}/qquickpainteditem_wrapper.cpp ${QtQuick_GEN_DIR}/qquickrendercontrol_wrapper.cpp +${QtQuick_GEN_DIR}/qquickrendertarget_wrapper.cpp +${QtQuick_GEN_DIR}/qquickrhiitemrenderer_wrapper.cpp +${QtQuick_GEN_DIR}/qquickrhiitem_wrapper.cpp ${QtQuick_GEN_DIR}/qquicktextdocument_wrapper.cpp ${QtQuick_GEN_DIR}/qquickview_wrapper.cpp ${QtQuick_GEN_DIR}/qquickwindow_wrapper.cpp +${QtQuick_GEN_DIR}/qquickwindow_graphicsstateinfo_wrapper.cpp ${QtQuick_GEN_DIR}/qsgbasicgeometrynode_wrapper.cpp ${QtQuick_GEN_DIR}/qsgclipnode_wrapper.cpp ${QtQuick_GEN_DIR}/qsgdynamictexture_wrapper.cpp -#${QtQuick_GEN_DIR}/qsgflatcolormaterial_wrapper.cpp +${QtQuick_GEN_DIR}/qsgflatcolormaterial_wrapper.cpp ${QtQuick_GEN_DIR}/qsggeometry_attribute_wrapper.cpp ${QtQuick_GEN_DIR}/qsggeometry_attributeset_wrapper.cpp ${QtQuick_GEN_DIR}/qsggeometry_coloredpoint2d_wrapper.cpp @@ -30,23 +49,30 @@ ${QtQuick_GEN_DIR}/qsggeometry_point2d_wrapper.cpp ${QtQuick_GEN_DIR}/qsggeometry_texturedpoint2d_wrapper.cpp ${QtQuick_GEN_DIR}/qsggeometry_wrapper.cpp ${QtQuick_GEN_DIR}/qsggeometrynode_wrapper.cpp -#${QtQuick_GEN_DIR}/qsgmaterial_wrapper.cpp -#${QtQuick_GEN_DIR}/qsgmaterialshader_renderstate_wrapper.cpp -# Issue with virtual char const *const *attributeNames() -#${QtQuick_GEN_DIR}/qsgmaterialshader_wrapper.cpp +${QtQuick_GEN_DIR}/qsgimagenode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgmaterial_wrapper.cpp +${QtQuick_GEN_DIR}/qsgmaterialshader_wrapper.cpp +${QtQuick_GEN_DIR}/qsgmaterialshader_graphicspipelinestate_wrapper.cpp ${QtQuick_GEN_DIR}/qsgmaterialtype_wrapper.cpp +${QtQuick_GEN_DIR}/qsgninepatchnode_wrapper.cpp ${QtQuick_GEN_DIR}/qsgnode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgnodevisitor_wrapper.cpp ${QtQuick_GEN_DIR}/qsgopacitynode_wrapper.cpp -#${QtQuick_GEN_DIR}/qsgopaquetexturematerial_wrapper.cpp +${QtQuick_GEN_DIR}/qsgopaquetexturematerial_wrapper.cpp #${QtQuick_GEN_DIR}/qsgsimplematerial_wrapper.cpp #${QtQuick_GEN_DIR}/qsgsimplematerialshader_wrapper.cpp +${QtQuick_GEN_DIR}/qsgrectanglenode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgrendernode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgrootnode_wrapper.cpp ${QtQuick_GEN_DIR}/qsgsimplerectnode_wrapper.cpp ${QtQuick_GEN_DIR}/qsgsimpletexturenode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgrendererinterface_wrapper.cpp +${QtQuick_GEN_DIR}/qsgtextnode_wrapper.cpp ${QtQuick_GEN_DIR}/qsgtexture_wrapper.cpp -#${QtQuick_GEN_DIR}/qsgtexturematerial_wrapper.cpp +${QtQuick_GEN_DIR}/qsgtexturematerial_wrapper.cpp ${QtQuick_GEN_DIR}/qsgtextureprovider_wrapper.cpp ${QtQuick_GEN_DIR}/qsgtransformnode_wrapper.cpp -#${QtQuick_GEN_DIR}/qsgvertexcolormaterial_wrapper.cpp +${QtQuick_GEN_DIR}/qsgvertexcolormaterial_wrapper.cpp # module is always needed ${QtQuick_GEN_DIR}/qtquick_module_wrapper.cpp ) @@ -54,9 +80,11 @@ ${QtQuick_GEN_DIR}/qtquick_module_wrapper.cpp set(QtQuick_include_dirs ${QtQuick_SOURCE_DIR} ${QtQml_SOURCE_DIR} ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS} + ${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS} ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS} ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS} ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS} + ${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS} ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS} ${libpyside_SOURCE_DIR} ${QtGui_GEN_DIR} @@ -65,19 +93,27 @@ set(QtQuick_include_dirs ${QtQuick_SOURCE_DIR} ${QtQml_GEN_DIR} ${QtQuick_GEN_DIR}) -set(QtQuick_libraries pyside6 - ${Qt${QT_MAJOR_VERSION}Core_LIBRARIES} - ${Qt${QT_MAJOR_VERSION}Gui_LIBRARIES} - ${Qt${QT_MAJOR_VERSION}Network_LIBRARIES} - ${Qt${QT_MAJOR_VERSION}Qml_LIBRARIES} +set(QtQuick_libraries pyside6 pyside6qml ${Qt${QT_MAJOR_VERSION}Quick_LIBRARIES}) set(QtQuick_deps QtGui QtNetwork QtQml) +check_qt_opengl("Quick" QtQuick_include_dirs QtQuick_deps + QtQuick_DROPPED_ENTRIES) + +if (Qt${QT_MAJOR_VERSION}OpenGL_FOUND) + list(APPEND QtQuick_SRC + ${QtQuick_GEN_DIR}/qquickframebufferobject_wrapper.cpp + ${QtQuick_GEN_DIR}/qquickframebufferobject_renderer_wrapper.cpp) +else() + list(APPEND QtQuick_DROPPED_ENTRIES QQuickFramebufferObject) +endif() + create_pyside_module(NAME QtQuick INCLUDE_DIRS QtQuick_include_dirs LIBRARIES QtQuick_libraries DEPS QtQuick_deps TYPESYSTEM_PATH QtQuick_SOURCE_DIR SOURCES QtQuick_SRC - STATIC_SOURCES QtQuick_registerType) + STATIC_SOURCES QtQuick_registerType + DROPPED_ENTRIES QtQuick_DROPPED_ENTRIES) diff --git a/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp index c3c45aaaa..f7749b4e7 100644 --- a/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp +++ b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp @@ -1,158 +1,44 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "pysidequickregistertype.h" #include <pyside.h> +#include <pysideqmlregistertype.h> #include <pyside_p.h> #include <shiboken.h> -// Auto generated headers. -#include "qquickitem_wrapper.h" -#include "qquickpainteditem_wrapper.h" -#include "qquickframebufferobject_wrapper.h" -#include "pyside6_qtcore_python.h" -#include "pyside6_qtquick_python.h" -#include "pyside6_qtqml_python.h" +#include <QtQuick/QQuickPaintedItem> -// Mutex used to avoid race condition on PySide::nextQObjectMemoryAddr. -static QMutex nextQmlElementMutex; - -static void createQuickItem(void *memory, void *type) -{ - QMutexLocker locker(&nextQmlElementMutex); - PySide::setNextQObjectMemoryAddr(memory); - Shiboken::GilState state; - PyObject *obj = PyObject_CallObject(reinterpret_cast<PyObject *>(type), 0); - if (!obj || PyErr_Occurred()) - PyErr_Print(); - PySide::setNextQObjectMemoryAddr(0); -} - -#define PY_REGISTER_IF_INHERITS_FROM(className, typeToRegister,typePointerName, \ - typeListName, typeMetaObject, type, registered) \ - registerTypeIfInheritsFromClass<className##Wrapper>(#className, typeToRegister, \ - typePointerName, typeListName, \ - typeMetaObject, type, registered) +#if QT_CONFIG(opengl) || QT_CONFIG(opengles2) || QT_CONFIG(opengles3) +# include <QtQuick/QQuickFramebufferObject> +#endif -bool pyTypeObjectInheritsFromClass(PyTypeObject *pyObjType, QByteArray className) +bool pyTypeObjectInheritsFromClass(PyTypeObject *pyObjType, const char *classPtrName) { - className.append('*'); - PyTypeObject *classPyType = Shiboken::Conversions::getPythonTypeObject(className.constData()); + PyTypeObject *classPyType = Shiboken::Conversions::getPythonTypeObject(classPtrName); bool isDerived = PySequence_Contains(pyObjType->tp_mro, reinterpret_cast<PyObject *>(classPyType)); return isDerived; } -template <typename T> -struct QPysideQmlMetaTypeInterface : QtPrivate::QMetaTypeInterface -{ - const QByteArray name; - const QMetaObject *metaObject; - - static const QMetaObject *metaObjectFn(const QMetaTypeInterface *mti) - { - return static_cast<const QPysideQmlMetaTypeInterface *>(mti)->metaObject; - } - - QPysideQmlMetaTypeInterface(const QByteArray &name, const QMetaObject *metaObjectIn = nullptr) - : QMetaTypeInterface { - /*.revision=*/ 0, - /*.alignment=*/ alignof(T), - /*.size=*/ sizeof(T), - /*.flags=*/ QtPrivate::QMetaTypeTypeFlags<T>::Flags, - /*.typeId=*/ 0, - /*.metaObjectFn=*/ metaObjectFn, - /*.name=*/ name.constData(), - /*.defaultCtr=*/ [](const QMetaTypeInterface *, void *addr) { new (addr) T(); }, - /*.copyCtr=*/ [](const QMetaTypeInterface *, void *addr, const void *other) { - new (addr) T(*reinterpret_cast<const T *>(other)); - }, - /*.moveCtr=*/ [](const QMetaTypeInterface *, void *addr, void *other) { - new (addr) T(std::move(*reinterpret_cast<T *>(other))); - }, - /*.dtor=*/ [](const QMetaTypeInterface *, void *addr) { - reinterpret_cast<T *>(addr)->~T(); - }, - /*.equals=*/ nullptr, - /*.lessThan=*/ nullptr, - /*.debugStream=*/ nullptr, - /*.dataStreamOut=*/ nullptr, - /*.dataStreamIn=*/ nullptr, - /*.legacyRegisterOp=*/ nullptr - } - , name(name), metaObject(metaObjectIn) {} -}; - -template <class WrapperClass> -void registerTypeIfInheritsFromClass( - QByteArray className, - PyTypeObject *typeToRegister, - const QByteArray &typePointerName, - const QByteArray &typeListName, - const QMetaObject *typeMetaObject, - QQmlPrivate::RegisterType *type, - bool ®istered) +template <class WrappedClass> +bool registerTypeIfInheritsFromClass(const char *classPtrName, + PyTypeObject *typeToRegister, + QQmlPrivate::RegisterTypeAndRevisions *type) { - bool shouldRegister = !registered && pyTypeObjectInheritsFromClass(typeToRegister, className); - if (shouldRegister) { - QMetaType ptrType(new QPysideQmlMetaTypeInterface<WrapperClass *>(typePointerName, typeMetaObject)); - QMetaType lstType(new QPysideQmlMetaTypeInterface<QQmlListProperty<WrapperClass>>(typeListName)); - - type->typeId = std::move(ptrType); - type->listId = std::move(lstType); - type->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc<WrapperClass>(); - type->attachedPropertiesMetaObject = - QQmlPrivate::attachedPropertiesMetaObject<WrapperClass>(); - type->parserStatusCast = - QQmlPrivate::StaticCastSelector<WrapperClass, QQmlParserStatus>::cast(); - type->valueSourceCast = - QQmlPrivate::StaticCastSelector<WrapperClass, QQmlPropertyValueSource>::cast(); - type->valueInterceptorCast = - QQmlPrivate::StaticCastSelector<WrapperClass, QQmlPropertyValueInterceptor>::cast(); - type->objectSize = sizeof(WrapperClass); - registered = true; - } + if (!pyTypeObjectInheritsFromClass(typeToRegister, classPtrName)) + return false; + type->parserStatusCast = + QQmlPrivate::StaticCastSelector<WrappedClass, QQmlParserStatus>::cast(); + type->valueSourceCast = + QQmlPrivate::StaticCastSelector<WrappedClass, QQmlPropertyValueSource>::cast(); + type->valueInterceptorCast = + QQmlPrivate::StaticCastSelector<WrappedClass, QQmlPropertyValueInterceptor>::cast(); + return true; } -bool quickRegisterType(PyObject *pyObj, const char *uri, int versionMajor, int versionMinor, - const char *qmlName, bool creatable, const char *noCreationReason, QQmlPrivate::RegisterType *type) +bool quickRegisterType(PyObject *pyObj, QQmlPrivate::RegisterTypeAndRevisions *type) { using namespace Shiboken; @@ -166,57 +52,25 @@ bool quickRegisterType(PyObject *pyObj, const char *uri, int versionMajor, int v if (!isQuickItem) return false; - // Used inside macros to register the type. - const QMetaObject *metaObject = PySide::retrieveMetaObject(pyObj); - Q_ASSERT(metaObject); - - - // Incref the type object, don't worry about decref'ing it because - // there's no way to unregister a QML type. - Py_INCREF(pyObj); - - // Used in macro registration. - QByteArray pointerName(qmlName); - pointerName.append('*'); - QByteArray listName(qmlName); - listName.prepend("QQmlListProperty<"); - listName.append('>'); - - bool registered = false; - PY_REGISTER_IF_INHERITS_FROM(QQuickPaintedItem, pyObjType, pointerName, listName, metaObject, - type, registered); - PY_REGISTER_IF_INHERITS_FROM(QQuickFramebufferObject, pyObjType, pointerName, listName, - metaObject, type, registered); - PY_REGISTER_IF_INHERITS_FROM(QQuickItem, pyObjType, pointerName, listName, metaObject, - type, registered); - if (!registered) - return false; - - type->structVersion = 0; - type->create = creatable ? createQuickItem : nullptr; - type->noCreationReason = noCreationReason; - type->userdata = pyObj; - type->uri = uri; - type->version = QTypeRevision::fromVersion(versionMajor, versionMinor); - type->elementName = qmlName; - type->metaObject = metaObject; - - type->extensionObjectCreate = 0; - type->extensionMetaObject = 0; - type->customParser = 0; - - return true; + return registerTypeIfInheritsFromClass<QQuickPaintedItem>("QQuickPaintedItem*", + pyObjType, type) +#if QT_CONFIG(opengl) || QT_CONFIG(opengles2) || QT_CONFIG(opengles3) + || registerTypeIfInheritsFromClass<QQuickFramebufferObject>("QQuickFramebufferObject*", + pyObjType, type) +#endif + || registerTypeIfInheritsFromClass<QQuickItem>("QQuickItem*", + pyObjType, type); } void PySide::initQuickSupport(PyObject *module) { Q_UNUSED(module); -#ifdef PYSIDE_QML_SUPPORT // We need to manually register a pointer version of these types in order for them to be used as property types. qRegisterMetaType<QQuickPaintedItem*>("QQuickPaintedItem*"); +#if QT_CONFIG(opengl) || QT_CONFIG(opengles2) || QT_CONFIG(opengles3) qRegisterMetaType<QQuickFramebufferObject*>("QQuickFramebufferObject*"); +#endif qRegisterMetaType<QQuickItem*>("QQuickItem*"); - setQuickRegisterItemFunction(quickRegisterType); -#endif + Qml::setQuickRegisterItemFunction(quickRegisterType); } diff --git a/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h index 1955413b2..89e0ced67 100644 --- a/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h +++ b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h @@ -1,49 +1,11 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef PYSIDE_QUICK_REGISTER_TYPE_H #define PYSIDE_QUICK_REGISTER_TYPE_H #include <sbkpython.h> -struct SbkObjectType; - namespace PySide { void initQuickSupport(PyObject *module); diff --git a/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml b/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml index 559e73e4f..61aed6005 100644 --- a/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml +++ b/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml @@ -1,51 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only --> -<typesystem package="PySide6.QtQuick"> +<typesystem package="PySide6.QtQuick" + namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE"> <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/> <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/> <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/> + <!-- QQuickFramebufferObject::Renderer needs QOpenGLFramebufferObject --> + <?if !no_QtOpenGL?> + <load-typesystem name="QtOpenGL/typesystem_opengl.xml" generate="no"/> + <?endif?> <load-typesystem name="QtQml/typesystem_qml.xml" generate="no"/> - <smart-pointer-type name="QSharedPointer" type="shared" getter="data"/> + <smart-pointer-type name="QSharedPointer" type="shared" getter="data" + reset-method="reset"/> <extra-includes> <include file-name="pysidequickregistertype.h" location="local"/> @@ -53,18 +23,37 @@ <inject-code class="target" position="end" file="../glue/qtquick.cpp" snippet="qtquick"/> - <object-type name="QQuickAsyncImageProvider" since="5.6"/> + <object-type name="QQuickAsyncImageProvider"> + <modify-function signature="requestImageResponse(const QString&,const QSize&)"> + <modify-argument index="return"> + <define-ownership class="native" owner="c++"/> + </modify-argument> + </modify-function> + </object-type> <object-type name="QQuickFramebufferObject"> <object-type name="Renderer"/> + <modify-function signature="createRenderer()const"> + <modify-argument index="return"> + <define-ownership class="native" owner="c++"/> + </modify-argument> + </modify-function> </object-type> + <value-type name="QQuickGraphicsConfiguration"/> + <value-type name="QQuickGraphicsDevice"> + <!-- PYSIDE-1726, after qtbase/696d94b132b2f352b5e6b889ad91c2437417fae8, + the functions are defined with dummy types when Vulkan is not present. --> + <modify-function signature="^fromPhysicalDevice\(.*$" remove="all"/> + <modify-function signature="^fromDeviceObjects\(.*$" remove="all"/> + </value-type> + <object-type name="QQuickTextureFactory"/> <object-type name="QQuickImageProvider"/> - <object-type name="QQuickImageResponse" since="5.6"/> + <object-type name="QQuickImageResponse"/> <object-type name="QQuickTransform"/> - <object-type name="QQuickItem" delete-in-main-thread="true"> + <object-type name="QQuickItem" delete-in-main-thread="true" polymorphic-base="true"> <value-type name="UpdatePaintNodeData"/> <enum-type name="Flag" flags="Flags"/> <enum-type name="ItemChange"/> @@ -73,16 +62,28 @@ <modify-argument index="2"> <remove-argument /> </modify-argument> - <modify-argument index="return"> + <modify-argument index="return" pyi-type="Tuple[bool, PySide6.QtGui.QTransform]"> <replace-type modified-type="PyTuple"/> </modify-argument> <inject-code class="target" position="beginning"> <insert-template name="fix_args,bool*"/> </inject-code> </modify-function> + <modify-function signature="updatePaintNode(QSGNode*,QQuickItem::UpdatePaintNodeData*)"> + <modify-argument index="return"> + <define-ownership class="native" owner="c++"/> + <define-ownership class="target" owner="default"/> + </modify-argument> + </modify-function> + <!-- TODO: Find a way to wrap `union ItemChangeData {}` --> </object-type> + <object-type name="QQuickRhiItemRenderer" since="6.7"/> + <object-type name="QQuickRhiItem" since="6.7"> + <enum-type name="TextureFormat"/> + </object-type> + <object-type name="QQuickItemGrabResult"/> <object-type name="QQuickPaintedItem"> @@ -91,8 +92,15 @@ </object-type> <object-type name="QQuickRenderControl"/> + <value-type name="QQuickRenderTarget"> + <!-- PYSIDE-1726, after qtbase/696d94b132b2f352b5e6b889ad91c2437417fae8, + the function is defined with dummy types when Vulkan is not present. --> + <modify-function signature="^fromVulkanImage\(.*$" remove="all"/> + </value-type> - <object-type name="QQuickTextDocument"/> + <object-type name="QQuickTextDocument"> + <enum-type name="Status" since="6.7"/> + </object-type> <object-type name="QQuickView"> <enum-type name="ResizeMode"/> @@ -101,60 +109,131 @@ <object-type name="QQuickWindow"> <enum-type name="CreateTextureOption" flags="CreateTextureOptions"/> - <enum-type name="NativeObjectType" since="5.14"/> <enum-type name="RenderStage"/> <enum-type name="SceneGraphError"/> - <enum-type name="TextRenderType" since="5.10"/> + <enum-type name="TextRenderType"/> + <value-type name="GraphicsStateInfo"/> + </object-type> + + <object-type name="QSGBasicGeometryNode"> + <modify-function signature="setGeometry(QSGGeometry*)"> + <modify-argument index="1"> + <define-ownership class="target" owner="c++"/> + </modify-argument> + </modify-function> </object-type> - <object-type name="QSGBasicGeometryNode"/> <object-type name="QSGClipNode"/> <object-type name="QSGDynamicTexture"/> - <!-- <object-type name="QSGFlatColorMaterial"/> --> + <object-type name="QSGFlatColorMaterial"/> <object-type name="QSGGeometry"> + <extra-includes> + <include file-name="algorithm" location="global"/> + </extra-includes> <enum-type name="DataPattern"/> - <enum-type name="AttributeType" since="5.8"/> - <enum-type name="DrawingMode" since="5.8"/> - <enum-type name="Type" since="5.8"/> + <enum-type name="AttributeType"/> + <enum-type name="DrawingMode" python-type="IntEnum"/> + <enum-type name="Type"/> <value-type name="Attribute"/> <value-type name="AttributeSet"/> <value-type name="ColoredPoint2D"/> <value-type name="Point2D"/> <value-type name="TexturedPoint2D"/> + <modify-function signature="vertexDataAsPoint2D()"> + <modify-argument index="return"> + <replace-type modified-type="PyObject*"/> + </modify-argument> + <inject-code class="target" file="../glue/qtquick.cpp" snippet="qsgeometry-vertexdataaspoint2d"/> + </modify-function> + <add-function signature="setVertexDataAsPoint2D(const QList<QSGGeometry::Point2D>&@points@)"> + <inject-code class="target" file="../glue/qtquick.cpp" snippet="qsgeometry-setvertexdataaspoint2d"/> + <inject-documentation format="target" mode="append"> + Sets the vertex data from a list of QSGGeometry.Point2D. + The list size must match the allocated number of vertexes + as returned by QSGGeometry.vertexCount(). + </inject-documentation> + </add-function> + + </object-type> + <object-type name="QSGGeometryNode"> + <modify-function signature="setMaterial(QSGMaterial*)"> + <modify-argument index="1"> + <define-ownership class="target" owner="c++"/> + </modify-argument> + </modify-function> + <modify-function signature="setOpaqueMaterial(QSGMaterial*)"> + <modify-argument index="1"> + <define-ownership class="target" owner="c++"/> + </modify-argument> + </modify-function> + </object-type> + + <object-type name="QSGImageNode"> + <enum-type name="TextureCoordinatesTransformFlag" flags="TextureCoordinatesTransformMode"/> </object-type> - <object-type name="QSGGeometryNode"/> - <!-- QSGMaterialShader doesn't compile because of const char * char * types not being recognized - by the C++ parser, nor the generator. <object-type name="QSGMaterial"> <enum-type name="Flag" flags="Flags"/> </object-type> - <object-type name="QSGMaterialShader"/> - <value-type name="QSGMaterialShader::RenderState"> - <enum-type name="DirtyState" flags="DirtyStates"/> - </value-type> - --> + <object-type name="QSGMaterialShader"> + <enum-type name="Stage"/> + <enum-type name="Flag" flags="Flags"/> + <value-type name="RenderState"> + <enum-type name="DirtyState" flags="DirtyStates"/> + </value-type> + <value-type name="GraphicsPipelineState"> + <enum-type name="BlendFactor"/> + <enum-type name="ColorMaskComponent" flags="ColorMask"/> + <enum-type name="CullMode"/> + <enum-type name="PolygonMode"/> + </value-type> + <modify-function signature="updateSampledImage(QSGMaterialShader::RenderState&,int,QSGTexture**,QSGMaterial*,QSGMaterial*)" remove="all"/> + <!-- Private QRhi class --> + <modify-function signature="setShader(QSGMaterialShader::Stage,QShader)" remove="all"/> + </object-type> <object-type name="QSGMaterialType"/> + <object-type name="QSGNinePatchNode"/> <object-type name="QSGNode"> <enum-type name="DirtyStateBit" flags="DirtyState"/> <enum-type name="Flag" flags="Flags"/> <enum-type name="NodeType"/> </object-type> + <object-type name="QSGNodeVisitor"/> + <object-type name="QSGOpacityNode"/> - <!-- <object-type name="QSGOpaqueTextureMaterial"/> --> + <object-type name="QSGOpaqueTextureMaterial"/> <object-type name="QSGSimpleRectNode"/> <object-type name="QSGSimpleTextureNode"> <enum-type name="TextureCoordinatesTransformFlag" flags="TextureCoordinatesTransformMode"/> </object-type> + <object-type name="QSGTextNode" since="6.7"> + <enum-type name="TextStyle"/> + <enum-type name="RenderType"/> + </object-type> + <object-type name="QSGRectangleNode"/> + <object-type name="QSGRendererInterface"> + <enum-type name="GraphicsApi"/> + <enum-type name="Resource"/> + <enum-type name="ShaderType"/> + <enum-type name="ShaderCompilationType" flags="ShaderCompilationTypes"/> + <enum-type name="ShaderSourceType" flags="ShaderSourceTypes"/> + <enum-type name="RenderMode"/> + </object-type> + <object-type name="QSGRenderNode"> + <enum-type name="StateFlag" flags="StateFlags"/> + <enum-type name="RenderingFlag" flags="RenderingFlags"/> + <object-type name="RenderState"/> + </object-type> + <object-type name="QSGRootNode"/> <object-type name="QSGTexture"> - <enum-type name="AnisotropyLevel" since="5.9"/> + <enum-type name="AnisotropyLevel"/> <enum-type name="Filtering"/> <enum-type name="WrapMode"/> </object-type> - <!-- <object-type name="QSGTextureMaterial"/> --> + <object-type name="QSGTextureMaterial"/> <object-type name="QSGTextureProvider"/> <object-type name="QSGTransformNode"/> - <!-- <object-type name="QSGVertexColorMaterial"/> --> + <object-type name="QSGVertexColorMaterial"/> <!-- These currently don't work because they are template classes, and the generator chokes on them. Making these work properly would require fixing the parsing of template classes, @@ -165,4 +244,8 @@ <object-type name="QSGSimpleMaterialShader"/> --> + <suppress-warning text="^signature.*fromVulkanImage.*not found.*$"/> + <suppress-warning text="^signature.*fromPhysicalDevice.*not found.*$"/> + <suppress-warning text="^signature.*fromDeviceObjects.*not found.*$"/> + </typesystem> |