5 #include "../canvas/MapDisplay.h"
6 #include "../canvas/Canvas.h"
9 #include <QtCore/QPropertyAnimation>
10 #include <QtGui/QPainter>
11 #include <QtCore/QVector>
12 #include <QtCore/QFile>
13 #include <QtCore/QMutex>
21 m_forwardColor(Qt::blue),
22 m_backwardColor(Qt::magenta),
28 if(file.isEmpty() ==
false)
35 QPainter painter(&pp);
36 painter.drawPixmap(pp.rect(), p, p.rect());
45 pix.fill(Qt::transparent);
46 QPainter painter(&pix);
51 painter.drawEllipse(QRect(1, 1, 18, 18));
72 if(m_animationRoute.empty())
83 if(rm.contains(m_pos) ==
false)
87 QPointF c = r.center();
88 QPointF dif = m_pos - c;
89 double dw = fabs(dif.x());
90 double dh = fabs(dif.y());
94 mw = (dw - w / 2) + w * m_panFactor;
96 mh = (dh - h / 2) + h * m_panFactor;
99 if(dif.x() >= 0 && dif.y() >= 0)
100 cc = c + QPointF(mw, mh);
101 else if(dif.x() >= 0 && dif.y() < 0)
102 cc = c + QPointF(mw, -mh);
103 else if(dif.x() < 0 && dif.y() >= 0)
104 cc = c + QPointF(-mw, mh);
105 else if(dif.x() < 0 && dif.y() < 0)
106 cc = c + QPointF(-mw, -mh);
109 if(r.contains(m_pos) ==
false)
115 e.
m_ury = r.bottom();
116 m_display->setExtent(e);
121 unsigned int curTime = m_animation->currentTime();
122 if(m_curTimeDuration == curTime)
128 if(m_animation->direction() == QAbstractAnimation::Forward)
130 if(curTime < m_curTimeDuration)
135 if(curTime > m_curTimeDuration)
147 this->erase(curTime);
150 drawForward(curTime);
158 if(m_animationRoute.empty())
163 int indold = m_animation->getAnimationDataIndex((
double)m_curTimeDuration / (
double)m_duration);
164 int ind = m_animation->getAnimationDataIndex((
double)curTime / (
double)m_duration);
165 m_curTimeDuration = curTime;
167 QVector<QPointF> vec;
171 vec.push_back(m_posOld);
172 vec.push_back(m_pos);
174 else if(m_animation->direction() == QAbstractAnimation::Forward)
177 vec.push_back(m_animationRoute[indold++]);
178 if(vec.isEmpty() ==
false && vec.last() != m_pos)
179 vec.push_back(m_pos);
184 vec.push_back(m_animationRoute[indold--]);
185 if(vec.isEmpty() ==
false && vec.last() != m_pos)
186 vec.push_back(m_pos);
192 QPolygon pol = m_matrix.map(polf).toPolygon();
194 QPen pen(Qt::NoBrush, 2);
196 if(m_animation->direction() == QAbstractAnimation::Forward)
197 trailColor = m_forwardColor;
199 trailColor = m_backwardColor;
200 pen.setColor(trailColor);
205 QPainter painter(scenePixmap);
207 painter.setBrush(Qt::NoBrush);
208 painter.drawPolyline(pol);
216 if(m_animationRoute.empty())
221 int indold = m_animation->getAnimationDataIndex((
double)m_curTimeDuration / (
double)m_duration);
222 int ind = m_animation->getAnimationDataIndex((
double)curTime / (
double)m_duration);
223 m_curTimeDuration = curTime;
225 QVector<QPointF> vec;
228 vec.push_back(m_posOld);
229 vec.push_back(m_pos);
231 else if(m_animation->direction() == QAbstractAnimation::Backward)
233 vec.push_back(m_posOld);
235 vec.push_back(m_animationRoute[indold++]);
236 vec.push_back(m_pos);
240 vec.push_back(m_posOld);
242 vec.push_back(m_animationRoute[indold--]);
243 vec.push_back(m_pos);
249 QPolygon pol = m_matrix.map(polf).toPolygon();
251 QPen pen(Qt::NoBrush, 2);
252 QColor trailColor(Qt::white);
253 pen.setColor(trailColor);
258 QPainter painter(scenePixmap);
260 painter.setCompositionMode(QPainter::CompositionMode_DestinationOut);
261 painter.setBrush(Qt::NoBrush);
262 painter.drawPolyline(pol);
270 if(m_animationRoute.empty())
275 int count = m_animationRoute.size();
276 int ind = m_animation->getAnimationDataIndex((
double)m_curTimeDuration / (
double)m_duration);
278 QVector<QPointF> vec;
279 if(m_animation->direction() == QAbstractAnimation::Forward)
285 vec.push_back(m_animationRoute[i++]);
286 if(vec.isEmpty() ==
false && vec.last() != m_pos)
287 vec.push_back(m_pos);
294 vec.push_back(m_animationRoute[i--]);
295 if(m_curTimeDuration != m_duration)
297 if(vec.isEmpty() ==
false && vec.last() != m_pos)
298 vec.push_back(m_pos);
305 QPolygon pol = m_matrix.map(polf).toPolygon();
307 QPen pen(Qt::NoBrush, 2);
309 if(m_animation->direction() == QAbstractAnimation::Forward)
310 trailColor = m_forwardColor;
312 trailColor = m_backwardColor;
314 pen.setColor(trailColor);
319 QPainter painter(scenePixmap);
321 painter.setBrush(Qt::NoBrush);
322 painter.drawPolyline(pol);
double m_urx
Upper right corner x-coordinate.
const double & getLowerLeftY() const
It returns a constant refernce to the y coordinate of the lower left corner.
double getWidth() const
It returns the envelope width.
double m_llx
Lower left corner x-coordinate.
This file defines a class for a Animation Scene.
An Envelope defines a 2D rectangular region.
double m_lly
Lower left corner y-coordinate.
This file defines a class for a Trajectory Animation.
double m_ury
Upper right corner y-coordinate.
This file defines a class for a Trajectory Item.
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.
double getHeight() const
It returns the envelope height.