Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qquickanchors_p_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
ifndef
QQUICKANCHORS_P_P_H
6
#
define
QQUICKANCHORS_P_P_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists purely as an
13
// implementation detail. This header file may change from version to
14
// version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
"qquickanchors_p.h"
20
#
include
"qquickitemchangelistener_p.h"
21
#
include
<
private
/
qobject_p
.
h
>
22
23
QT_BEGIN_NAMESPACE
24
25
class
Q_QUICK_EXPORT
QQuickAnchorLine
26
{
27
Q_GADGET
28
QML_ANONYMOUS
29
QML_ADDED_IN_VERSION(2, 0)
30
public
:
31
QQuickAnchorLine() {}
32
QQuickAnchorLine(QQuickItem *i, QQuickAnchors::Anchor l) : item(i), anchorLine(l) {}
33
QQuickAnchorLine(QQuickItem *i, uint l)
34
: item(i)
35
, anchorLine(
static_cast
<QQuickAnchors::Anchor>(l))
36
{ Q_ASSERT(l < ((QQuickAnchors::BaselineAnchor << 1) - 1)); }
37
38
QQuickItem *item =
nullptr
;
39
QQuickAnchors::Anchor anchorLine = QQuickAnchors::InvalidAnchor;
40
};
41
42
inline
bool
operator
==(
const
QQuickAnchorLine& a,
const
QQuickAnchorLine& b)
43
{
44
return
a.item == b.item && a.anchorLine == b.anchorLine;
45
}
46
47
class
QQuickAnchorsPrivate
:
public
QObjectPrivate
,
48
public
QSafeQuickItemChangeListener
<
QQuickAnchorsPrivate
>
49
{
50
Q_DECLARE_PUBLIC(QQuickAnchors)
51
public
:
52
QQuickAnchorsPrivate
(
QQuickItem
*
i
)
53
:
leftMargin
(0)
54
,
rightMargin
(0)
55
,
topMargin
(0)
56
,
bottomMargin
(0)
57
,
margins
(0)
58
,
vCenterOffset
(0)
59
,
hCenterOffset
(0)
60
,
baselineOffset
(0)
61
,
item
(
i
)
62
,
fill
(
nullptr
)
63
,
centerIn
(
nullptr
)
64
,
leftAnchorItem
(
nullptr
)
65
,
rightAnchorItem
(
nullptr
)
66
,
topAnchorItem
(
nullptr
)
67
,
bottomAnchorItem
(
nullptr
)
68
,
vCenterAnchorItem
(
nullptr
)
69
,
hCenterAnchorItem
(
nullptr
)
70
,
baselineAnchorItem
(
nullptr
)
71
,
leftAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
72
,
leftMarginExplicit
(
false
)
73
,
rightAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
74
,
rightMarginExplicit
(
false
)
75
,
topAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
76
,
topMarginExplicit
(
false
)
77
,
bottomAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
78
,
bottomMarginExplicit
(
false
)
79
,
vCenterAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
80
,
updatingMe
(
false
)
81
,
hCenterAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
82
,
inDestructor
(
false
)
83
,
baselineAnchorLine
(
QQuickAnchors
::
InvalidAnchor
)
84
,
centerAligned
(
true
)
85
,
usedAnchors
(
QQuickAnchors
::
InvalidAnchor
)
86
,
componentComplete
(
true
)
87
,
updatingFill
(0)
88
,
updatingCenterIn
(0)
89
,
updatingHorizontalAnchor
(0)
90
,
updatingVerticalAnchor
(0)
91
{
92
}
93
94
void
clearItem
(
QQuickItem
*);
95
96
QQuickGeometryChange
calculateDependency
(QQuickItem *)
const
;
97
void
addDepend
(QQuickItem *);
98
void
remDepend
(QQuickItem *);
99
bool
isItemComplete
()
const
;
100
101
void
setItemHeight
(
qreal
);
102
void
setItemWidth
(
qreal
);
103
void
setItemX
(
qreal
);
104
void
setItemY
(
qreal
);
105
void
setItemPos
(
const
QPointF &);
106
void
setItemSize
(
const
QSizeF &);
107
108
void
update
();
109
void
updateOnComplete
();
110
void
updateMe
();
111
112
// QQuickItemGeometryListener interface
113
void
itemGeometryChanged
(QQuickItem *,
QQuickGeometryChange
,
const
QRectF &)
override
;
114
QQuickAnchorsPrivate
*
anchorPrivate
()
override
{
return
this
; }
115
116
bool
checkHValid
()
const
;
117
bool
checkVValid
()
const
;
118
bool
checkHAnchorValid
(QQuickAnchorLine anchor)
const
;
119
bool
checkVAnchorValid
(QQuickAnchorLine anchor)
const
;
120
bool
calcStretch
(QQuickItem *edge1Item, QQuickAnchors::Anchor edge1Line,
121
QQuickItem *edge2Item, QQuickAnchors::Anchor edge2Line,
122
qreal offset1, qreal offset2, QQuickAnchors::Anchor line, qreal &stretch)
const
;
123
124
bool
isMirrored
()
const
;
125
void
updateHorizontalAnchors
();
126
void
updateVerticalAnchors
();
127
void
fillChanged
();
128
void
centerInChanged
();
129
130
qreal
leftMargin
;
131
qreal
rightMargin
;
132
qreal
topMargin
;
133
qreal
bottomMargin
;
134
qreal
margins
;
135
qreal
vCenterOffset
;
136
qreal
hCenterOffset
;
137
qreal
baselineOffset
;
138
139
QQuickItem *
item
;
140
141
QQuickItem *
fill
;
142
QQuickItem *
centerIn
;
143
144
QQuickItem *
leftAnchorItem
;
145
QQuickItem *
rightAnchorItem
;
146
QQuickItem *
topAnchorItem
;
147
QQuickItem *
bottomAnchorItem
;
148
QQuickItem *
vCenterAnchorItem
;
149
QQuickItem *
hCenterAnchorItem
;
150
QQuickItem *
baselineAnchorItem
;
151
152
// The bit fields below are carefully laid out in chunks of 1 byte, so the compiler doesn't
153
// need to generate 2 loads (and combining shifts/ors) to create a single field.
154
155
QQuickAnchors
::
Anchor
leftAnchorLine
: 7;
156
uint
leftMarginExplicit
: 1;
157
QQuickAnchors
::
Anchor
rightAnchorLine
: 7;
158
uint
rightMarginExplicit
: 1;
159
QQuickAnchors
::
Anchor
topAnchorLine
: 7;
160
uint
topMarginExplicit
: 1;
161
QQuickAnchors
::
Anchor
bottomAnchorLine
: 7;
162
uint
bottomMarginExplicit
: 1;
163
164
QQuickAnchors
::
Anchor
vCenterAnchorLine
: 7;
165
uint
updatingMe
: 1;
166
QQuickAnchors
::
Anchor
hCenterAnchorLine
: 7;
167
uint
inDestructor
: 1;
168
QQuickAnchors
::
Anchor
baselineAnchorLine
: 7;
169
uint
centerAligned
: 1;
170
uint
usedAnchors
: 7;
// QQuickAnchors::Anchors
171
uint
componentComplete
: 1;
172
173
// Instead of using a mostly empty bit field, we can stretch the following fields up to be full
174
// bytes. The advantage is that incrementing/decrementing does not need any combining ands/ors.
175
qint8
updatingFill
;
176
qint8
updatingCenterIn
;
177
qint8
updatingHorizontalAnchor
;
178
qint8
updatingVerticalAnchor
;
179
180
181
static
inline
QQuickAnchorsPrivate
*
get
(QQuickAnchors *o) {
182
return
static_cast
<QQuickAnchorsPrivate *>(QObjectPrivate::get(o));
183
}
184
};
185
186
QT_END_NAMESPACE
187
188
Q_DECLARE_METATYPE(QQuickAnchorLine)
189
190
#
endif
QQuickAnchorLine
Definition
qquickanchors_p_p.h:26
QQuickAnchorsPrivate
Definition
qquickanchors_p_p.h:49
QQuickAnchorsPrivate::updatingFill
qint8 updatingFill
Definition
qquickanchors_p_p.h:175
QQuickAnchorsPrivate::updatingVerticalAnchor
qint8 updatingVerticalAnchor
Definition
qquickanchors_p_p.h:178
QQuickAnchorsPrivate::centerAligned
uint centerAligned
Definition
qquickanchors_p_p.h:169
QQuickAnchorsPrivate::checkHAnchorValid
bool checkHAnchorValid(QQuickAnchorLine anchor) const
Definition
qquickanchors.cpp:1309
QQuickAnchorsPrivate::updateMe
void updateMe()
Definition
qquickanchors.cpp:396
QQuickAnchorsPrivate::item
QQuickItem * item
Definition
qquickanchors_p_p.h:139
QQuickAnchorsPrivate::vCenterOffset
qreal vCenterOffset
Definition
qquickanchors_p_p.h:135
QQuickAnchorsPrivate::update
void update()
Definition
qquickanchors.cpp:435
QQuickAnchorsPrivate::fillChanged
void fillChanged()
Definition
qquickanchors.cpp:152
QQuickAnchorsPrivate::componentComplete
uint componentComplete
Definition
qquickanchors_p_p.h:171
QQuickAnchorsPrivate::hCenterAnchorItem
QQuickItem * hCenterAnchorItem
Definition
qquickanchors_p_p.h:149
QQuickAnchorsPrivate::updatingCenterIn
qint8 updatingCenterIn
Definition
qquickanchors_p_p.h:176
QQuickAnchorsPrivate::fill
QQuickItem * fill
Definition
qquickanchors_p_p.h:141
QQuickAnchorsPrivate::leftMargin
qreal leftMargin
Definition
qquickanchors_p_p.h:130
QQuickAnchorsPrivate::isItemComplete
bool isItemComplete() const
Definition
qquickanchors.cpp:337
QQuickAnchorsPrivate::remDepend
void remDepend(QQuickItem *)
Definition
qquickanchors.cpp:299
QQuickAnchorsPrivate::updatingMe
uint updatingMe
Definition
qquickanchors_p_p.h:165
QQuickAnchorsPrivate::setItemWidth
void setItemWidth(qreal)
Definition
qquickanchors.cpp:361
QQuickAnchorsPrivate::centerInChanged
void centerInChanged()
Definition
qquickanchors.cpp:179
QQuickAnchorsPrivate::checkHValid
bool checkHValid() const
Definition
qquickanchors.cpp:1297
QQuickAnchorsPrivate::hCenterOffset
qreal hCenterOffset
Definition
qquickanchors_p_p.h:136
QQuickAnchorsPrivate::rightAnchorItem
QQuickItem * rightAnchorItem
Definition
qquickanchors_p_p.h:145
QQuickAnchorsPrivate::calculateDependency
QQuickGeometryChange calculateDependency(QQuickItem *) const
Definition
qquickanchors.cpp:245
QQuickAnchorsPrivate::updateHorizontalAnchors
void updateHorizontalAnchors()
Definition
qquickanchors.cpp:659
QQuickAnchorsPrivate::setItemHeight
void setItemHeight(qreal)
Definition
qquickanchors.cpp:354
QQuickAnchorsPrivate::bottomMargin
qreal bottomMargin
Definition
qquickanchors_p_p.h:133
QQuickAnchorsPrivate::leftMarginExplicit
uint leftMarginExplicit
Definition
qquickanchors_p_p.h:156
QQuickAnchorsPrivate::topMarginExplicit
uint topMarginExplicit
Definition
qquickanchors_p_p.h:160
QQuickAnchorsPrivate::topAnchorItem
QQuickItem * topAnchorItem
Definition
qquickanchors_p_p.h:146
QQuickAnchorsPrivate::centerIn
QQuickItem * centerIn
Definition
qquickanchors_p_p.h:142
QQuickAnchorsPrivate::updatingHorizontalAnchor
qint8 updatingHorizontalAnchor
Definition
qquickanchors_p_p.h:177
QQuickAnchorsPrivate::bottomAnchorItem
QQuickItem * bottomAnchorItem
Definition
qquickanchors_p_p.h:147
QQuickAnchorsPrivate::checkVAnchorValid
bool checkVAnchorValid(QQuickAnchorLine anchor) const
Definition
qquickanchors.cpp:1347
QQuickAnchorsPrivate::baselineOffset
qreal baselineOffset
Definition
qquickanchors_p_p.h:137
QQuickAnchorsPrivate::addDepend
void addDepend(QQuickItem *)
Definition
qquickanchors.cpp:290
QQuickAnchorsPrivate::margins
qreal margins
Definition
qquickanchors_p_p.h:134
QQuickAnchorsPrivate::vCenterAnchorItem
QQuickItem * vCenterAnchorItem
Definition
qquickanchors_p_p.h:148
QQuickAnchorsPrivate::checkVValid
bool checkVValid() const
Definition
qquickanchors.cpp:1329
QQuickAnchorsPrivate::setItemSize
void setItemSize(const QSizeF &)
Definition
qquickanchors.cpp:389
QQuickAnchorsPrivate::updateOnComplete
void updateOnComplete()
Definition
qquickanchors.cpp:406
QQuickAnchorsPrivate::inDestructor
uint inDestructor
Definition
qquickanchors_p_p.h:167
QQuickAnchorsPrivate::setItemY
void setItemY(qreal)
Definition
qquickanchors.cpp:375
QQuickAnchorsPrivate::rightMarginExplicit
uint rightMarginExplicit
Definition
qquickanchors_p_p.h:158
QQuickAnchorsPrivate::topMargin
qreal topMargin
Definition
qquickanchors_p_p.h:132
QQuickAnchorsPrivate::get
static QQuickAnchorsPrivate * get(QQuickAnchors *o)
Definition
qquickanchors_p_p.h:181
QQuickAnchorsPrivate::itemGeometryChanged
void itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) override
Definition
qquickanchors.cpp:452
QQuickAnchorsPrivate::setItemX
void setItemX(qreal)
Definition
qquickanchors.cpp:368
QQuickAnchorsPrivate::isMirrored
bool isMirrored() const
QQuickAnchorsPrivate::baselineAnchorItem
QQuickItem * baselineAnchorItem
Definition
qquickanchors_p_p.h:150
QQuickAnchorsPrivate::anchorPrivate
QQuickAnchorsPrivate * anchorPrivate() override
Definition
qquickanchors_p_p.h:114
QQuickAnchorsPrivate::updateVerticalAnchors
void updateVerticalAnchors()
Definition
qquickanchors.cpp:572
QQuickAnchorsPrivate::calcStretch
bool calcStretch(QQuickItem *edge1Item, QQuickAnchors::Anchor edge1Line, QQuickItem *edge2Item, QQuickAnchors::Anchor edge2Line, qreal offset1, qreal offset2, QQuickAnchors::Anchor line, qreal &stretch) const
Definition
qquickanchors.cpp:541
QQuickAnchorsPrivate::usedAnchors
uint usedAnchors
Definition
qquickanchors_p_p.h:170
QQuickAnchorsPrivate::bottomMarginExplicit
uint bottomMarginExplicit
Definition
qquickanchors_p_p.h:162
QQuickAnchorsPrivate::rightMargin
qreal rightMargin
Definition
qquickanchors_p_p.h:131
QQuickAnchorsPrivate::leftAnchorItem
QQuickItem * leftAnchorItem
Definition
qquickanchors_p_p.h:144
QQuickAnchorsPrivate::setItemPos
void setItemPos(const QPointF &)
Definition
qquickanchors.cpp:382
QQuickGeometryChange
Definition
qquickitemchangelistener_p.h:31
QQuickGeometryChange::setSizeChange
void setSizeChange(bool enabled)
Definition
qquickitemchangelistener_p.h:66
QQuickGeometryChange::setAllChanged
void setAllChanged(bool enabled)
Definition
qquickitemchangelistener_p.h:67
QQuickGeometryChange::setVerticalChange
void setVerticalChange(bool enabled)
Definition
qquickitemchangelistener_p.h:69
QQuickGeometryChange::setWidthChange
void setWidthChange(bool enabled)
Definition
qquickitemchangelistener_p.h:64
QQuickGeometryChange::setHeightChange
void setHeightChange(bool enabled)
Definition
qquickitemchangelistener_p.h:65
QQuickGeometryChange::setHorizontalChange
void setHorizontalChange(bool enabled)
Definition
qquickitemchangelistener_p.h:68
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
hcenter
static qreal hcenter(const QQuickItem *item)
Definition
qquickanchors.cpp:46
vcenter
static qreal vcenter(const QQuickItem *item)
Definition
qquickanchors.cpp:56
reverseAnchorLine
static QQuickAnchors::Anchor reverseAnchorLine(QQuickAnchors::Anchor anchorLine)
Definition
qquickanchors.cpp:648
adjustedPosition
static qreal adjustedPosition(QQuickItem *item, QQuickAnchors::Anchor anchorLine)
Definition
qquickanchors.cpp:100
position
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
Definition
qquickanchors.cpp:67
operator==
bool operator==(const QQuickAnchorLine &a, const QQuickAnchorLine &b)
Definition
qquickanchors_p_p.h:42
qtdeclarative
src
quick
items
qquickanchors_p_p.h
Generated on
for Qt by
1.18.0