aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/PySide6/QtQuick
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/PySide6/QtQuick')
-rw-r--r--sources/pyside6/PySide6/QtQuick/CMakeLists.txt68
-rw-r--r--sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp214
-rw-r--r--sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h42
-rw-r--r--sources/pyside6/PySide6/QtQuick/typesystem_quick.xml211
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 &registered)
+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&amp;,const QSize&amp;)">
+ <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&lt;QSGGeometry::Point2D&gt;&amp;@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&amp;,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>