All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ObjectItem.h
Go to the documentation of this file.
1 /* Copyright (C) 2001-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 ObjectItem.h
22 
23  \brief
24 
25  \ingroup layout
26 */
27 
28 #ifndef __TERRALIB_LAYOUT_INTERNAL_OBJECT_ITEM_H
29 #define __TERRALIB_LAYOUT_INTERNAL_OBJECT_ITEM_H
30 
31 // Qt
32 #include <QGraphicsObject>
33 #include <QPixmap>
34 #include <QVariant>
35 #include <QPainter>
36 
37 // TerraLib
38 #include "ItemObserver.h"
39 #include "../../../../geometry/Envelope.h"
40 #include "AbstractType.h"
41 
42 class QGraphicsSceneMouseEvent;
43 class QGraphicsSceneHoverEvent;
44 class QStyleOptionGraphicsItem;
45 class QWidget;
46 
47 namespace te
48 {
49  namespace layout
50  {
51  class ObjectItem : public QGraphicsObject, public ItemObserver
52  {
53  Q_OBJECT //for slots/signals
54 
55  public:
56 
57  ObjectItem(ItemController* controller = 0, Observable* o = 0);
58  virtual ~ObjectItem();
59 
60  virtual void updateObserver(ContextItem context) = 0;
61  virtual te::gm::Coord2D getPosition();
62 
63  virtual void setPixmap( const QPixmap& pixmap );
64  virtual QPixmap getPixmap();
65 
66  //Mandatory implementation methods
67  virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
68  virtual QRectF boundingRect() const;
69  virtual void setRect(QRectF rect);
70 
71  //Override
72  /*World coordinates(mm)*/
73  virtual bool contains(const QPointF &point) const;
74 
75  virtual void setPos(const QPointF &pos);
76 
77  void setZValue ( qreal z );
78 
79  protected:
80 
81  virtual void drawBackground( QPainter* painter );
82  virtual void drawSelection(QPainter* painter);
83 
84  //Resize
85  virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event );
86  virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event );
87  virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
88  virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
89  virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
90  virtual void hoverMoveEvent ( QGraphicsSceneHoverEvent * event );
91 
92  virtual bool checkTouchesCorner(const double& x, const double& y);
93  virtual QPixmap calculateNewPixmap(const double& x, const double& y);
94 
95  virtual te::gm::Envelope createNewBoxInCoordScene(const double& x, const double& y);
96 
97  virtual int getZValueItem();
98 
99  protected:
100 
101  QPixmap m_pixmap;
102  QRectF m_rect;//In local coordinate
103 
104  //Resize
105  QPixmap m_clonePixmap;
107  QPointF m_initialCoord;
108  QPointF m_finalCoord;
112  };
113  }
114 }
115 
116 #endif //QRECT_LAYOUTITEM_H
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Definition: ObjectItem.cpp:108
LayoutSides m_enumSides
Definition: ObjectItem.h:111
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Definition: ObjectItem.cpp:216
virtual void setPixmap(const QPixmap &pixmap)
Definition: ObjectItem.cpp:86
virtual QPixmap getPixmap()
Definition: ObjectItem.cpp:423
virtual void drawSelection(QPainter *painter)
Definition: ObjectItem.cpp:145
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Definition: ObjectItem.cpp:248
virtual void drawBackground(QPainter *painter)
Definition: ObjectItem.cpp:134
An utility struct for representing 2D coordinates.
Definition: Coord2D.h:40
virtual bool checkTouchesCorner(const double &x, const double &y)
Definition: ObjectItem.cpp:255
virtual void setRect(QRectF rect)
Definition: ObjectItem.cpp:172
LayoutSides
Enum TdkAbstractComponentType. This is the enumeration of the components types.
Definition: AbstractType.h:107
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
void setZValue(qreal z)
Definition: ObjectItem.cpp:428
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
Definition: ObjectItem.cpp:181
virtual te::gm::Envelope createNewBoxInCoordScene(const double &x, const double &y)
Definition: ObjectItem.cpp:311
virtual int getZValueItem()
Definition: ObjectItem.cpp:434
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Definition: ObjectItem.cpp:192
virtual QPixmap calculateNewPixmap(const double &x, const double &y)
Definition: ObjectItem.cpp:300
virtual void setPos(const QPointF &pos)
Definition: ObjectItem.cpp:79
virtual void updateObserver(ContextItem context)=0
ObjectItem(ItemController *controller=0, Observable *o=0)
Definition: ObjectItem.cpp:46
virtual te::gm::Coord2D getPosition()
Definition: ObjectItem.cpp:66
virtual bool contains(const QPointF &point) const
Definition: ObjectItem.cpp:418
virtual QRectF boundingRect() const
Definition: ObjectItem.cpp:167
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event)
Definition: ObjectItem.cpp:236
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Definition: ObjectItem.cpp:241