PanExtent.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 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 terralib/qt/widgets/tools/PanExtent.h
22 
23  \brief This class implements a concrete tool to pan a user defined extent.
24 */
25 
26 #ifndef __TERRALIB_QT_WIDGETS_INTERNAL_PANEXTENT_H
27 #define __TERRALIB_QT_WIDGETS_INTERNAL_PANEXTENT_H
28 
29 // TerraLib
30 #include "../../../geometry/Envelope.h"
31 #include "../Config.h"
32 #include "AbstractTool.h"
33 
34 // Qt
35 #include <QPainterPath>
36 #include <QPen>
37 
38 namespace te
39 {
40  namespace qt
41  {
42  namespace widgets
43  {
44 // Forward declarations
45  class MapDisplay;
46 
47  /*!
48  \class PanExtent
49 
50  \brief This class implements a concrete tool to pan a user defined extent.
51  */
53  {
54  Q_OBJECT
55 
56  public:
57 
58  /** @name Initializer Methods
59  * Methods related to instantiation and destruction.
60  */
61  //@{
62 
63  /*!
64  \brief It constructs a pan tool associated with the given map display and with the specified cursors.
65 
66  \param display The map display associated with the tool.
67  \param cursor The default tool cursor.
68  \param actionCursor An optional cursor to be used during the pan user action. If Qt::BlankCursor, it will be NOT modified.
69  \param parent The tool's parent.
70 
71  \note The tool will NOT take the ownership of the given pointers.
72  \note If the given cursor is different of Qt::BlankCursor, it will be setted on map display.
73  */
74  PanExtent(MapDisplay* display, const QCursor& cursor, const QCursor& actionCursor = Qt::BlankCursor, QObject* parent = 0);
75 
76  /*! \brief Destructor. */
77  ~PanExtent();
78 
79  //@}
80 
81  /** @name AbstractTool Methods
82  * Methods related with tool behavior.
83  */
84  //@{
85 
86  bool mousePressEvent(QMouseEvent* e);
87 
88  bool mouseMoveEvent(QMouseEvent* e);
89 
90  bool mouseReleaseEvent(QMouseEvent* e);
91 
92  void setCurrentExtent(const te::gm::Envelope& e);
93 
94  protected:
95 
96  void drawCurrentExtent();
97 
98  signals:
99 
100  void extentMoved(te::gm::Envelope e);
101 
102  //@}
103 
104  protected:
105 
106  bool m_panStarted; //!< Flag that indicates if pan operation was started.
107 
108  QCursor m_actionCursor; //!< An optional cursor to be used during the pan user action.
109  QPen m_pen; //!< The pen used to draw the path.
110  QBrush m_brush; //!< The brush used to draw the path.
111 
113  };
114 
115  } // end namespace widgets
116  } // end namespace qt
117 } // end namespace te
118 
119 #endif // __TERRALIB_QT_WIDGETS_INTERNAL_PANEXTENT_H
QCursor m_actionCursor
An optional cursor to be used during the pan user action.
Definition: PanExtent.h:108
Abstract tool concept.
bool m_panStarted
Flag that indicates if pan operation was started.
Definition: PanExtent.h:106
A widget to control the display of a set of layers.
Definition: MapDisplay.h:66
QPen m_pen
The pen used to draw the path.
Definition: PanExtent.h:109
This class defines an interface for objects that can receive application events and respond to them...
Definition: AbstractTool.h:62
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
URI C++ Library.
QBrush m_brush
The brush used to draw the path.
Definition: PanExtent.h:110
This class implements a concrete tool to pan a user defined extent.
Definition: PanExtent.h:52
#define TEQTWIDGETSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:63
te::gm::Envelope m_currentExtent
Definition: PanExtent.h:112