AnimationScene.cpp
Go to the documentation of this file.
1 // TerraLib
2 #include "AnimationScene.h"
3 #include "TrajectoryItem.h"
4 #include "Animation.h"
5 #include "AnimationItem.h"
6 #include "../canvas/MapDisplay.h"
7 
8 // Qt
9 #include <QThread>
10 #include <QGraphicsView>
11 
13  : QGraphicsScene(parent),
14  m_display(display),
15  m_trajectoryPixmap(0),
16  m_numberOfTrajectories(0),
17  m_numberOfCoverages(0)
18 {
20 }
21 
23 {
24  delete m_trajectoryPixmap;
25 }
26 
28 {
29  bool createNew = false;
30 
31  if(m_trajectoryPixmap == 0)
32  createNew = true;
33 
34  if(createNew == false && m_trajectoryPixmap)
35  {
36  if(m_trajectoryPixmap->rect().width() != m_display->width() || m_trajectoryPixmap->rect().height() != m_display->height())
37  createNew = true;
38  }
39 
40  if(createNew)
41  {
42  m_mutex.lock();
43  delete m_trajectoryPixmap;
44  m_trajectoryPixmap = new QPixmap(m_display->width(), m_display->height());
45  m_trajectoryPixmap->fill(Qt::transparent);
46  m_mutex.unlock();
47 
48  setSceneRect(0, 0, m_display->width(), m_display->height());
49  if(views().isEmpty() == false)
50  {
51  QGraphicsView* view = *(views().begin());
52  view->resize(m_display->width(), m_display->height());
53  }
54  }
55  else
56  {
57  m_mutex.lock();
58  m_trajectoryPixmap->fill(Qt::transparent);
59  m_mutex.unlock();
60  }
61 }
62 
64 {
65  QGraphicsScene::addItem(item);
66  if(item->pixmap().isNull())
67  m_numberOfCoverages++;
68  else
69  m_numberOfTrajectories++;
70 }
71 
73 {
74  QGraphicsScene::removeItem(item);
75  if(item->pixmap().isNull())
76  m_numberOfCoverages--;
77  else
78  m_numberOfTrajectories--;
79 }
80 
82 {
83  QGraphicsScene::clear();
84  m_numberOfCoverages = 0;
85  m_numberOfTrajectories = 0;
86 }
87 
89 {
90  QList<QGraphicsItem*> list = items();
91  QList<QGraphicsItem*>::iterator it;
92  for(it = list.begin(); it != list.end(); ++it)
93  {
94  AnimationItem* ai = dynamic_cast<AnimationItem*>(*it);
95  ai->setDuration(duration);
96  }
97 }
98 //
99 //void te::qt::widgets::AnimationScene::setAutomaticPan(const QString& title)
100 //{
101 // QList<QGraphicsItem*> list = items();
102 // QList<QGraphicsItem*>::iterator it;
103 // for(it = list.begin(); it != list.end(); ++it)
104 // {
105 // AnimationItem* ai = dynamic_cast<AnimationItem*>(*it);
106 // if(ai->m_title == title)
107 // ai->m_automaticPan = !ai->m_automaticPan; // TOGGLE
108 // else
109 // ai->m_automaticPan = false;
110 // }
111 //}
112 
114 {
115  QList<QGraphicsItem*> list = items();
116  QList<QGraphicsItem*>::iterator it;
117  for(it = list.begin(); it != list.end(); ++it)
118  {
119  AnimationItem* ai = dynamic_cast<AnimationItem*>(*it);
120  ai->m_curTimeDuration = curTime;
121  ai->draw();
122  }
123 }
void setDuration(const int &duration)
It sets the trajectory duration.
void addItem(AnimationItem *item)
Add item.
virtual ~AnimationScene()
Destructor It destructs a animation Scene.
void removeItem(AnimationItem *item)
Remove item.
void clear()
Clear scene. Remove all items.
A widget to control the display of a set of layers.
Definition: MapDisplay.h:66
void createNewPixmap()
Create a new clear pixmap.
void draw(const int &curTime)
It draws the animation item.
This file defines a class for a Animation Scene.
This file defines a class for a Animation Item.
unsigned int m_curTimeDuration
Current time (ms). Its value is between 0 and the total duration.
This file defines a class for a Trajectory Animation.
This file defines a class for a Trajectory Item.
An abstract class for Animation Item.
Definition: AnimationItem.h:62
void setDuration(const unsigned int &duration)
Sets the Animation Item duration.
AnimationScene(te::qt::widgets::MapDisplay *display, QObject *parent=0)
Constructor It constructs a animation Scene.
virtual void draw()=0
If draw item.