##// END OF EJS Templates
Animation folder formating: white spaces, brackets, etc fixed
Marek Rosa -
r738:ce991d3dee26
parent child
Show More
1 NO CONTENT: modified file
NO CONTENT: modified file
1 NO CONTENT: modified file
NO CONTENT: modified file
1 NO CONTENT: modified file
NO CONTENT: modified file
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -1,26 +1,26
1 #ifndef CHARTANIMATION_H_
1 #ifndef CHARTANIMATION_H_
2 #define CHARTANIMATION_H_
2 #define CHARTANIMATION_H_
3
3
4 #include "qchartglobal.h"
4 #include "qchartglobal.h"
5 #include <QVariantAnimation>
5 #include <QVariantAnimation>
6
6
7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
8
8
9 class ChartAnimation: public QVariantAnimation
9 class ChartAnimation: public QVariantAnimation
10 {
10 {
11 public:
11 public:
12 enum Animation { LineDrawAnimation, MoveDownAnimation, MoveUpAnimation };
12 enum Animation { LineDrawAnimation, MoveDownAnimation, MoveUpAnimation };
13 ChartAnimation(QObject* parent=0):QVariantAnimation(parent),m_type(MoveDownAnimation){};
13 ChartAnimation(QObject* parent=0):QVariantAnimation(parent), m_type(MoveDownAnimation){}
14 void setAnimationType(Animation type){
14 void setAnimationType(Animation type){
15 m_type=type;
15 m_type=type;
16 }
16 }
17 protected:
17 protected:
18 Animation m_type;
18 Animation m_type;
19
19
20 };
20 };
21
21
22 QTCOMMERCIALCHART_END_NAMESPACE
22 QTCOMMERCIALCHART_END_NAMESPACE
23
23
24
24
25
25
26 #endif /* AXISITEM_H_ */
26 #endif /* AXISITEM_H_ */
@@ -1,288 +1,279
1 #include "chartanimator_p.h"
1 #include "chartanimator_p.h"
2 #include "axisanimation_p.h"
2 #include "axisanimation_p.h"
3 #include "xyanimation_p.h"
3 #include "xyanimation_p.h"
4 #include "splineanimation_p.h"
4 #include "splineanimation_p.h"
5 #include "xychartitem_p.h"
5 #include "xychartitem_p.h"
6 #include "pieanimation_p.h"
6 #include "pieanimation_p.h"
7 #include "baranimation_p.h"
7 #include "baranimation_p.h"
8 #include "barchartitem_p.h"
8 #include "barchartitem_p.h"
9 #include "areachartitem_p.h"
9 #include "areachartitem_p.h"
10 #include "splinechartitem_p.h"
10 #include "splinechartitem_p.h"
11 #include "scatterchartitem_p.h"
11 #include "scatterchartitem_p.h"
12 #include <QTimer>
12 #include <QTimer>
13
13
14 Q_DECLARE_METATYPE(QVector<QPointF>)
14 Q_DECLARE_METATYPE(QVector<QPointF>)
15 Q_DECLARE_METATYPE(QVector<qreal>)
15 Q_DECLARE_METATYPE(QVector<qreal>)
16 Q_DECLARE_METATYPE(QVector<QRectF>)
16 Q_DECLARE_METATYPE(QVector<QRectF>)
17
17
18 QTCOMMERCIALCHART_BEGIN_NAMESPACE
18 QTCOMMERCIALCHART_BEGIN_NAMESPACE
19
19
20 const static int duration = 1000;
20 const static int duration = 1000;
21
21
22 ChartAnimator::ChartAnimator(QObject *parent):QObject(parent),m_state(ShowState)
22 ChartAnimator::ChartAnimator(QObject *parent):QObject(parent),
23 m_state(ShowState)
23 {
24 {
24 }
25 }
25
26
26 ChartAnimator::~ChartAnimator()
27 ChartAnimator::~ChartAnimator()
27 {
28 {
28 }
29 }
29
30
30 void ChartAnimator::addAnimation(Axis* item)
31 void ChartAnimator::addAnimation(Axis *item)
31 {
32 {
32 ChartAnimation* animation = m_animations.value(item);
33 ChartAnimation *animation = m_animations.value(item);
33
34
34 if(!animation) {
35 if (!animation) {
35 animation = new AxisAnimation(item);
36 animation = new AxisAnimation(item);
36 m_animations.insert(item,animation);
37 m_animations.insert(item, animation);
37 }
38 }
38
39
39 item->setAnimator(this);
40 item->setAnimator(this);
40 }
41 }
41
42
42 void ChartAnimator::addAnimation(SplineChartItem* item)
43 void ChartAnimator::addAnimation(SplineChartItem *item)
43 {
44 {
44 ChartAnimation* animation = m_animations.value(item);
45 ChartAnimation *animation = m_animations.value(item);
45
46
46 if(!animation) {
47 if (!animation) {
47 animation = new SplineAnimation(item);
48 animation = new SplineAnimation(item);
48 m_animations.insert(item,animation);
49 m_animations.insert(item, animation);
49 }
50 }
50
51
51 item->setAnimator(this);
52 item->setAnimator(this);
52 }
53 }
53
54
54 void ChartAnimator::addAnimation(ScatterChartItem* item)
55 void ChartAnimator::addAnimation(ScatterChartItem *item)
55 {
56 {
56 ChartAnimation* animation = m_animations.value(item);
57 ChartAnimation *animation = m_animations.value(item);
57
58
58 if(!animation) {
59 if (!animation) {
59 animation = new XYAnimation(item);
60 animation = new XYAnimation(item);
60 m_animations.insert(item,animation);
61 m_animations.insert(item, animation);
61 }
62 }
62
63
63 item->setAnimator(this);
64 item->setAnimator(this);
64 }
65 }
65
66
66 void ChartAnimator::addAnimation(LineChartItem* item)
67 void ChartAnimator::addAnimation(LineChartItem *item)
67 {
68 {
68 ChartAnimation* animation = m_animations.value(item);
69 ChartAnimation *animation = m_animations.value(item);
69
70
70 if(!animation) {
71 if (!animation) {
71 animation = new XYAnimation(item);
72 animation = new XYAnimation(item);
72 m_animations.insert(item,animation);
73 m_animations.insert(item, animation);
73 }
74 }
74
75
75 item->setAnimator(this);
76 item->setAnimator(this);
76 }
77 }
77
78
78 void ChartAnimator::addAnimation(PieChartItem* item)
79 void ChartAnimator::addAnimation(PieChartItem *item)
79 {
80 {
80 ChartAnimation* animation = m_animations.value(item);
81 ChartAnimation *animation = m_animations.value(item);
81
82
82 if(!animation) {
83 if (!animation) {
83 animation = new PieAnimation(item);
84 animation = new PieAnimation(item);
84 m_animations.insert(item,animation);
85 m_animations.insert(item, animation);
85 }
86 }
86
87
87 item->setAnimator(this);
88 item->setAnimator(this);
88 }
89 }
89
90
90 void ChartAnimator::addAnimation(BarChartItem* item)
91 void ChartAnimator::addAnimation(BarChartItem *item)
91 {
92 {
92 ChartAnimation* animation = m_animations.value(item);
93 ChartAnimation *animation = m_animations.value(item);
93
94
94 if(!animation) {
95 if (!animation) {
95 animation = new BarAnimation(item);
96 animation = new BarAnimation(item);
96 m_animations.insert(item,animation);
97 m_animations.insert(item, animation);
97 }
98 }
98
99
99 item->setAnimator(this);
100 item->setAnimator(this);
100 }
101 }
101
102
102
103
103 void ChartAnimator::removeAnimation(Chart* item)
104 void ChartAnimator::removeAnimation(Chart *item)
104 {
105 {
105 item->setAnimator(0);
106 item->setAnimator(0);
106 m_animations.remove(item);
107 m_animations.remove(item);
107 }
108 }
108
109
109 void ChartAnimator::updateLayout(Axis* item , QVector<qreal>& newLayout)
110 void ChartAnimator::updateLayout(Axis *item , QVector<qreal> &newLayout)
110 {
111 {
111 AxisAnimation* animation = static_cast<AxisAnimation*>(m_animations.value(item));
112 AxisAnimation *animation = static_cast<AxisAnimation*>(m_animations.value(item));
112
113
113 Q_ASSERT(animation);
114 Q_ASSERT(animation);
114
115
115 QVector<qreal> oldLayout = item->layout();
116 QVector<qreal> oldLayout = item->layout();
116
117
117 if(newLayout.count()==0) return;
118 if (newLayout.count() == 0)
119 return;
118
120
119 switch(m_state)
121 switch (m_state) {
120 {
121 case ZoomOutState: {
122 case ZoomOutState: {
122 QRectF rect = item->geometry();
123 QRectF rect = item->geometry();
123 oldLayout.resize(newLayout.count());
124 oldLayout.resize(newLayout.count());
124
125
125 for(int i=0,j=oldLayout.count()-1;i<(oldLayout.count()+1)/2;i++,j--)
126 for(int i = 0, j = oldLayout.count() - 1; i < (oldLayout.count() + 1) / 2; i++, j--) {
126 {
127 oldLayout[i]= item->axisType()==Axis::X_AXIS?rect.left():rect.bottom();
127 oldLayout[i] = item->axisType() == Axis::X_AXIS ? rect.left() : rect.bottom();
128 oldLayout[j]= item->axisType()==Axis::X_AXIS?rect.right():rect.top();
128 oldLayout[j] = item->axisType() == Axis::X_AXIS ? rect.right() : rect.top();
129 }
129 }
130 }
130 }
131 break;
131 break;
132 case ZoomInState: {
132 case ZoomInState: {
133 int index = qMin(oldLayout.count()*(item->axisType()==Axis::X_AXIS?m_point.x():(1 -m_point.y())),newLayout.count()-1.0);
133 int index = qMin(oldLayout.count() * (item->axisType() == Axis::X_AXIS ? m_point.x() : (1 - m_point.y())), newLayout.count() - 1.0);
134 oldLayout.resize(newLayout.count());
134 oldLayout.resize(newLayout.count());
135
135
136 for(int i=0;i<oldLayout.count();i++)
136 for(int i = 0; i < oldLayout.count(); i++)
137 {
138 oldLayout[i]= oldLayout[index];
137 oldLayout[i]= oldLayout[index];
139 }
138 }
140 }
141 break;
139 break;
142 case ScrollDownState:
140 case ScrollDownState:
143 case ScrollRightState: {
141 case ScrollRightState: {
144 oldLayout.resize(newLayout.count());
142 oldLayout.resize(newLayout.count());
145
143
146 for(int i=0, j=i+1;i<oldLayout.count()-1;i++,j++)
144 for(int i = 0, j = i + 1; i < oldLayout.count() - 1; i++, j++)
147 {
148 oldLayout[i]= oldLayout[j];
145 oldLayout[i]= oldLayout[j];
149 }
146 }
150 }
151 break;
147 break;
152 case ScrollUpState:
148 case ScrollUpState:
153 case ScrollLeftState: {
149 case ScrollLeftState: {
154 oldLayout.resize(newLayout.count());
150 oldLayout.resize(newLayout.count());
155
151
156 for(int i=oldLayout.count()-1, j=i-1;i>0;i--,j--)
152 for(int i = oldLayout.count() - 1, j = i - 1; i > 0; i--, j--)
157 {
158 oldLayout[i]= oldLayout[j];
153 oldLayout[i]= oldLayout[j];
159 }
154 }
160 }
161 break;
155 break;
162 default: {
156 default: {
163 oldLayout.resize(newLayout.count());
157 oldLayout.resize(newLayout.count());
164 QRectF rect = item->geometry();
158 QRectF rect = item->geometry();
165 for(int i=0, j=oldLayout.count()-1;i<oldLayout.count();i++,j--)
159 for(int i = 0, j = oldLayout.count() - 1; i < oldLayout.count(); i++, j--)
166 {
167 oldLayout[i]= item->axisType()==Axis::X_AXIS?rect.left():rect.top();
160 oldLayout[i] = item->axisType() == Axis::X_AXIS ? rect.left() : rect.top();
168 }
161 }
169 }
170 break;
162 break;
171 }
163 }
172
164
173
165
174 if(animation->state()!=QAbstractAnimation::Stopped) {
166 if (animation->state() != QAbstractAnimation::Stopped)
175 animation->stop();
167 animation->stop();
176 }
177
168
178 animation->setDuration(duration);
169 animation->setDuration(duration);
179 animation->setEasingCurve(QEasingCurve::OutQuart);
170 animation->setEasingCurve(QEasingCurve::OutQuart);
180 QVariantAnimation::KeyValues value;
171 QVariantAnimation::KeyValues value;
181 animation->setKeyValues(value); //workaround for wrong interpolation call
172 animation->setKeyValues(value); //workaround for wrong interpolation call
182 animation->setKeyValueAt(0.0, qVariantFromValue(oldLayout));
173 animation->setKeyValueAt(0.0, qVariantFromValue(oldLayout));
183 animation->setKeyValueAt(1.0, qVariantFromValue(newLayout));
174 animation->setKeyValueAt(1.0, qVariantFromValue(newLayout));
184
175
185 QTimer::singleShot(0,animation,SLOT(start()));
176 QTimer::singleShot(0, animation, SLOT(start()));
186 }
177 }
187
178
188 void ChartAnimator::updateLayout(SplineChartItem* item, QVector<QPointF>& oldPoints ,QVector<QPointF>& newPoints, QVector<QPointF>& oldControlPoints, QVector<QPointF>& newControlPoints,int index)
179 void ChartAnimator::updateLayout(SplineChartItem *item, QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, QVector<QPointF> &oldControlPoints, QVector<QPointF> &newControlPoints, int index)
189 {
180 {
190 SplineAnimation* animation = static_cast<SplineAnimation*>(m_animations.value(item));
181 SplineAnimation *animation = static_cast<SplineAnimation *>(m_animations.value(item));
191
182
192 Q_ASSERT(animation);
183 Q_ASSERT(animation);
193
184
194 if(newPoints.count()<2 || newControlPoints.count()<2) return;
185 if (newPoints.count() < 2 || newControlPoints.count() < 2)
186 return;
195
187
196 bool empty = oldPoints.count()==0;
188 bool empty = oldPoints.count() == 0;
197
189
198
190
199 if(animation->state()!=QAbstractAnimation::Stopped) {
191 if (animation->state() != QAbstractAnimation::Stopped)
200 animation->stop();
192 animation->stop();
201 }
202
193
203 animation->setDuration(duration);
194 animation->setDuration(duration);
204 if(!empty)
195 if (!empty)
205 animation->setAnimationType(ChartAnimation::MoveDownAnimation);
196 animation->setAnimationType(ChartAnimation::MoveDownAnimation);
206 else
197 else
207 animation->setAnimationType(ChartAnimation::LineDrawAnimation);
198 animation->setAnimationType(ChartAnimation::LineDrawAnimation);
208
199
209 animation->setEasingCurve(QEasingCurve::OutQuart);
200 animation->setEasingCurve(QEasingCurve::OutQuart);
210 animation->setValues(oldPoints,newPoints,oldControlPoints,newControlPoints,index);
201 animation->setValues(oldPoints, newPoints, oldControlPoints, newControlPoints, index);
211
202
212 QTimer::singleShot(0,animation,SLOT(start()));
203 QTimer::singleShot(0, animation, SLOT(start()));
213 }
204 }
214
205
215
206
216 void ChartAnimator::updateLayout(XYChartItem* item, QVector<QPointF>& oldPoints , QVector<QPointF>& newPoints, int index)
207 void ChartAnimator::updateLayout(XYChartItem *item, QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, int index)
217 {
208 {
218 XYAnimation* animation = static_cast<XYAnimation*>(m_animations.value(item));
209 XYAnimation *animation = static_cast<XYAnimation *>(m_animations.value(item));
219
210
220 Q_ASSERT(animation);
211 Q_ASSERT(animation);
221
212
222 if(newPoints.count()==0) return;
213 if (newPoints.count() == 0)
214 return;
223
215
224 bool empty = oldPoints.count()==0;
216 bool empty = oldPoints.count() == 0;
225
217
226
218
227 if(animation->state()!=QAbstractAnimation::Stopped) {
219 if (animation->state() != QAbstractAnimation::Stopped)
228 animation->stop();
220 animation->stop();
229 }
230
221
231 animation->setDuration(duration);
222 animation->setDuration(duration);
232 if(!empty)
223 if (!empty)
233 animation->setAnimationType(ChartAnimation::MoveDownAnimation);
224 animation->setAnimationType(ChartAnimation::MoveDownAnimation);
234 else
225 else
235 animation->setAnimationType(ChartAnimation::LineDrawAnimation);
226 animation->setAnimationType(ChartAnimation::LineDrawAnimation);
236
227
237 animation->setEasingCurve(QEasingCurve::OutQuart);
228 animation->setEasingCurve(QEasingCurve::OutQuart);
238 animation->setValues(oldPoints,newPoints,index);
229 animation->setValues(oldPoints, newPoints, index);
239
230
240 QTimer::singleShot(0,animation,SLOT(start()));
231 QTimer::singleShot(0, animation, SLOT(start()));
241 }
232 }
242
233
243 void ChartAnimator::addAnimation(PieChartItem* item, QPieSlice *slice, const PieSliceData &sliceData, bool isEmpty)
234 void ChartAnimator::addAnimation(PieChartItem *item, QPieSlice *slice, const PieSliceData &sliceData, bool isEmpty)
244 {
235 {
245 PieAnimation* animation = static_cast<PieAnimation*>(m_animations.value(item));
236 PieAnimation *animation = static_cast<PieAnimation *>(m_animations.value(item));
246 Q_ASSERT(animation);
237 Q_ASSERT(animation);
247 animation->addSlice(slice, sliceData, isEmpty);
238 animation->addSlice(slice, sliceData, isEmpty);
248 }
239 }
249
240
250 void ChartAnimator::removeAnimation(PieChartItem* item, QPieSlice *slice)
241 void ChartAnimator::removeAnimation(PieChartItem *item, QPieSlice *slice)
251 {
242 {
252 PieAnimation* animation = static_cast<PieAnimation*>(m_animations.value(item));
243 PieAnimation *animation = static_cast<PieAnimation *>(m_animations.value(item));
253 Q_ASSERT(animation);
244 Q_ASSERT(animation);
254 animation->removeSlice(slice);
245 animation->removeSlice(slice);
255 }
246 }
256
247
257 void ChartAnimator::updateLayout(PieChartItem* item, const PieLayout &layout)
248 void ChartAnimator::updateLayout(PieChartItem *item, const PieLayout &layout)
258 {
249 {
259 PieAnimation* animation = static_cast<PieAnimation*>(m_animations.value(item));
250 PieAnimation *animation = static_cast<PieAnimation *>(m_animations.value(item));
260 Q_ASSERT(animation);
251 Q_ASSERT(animation);
261 animation->updateValues(layout);
252 animation->updateValues(layout);
262 }
253 }
263
254
264 void ChartAnimator::updateLayout(PieChartItem* item, QPieSlice *slice, const PieSliceData &sliceData)
255 void ChartAnimator::updateLayout(PieChartItem *item, QPieSlice *slice, const PieSliceData &sliceData)
265 {
256 {
266 PieAnimation* animation = static_cast<PieAnimation*>(m_animations.value(item));
257 PieAnimation *animation = static_cast<PieAnimation *>(m_animations.value(item));
267 Q_ASSERT(animation);
258 Q_ASSERT(animation);
268 animation->updateValue(slice, sliceData);
259 animation->updateValue(slice, sliceData);
269 }
260 }
270
261
271 void ChartAnimator::updateLayout(BarChartItem* item, const QVector<QRectF> &oldLayout, const QVector<QRectF> &newLayout)
262 void ChartAnimator::updateLayout(BarChartItem *item, const QVector<QRectF> &oldLayout, const QVector<QRectF> &newLayout)
272 {
263 {
273 BarAnimation* animation = static_cast<BarAnimation*>(m_animations.value(item));
264 BarAnimation *animation = static_cast<BarAnimation *>(m_animations.value(item));
274 Q_ASSERT(animation);
265 Q_ASSERT(animation);
275 animation->setDuration(duration);
266 animation->setDuration(duration);
276 animation->setKeyValueAt(0.0, qVariantFromValue(oldLayout));
267 animation->setKeyValueAt(0.0, qVariantFromValue(oldLayout));
277 animation->setKeyValueAt(1.0, qVariantFromValue(newLayout));
268 animation->setKeyValueAt(1.0, qVariantFromValue(newLayout));
278 QTimer::singleShot(0,animation,SLOT(start()));
269 QTimer::singleShot(0, animation, SLOT(start()));
279 }
270 }
280
271
281
272
282 void ChartAnimator::setState(State state,const QPointF& point)
273 void ChartAnimator::setState(State state, const QPointF &point)
283 {
274 {
284 m_state=state;
275 m_state = state;
285 m_point=point;
276 m_point = point;
286 }
277 }
287
278
288 QTCOMMERCIALCHART_END_NAMESPACE
279 QTCOMMERCIALCHART_END_NAMESPACE
1 NO CONTENT: modified file
NO CONTENT: modified file
1 NO CONTENT: modified file
NO CONTENT: modified file
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -1,127 +1,129
1 #include "splineanimation_p.h"
1 #include "splineanimation_p.h"
2 #include "splinechartitem_p.h"
2 #include "splinechartitem_p.h"
3
3
4 Q_DECLARE_METATYPE(QVector<QPointF>)
4 Q_DECLARE_METATYPE(QVector<QPointF>)
5 Q_DECLARE_METATYPE(SplineVector)
5 Q_DECLARE_METATYPE(SplineVector)
6
6
7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
8
8
9 SplineAnimation::SplineAnimation(SplineChartItem* item):ChartAnimation(item),
9 SplineAnimation::SplineAnimation(SplineChartItem* item):ChartAnimation(item),
10 m_item(item),
10 m_item(item),
11 m_dirty(true)
11 m_dirty(true)
12 {
12 {
13 }
13 }
14
14
15 SplineAnimation::~SplineAnimation()
15 SplineAnimation::~SplineAnimation()
16 {
16 {
17 }
17 }
18
18
19 void SplineAnimation::setValues(QVector<QPointF>& oldPoints,QVector<QPointF>& newPoints,QVector<QPointF>& oldControlPoints,QVector<QPointF>& newControlPoints,int index)
19 void SplineAnimation::setValues(QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, QVector<QPointF> &oldControlPoints, QVector<QPointF> &newControlPoints, int index)
20 {
20 {
21 int x = oldPoints.count();
21 int x = oldPoints.count();
22 int y = newPoints.count();
22 int y = newPoints.count();
23
23
24 Q_ASSERT(newPoints.count()*2-2 == newControlPoints.count());
24 Q_ASSERT(newPoints.count() * 2 - 2 == newControlPoints.count());
25
25
26 if(x!=y && abs(x-y)!=1) {
26 if (x != y && abs(x - y) != 1) {
27 m_oldSpline.first= newPoints;
27 m_oldSpline.first = newPoints;
28 m_oldSpline.second= newControlPoints;
28 m_oldSpline.second = newControlPoints;
29 oldPoints.resize(newPoints.size());
29 oldPoints.resize(newPoints.size());
30 oldControlPoints.resize(newControlPoints.size());
30 oldControlPoints.resize(newControlPoints.size());
31 SplineVector oldPair;
31 SplineVector oldPair;
32 oldPair.first=oldPoints;
32 oldPair.first = oldPoints;
33 oldPair.second=oldControlPoints;
33 oldPair.second = oldControlPoints;
34 SplineVector newPair;
34 SplineVector newPair;
35 newPair.first=newPoints;
35 newPair.first = newPoints;
36 newPair.second=newControlPoints;
36 newPair.second = newControlPoints;
37 setKeyValueAt(0.0, qVariantFromValue(oldPair));
37 setKeyValueAt(0.0, qVariantFromValue(oldPair));
38 setKeyValueAt(1.0, qVariantFromValue(newPair));
38 setKeyValueAt(1.0, qVariantFromValue(newPair));
39 m_dirty=false;
39 m_dirty = false;
40 }
40 }
41 else {
41 else {
42 if(m_dirty) {
42 if(m_dirty) {
43 m_oldSpline.first = oldPoints;
43 m_oldSpline.first = oldPoints;
44 m_oldSpline.second = oldControlPoints;
44 m_oldSpline.second = oldControlPoints;
45 m_dirty=false;
45 m_dirty = false;
46 }
46 }
47 oldPoints = newPoints;
47 oldPoints = newPoints;
48 oldControlPoints = newControlPoints;
48 oldControlPoints = newControlPoints;
49 if (y<x) {
49 if (y < x) {
50 m_oldSpline.first.remove(index); //remove
50 m_oldSpline.first.remove(index); //remove
51 m_oldSpline.second.remove(index*2);
51 m_oldSpline.second.remove(index * 2);
52 m_oldSpline.second.remove(index*2);
52 m_oldSpline.second.remove(index * 2);
53 }
53 }
54 if (y>x) {
54 if (y > x) {
55 m_oldSpline.first.insert(index,x>0?m_oldSpline.first[index-1]:newPoints[index]); //add
55 m_oldSpline.first.insert(index, x > 0 ? m_oldSpline.first[index-1] : newPoints[index]); //add
56 m_oldSpline.second.insert((index-1)*2,x>1?m_oldSpline.second[(index-2)*2]:newControlPoints[(index-1)*2]); //add
56 m_oldSpline.second.insert((index - 1) * 2, x > 1 ? m_oldSpline.second[(index-2)*2] : newControlPoints[(index - 1) * 2]); //add
57 m_oldSpline.second.insert((index-1)*2+1,x>1?m_oldSpline.second[(index-2)*2+1]:newControlPoints[(index-1)*2+1]); //add
57 m_oldSpline.second.insert((index - 1) * 2 + 1, x > 1 ? m_oldSpline.second[(index - 2) * 2 + 1] : newControlPoints[(index - 1) * 2 + 1]); //add
58 }
58 }
59 SplineVector newPair;
59 SplineVector newPair;
60 newPair.first=newPoints;
60 newPair.first=newPoints;
61 newPair.second=newControlPoints;
61 newPair.second=newControlPoints;
62 setKeyValueAt(0.0, qVariantFromValue(m_oldSpline));
62 setKeyValueAt(0.0, qVariantFromValue(m_oldSpline));
63 setKeyValueAt(1.0, qVariantFromValue(newPair));
63 setKeyValueAt(1.0, qVariantFromValue(newPair));
64
64
65 }
65 }
66 }
66 }
67
67
68 QVariant SplineAnimation::interpolated(const QVariant &start, const QVariant & end, qreal progress ) const
68 QVariant SplineAnimation::interpolated(const QVariant &start, const QVariant &end, qreal progress ) const
69 {
69 {
70
70
71 SplineVector startPair = qVariantValue< SplineVector >(start);
71 SplineVector startPair = qVariantValue< SplineVector >(start);
72 SplineVector endPair = qVariantValue< SplineVector >(end);
72 SplineVector endPair = qVariantValue< SplineVector >(end);
73 SplineVector result;
73 SplineVector result;
74
74
75
75
76 switch(m_type) {
76 switch (m_type) {
77
77
78 case MoveDownAnimation: {
78 case MoveDownAnimation: {
79
79 if (startPair.first.count() != endPair.first.count())
80 if(startPair.first.count() != endPair.first.count()) break;
80 break;
81 Q_ASSERT(startPair.first.count()*2-2 == startPair.second.count());
81 Q_ASSERT(startPair.first.count() * 2 - 2 == startPair.second.count());
82 Q_ASSERT(endPair.first.count()*2-2 == endPair.second.count());
82 Q_ASSERT(endPair.first.count() * 2 - 2 == endPair.second.count());
83 for(int i =0;i< endPair.first.count();i++) {
83 for(int i = 0; i < endPair.first.count(); i++) {
84 qreal x = startPair.first[i].x() + ((endPair.first[i].x()- startPair.first[i].x()) * progress);
84 qreal x = startPair.first[i].x() + ((endPair.first[i].x() - startPair.first[i].x()) * progress);
85 qreal y = startPair.first[i].y() + ((endPair.first[i].y()- startPair.first[i].y()) * progress);
85 qreal y = startPair.first[i].y() + ((endPair.first[i].y() - startPair.first[i].y()) * progress);
86 result.first << QPointF(x,y);
86 result.first << QPointF(x,y);
87 if(i +1 >= endPair.first.count()) continue;
87 if (i + 1 >= endPair.first.count())
88 continue;
88 x = startPair.second[i*2].x() + ((endPair.second[i*2].x()- startPair.second[i*2].x()) * progress);
89 x = startPair.second[i * 2].x() + ((endPair.second[i * 2].x() - startPair.second[i * 2].x()) * progress);
89 y = startPair.second[i*2].y() + ((endPair.second[i*2].y()- startPair.second[i*2].y()) * progress);
90 y = startPair.second[i * 2].y() + ((endPair.second[i * 2].y() - startPair.second[i * 2].y()) * progress);
90 result.second << QPoint(x,y);
91 result.second << QPoint(x,y);
91 x = startPair.second[i*2+1].x() + ((endPair.second[i*2+1].x()- startPair.second[i*2+1].x()) * progress);
92 x = startPair.second[i * 2 + 1].x() + ((endPair.second[i * 2 + 1].x() - startPair.second[i * 2 + 1].x()) * progress);
92 y = startPair.second[i*2+1].y() + ((endPair.second[i*2+1].y()- startPair.second[i*2+1].y()) * progress);
93 y = startPair.second[i * 2 + 1].y() + ((endPair.second[i * 2 + 1].y() - startPair.second[i * 2 + 1].y()) * progress);
93 result.second << QPoint(x,y);
94 result.second << QPoint(x,y);
94 }
95 }
95
96
96 }
97 }
97 break;
98 break;
98 case LineDrawAnimation:{
99 case LineDrawAnimation:{
99 Q_ASSERT(endPair.first.count()*2-2 == endPair.second.count());
100 Q_ASSERT(endPair.first.count() * 2 - 2 == endPair.second.count());
100 int count = endPair.first.count()* qBound(0.0, progress, 1.0);
101 int count = endPair.first.count()* qBound(0.0, progress, 1.0);
101 for(int i =0;i<count;i++) {
102 for(int i = 0; i < count; i++) {
102 result.first << endPair.first[i];
103 result.first << endPair.first[i];
103 if(i+1==count) break;
104 if(i + 1 == count)
105 break;
104 result.second << endPair.second[2*i];
106 result.second << endPair.second[2 * i];
105 result.second << endPair.second[2*i+1];
107 result.second << endPair.second[2 * i + 1];
106 }
108 }
107 }
109 }
108 break;
110 break;
109 default:
111 default:
110 qWarning()<<"Unknow type of animation";
112 qWarning() << "Unknow type of animation";
111 break;
113 break;
112 }
114 }
113
115
114 return qVariantFromValue(result);
116 return qVariantFromValue(result);
115 }
117 }
116
118
117 void SplineAnimation::updateCurrentValue (const QVariant & value )
119 void SplineAnimation::updateCurrentValue (const QVariant &value )
118 {
120 {
119 if(state()!=QAbstractAnimation::Stopped){ //workaround
121 if (state() != QAbstractAnimation::Stopped) { //workaround
120 m_dirty=true;
122 m_dirty = true;
121 QPair<QVector<QPointF >, QVector<QPointF > > pair = qVariantValue< QPair< QVector<QPointF>, QVector<QPointF> > >(value);
123 QPair<QVector<QPointF >, QVector<QPointF > > pair = qVariantValue< QPair< QVector<QPointF>, QVector<QPointF> > >(value);
122 m_item->setLayout(pair.first,pair.second);
124 m_item->setLayout(pair.first, pair.second);
123 }
125 }
124 }
126 }
125
127
126
128
127 QTCOMMERCIALCHART_END_NAMESPACE
129 QTCOMMERCIALCHART_END_NAMESPACE
@@ -1,33 +1,32
1 #ifndef SPLINEANIMATION_P_H_
1 #ifndef SPLINEANIMATION_P_H_
2 #define SPLINEANIMATION_P_H_
2 #define SPLINEANIMATION_P_H_
3 #include "chartanimation_p.h"
3 #include "chartanimation_p.h"
4 #include <QPointF>
4 #include <QPointF>
5
5
6 typedef QPair<QVector<QPointF >, QVector<QPointF > > SplineVector;
6 typedef QPair<QVector<QPointF >, QVector<QPointF > > SplineVector;
7
7
8 QTCOMMERCIALCHART_BEGIN_NAMESPACE
8 QTCOMMERCIALCHART_BEGIN_NAMESPACE
9
9
10
11 class SplineChartItem;
10 class SplineChartItem;
12
11
13 class SplineAnimation : public ChartAnimation
12 class SplineAnimation : public ChartAnimation
14 {
13 {
15 public:
14 public:
16
15
17 SplineAnimation(SplineChartItem* item);
16 SplineAnimation(SplineChartItem* item);
18 ~SplineAnimation();
17 ~SplineAnimation();
19 void setValues(QVector<QPointF>& oldPoints,QVector<QPointF>& newPoints,QVector<QPointF>& oldContorlPoints,QVector<QPointF>& newControlPoints,int index);
18 void setValues(QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, QVector<QPointF> &oldContorlPoints, QVector<QPointF> &newControlPoints, int index);
20
19
21 protected:
20 protected:
22 QVariant interpolated(const QVariant &start, const QVariant & end, qreal progress ) const;
21 QVariant interpolated(const QVariant &start, const QVariant &end, qreal progress) const;
23 void updateCurrentValue (const QVariant & value );
22 void updateCurrentValue(const QVariant &value);
24
23
25 private:
24 private:
26 SplineVector m_oldSpline;
25 SplineVector m_oldSpline;
27 SplineChartItem* m_item;
26 SplineChartItem *m_item;
28 bool m_dirty;
27 bool m_dirty;
29 };
28 };
30
29
31 QTCOMMERCIALCHART_END_NAMESPACE
30 QTCOMMERCIALCHART_END_NAMESPACE
32
31
33 #endif
32 #endif
@@ -1,88 +1,89
1 #include "xyanimation_p.h"
1 #include "xyanimation_p.h"
2 #include "xychartitem_p.h"
2 #include "xychartitem_p.h"
3
3
4 Q_DECLARE_METATYPE(QVector<QPointF>)
4 Q_DECLARE_METATYPE(QVector<QPointF>)
5
5
6 QTCOMMERCIALCHART_BEGIN_NAMESPACE
6 QTCOMMERCIALCHART_BEGIN_NAMESPACE
7
7
8 XYAnimation::XYAnimation(XYChartItem *item):ChartAnimation(item),
8 XYAnimation::XYAnimation(XYChartItem *item):ChartAnimation(item),
9 m_item(item),
9 m_item(item),
10 m_dirty(false)
10 m_dirty(false)
11 {
11 {
12 }
12 }
13
13
14 XYAnimation::~XYAnimation()
14 XYAnimation::~XYAnimation()
15 {
15 {
16 }
16 }
17
17
18 void XYAnimation::setValues(QVector<QPointF>& oldPoints,QVector<QPointF>& newPoints,int index)
18 void XYAnimation::setValues(QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, int index)
19 {
19 {
20
21 int x = oldPoints.count();
20 int x = oldPoints.count();
22 int y = newPoints.count();
21 int y = newPoints.count();
23
22
24 if(x!=y && abs(x-y)!=1) {
23 if (x != y && abs(x - y) != 1) {
25 m_oldPoints = newPoints;
24 m_oldPoints = newPoints;
26 oldPoints.resize(newPoints.size());
25 oldPoints.resize(newPoints.size());
27 setKeyValueAt(0.0, qVariantFromValue(oldPoints));
26 setKeyValueAt(0.0, qVariantFromValue(oldPoints));
28 setKeyValueAt(1.0, qVariantFromValue(newPoints));
27 setKeyValueAt(1.0, qVariantFromValue(newPoints));
29 m_dirty=false;
28 m_dirty = false;
30 }
29 }
31 else {
30 else {
32 if(m_dirty) {
31 if (m_dirty) {
33 m_oldPoints = oldPoints;
32 m_oldPoints = oldPoints;
34 m_dirty=false;
33 m_dirty = false;
35 }
34 }
36 oldPoints = newPoints;
35 oldPoints = newPoints;
37 if (y<x) (m_oldPoints.remove(index)); //remove
36 if (y < x)
38 if (y>x) (m_oldPoints.insert(index,x>0?m_oldPoints[index-1]:newPoints[index])); //add
37 m_oldPoints.remove(index); //remove
38 if (y > x)
39 m_oldPoints.insert(index, x > 0 ? m_oldPoints[index-1] : newPoints[index]); //add
39 setKeyValueAt(0.0, qVariantFromValue(m_oldPoints));
40 setKeyValueAt(0.0, qVariantFromValue(m_oldPoints));
40 setKeyValueAt(1.0, qVariantFromValue(newPoints));
41 setKeyValueAt(1.0, qVariantFromValue(newPoints));
41 Q_ASSERT(m_oldPoints.count() == newPoints.count());
42 Q_ASSERT(m_oldPoints.count() == newPoints.count());
42 }
43 }
43 }
44 }
44
45
45 QVariant XYAnimation::interpolated(const QVariant &start, const QVariant & end, qreal progress ) const
46 QVariant XYAnimation::interpolated(const QVariant &start, const QVariant &end, qreal progress ) const
46 {
47 {
47 QVector<QPointF> startVector = qVariantValue<QVector<QPointF> >(start);
48 QVector<QPointF> startVector = qVariantValue<QVector<QPointF> >(start);
48 QVector<QPointF> endVector = qVariantValue<QVector<QPointF> >(end);
49 QVector<QPointF> endVector = qVariantValue<QVector<QPointF> >(end);
49 QVector<QPointF> result;
50 QVector<QPointF> result;
50
51
51 switch(m_type) {
52 switch (m_type) {
52
53
53 case MoveDownAnimation: {
54 case MoveDownAnimation: {
54
55
55 if(startVector.count() != endVector.count()) break;
56 if (startVector.count() != endVector.count())
57 break;
56
58
57 for(int i =0;i< startVector.count();i++) {
59 for(int i = 0; i < startVector.count(); i++) {
58 qreal x = startVector[i].x() + ((endVector[i].x()- startVector[i].x()) * progress);
60 qreal x = startVector[i].x() + ((endVector[i].x() - startVector[i].x()) * progress);
59 qreal y = startVector[i].y() + ((endVector[i].y()- startVector[i].y()) * progress);
61 qreal y = startVector[i].y() + ((endVector[i].y() - startVector[i].y()) * progress);
60 result << QPointF(x,y);
62 result << QPointF(x, y);
61 }
63 }
62
64
63 }
65 }
64 break;
66 break;
65 case LineDrawAnimation:{
67 case LineDrawAnimation: {
66 for(int i =0;i< endVector.count()* qBound(0.0, progress, 1.0);i++) {
68 for(int i = 0; i < endVector.count() * qBound(0.0, progress, 1.0); i++)
67 result << endVector[i];
69 result << endVector[i];
68 }
70 }
69 }
70 break;
71 break;
71 default:
72 default:
72 qWarning()<<"Unknown type of animation";
73 qWarning() << "Unknown type of animation";
73 break;
74 break;
74 }
75 }
75
76
76 return qVariantFromValue(result);
77 return qVariantFromValue(result);
77 }
78 }
78
79
79 void XYAnimation::updateCurrentValue (const QVariant & value )
80 void XYAnimation::updateCurrentValue (const QVariant &value)
80 {
81 {
81 if(state()!=QAbstractAnimation::Stopped){ //workaround
82 if(state()!=QAbstractAnimation::Stopped){ //workaround
82 m_dirty=true;
83 m_dirty = true;
83 QVector<QPointF> vector = qVariantValue<QVector<QPointF> >(value);
84 QVector<QPointF> vector = qVariantValue<QVector<QPointF> >(value);
84 m_item->setLayout(vector);
85 m_item->setLayout(vector);
85 }
86 }
86 }
87 }
87
88
88 QTCOMMERCIALCHART_END_NAMESPACE
89 QTCOMMERCIALCHART_END_NAMESPACE
1 NO CONTENT: modified file
NO CONTENT: modified file
General Comments 0
You need to be logged in to leave comments. Login now