Initial import from qtquick2.
[profile/ivi/qtdeclarative.git] / src / imports / particles / gravitationalsingularityaffector.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 GRAVITATIONALSINGULARITYAFFECTOR_H
43 #define GRAVITATIONALSINGULARITYAFFECTOR_H
44 #include "particleaffector.h"
45
46 QT_BEGIN_HEADER
47
48 QT_BEGIN_NAMESPACE
49
50 QT_MODULE(Declarative)
51
52
53 class GravitationalSingularityAffector : public ParticleAffector
54 {
55     Q_OBJECT
56     Q_PROPERTY(qreal strength READ strength WRITE setStrength NOTIFY strengthChanged)
57     Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
58     Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged)
59 public:
60     explicit GravitationalSingularityAffector(QSGItem *parent = 0);
61
62     qreal strength() const
63     {
64         return m_strength;
65     }
66
67     qreal x() const
68     {
69         return m_x;
70     }
71
72     qreal y() const
73     {
74         return m_y;
75     }
76 protected:
77     virtual bool affectParticle(ParticleData *d, qreal dt);
78     void subaffect(ParticleData *d, qreal dt, bool first);
79 signals:
80
81     void strengthChanged(qreal arg);
82
83     void xChanged(qreal arg);
84
85     void yChanged(qreal arg);
86
87 public slots:
88
89 void setStrength(qreal arg)
90 {
91     if (m_strength != arg) {
92         m_strength = arg;
93         emit strengthChanged(arg);
94     }
95 }
96
97 void setX(qreal arg)
98 {
99     if (m_x != arg) {
100         m_x = arg;
101         emit xChanged(arg);
102     }
103 }
104
105 void setY(qreal arg)
106 {
107     if (m_y != arg) {
108         m_y = arg;
109         emit yChanged(arg);
110     }
111 }
112
113 private:
114 qreal m_strength;
115 qreal m_x;
116 qreal m_y;
117 };
118
119 QT_END_NAMESPACE
120 QT_END_HEADER
121 #endif // GRAVITATIONALSINGULARITYAFFECTOR_H