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>
17 m_forwardColor(Qt::blue),
18 m_backwardColor(Qt::magenta),
23 setPixmap(QPixmap(file));
27 pix.fill(Qt::transparent);
28 QPainter painter(&pix);
33 painter.drawEllipse(QRect(1, 1, 18, 18));
54 if(m_animationRoute.empty())
61 if(r.contains(m_pos) ==
false)
68 m_display->setExtent(e);
73 unsigned int curTime = m_animation->currentTime();
74 if(m_curTimeDuration == curTime)
78 if(m_animation->direction() == QAbstractAnimation::Forward)
80 if(curTime < m_curTimeDuration)
85 if(curTime > m_curTimeDuration)
93 m_curTimeDuration = curTime;
100 drawForward(curTime);
107 if(m_animationRoute.empty())
114 QPainter painter(scenePixmap);
115 QPen pen(Qt::NoBrush, 2);
117 if(m_animation->direction() == QAbstractAnimation::Forward)
118 trailColor = m_forwardColor;
120 trailColor = m_backwardColor;
122 pen.setColor(trailColor);
124 painter.setBrush(Qt::NoBrush);
126 int indold = m_animation->getAnimationDataIndex((
double)m_curTimeDuration / (
double)m_duration);
127 int ind = m_animation->getAnimationDataIndex((
double)curTime / (
double)m_duration);
128 m_curTimeDuration = curTime;
130 QVector<QPointF> vec;
134 vec.push_back(m_posOld);
135 vec.push_back(m_pos);
137 QPolygon pol = m_matrix.map(polf).toPolygon();
138 painter.drawPolyline(pol);
140 else if(m_animation->direction() == QAbstractAnimation::Forward)
143 vec.push_back(m_animationRoute[indold++]);
144 if(vec.isEmpty() ==
false && vec.last() != m_pos)
145 vec.push_back(m_pos);
147 QPolygon pol = m_matrix.map(polf).toPolygon();
148 painter.drawPolyline(pol);
153 vec.push_back(m_animationRoute[indold--]);
154 if(vec.isEmpty() ==
false && vec.last() != m_pos)
155 vec.push_back(m_pos);
157 QPolygon pol = m_matrix.map(polf).toPolygon();
158 painter.drawPolyline(pol);
166 if(m_animationRoute.empty())
173 QPainter painter(scenePixmap);
174 painter.setCompositionMode(QPainter::CompositionMode_DestinationOut);
175 QPen pen(Qt::NoBrush, 2);
176 QColor trailColor(Qt::white);
177 pen.setColor(trailColor);
179 painter.setBrush(Qt::NoBrush);
181 int indold = m_animation->getAnimationDataIndex((
double)m_curTimeDuration / (
double)m_duration);
182 int ind = m_animation->getAnimationDataIndex((
double)curTime / (
double)m_duration);
183 m_curTimeDuration = curTime;
185 QVector<QPointF> vec;
188 vec.push_back(m_posOld);
189 vec.push_back(m_pos);
191 QPolygon pol = m_matrix.map(polf).toPolygon();
192 painter.drawPolyline(pol);
194 else if(m_animation->direction() == QAbstractAnimation::Backward)
196 vec.push_back(m_posOld);
198 vec.push_back(m_animationRoute[indold++]);
199 vec.push_back(m_pos);
201 QPolygon pol = m_matrix.map(polf).toPolygon();
202 painter.drawPolyline(pol);
206 vec.push_back(m_posOld);
208 vec.push_back(m_animationRoute[indold--]);
209 vec.push_back(m_pos);
211 QPolygon pol = m_matrix.map(polf).toPolygon();
212 painter.drawPolyline(pol);
219 if(m_animationRoute.empty())
226 QPainter painter(scenePixmap);
227 QPen pen(Qt::NoBrush, 2);
229 if(m_animation->direction() == QAbstractAnimation::Forward)
230 trailColor = m_forwardColor;
232 trailColor = m_backwardColor;
234 pen.setColor(trailColor);
236 painter.setBrush(Qt::NoBrush);
238 int count = m_animationRoute.size();
239 int ind = m_animation->getAnimationDataIndex((
double)m_curTimeDuration / (
double)m_duration);
241 QVector<QPointF> vec;
242 if(m_animation->direction() == QAbstractAnimation::Forward)
248 vec.push_back(m_animationRoute[i++]);
249 if(vec.isEmpty() ==
false && vec.last() != m_pos)
250 vec.push_back(m_pos);
252 QPolygon pol = m_matrix.map(polf).toPolygon();
253 painter.drawPolyline(pol);
260 vec.push_back(m_animationRoute[i--]);
261 if(m_curTimeDuration != m_duration)
263 if(vec.isEmpty() ==
false && vec.last() != m_pos)
264 vec.push_back(m_pos);
267 QPolygon pol = m_matrix.map(polf).toPolygon();
268 painter.drawPolyline(pol);
const double & getUpperRightX() const
It returns a constant refernce to the x coordinate of the upper right corner.
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.
const double & getUpperRightY() const
It returns a constant refernce to the x coordinate of the upper right corner.
double m_llx
Lower left corner x-coordinate.
An Envelope defines a 2D rectangular region.
double m_lly
Lower left corner y-coordinate.
double m_ury
Upper right corner y-coordinate.
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.