All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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  //view->resize(m_display->width()*2, m_display->height()*2);
54  }
55  }
56  else
57  {
58  m_mutex.lock();
59  m_trajectoryPixmap->fill(Qt::transparent);
60  m_mutex.unlock();
61  }
62 }
63 
65 {
66  QGraphicsScene::addItem(item);
67  if(item->pixmap().isNull())
68  m_numberOfCoverages++;
69  else
70  m_numberOfTrajectories++;
71 }
72 
74 {
75  QGraphicsScene::removeItem(item);
76  if(item->pixmap().isNull())
77  m_numberOfCoverages--;
78  else
79  m_numberOfTrajectories--;
80 }
81 
83 {
84  QGraphicsScene::clear();
85  m_numberOfCoverages = 0;
86  m_numberOfTrajectories = 0;
87 }
88 
90 {
91  QList<QGraphicsItem*> list = items();
92  QList<QGraphicsItem*>::iterator it;
93  for(it = list.begin(); it != list.end(); ++it)
94  {
95  AnimationItem* ai = (AnimationItem*)(*it);
96  ai->setMatrix();
97  }
98 }
99 
101 {
102  QList<QGraphicsItem*> list = items();
103  QList<QGraphicsItem*>::iterator it;
104  for(it = list.begin(); it != list.end(); ++it)
105  {
106  AnimationItem* ai = (AnimationItem*)(*it);
107  ai->setDuration(duration);
108  }
109 }
110 
112 {
113  QList<QGraphicsItem*> list = items();
114  QList<QGraphicsItem*>::iterator it;
115  for(it = list.begin(); it != list.end(); ++it)
116  {
117  AnimationItem* ai = (AnimationItem*)(*it);
118  if(ai->m_title == title)
119  ai->m_automaticPan = !ai->m_automaticPan; // TOGGLE
120  else
121  ai->m_automaticPan = false;
122  }
123 }
124 
126 {
127  QList<QGraphicsItem*> list = items();
128  QList<QGraphicsItem*>::iterator it;
129  for(it = list.begin(); it != list.end(); ++it)
130  {
131  AnimationItem* ai = (AnimationItem*)(*it);
132  ai->m_curTimeDuration = curTime;
133  ai->draw();
134  }
135 }
void setDuration(const int &duration)
It sets the trajectory duration.
void addItem(AnimationItem *item)
Add item.
virtual ~AnimationScene()
Destructor It destructs a Trajectory Scene.
void removeItem(AnimationItem *item)
Remove item.
bool m_automaticPan
True if automatic pan over this item.
A widget to control the display of a set of layers.
Definition: MapDisplay.h:66
void setMatrix()
It sets the internal matrix.
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.
QString m_title
The icon item title.
void setAutomaticPan(const QString &title)
It configures automatic pan over a trajectory.
This file defines a class for a Trajectory Animation.
This file defines a class for a Trajectory Item.
This class is a dialog for the Pixmap Item.
Definition: AnimationItem.h:57
void setMatrix()
It sets the transformation matrix.
void setDuration(const unsigned int &duration)
Sets the Animation Item duration.
AnimationScene(te::qt::widgets::MapDisplay *display, QObject *parent=0)
Constructor It constructs a Trajectory Scene.
virtual void draw()=0
If draw item.