QGIS API Documentation 3.41.0-Master (3440c17df1d)
|
QgsMapToolCapture is a base class capable of capturing point, lines and polygons. More...
#include <qgsmaptoolcapture.h>
Public Types | |
typedef QFlags< Capability > | Capabilities |
enum | Capability { NoCapabilities = 1 << 0 , SupportsCurves = 1 << 1 , ValidateGeometries = 1 << 2 } |
Specific capabilities of the tool. More... | |
enum | CaptureMode { CaptureNone , CapturePoint , CaptureLine , CapturePolygon } |
Different capture modes. More... | |
Public Types inherited from QgsMapTool | |
enum | Flag { Transient = 1 << 1 , EditTool = 1 << 2 , AllowZoomRect = 1 << 3 , ShowContextMenu = 1 << 4 } |
Enumeration of flags that adjust the way the map tool operates. More... | |
typedef QFlags< Flag > | Flags |
Public Slots | |
Q_DECL_DEPRECATED void | setCircularDigitizingEnabled (bool enable) |
Enable the digitizing with curve. | |
Q_DECL_DEPRECATED void | setStreamDigitizingEnabled (bool enable) |
Toggles the stream digitizing mode. | |
Public Member Functions | |
QgsMapToolCapture (QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget, CaptureMode mode) | |
constructor | |
~QgsMapToolCapture () override | |
void | activate () override |
Registers this maptool with the cad dock widget. | |
int | addCurve (QgsCurve *c) |
Adds a whole curve (e.g. circularstring) to the captured geometry. Curve must be in map CRS. | |
void | cadCanvasMoveEvent (QgsMapMouseEvent *e) override |
Override this method when subclassing this class. | |
void | cadCanvasReleaseEvent (QgsMapMouseEvent *e) override |
Override this method when subclassing this class. | |
virtual QgsMapToolCapture::Capabilities | capabilities () const |
Returns flags containing the supported capabilities. | |
const QgsCompoundCurve * | captureCurve () const |
Gets the capture curve. | |
void | clean () override |
convenient method to clean members | |
void | clearCurve () |
Clear capture curve. | |
Qgis::CaptureTechnique | currentCaptureTechnique () const |
Returns the active capture technique. | |
void | deactivate () override |
Unregisters this maptool from the cad dock widget. | |
void | deleteTempRubberBand () |
Clean a temporary rubberband. | |
void | keyPressEvent (QKeyEvent *e) override |
Intercept key events like Esc or Del to delete the last point. | |
QgsPoint | mapPoint (const QgsMapMouseEvent &e) const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer). | |
QgsPoint | mapPoint (const QgsPointXY &point) const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer). | |
CaptureMode | mode () const |
The capture mode. | |
void | setCurrentCaptureTechnique (Qgis::CaptureTechnique technique) |
Sets the current capture if it is supported by the map tool. | |
void | setCurrentShapeMapTool (const QgsMapToolShapeMetadata *shapeMapToolMetadata) |
Sets the current shape tool. | |
QList< QgsPointLocator::Match > | snappingMatches () const |
Returns a list of matches for each point on the captureCurve. | |
virtual bool | supportsTechnique (Qgis::CaptureTechnique technique) const |
Returns true if the tool supports the specified capture technique. | |
QgsRubberBand * | takeRubberBand () |
Returns the rubberBand currently owned by this map tool and transfers ownership to the caller. | |
Public Member Functions inherited from QgsMapToolAdvancedDigitizing | |
QgsMapToolAdvancedDigitizing (QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget) | |
Creates an advanced digitizing maptool. | |
~QgsMapToolAdvancedDigitizing () override | |
virtual void | cadCanvasPressEvent (QgsMapMouseEvent *e) |
Override this method when subclassing this class. | |
QgsAdvancedDigitizingDockWidget * | cadDockWidget () const |
void | canvasMoveEvent (QgsMapMouseEvent *e) override |
Catch the mouse move event, filters it, transforms it to map coordinates and send it to virtual method. | |
void | canvasPressEvent (QgsMapMouseEvent *e) override |
Catch the mouse press event, filters it, transforms it to map coordinates and send it to virtual method. | |
void | canvasReleaseEvent (QgsMapMouseEvent *e) override |
Catch the mouse release event, filters it, transforms it to map coordinates and send it to virtual method. | |
bool | isAdvancedDigitizingAllowed () const |
Returns whether functionality of advanced digitizing dock widget is currently allowed. | |
bool | isAutoSnapEnabled () const |
Returns whether mouse events (press/move/release) should automatically try to snap mouse position (according to the snapping configuration of map canvas) before passing the mouse coordinates to the tool. | |
virtual QgsMapLayer * | layer () const |
Returns the layer associated with the map tool. | |
void | setSnapToLayerGridEnabled (bool snapToLayerGridEnabled) |
Enables or disables snap to grid of mouse events. | |
bool | snapToLayerGridEnabled () const |
Enables or disables snap to grid of mouse events. | |
bool | useSnappingIndicator () const |
Returns whether the snapping indicator should automatically be used. | |
Public Member Functions inherited from QgsMapToolEdit | |
QgsMapToolEdit (QgsMapCanvas *canvas) | |
QgsGeometryRubberBand * | createGeometryRubberBand (Qgis::GeometryType geometryType=Qgis::GeometryType::Line, bool alternativeBand=false) const |
Creates a geometry rubber band with the color/line width from the QGIS settings. | |
Flags | flags () const override |
Returns the flags for the map tool. | |
Public Member Functions inherited from QgsMapTool | |
~QgsMapTool () override | |
QAction * | action () |
Returns associated action with map tool or nullptr if no action is associated. | |
QAbstractButton * | button () |
Returns associated button with map tool or nullptr if no button is associated. | |
QgsMapCanvas * | canvas () const |
returns pointer to the tool's map canvas | |
virtual void | canvasDoubleClickEvent (QgsMapMouseEvent *e) |
Mouse double-click event for overriding. Default implementation does nothing. | |
virtual bool | canvasToolTipEvent (QHelpEvent *e) |
Tooltip event for overriding. | |
virtual bool | gestureEvent (QGestureEvent *e) |
gesture event for overriding. Default implementation does nothing. | |
bool | isActive () const |
Returns if the current map tool active on the map canvas. | |
virtual void | keyReleaseEvent (QKeyEvent *e) |
Key event for overriding. Default implementation does nothing. | |
virtual void | populateContextMenu (QMenu *menu) |
Allows the tool to populate and customize the given menu, prior to showing it in response to a right-mouse button click. | |
virtual bool | populateContextMenuWithEvent (QMenu *menu, QgsMapMouseEvent *event) |
Allows the tool to populate and customize the given menu, prior to showing it in response to a right-mouse button click. | |
virtual void | reactivate () |
Called when the map tool is being activated while it is already active. | |
void | setAction (QAction *action) |
Use this to associate a QAction to this maptool. | |
void | setButton (QAbstractButton *button) |
Use this to associate a button to this maptool. | |
virtual void | setCursor (const QCursor &cursor) |
Sets a user defined cursor. | |
QgsPointXY | toMapCoordinates (QPoint point) |
Transforms a point from screen coordinates to map coordinates. | |
QString | toolName () |
Emit map tool changed with the old tool. | |
virtual void | wheelEvent (QWheelEvent *e) |
Mouse wheel event for overriding. Default implementation does nothing. | |
Protected Slots | |
void | stopCapturing () |
Stop capturing. | |
Protected Member Functions | |
int | addVertex (const QgsPointXY &mapPoint, const QgsPointLocator::Match &match) |
Variant to supply more information in the case of snapping. | |
int | addVertex (const QgsPointXY &point) |
Adds a point to the rubber band (in map coordinates) and to the capture list (in layer coordinates) | |
void | closePolygon () |
Close an open polygon. | |
int | fetchLayerPoint (const QgsPointLocator::Match &match, QgsPoint &layerPoint) |
Fetches the original point from the source layer if it has the same CRS as the current layer. | |
bool | isCapturing () const |
Are we currently capturing? | |
int | nextPoint (const QgsPoint &mapPoint, QgsPoint &layerPoint) |
Converts a map point to layer coordinates. | |
int | nextPoint (QPoint p, QgsPoint &layerPoint, QgsPoint &mapPoint) |
Converts a point to map coordinates and layer coordinates. | |
Q_DECL_DEPRECATED QVector< QgsPointXY > | points () const |
List of digitized points. | |
QgsPointSequence | pointsZM () const |
List of digitized points. | |
void | setPoints (const QgsPointSequence &pointList) |
Set the points on which to work. | |
Q_DECL_DEPRECATED void | setPoints (const QVector< QgsPointXY > &pointList) |
Set the points on which to work. | |
int | size () |
Number of points digitized. | |
void | startCapturing () |
Start capturing. | |
void | undo (bool isAutoRepeat=false) |
Removes the last vertex from mRubberBand and mCaptureList. | |
Protected Member Functions inherited from QgsMapToolAdvancedDigitizing | |
void | setAdvancedDigitizingAllowed (bool allowed) |
Sets whether functionality of advanced digitizing dock widget is currently allowed. | |
void | setAutoSnapEnabled (bool enabled) |
Sets whether mouse events (press/move/release) should automatically try to snap mouse position This method is protected because it should be a decision of the map tool and not from elsewhere. | |
void | setUseSnappingIndicator (bool enabled) |
Sets whether a snapping indicator should automatically be used. | |
Protected Member Functions inherited from QgsMapToolEdit | |
TopologicalResult | addTopologicalPoints (const QVector< QgsPoint > &vertices) |
Adds a list of vertices to other features to keep topology up to date, e.g. | |
Q_DECL_DEPRECATED TopologicalResult | addTopologicalPoints (const QVector< QgsPointXY > &vertices) |
Adds a list of vertices to other features to keep topology up to date, e.g. | |
QgsRubberBand * | createRubberBand (Qgis::GeometryType geometryType=Qgis::GeometryType::Line, bool alternativeBand=false) |
Creates a rubber band with the color/line width from the QGIS settings. | |
QgsVectorLayer * | currentVectorLayer () |
Returns the current vector layer of the map canvas or 0. | |
void | notifyNotEditableLayer () |
Display a timed message bar noting the active vector layer is not editable. | |
void | notifyNotVectorLayer () |
Display a timed message bar noting the active layer is not vector. | |
Protected Member Functions inherited from QgsMapTool | |
QgsMapTool (QgsMapCanvas *canvas) | |
Constructor takes a map canvas as a parameter. | |
QgsMapLayer * | layer (const QString &id) |
Returns the map layer with the matching ID, or nullptr if no layers could be found. | |
void | setToolName (const QString &name) |
Sets the tool's name. | |
QPoint | toCanvasCoordinates (const QgsPointXY &point) const |
Transforms a point from map coordinates to screen coordinates. | |
QgsPoint | toLayerCoordinates (const QgsMapLayer *layer, const QgsPoint &point) |
Transforms a point from map coordinates to layer coordinates. | |
QgsPointXY | toLayerCoordinates (const QgsMapLayer *layer, const QgsPointXY &point) |
Transforms a point from map coordinates to layer coordinates. | |
QgsRectangle | toLayerCoordinates (const QgsMapLayer *layer, const QgsRectangle &rect) |
Transforms a rect from map coordinates to layer coordinates. | |
QgsPointXY | toLayerCoordinates (const QgsMapLayer *layer, QPoint point) |
Transforms a point from screen coordinates to layer coordinates. | |
QgsPoint | toMapCoordinates (const QgsMapLayer *layer, const QgsPoint &point) |
Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used). | |
QgsPointXY | toMapCoordinates (const QgsMapLayer *layer, const QgsPointXY &point) |
Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used). | |
Friends | |
class | TestQgsMapToolCapture |
Additional Inherited Members | |
Signals inherited from QgsMapTool | |
void | activated () |
signal emitted once the map tool is activated | |
void | deactivated () |
signal emitted once the map tool is deactivated | |
void | messageDiscarded () |
emit signal to clear previous message | |
void | messageEmitted (const QString &message, Qgis::MessageLevel=Qgis::MessageLevel::Info) |
emit a message | |
void | reactivated () |
Static Public Member Functions inherited from QgsMapToolEdit | |
static double | defaultMValue () |
Returns default M value. | |
static double | defaultZValue () |
Returns default Z value. | |
Static Public Member Functions inherited from QgsMapTool | |
static double | searchRadiusMM () |
Gets search radius in mm. | |
static double | searchRadiusMU (const QgsRenderContext &context) |
Gets search radius in map units for given context. | |
static double | searchRadiusMU (QgsMapCanvas *canvas) |
Gets search radius in map units for given canvas. | |
Protected Types inherited from QgsMapToolEdit | |
enum | TopologicalResult { Success = 0 , InvalidCanvas = 1 , InvalidLayer = 2 } |
Result of addTopologicalPoints. More... | |
Static Protected Member Functions inherited from QgsMapToolEdit | |
static QColor | digitizingFillColor () |
Returns fill color for rubber bands (from global settings) | |
static QColor | digitizingStrokeColor () |
Returns stroke color for rubber bands (from global settings) | |
static int | digitizingStrokeWidth () |
Returns stroke width for rubber bands (from global settings) | |
Protected Attributes inherited from QgsMapToolAdvancedDigitizing | |
QgsAdvancedDigitizingDockWidget * | mCadDockWidget = nullptr |
Protected Attributes inherited from QgsMapTool | |
QAction * | mAction = nullptr |
Optional pointer to an action that will be checked on map tool activation and unchecked on map tool deactivation. | |
QAbstractButton * | mButton = nullptr |
Optional pointer to a button that will be checked on map tool activation and unchecked on map tool deactivation. | |
QPointer< QgsMapCanvas > | mCanvas |
The pointer to the map canvas. | |
QCursor | mCursor |
The cursor used in the map tool. | |
QString | mToolName |
The translated name of the map tool. | |
QgsMapToolCapture is a base class capable of capturing point, lines and polygons.
The tool supports different techniques: straight segments, curves, streaming and shapes Once the the geometry is captured the virtual private handler geometryCaptured is called as well as a more specific handler (pointCaptured, lineCaptured or polygonCaptured)
Definition at line 48 of file qgsmaptoolcapture.h.
typedef QFlags< Capability > QgsMapToolCapture::Capabilities |
Definition at line 71 of file qgsmaptoolcapture.h.
Specific capabilities of the tool.
Enumerator | |
---|---|
NoCapabilities | No specific capabilities. |
SupportsCurves | Supports curved geometries input. |
ValidateGeometries | Tool supports geometry validation.
|
Definition at line 64 of file qgsmaptoolcapture.h.
Different capture modes.
Enumerator | |
---|---|
CaptureNone | Do not capture / determine mode from layer geometry type. |
CapturePoint | Capture points. |
CaptureLine | Capture lines. |
CapturePolygon | Capture polygons. |
Definition at line 55 of file qgsmaptoolcapture.h.
QgsMapToolCapture::QgsMapToolCapture | ( | QgsMapCanvas * | canvas, |
QgsAdvancedDigitizingDockWidget * | cadDockWidget, | ||
CaptureMode | mode | ||
) |
constructor
Definition at line 48 of file qgsmaptoolcapture.cpp.
|
override |
Definition at line 77 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Registers this maptool with the cad dock widget.
Reimplemented from QgsMapToolAdvancedDigitizing.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 118 of file qgsmaptoolcapture.cpp.
int QgsMapToolCapture::addCurve | ( | QgsCurve * | c | ) |
Adds a whole curve (e.g. circularstring) to the captured geometry. Curve must be in map CRS.
Definition at line 814 of file qgsmaptoolcapture.cpp.
|
protected |
Variant to supply more information in the case of snapping.
mapPoint | The vertex to add in map coordinates |
match | Data about the snapping match. Can be an invalid match, if point not snapped. |
Definition at line 697 of file qgsmaptoolcapture.cpp.
|
protected |
Adds a point to the rubber band (in map coordinates) and to the capture list (in layer coordinates)
Definition at line 692 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Override this method when subclassing this class.
This will receive adapted events from the cad system whenever a canvasMoveEvent is triggered and it's not hidden by the cad's construction mode.
e | Mouse events prepared by the cad system |
Reimplemented from QgsMapToolAdvancedDigitizing.
Definition at line 496 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Override this method when subclassing this class.
This will receive adapted events from the cad system whenever a canvasReleaseEvent is triggered and it's not hidden by the cad's construction mode.
e | Mouse events prepared by the cad system |
Reimplemented from QgsMapToolAdvancedDigitizing.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 1273 of file qgsmaptoolcapture.cpp.
|
virtual |
Returns flags containing the supported capabilities.
Reimplemented in QgsMapToolCaptureAnnotationItem, and QgsMapToolDigitizeFeature.
Definition at line 99 of file qgsmaptoolcapture.cpp.
|
inline |
|
overridevirtual |
convenient method to clean members
Reimplemented from QgsMapTool.
Definition at line 1045 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::clearCurve | ( | ) |
Clear capture curve.
Definition at line 871 of file qgsmaptoolcapture.cpp.
|
protected |
Close an open polygon.
Definition at line 1054 of file qgsmaptoolcapture.cpp.
|
inline |
Returns the active capture technique.
Definition at line 100 of file qgsmaptoolcapture.h.
|
overridevirtual |
Unregisters this maptool from the cad dock widget.
Reimplemented from QgsMapToolAdvancedDigitizing.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 130 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::deleteTempRubberBand | ( | ) |
Clean a temporary rubberband.
Definition at line 1040 of file qgsmaptoolcapture.cpp.
|
protected |
Fetches the original point from the source layer if it has the same CRS as the current layer.
If topological editing is activated, the points are projected to the current layer CRS.
Definition at line 629 of file qgsmaptoolcapture.cpp.
|
protected |
Are we currently capturing?
Definition at line 1012 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Intercept key events like Esc or Del to delete the last point.
e | key event |
Reimplemented from QgsMapTool.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 962 of file qgsmaptoolcapture.cpp.
QgsPoint QgsMapToolCapture::mapPoint | ( | const QgsMapMouseEvent & | e | ) | const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer).
If the point is snapped, then the Z value is derived from the snapped point.
e | A mouse event |
Definition at line 1217 of file qgsmaptoolcapture.cpp.
QgsPoint QgsMapToolCapture::mapPoint | ( | const QgsPointXY & | point | ) | const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer).
point | A point in 2D |
Definition at line 1178 of file qgsmaptoolcapture.cpp.
|
inline |
Converts a map point to layer coordinates.
mapPoint | the point in map coordinates | |
[in,out] | layerPoint | the point in layer coordinates |
nullptr
2 if the transformation failed Definition at line 596 of file qgsmaptoolcapture.cpp.
Converts a point to map coordinates and layer coordinates.
p | the input point | |
[in,out] | layerPoint | the point in layer coordinates |
[in,out] | mapPoint | the point in map coordinates |
nullptr
or not a vector layer 2 if the transformation failed Definition at line 623 of file qgsmaptoolcapture.cpp.
|
protected |
List of digitized points.
Definition at line 1139 of file qgsmaptoolcapture.cpp.
|
protected |
List of digitized points.
Definition at line 1147 of file qgsmaptoolcapture.cpp.
|
slot |
Enable the digitizing with curve.
Definition at line 416 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::setCurrentCaptureTechnique | ( | Qgis::CaptureTechnique | technique | ) |
Sets the current capture if it is supported by the map tool.
Definition at line 432 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::setCurrentShapeMapTool | ( | const QgsMapToolShapeMetadata * | shapeMapToolMetadata | ) |
Sets the current shape tool.
Definition at line 475 of file qgsmaptoolcapture.cpp.
|
protected |
Set the points on which to work.
pointList | A list of points |
Definition at line 1166 of file qgsmaptoolcapture.cpp.
|
protected |
Set the points on which to work.
pointList | A list of points |
Definition at line 1154 of file qgsmaptoolcapture.cpp.
|
slot |
Toggles the stream digitizing mode.
Definition at line 424 of file qgsmaptoolcapture.cpp.
|
protected |
Number of points digitized.
Definition at line 1134 of file qgsmaptoolcapture.cpp.
QList< QgsPointLocator::Match > QgsMapToolCapture::snappingMatches | ( | ) | const |
Returns a list of matches for each point on the captureCurve.
Definition at line 877 of file qgsmaptoolcapture.cpp.
|
protected |
Start capturing.
Definition at line 1007 of file qgsmaptoolcapture.cpp.
|
protectedslot |
Stop capturing.
Definition at line 1017 of file qgsmaptoolcapture.cpp.
|
virtual |
Returns true
if the tool supports the specified capture technique.
Reimplemented in QgsMapToolCaptureAnnotationItem, and QgsMapToolDigitizeFeature.
Definition at line 104 of file qgsmaptoolcapture.cpp.
QgsRubberBand * QgsMapToolCapture::takeRubberBand | ( | ) |
Returns the rubberBand currently owned by this map tool and transfers ownership to the caller.
May be nullptr
.
Definition at line 411 of file qgsmaptoolcapture.cpp.
|
protected |
Removes the last vertex from mRubberBand and mCaptureList.
Since QGIS 3.20, if isAutoRepeat is set to true
then the undo operation will be treated as a auto repeated undo as if the user has held down the undo key for an extended period of time.
Definition at line 882 of file qgsmaptoolcapture.cpp.
|
friend |
Definition at line 445 of file qgsmaptoolcapture.h.