Initial import from qtquick2.
[profile/ivi/qtdeclarative.git] / src / imports / particles / pointvector.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the Declarative module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file.  Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 **
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef POINTVECTOR_H
43 #define POINTVECTOR_H
44 #include "varyingvector.h"
45
46 QT_BEGIN_HEADER
47
48 QT_BEGIN_NAMESPACE
49
50 QT_MODULE(Declarative)
51
52 class PointVector : public VaryingVector
53 {
54     Q_OBJECT
55     Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
56     Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged)
57     Q_PROPERTY(qreal xVariation READ xVariation WRITE setXVariation NOTIFY xVariationChanged)
58     Q_PROPERTY(qreal yVariation READ yVariation WRITE setYVariation NOTIFY yVariationChanged)
59 public:
60     explicit PointVector(QObject *parent = 0);
61     virtual const QPointF &sample(const QPointF &from);
62     qreal x() const
63     {
64         return m_x;
65     }
66
67     qreal y() const
68     {
69         return m_y;
70     }
71
72     qreal xVariation() const
73     {
74         return m_xVariation;
75     }
76
77     qreal yVariation() const
78     {
79         return m_yVariation;
80     }
81
82 signals:
83
84     void xChanged(qreal arg);
85
86     void yChanged(qreal arg);
87
88     void xVariationChanged(qreal arg);
89
90     void yVariationChanged(qreal arg);
91
92 public slots:
93     void setX(qreal arg)
94     {
95         if (m_x != arg) {
96             m_x = arg;
97             emit xChanged(arg);
98         }
99     }
100
101     void setY(qreal arg)
102     {
103         if (m_y != arg) {
104             m_y = arg;
105             emit yChanged(arg);
106         }
107     }
108
109     void setXVariation(qreal arg)
110     {
111         if (m_xVariation != arg) {
112             m_xVariation = arg;
113             emit xVariationChanged(arg);
114         }
115     }
116
117     void setYVariation(qreal arg)
118     {
119         if (m_yVariation != arg) {
120             m_yVariation = arg;
121             emit yVariationChanged(arg);
122         }
123     }
124
125 private:
126
127     qreal m_x;
128     qreal m_y;
129     qreal m_xVariation;
130     qreal m_yVariation;
131 };
132
133 QT_END_NAMESPACE
134 QT_END_HEADER
135 #endif // POINTVECTOR_H