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(nullptr),
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 == nullptr)
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())
68  else
70 }
71 
73 {
74  QGraphicsScene::removeItem(item);
75  if(item->pixmap().isNull())
77  else
79 }
80 
82 {
83  QGraphicsScene::clear();
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::draw(const int& curTime)
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  ai->m_curTimeDuration = curTime;
107  ai->draw();
108  }
109 }
QPixmap * m_trajectoryPixmap
QPixmap where all the trajectory item are drawn.
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.
int m_numberOfCoverages
Number of coverage items.
te::qt::widgets::MapDisplay * m_display
It configures automatic pan over a trajectory.
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.
QMutex m_mutex
To not use m_trajectoryPixmap simultaneously.
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:64
int m_numberOfTrajectories
Number of trajectory items.
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.