Qt 4.8
qdeclarativepath_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtDeclarative 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 Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QDECLARATIVEPATH_H
43 #define QDECLARATIVEPATH_H
44 
45 #include "qdeclarativeitem.h"
46 
47 #include <qdeclarative.h>
48 
49 #include <QtCore/QObject>
50 #include <QtGui/QPainterPath>
51 
53 
55 
56 QT_MODULE(Declarative)
58 {
59  Q_OBJECT
60 public:
61  QDeclarativePathElement(QObject *parent=0) : QObject(parent) {}
62 Q_SIGNALS:
63  void changed();
64 };
65 
67 {
68  Q_OBJECT
69 
72 public:
73  QDeclarativePathAttribute(QObject *parent=0) : QDeclarativePathElement(parent), _value(0) {}
74 
75 
76  QString name() const;
77  void setName(const QString &name);
78 
79  qreal value() const;
80  void setValue(qreal value);
81 
82 Q_SIGNALS:
83  void nameChanged();
84  void valueChanged();
85 
86 private:
89 };
90 
92 {
93  Q_OBJECT
94 
97 public:
98  QDeclarativeCurve(QObject *parent=0) : QDeclarativePathElement(parent), _x(0), _y(0) {}
99 
100  qreal x() const;
101  void setX(qreal x);
102 
103  qreal y() const;
104  void setY(qreal y);
105 
106  virtual void addToPath(QPainterPath &) {}
107 
108 Q_SIGNALS:
109  void xChanged();
110  void yChanged();
111 
112 private:
115 };
116 
118 {
119  Q_OBJECT
120 public:
122 
123  void addToPath(QPainterPath &path);
124 };
125 
127 {
128  Q_OBJECT
129 
132 public:
133  QDeclarativePathQuad(QObject *parent=0) : QDeclarativeCurve(parent), _controlX(0), _controlY(0) {}
134 
135  qreal controlX() const;
136  void setControlX(qreal x);
137 
138  qreal controlY() const;
139  void setControlY(qreal y);
140 
141  void addToPath(QPainterPath &path);
142 
143 Q_SIGNALS:
144  void controlXChanged();
145  void controlYChanged();
146 
147 private:
150 };
151 
153 {
154  Q_OBJECT
155 
160 public:
161  QDeclarativePathCubic(QObject *parent=0) : QDeclarativeCurve(parent), _control1X(0), _control1Y(0), _control2X(0), _control2Y(0) {}
162 
163  qreal control1X() const;
164  void setControl1X(qreal x);
165 
166  qreal control1Y() const;
167  void setControl1Y(qreal y);
168 
169  qreal control2X() const;
170  void setControl2X(qreal x);
171 
172  qreal control2Y() const;
173  void setControl2Y(qreal y);
174 
175  void addToPath(QPainterPath &path);
176 
177 Q_SIGNALS:
178  void control1XChanged();
179  void control1YChanged();
180  void control2XChanged();
181  void control2YChanged();
182 
183 private:
188 };
189 
191 {
192  Q_OBJECT
194 public:
196 
197  qreal value() const;
198  void setValue(qreal value);
199 
200 signals:
201  void valueChanged();
202 
203 private:
205 };
206 
209 {
210  Q_OBJECT
211 
214  qreal startX;
215  qreal startY;
216  bool closed;
217  Q_CLASSINFO("DefaultProperty", "pathElements")
219 public:
220  QDeclarativePath(QObject *parent=0);
221  ~QDeclarativePath();
222 
224 
225  qreal startX() const;
226  void setStartX(qreal x);
227 
228  qreal startY() const;
229  void setStartY(qreal y);
230 
231  bool isClosed() const;
232 
233  QPainterPath path() const;
234  QStringList attributes() const;
235  qreal attributeAt(const QString &, qreal) const;
236  QPointF pointAt(qreal) const;
237 
238 Q_SIGNALS:
239  void changed();
240  void startXChanged();
241  void startYChanged();
242 
243 protected:
244  virtual void componentComplete();
245  virtual void classBegin();
246 
248  void processPath();
249 
250 private:
251  struct AttributePoint {
252  AttributePoint() : percent(0), scale(1), origpercent(0) {}
253  AttributePoint(const AttributePoint &other)
254  : percent(other.percent), scale(other.scale), origpercent(other.origpercent), values(other.values) {}
255  AttributePoint &operator=(const AttributePoint &other) {
256  percent = other.percent; scale = other.scale; origpercent = other.origpercent; values = other.values; return *this;
257  }
258  qreal percent; //massaged percent along the painter path
260  qreal origpercent; //'real' percent along the painter path
262  };
263 
264  void interpolate(int idx, const QString &name, qreal value);
265  void endpoint(const QString &name);
266  void createPointCache() const;
267 
268 private:
271 };
272 
274 
283 
285 
286 #endif // QDECLARATIVEPATH_H
QDeclarativeCurve(QObject *parent=0)
AttributePoint & operator=(const AttributePoint &other)
#define Q_CLASSINFO(name, value)
This macro associates extra information to the class, which is available using QObject::metaObject()...
Definition: qobjectdefs.h:78
double qreal
Definition: qglobal.h:1193
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
#define QT_MODULE(x)
Definition: qglobal.h:2783
#define QML_DECLARE_TYPE(TYPE)
Definition: qdeclarative.h:56
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
The QPainterPath class provides a container for painting operations, enabling graphical shapes to be ...
Definition: qpainterpath.h:67
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
QDeclarativePathLine(QObject *parent=0)
#define Q_DISABLE_COPY(Class)
Disables the use of copy constructors and assignment operators for the given Class.
Definition: qglobal.h:2523
qreal value
the new value of the attribute.
static qreal interpolate(const QPair< QGraphicsAnchorLayoutPrivate::Interval, qreal > &factor, qreal min, qreal minPref, qreal pref, qreal maxPref, qreal max)
#define Q_SLOTS
Definition: qobjectdefs.h:71
virtual void addToPath(QPainterPath &)
The QString class provides a Unicode character string.
Definition: qstring.h:83
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_SIGNALS
Definition: qobjectdefs.h:72
QDeclarativePathPercent(QObject *parent=0)
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
The QDeclarativeParserStatus class provides updates on the QML parser state.
const char * name
The QStringList class provides a list of strings.
Definition: qstringlist.h:66
QDeclarativePathAttribute(QObject *parent=0)
quint16 values[128]
QDeclarativePathElement(QObject *parent=0)
#define Q_OBJECT
Definition: qobjectdefs.h:157
QString name
the name of the attribute to change.
#define Q_INTERFACES(x)
This macro tells Qt which interfaces the class implements.
Definition: qobjectdefs.h:79
#define Q_AUTOTEST_EXPORT
Definition: qglobal.h:1510
qreal controlX
the x position of the control point.
#define Q_DECLARE_PRIVATE(Class)
Definition: qglobal.h:2467
QDeclarativePathCubic(QObject *parent=0)
qreal controlY
the y position of the control point.
#define signals
Definition: qobjectdefs.h:69
#define class
#define QT_END_HEADER
Definition: qglobal.h:137
#define private
Definition: qregion_qws.cpp:43
The QDeclarativeListProperty class allows applications to expose list-like properties to QML...
QDeclarativePathQuad(QObject *parent=0)
AttributePoint(const AttributePoint &other)