AnimationItem.cpp
Go to the documentation of this file.
1 // TerraLib
2 #include "AnimationItem.h"
3 #include "AnimationScene.h"
4 #include "Animation.h"
5 #include "../canvas/MapDisplay.h"
6 #include "../canvas/Canvas.h"
7 
8 // Qt
9 #include <QtCore/QPropertyAnimation>
10 #include <QtGui/QPainter>
11 #include <QtCore/QVector>
12 
14  : QObject(),
15  QGraphicsPixmapItem(),
16  m_title(title),
17  m_display(display),
18  m_SRID(-1),
19  m_pos(QPoint(0,0)),
20  m_automaticPan(false),
21  m_panFactor(.01),
22  m_curTimeDuration(0),
23  m_animation(0),
24  m_opacity(255)
25 {
26 }
27 
29 {
30  delete m_route;
31 }
32 
34 {
35  QPointF p = m_pos;
36  if (m_display->getSRID() != TE_UNKNOWN_SRS && m_display->getSRID() != m_SRID)
37  {
38  te::gm::Point point(p.x(), p.y(), m_SRID);
39  point.transform(m_display->getSRID());
40  p.setX(point.getX());
41  p.setY(point.getY());
42  }
43  return m_matrix.map(p).toPoint();
44 }
45 
46 void te::qt::widgets::AnimationItem::setDuration(const unsigned int& duration)
47 {
48  m_duration = duration;
49  m_animation->setDuration(m_duration);
50  if(m_direction == QAbstractAnimation::Forward)
51  m_curTimeDuration = 0;
52  else
53  m_curTimeDuration = m_duration;
54 }
55 
56 void te::qt::widgets::AnimationItem::setDirection(const QAbstractAnimation::Direction& direction)
57 {
58  m_direction = direction;
59  setDuration(m_duration);
60 }
61 
63 {
64  return m_duration;
65 }
66 
67 QAbstractAnimation::Direction te::qt::widgets::AnimationItem::getDirection()
68 {
69  return m_direction;
70 }
71 
73 {
74  te::dt::TimeInstant iTime = m_animation->m_temporalAnimationExtent.getInitialTimeInstant();
75  te::dt::TimeInstant fTime = m_animation->m_temporalAnimationExtent.getFinalTimeInstant();
76 
77  size_t ini = 0;
78  size_t size = m_time.count();
79  size_t fim = size;
80  for(int i = 0; i < (int)size; ++i)
81  {
82  if(m_time[i] == iTime || m_time[i] > iTime)
83  {
84  ini = (size_t)i;
85  break;
86  }
87  }
88  for(int i = (int)size-1; i >= 0; --i)
89  {
90  if (m_time[i] == fTime || m_time[i] < fTime)
91  {
92  fim = (size_t)i;
93  break;
94  }
95  }
96  size = fim - ini;
97  size_t tfim = ini + size;
98 
99  m_animationRoute.clear();
100  m_animationTime.clear();
101 
102  if(m_display->getSRID() != TE_UNKNOWN_SRS && m_display->getSRID() != m_route->getSRID())
103  {
104  for(size_t i = ini; i < tfim; ++i)
105  {
106  std::auto_ptr<te::gm::Point> p(m_route->getPointN(i));
107  m_animationRoute.push_back(QPointF(p->getX(), p->getY()));
108  m_animationTime.push_back(m_time[(int)i]);
109  }
110  }
111  else
112  {
113  for(size_t i = ini; i < tfim; ++i)
114  {
115  std::auto_ptr<te::gm::Point> p(m_route->getPointN(i));
116  m_animationRoute.push_back(QPointF(p->getX(), p->getY()));
117  m_animationTime.push_back(m_time[(int)i]);
118  }
119  }
120 }
121 
void transform(int srid)
It converts the coordinate values of the point to the new spatial reference system.
AnimationItem(const QString &title, te::qt::widgets::MapDisplay *display)
Constructor It constructs a Animation Item.
A widget to control the display of a set of layers.
Definition: MapDisplay.h:66
A class to represent time instant.
Definition: TimeInstant.h:55
This file defines a class for a Animation Scene.
A point with x and y coordinate values.
Definition: Point.h:50
This file defines a class for a Animation Item.
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
Definition: Config.h:41
virtual void adjustDataToAnimationTemporalExtent()
Adjust data for a given time animation period.
virtual ~AnimationItem()
Destructor It destructs a Animation Item.
void setDirection(const QAbstractAnimation::Direction &direction)
Sets the Animation Item direction.
QPoint getPosInDeviceCoordinate()
It returns the Animation Item position in device coordinate.
This file defines a class for a Trajectory Animation.
QAbstractAnimation::Direction getDirection()
Gets the Animation Item direction.
void setDuration(const unsigned int &duration)
Sets the Animation Item duration.
unsigned int getDuration()
Gets the Animation Item duration.