1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtQuick module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#include "qsgsimplerectnode.h"
41#include "qsgflatcolormaterial.h"
42
43QT_BEGIN_NAMESPACE
44
45/*!
46 \class QSGSimpleRectNode
47
48 \brief The QSGSimpleRectNode class is a convenience class for drawing
49 solid filled rectangles using scenegraph.
50 \inmodule QtQuick
51
52 \warning This utility class is only functional when running with the default
53 or software backends of the Qt Quick scenegraph. As an alternative, prefer
54 using QSGRectangleNode via QQuickWindow::createRectangleNode() or
55 QSGEngine::createRectangleNode().
56
57 \deprecated
58 */
59
60
61
62/*!
63 Constructs a QSGSimpleRectNode instance which is spanning \a rect with
64 the color \a color.
65 */
66QSGSimpleRectNode::QSGSimpleRectNode(const QRectF &rect, const QColor &color)
67 : m_geometry(QSGGeometry::defaultAttributes_Point2D(), 4)
68{
69 Q_UNUSED(reserved);
70 QSGGeometry::updateRectGeometry(g: &m_geometry, rect);
71 m_material.setColor(color);
72 setMaterial(&m_material);
73 setGeometry(&m_geometry);
74}
75
76
77
78/*!
79 Constructs a QSGSimpleRectNode instance with an empty rectangle and
80 white color.
81 */
82QSGSimpleRectNode::QSGSimpleRectNode()
83 : m_geometry(QSGGeometry::defaultAttributes_Point2D(), 4)
84{
85 QSGGeometry::updateRectGeometry(g: &m_geometry, rect: QRectF());
86 setMaterial(&m_material);
87 setGeometry(&m_geometry);
88}
89
90
91
92/*!
93 Sets the rectangle of this rect node to \a rect.
94 */
95void QSGSimpleRectNode::setRect(const QRectF &rect)
96{
97 QSGGeometry::updateRectGeometry(g: &m_geometry, rect);
98 markDirty(bits: QSGNode::DirtyGeometry);
99}
100
101
102/*!
103 \fn void QSGSimpleRectNode::setRect(qreal x, qreal y, qreal w, qreal h)
104 \overload
105
106 Sets the rectangle of this rect node to begin at (\a x, \a y) and have
107 width \a w and height \a h.
108 */
109
110/*!
111 Returns the rectangle that this rect node covers.
112 */
113QRectF QSGSimpleRectNode::rect() const
114{
115 const QSGGeometry::Point2D *pts = m_geometry.vertexDataAsPoint2D();
116 return QRectF(pts[0].x,
117 pts[0].y,
118 pts[3].x - pts[0].x,
119 pts[3].y - pts[0].y);
120}
121
122
123/*!
124 Sets the color of this rectangle to \a color. The default
125 color will be white.
126 */
127void QSGSimpleRectNode::setColor(const QColor &color)
128{
129 if (color != m_material.color()) {
130 m_material.setColor(color);
131 markDirty(bits: QSGNode::DirtyMaterial);
132 }
133}
134
135
136
137/*!
138 Returns the color of this rectangle.
139 */
140QColor QSGSimpleRectNode::color() const
141{
142 return m_material.color();
143}
144
145QT_END_NAMESPACE
146

source code of qtdeclarative/src/quick/scenegraph/util/qsgsimplerectnode.cpp