QGIS API Documentation  3.23.0-Master (7c4a6de034)
qgsmaptoolextent.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaptoolextent.h - map tool that emits an extent
3  ---------------------
4  begin : July 2017
5  copyright : (C) 2017 by Mathieu Pellerin
6  email : nirvn dot asia at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSMAPTOOLEXTENT_H
17 #define QGSMAPTOOLEXTENT_H
18 
19 #include "qgsmaptool.h"
20 #include "qgspointxy.h"
21 #include "qgsrubberband.h"
22 #include "qgis_gui.h"
23 #include "qobjectuniqueptr.h"
24 
25 class QgsMapCanvas;
26 
27 
33 class GUI_EXPORT QgsMapToolExtent : public QgsMapTool
34 {
35  Q_OBJECT
36 
37  public:
38 
40  QgsMapToolExtent( QgsMapCanvas *canvas );
41 
42  Flags flags() const override { return QgsMapTool::AllowZoomRect; }
43  void canvasMoveEvent( QgsMapMouseEvent *e ) override;
44  void canvasPressEvent( QgsMapMouseEvent *e ) override;
45  void canvasReleaseEvent( QgsMapMouseEvent *e ) override;
46  void activate() override;
47  void deactivate() override;
48 
54  void setRatio( QSize ratio ) { mRatio = ratio; }
55 
60  QSize ratio() const { return mRatio; }
61 
65  QgsRectangle extent() const;
66 
72  void clearRubberBand();
73 
74  signals:
75 
77  void extentChanged( const QgsRectangle &extent );
78 
79  private:
80 
81  void calculateEndPoint( QgsPointXY &point );
82 
83  void drawExtent();
84 
86 
87  QgsPointXY mStartPoint;
88  QgsPointXY mEndPoint;
89 
90  bool mDraw = false;
91 
92  QSize mRatio;
93 
94 };
95 
96 #endif
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:90
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
A map tool that emits an extent from a rectangle drawn onto the map canvas.
Flags flags() const override
Returns the flags for the map tool.
QSize ratio() const
Returns the current fixed aspect ratio to be used when dragging extent onto the canvas.
void extentChanged(const QgsRectangle &extent)
signal emitted on extent change
void setRatio(QSize ratio)
Sets a fixed aspect ratio to be used when dragging extent onto the canvas.
Abstract base class for all map tools.
Definition: qgsmaptool.h:71
virtual void canvasPressEvent(QgsMapMouseEvent *e)
Mouse press event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:178
virtual void canvasMoveEvent(QgsMapMouseEvent *e)
Mouse move event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:168
virtual void canvasReleaseEvent(QgsMapMouseEvent *e)
Mouse release event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:183
@ AllowZoomRect
Allow zooming by rectangle (by holding shift and dragging) while the tool is active.
Definition: qgsmaptool.h:114
virtual void activate()
called when set as currently active map tool
Definition: qgsmaptool.cpp:94
virtual void deactivate()
called when map tool is being deactivated
Definition: qgsmaptool.cpp:110
A class to represent a 2D point.
Definition: qgspointxy.h:59
A rectangle specified with double values.
Definition: qgsrectangle.h:42