7#include <QtQuick/private/qsgadaptationlayer_p.h>
11QQuickPaddedRectangle::QQuickPaddedRectangle(QQuickItem *parent) :
12 QQuickRectangle(parent)
16qreal QQuickPaddedRectangle::padding()
const
21void QQuickPaddedRectangle::setPadding(qreal padding)
23 if (!qFuzzyCompare(m_padding, padding)) {
26 emit paddingChanged();
28 emit topPaddingChanged();
29 if (!m_hasLeftPadding)
30 emit leftPaddingChanged();
31 if (!m_hasRightPadding)
32 emit rightPaddingChanged();
33 if (!m_hasBottomPadding)
34 emit bottomPaddingChanged();
38void QQuickPaddedRectangle::resetPadding()
43qreal QQuickPaddedRectangle::topPadding()
const
45 return m_hasTopPadding ? m_topPadding : m_padding;
48void QQuickPaddedRectangle::setTopPadding(qreal padding)
50 setTopPadding(padding,
true);
53void QQuickPaddedRectangle::resetTopPadding()
55 setTopPadding(0,
false);
58qreal QQuickPaddedRectangle::leftPadding()
const
60 return m_hasLeftPadding ? m_leftPadding : m_padding;
63void QQuickPaddedRectangle::setLeftPadding(qreal padding)
65 setLeftPadding(padding,
true);
68void QQuickPaddedRectangle::resetLeftPadding()
70 setLeftPadding(0,
false);
73qreal QQuickPaddedRectangle::rightPadding()
const
75 return m_hasRightPadding ? m_rightPadding : m_padding;
78void QQuickPaddedRectangle::setRightPadding(qreal padding)
80 setRightPadding(padding,
true);
83void QQuickPaddedRectangle::resetRightPadding()
85 setRightPadding(0,
false);
88qreal QQuickPaddedRectangle::bottomPadding()
const
90 return m_hasBottomPadding ? m_bottomPadding : m_padding;
93void QQuickPaddedRectangle::setBottomPadding(qreal padding)
95 setBottomPadding(padding,
true);
98void QQuickPaddedRectangle::resetBottomPadding()
100 setBottomPadding(0,
false);
103void QQuickPaddedRectangle::setTopPadding(qreal padding,
bool has)
105 qreal oldPadding = topPadding();
106 m_hasTopPadding = has;
107 m_topPadding = padding;
108 if (!qFuzzyCompare(oldPadding, padding)) {
110 emit topPaddingChanged();
114void QQuickPaddedRectangle::setLeftPadding(qreal padding,
bool has)
116 qreal oldPadding = leftPadding();
117 m_hasLeftPadding = has;
118 m_leftPadding = padding;
119 if (!qFuzzyCompare(oldPadding, padding)) {
121 emit leftPaddingChanged();
125void QQuickPaddedRectangle::setRightPadding(qreal padding,
bool has)
127 qreal oldPadding = rightPadding();
128 m_hasRightPadding = has;
129 m_rightPadding = padding;
130 if (!qFuzzyCompare(oldPadding, padding)) {
132 emit rightPaddingChanged();
136void QQuickPaddedRectangle::setBottomPadding(qreal padding,
bool has)
138 qreal oldPadding = bottomPadding();
139 m_hasBottomPadding = has;
140 m_bottomPadding = padding;
141 if (!qFuzzyCompare(oldPadding, padding)) {
143 emit bottomPaddingChanged();
147QSGNode *QQuickPaddedRectangle::updatePaintNode(QSGNode *node, UpdatePaintNodeData *data)
149 QSGTransformNode *transformNode =
static_cast<QSGTransformNode *>(node);
151 transformNode =
new QSGTransformNode;
153 QSGInternalRectangleNode *rectNode =
static_cast<QSGInternalRectangleNode *>(QQuickRectangle::updatePaintNode(transformNode->firstChild(), data));
156 if (!transformNode->firstChild())
157 transformNode->appendChildNode(rectNode);
159 qreal top = topPadding();
160 qreal left = leftPadding();
161 qreal right = rightPadding();
162 qreal bottom = bottomPadding();
164 if (!qFuzzyIsNull(top) || !qFuzzyIsNull(left) || !qFuzzyIsNull(right) || !qFuzzyIsNull(bottom)) {
166 m.translate(left, top);
167 transformNode->setMatrix(m);
169 qreal w = qMax<qreal>(0.0, width() -left-right);
170 qreal h = qMax<qreal>(0.0, height() -top-bottom);
172 rectNode->setRect(QRectF(0, 0, w, h));
176 return transformNode;
181#include "moc_qquickpaddedrectangle_p.cpp"