5#include <QtQuick/private/qquickitem_p.h>
10
11
12
13
14
15
16
25 virtual void itemChange(ItemChange ic,
const ItemChangeData &)
override
27 if (ic == ItemTransformHasChanged)
28 m_group->triggerUpdate();
32 QQuickTransformGroup *m_group =
nullptr;
37QQuickTransformGroup::QQuickTransformGroup(QObject *parent)
38 : QQuickTransform(parent)
40 m_dummyItem =
new DummyQuickItem(
this);
43QQuickTransformGroup::~QQuickTransformGroup()
48void QQuickTransformGroup::activateOverride(QQuickTransform *xform)
50 m_transformFlags[xform] |= Override;
54void QQuickTransformGroup::triggerUpdate()
59void QQuickTransformGroup::deactivateOverride(QQuickTransform *xform)
61 m_transformFlags[xform] &= ~Override;
65void QQuickTransformGroup::deactivate(QQuickTransform *xform)
67 m_transformFlags[xform] |= Disabled;
71void QQuickTransformGroup::applyTo(QMatrix4x4 *matrix)
const
73 QVarLengthArray<QQuickTransform *, 8> activeTransforms;
74 for (QQuickTransform *xform : m_transforms) {
75 int flags = m_transformFlags.value(xform);
76 if (!(flags & Disabled)) {
77 activeTransforms.append(xform);
84 for (
auto it = activeTransforms.crbegin(); it != activeTransforms.crend(); ++it)
85 (*it)->applyTo(matrix);
88QQmlListProperty<QQuickTransform> QQuickTransformGroup::transformSequence()
90 return QQmlListProperty<QQuickTransform>(
this,
92 transformSequence_append,
93 transformSequence_count,
95 transformSequence_clear);
98void QQuickTransformGroup::transformSequence_append(QQmlListProperty<QQuickTransform> *prop,
99 QQuickTransform *transform)
104 QQuickTransformGroup *that =
static_cast<QQuickTransformGroup *>(prop->object);
105 that->m_transforms.append(transform);
108 transform->appendToItem(that->m_dummyItem);
111QQuickTransform *QQuickTransformGroup::transformSequence_at(QQmlListProperty<QQuickTransform> *prop,
114 QQuickTransformGroup *that =
static_cast<QQuickTransformGroup *>(prop->object);
115 if (idx < 0 || idx >= that->m_transforms.size())
118 return that->m_transforms.at(idx);
121void QQuickTransformGroup::transformSequence_clear(QQmlListProperty<QQuickTransform> *prop)
123 QQuickTransformGroup *that =
static_cast<QQuickTransformGroup *>(prop->object);
124 that->m_transforms.clear();
128qsizetype QQuickTransformGroup::transformSequence_count(QQmlListProperty<QQuickTransform> *prop)
130 QQuickTransformGroup *that =
static_cast<QQuickTransformGroup *>(prop->object);
131 return that->m_transforms.size();
DummyQuickItem(QQuickTransformGroup *group)
virtual void itemChange(ItemChange ic, const ItemChangeData &) override
Called when change occurs for this item.