All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Scene.h
Go to the documentation of this file.
1 /* Copyright (C) 2013-2014 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file Scene.h
22 
23  \brief
24 
25  \ingroup layout
26 */
27 
28 #ifndef __TERRALIB_LAYOUT_INTERNAL_SCENE_H
29 #define __TERRALIB_LAYOUT_INTERNAL_SCENE_H
30 
31 // Qt
32 #include <QGraphicsScene>
33 #include <QTransform>
34 
35 // TerraLib
36 #include "AbstractScene.h"
37 #include "AbstractType.h"
38 #include "EnumMode.h"
39 
40 class QGraphicsSceneMouseEvent;
41 class QGraphicsItemGroup;
42 class QGraphicsProxyWidget;
43 class QPrinter;
44 class QPainter;
45 class QLine;
46 
47 namespace te
48 {
49  namespace layout
50  {
51  class ItemObserver;
52  class Properties;
53  class VisualizationArea;
54 
55  class Scene : public QGraphicsScene, public AbstractScene
56  {
57  Q_OBJECT //for slots/signals
58 
59  public:
60  Scene(QWidget* widget = (QWidget*)0);
61  ~Scene();
62 
63  virtual void insertItem(ItemObserver* item);
64 
65  virtual void insertOutside(OutsideObserver* widget);
66 
67  virtual QGraphicsProxyWidget* insertOutsideProxy(OutsideObserver* widget);
68 
69  virtual te::gm::Envelope getSceneBox();
70 
71  virtual void redrawItems();
72 
73  QGraphicsItemGroup* createItemGroup ( const QList<QGraphicsItem *> & items );
74 
75  void destroyItemGroup(QGraphicsItemGroup *group);
76 
77  /*
78  params widthMM width of physical screen in millimeters
79  params heightMM height of physical screen in millimeters
80  */
81  virtual void init(double widthMM, double heightMM);
82 
83  /* World coordinates (mm) */
84  virtual te::gm::Envelope* getWorldBox() const;
85 
86  /* World coordinates (mm) */
87  virtual te::gm::Envelope* getPaperBox() const;
88 
89  virtual QTransform getMatrixViewScene();
90 
91  virtual QGraphicsItem* getMasterParentItem();
92 
93  virtual void printPreview(bool isPdf = false);
94 
95  virtual void savePaperAsImage();
96 
97  virtual void savePaperAsPDF();
98 
99  virtual bool exportPropsAsJSON();
100 
101  virtual std::vector<te::layout::Properties*> importJsonAsProps();
102 
103  virtual void refresh();
104 
105  virtual void buildTemplate(VisualizationArea* vzArea);
106 
107  virtual void createItem(const te::gm::Coord2D& coord );
108 
109  virtual void deleteItems();
110 
111  virtual void setCurrentToolInSelectedMapItems(LayoutMode mode);
112 
113  void setLineIntersectionHzr(QLineF* line);
114 
115  void setLineIntersectionVrt(QLineF* line);
116 
117  protected slots:
118 
119  virtual void printPaper(QPrinter* printer);
120 
121  signals:
122 
123  void addItemFinalized();
124 
125  protected:
126 
127  virtual void mousePressEvent ( QGraphicsSceneMouseEvent* mouseEvent );
128 
131  virtual void calculateMatrixViewScene();
132  virtual void createMasterParentItem();
133 
134  virtual QPrinter* createPrinter();
135  void renderScene( QPainter* newPainter );
136 
137  virtual void changePrintVisibility(bool change);
138 
139  virtual std::vector<te::layout::Properties*> getItemsProperties();
140 
141  virtual void drawForeground(QPainter *painter, const QRectF &rect);
142 
143  protected:
144 
147  QTransform m_matrix;
150  QGraphicsItem* m_masterParent;
153  };
154  }
155 }
156 
157 #endif
te::gm::Envelope * m_boxW
Definition: Scene.h:146
double m_screenHeightMM
Definition: Scene.h:149
virtual void printPreview(bool isPdf=false)
Definition: Scene.cpp:366
virtual void drawForeground(QPainter *painter, const QRectF &rect)
Definition: Scene.cpp:579
virtual void savePaperAsImage()
Definition: Scene.cpp:397
virtual void buildTemplate(VisualizationArea *vzArea)
Definition: Scene.cpp:608
virtual void printPaper(QPrinter *printer)
Definition: Scene.cpp:377
virtual std::vector< te::layout::Properties * > importJsonAsProps()
Definition: Scene.cpp:524
QLineF * m_lineIntersectVrt
Definition: Scene.h:152
virtual te::gm::Envelope * calculateWindow()
Definition: Scene.cpp:267
virtual te::gm::Envelope * getWorldBox() const
Definition: Scene.cpp:334
QTransform m_matrix
Definition: Scene.h:147
virtual void refresh()
Definition: Scene.cpp:573
An utility struct for representing 2D coordinates.
Definition: Coord2D.h:40
virtual te::gm::Envelope * getPaperBox() const
Definition: Scene.cpp:339
virtual void deleteItems()
Definition: Scene.cpp:639
virtual void createItem(const te::gm::Coord2D &coord)
Definition: Scene.cpp:657
LayoutMode
Enum LayoutMode. This is the enumeration of the components types.
Definition: EnumMode.h:38
virtual QGraphicsProxyWidget * insertOutsideProxy(OutsideObserver *widget)
Definition: Scene.cpp:138
virtual void insertOutside(OutsideObserver *widget)
Definition: Scene.cpp:132
virtual void changePrintVisibility(bool change)
Definition: Scene.cpp:459
virtual void setCurrentToolInSelectedMapItems(LayoutMode mode)
Definition: Scene.cpp:677
QGraphicsItemGroup * createItemGroup(const QList< QGraphicsItem * > &items)
Definition: Scene.cpp:178
virtual QGraphicsItem * getMasterParentItem()
Definition: Scene.cpp:361
virtual void calculateMatrixViewScene()
Definition: Scene.cpp:317
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
virtual te::gm::Envelope getSceneBox()
Definition: Scene.cpp:149
te::gm::Envelope * m_boxPaperW
Definition: Scene.h:145
virtual void redrawItems()
Definition: Scene.cpp:160
QLineF * m_lineIntersectHrz
Definition: Scene.h:151
double m_screenWidthMM
Definition: Scene.h:148
virtual te::gm::Envelope * calculateBoxPaper()
Definition: Scene.cpp:216
Scene(QWidget *widget=(QWidget *) 0)
Definition: Scene.cpp:62
virtual void init(double widthMM, double heightMM)
Definition: Scene.cpp:88
void setLineIntersectionHzr(QLineF *line)
Definition: Scene.cpp:704
virtual void createMasterParentItem()
Definition: Scene.cpp:349
void setLineIntersectionVrt(QLineF *line)
Definition: Scene.cpp:709
virtual bool exportPropsAsJSON()
Definition: Scene.cpp:478
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
Definition: Scene.cpp:144
virtual void savePaperAsPDF()
Definition: Scene.cpp:412
QGraphicsItem * m_masterParent
Definition: Scene.h:150
void renderScene(QPainter *newPainter)
Definition: Scene.cpp:434
virtual void insertItem(ItemObserver *item)
Definition: Scene.cpp:101
virtual QTransform getMatrixViewScene()
Definition: Scene.cpp:344
virtual QPrinter * createPrinter()
Definition: Scene.cpp:424
void destroyItemGroup(QGraphicsItemGroup *group)
Definition: Scene.cpp:210
virtual std::vector< te::layout::Properties * > getItemsProperties()
Definition: Scene.cpp:550