You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

339 lines
8.6 KiB

// qsgnode.sip generated by MetaSIP
//
// This file is part of the QtQuick Python extension module.
//
// Copyright (c) 2023 Riverbank Computing Limited <info@riverbankcomputing.com>
//
// This file is part of PyQt5.
//
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file. Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
//
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license. For more information contact
// info@riverbankcomputing.com.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
class QSGNode /Supertype=sip.wrapper/
{
%TypeHeaderCode
#include <qsgnode.h>
%End
%TypeCode
static sipErrorState qsgnode_handle_flags(QSGNode *node, PyObject *self, QSGNode::Flags old_flags)
{
QSGNode::Flags new_flags = node->flags();
if (node->parent())
{
if ((old_flags & QSGNode::OwnedByParent) != (new_flags & QSGNode::OwnedByParent))
{
if (old_flags & QSGNode::OwnedByParent)
{
sipTransferBack(self);
}
else
{
PyObject *parent = sipConvertFromType(node->parent(), sipType_QSGNode, 0);
if (!parent)
return sipErrorFail;
sipTransferTo(self, parent);
Py_DECREF(parent);
}
}
}
QSGNode::NodeType ntype = node->type();
if (ntype == QSGNode::BasicNodeType || ntype == QSGNode::GeometryNodeType || ntype == QSGNode::ClipNodeType)
{
QSGBasicGeometryNode *bg_node = (QSGBasicGeometryNode *)node;
if (bg_node->geometry())
{
if ((old_flags & QSGNode::OwnsGeometry) != (new_flags & QSGNode::OwnsGeometry))
{
PyObject *geom = sipConvertFromType(bg_node->geometry(), sipType_QSGGeometry, 0);
if (!geom)
return sipErrorFail;
if (old_flags & QSGNode::OwnsGeometry)
sipTransferBack(geom);
else
sipTransferTo(geom, self);
Py_DECREF(geom);
}
}
}
if (ntype == QSGNode::GeometryNodeType)
{
QSGGeometryNode *g_node = (QSGGeometryNode *)node;
if (g_node->material())
{
if ((old_flags & QSGNode::OwnsMaterial) != (new_flags & QSGNode::OwnsMaterial))
{
PyObject *mat = sipConvertFromType(g_node->material(), sipType_QSGMaterial, 0);
if (!mat)
return sipErrorFail;
if (old_flags & QSGNode::OwnsMaterial)
sipTransferBack(mat);
else
sipTransferTo(mat, self);
Py_DECREF(mat);
}
}
if (g_node->opaqueMaterial())
{
if ((old_flags & QSGNode::OwnsOpaqueMaterial) != (new_flags & QSGNode::OwnsOpaqueMaterial))
{
PyObject *omat = sipConvertFromType(g_node->opaqueMaterial(), sipType_QSGMaterial, 0);
if (!omat)
return sipErrorFail;
if (old_flags & QSGNode::OwnsOpaqueMaterial)
sipTransferBack(omat);
else
sipTransferTo(omat, self);
Py_DECREF(omat);
}
}
}
return sipErrorNone;
}
%End
%ConvertToSubClassCode
switch (sipCpp->type())
{
case QSGNode::BasicNodeType:
sipType = sipType_QSGBasicGeometryNode;
break;
case QSGNode::GeometryNodeType:
sipType = sipType_QSGGeometryNode;
break;
case QSGNode::TransformNodeType:
sipType = sipType_QSGClipNode;
break;
case QSGNode::ClipNodeType:
sipType = sipType_QSGTransformNode;
break;
case QSGNode::OpacityNodeType:
sipType = sipType_QSGOpacityNode;
break;
default:
sipType = 0;
}
%End
public:
enum NodeType
{
BasicNodeType,
GeometryNodeType,
TransformNodeType,
ClipNodeType,
OpacityNodeType,
};
enum Flag
{
OwnedByParent,
UsePreprocess,
OwnsGeometry,
OwnsMaterial,
OwnsOpaqueMaterial,
};
typedef QFlags<QSGNode::Flag> Flags;
enum DirtyStateBit
{
DirtyMatrix,
DirtyNodeAdded,
DirtyNodeRemoved,
DirtyGeometry,
DirtyMaterial,
DirtyOpacity,
};
typedef QFlags<QSGNode::DirtyStateBit> DirtyState;
QSGNode();
virtual ~QSGNode();
QSGNode *parent() const;
void removeChildNode(QSGNode *node);
void removeAllChildNodes();
void prependChildNode(QSGNode *node /GetWrapper/);
%MethodCode
sipCpp->prependChildNode(a0);
if (a0->flags() & QSGNode::OwnedByParent)
sipTransferTo(a0Wrapper, sipSelf);
%End
void appendChildNode(QSGNode *node /GetWrapper/);
%MethodCode
sipCpp->appendChildNode(a0);
if (a0->flags() & QSGNode::OwnedByParent)
sipTransferTo(a0Wrapper, sipSelf);
%End
void insertChildNodeBefore(QSGNode *node /GetWrapper/, QSGNode *before);
%MethodCode
sipCpp->insertChildNodeBefore(a0, a1);
if (a0->flags() & QSGNode::OwnedByParent)
sipTransferTo(a0Wrapper, sipSelf);
%End
void insertChildNodeAfter(QSGNode *node /GetWrapper/, QSGNode *after);
%MethodCode
sipCpp->insertChildNodeAfter(a0, a1);
if (a0->flags() & QSGNode::OwnedByParent)
sipTransferTo(a0Wrapper, sipSelf);
%End
int childCount() const /__len__/;
QSGNode *childAtIndex(int i) const;
QSGNode *firstChild() const;
QSGNode *lastChild() const;
QSGNode *nextSibling() const;
QSGNode *previousSibling() const;
QSGNode::NodeType type() const;
void markDirty(QSGNode::DirtyState bits);
virtual bool isSubtreeBlocked() const;
QSGNode::Flags flags() const;
void setFlag(QSGNode::Flag, bool enabled = true);
%MethodCode
QSGNode::Flags old_flags = sipCpp->flags();
sipCpp->setFlag(a0, a1);
sipError = qsgnode_handle_flags(sipCpp, sipSelf, old_flags);
%End
void setFlags(QSGNode::Flags, bool enabled = true);
virtual void preprocess();
private:
QSGNode(const QSGNode &);
};
class QSGBasicGeometryNode : QSGNode /NoDefaultCtors/
{
%TypeHeaderCode
#include <qsgnode.h>
%End
public:
virtual ~QSGBasicGeometryNode();
void setGeometry(QSGGeometry *geometry /GetWrapper/);
%MethodCode
sipCpp->setGeometry(a0);
if (sipCpp->flags() & QSGNode::OwnsGeometry)
sipTransferTo(a0Wrapper, sipSelf);
%End
QSGGeometry *geometry();
};
class QSGGeometryNode : QSGBasicGeometryNode
{
%TypeHeaderCode
#include <qsgnode.h>
%End
public:
QSGGeometryNode();
virtual ~QSGGeometryNode();
void setMaterial(QSGMaterial *material /GetWrapper/);
%MethodCode
sipCpp->setMaterial(a0);
if (sipCpp->flags() & QSGNode::OwnsMaterial)
sipTransferTo(a0Wrapper, sipSelf);
%End
QSGMaterial *material() const;
void setOpaqueMaterial(QSGMaterial *material /GetWrapper/);
%MethodCode
sipCpp->setOpaqueMaterial(a0);
if (sipCpp->flags() & QSGNode::OwnsOpaqueMaterial)
sipTransferTo(a0Wrapper, sipSelf);
%End
QSGMaterial *opaqueMaterial() const;
};
class QSGClipNode : QSGBasicGeometryNode
{
%TypeHeaderCode
#include <qsgnode.h>
%End
public:
QSGClipNode();
virtual ~QSGClipNode();
void setIsRectangular(bool rectHint);
bool isRectangular() const;
void setClipRect(const QRectF &);
QRectF clipRect() const;
};
class QSGTransformNode : QSGNode
{
%TypeHeaderCode
#include <qsgnode.h>
%End
public:
QSGTransformNode();
virtual ~QSGTransformNode();
void setMatrix(const QMatrix4x4 &matrix);
const QMatrix4x4 &matrix() const;
};
class QSGOpacityNode : QSGNode
{
%TypeHeaderCode
#include <qsgnode.h>
%End
public:
QSGOpacityNode();
virtual ~QSGOpacityNode();
void setOpacity(qreal opacity);
qreal opacity() const;
};
QFlags<QSGNode::DirtyStateBit> operator|(QSGNode::DirtyStateBit f1, QFlags<QSGNode::DirtyStateBit> f2);
QFlags<QSGNode::Flag> operator|(QSGNode::Flag f1, QFlags<QSGNode::Flag> f2);