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. */
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 
93 
94  protected:
95 
97 
98  signals:
99 
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
Abstract tool concept.
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:52
This class defines an interface for objects that can receive application events and respond to them,...
Definition: AbstractTool.h:64
A widget to control the display of a set of layers.
Definition: MapDisplay.h:72
This class implements a concrete tool to pan a user defined extent.
Definition: PanExtent.h:53
bool m_panStarted
Flag that indicates if pan operation was started.
Definition: PanExtent.h:106
void setCurrentExtent(const te::gm::Envelope &e)
bool mousePressEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse press events for th...
QCursor m_actionCursor
An optional cursor to be used during the pan user action.
Definition: PanExtent.h:108
bool mouseMoveEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse move events for the...
QPen m_pen
The pen used to draw the path.
Definition: PanExtent.h:109
te::gm::Envelope m_currentExtent
Definition: PanExtent.h:112
void extentMoved(te::gm::Envelope e)
bool mouseReleaseEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse release events for ...
QBrush m_brush
The brush used to draw the path.
Definition: PanExtent.h:110
PanExtent(MapDisplay *display, const QCursor &cursor, const QCursor &actionCursor=Qt::BlankCursor, QObject *parent=0)
It constructs a pan tool associated with the given map display and with the specified cursors.
TerraLib.
#define TEQTWIDGETSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:63