QGIS API Documentation
3.18.1-Zürich (202f1bf7e5)
|
This class has all the configuration of snapping and can return answers to snapping queries. More...
#include <qgssnappingutils.h>
Classes | |
struct | LayerConfig |
Configures how a certain layer should be handled in a snapping operation. More... | |
Public Types | |
enum | IndexingStrategy { IndexAlwaysFull , IndexNeverFull , IndexHybrid , IndexExtent } |
Public Slots | |
void | setConfig (const QgsSnappingConfig &snappingConfig) |
The snapping configuration controls the behavior of this object. More... | |
void | toggleEnabled () |
Toggles the state of snapping. More... | |
Signals | |
void | configChanged (const QgsSnappingConfig &snappingConfig) |
Emitted when the snapping settings object changes. More... | |
Public Member Functions | |
QgsSnappingUtils (QObject *parent=nullptr, bool enableSnappingForInvisibleFeature=true) | |
Constructor for QgsSnappingUtils. More... | |
~QgsSnappingUtils () override | |
void | addExtraSnapLayer (QgsVectorLayer *vl) |
Supply an extra snapping layer (typically a memory layer). More... | |
QgsSnappingConfig | config () const |
The snapping configuration controls the behavior of this object. More... | |
QgsVectorLayer * | currentLayer () const |
The current layer used if mode is SnapCurrentLayer. More... | |
QString | dump () |
Gets extra information about the instance. More... | |
QSet< QgsVectorLayer * > | getExtraSnapLayers () |
Returns the list of extra snapping layers. More... | |
IndexingStrategy | indexingStrategy () const |
Find out which strategy is used for indexing - by default hybrid indexing is used. More... | |
QList< QgsSnappingUtils::LayerConfig > | layers () const |
Query layers used for snapping. More... | |
QgsPointLocator * | locatorForLayer (QgsVectorLayer *vl) |
Gets a point locator for the given layer. More... | |
QgsMapSettings | mapSettings () const |
void | removeExtraSnapLayer (QgsVectorLayer *vl) |
Removes an extra snapping layer. More... | |
void | setCurrentLayer (QgsVectorLayer *layer) |
Sets current layer so that if mode is SnapCurrentLayer we know which layer to use. More... | |
void | setEnableSnappingForInvisibleFeature (bool enable) |
Set if invisible features must be snapped or not. More... | |
void | setIndexingStrategy (IndexingStrategy strategy) |
Sets a strategy for indexing geometry data - determines how fast and memory consuming the data structures will be. More... | |
void | setMapSettings (const QgsMapSettings &settings) |
Assign current map settings to the utils - used for conversion between screen coords to map coords. More... | |
QgsPointLocator::Match | snapToCurrentLayer (QPoint point, QgsPointLocator::Types type, QgsPointLocator::MatchFilter *filter=nullptr) |
Snap to current layer. More... | |
QgsPointLocator::Match | snapToMap (const QgsPointXY &pointMap, QgsPointLocator::MatchFilter *filter=nullptr, bool relaxed=false) |
Snap to map according to the current configuration. More... | |
QgsPointLocator::Match | snapToMap (QPoint point, QgsPointLocator::MatchFilter *filter=nullptr, bool relaxed=false) |
Snap to map according to the current configuration. More... | |
Protected Member Functions | |
void | clearAllLocators () |
Deletes all existing locators (e.g. when destination CRS has changed and we need to reindex) More... | |
virtual void | prepareIndexProgress (int index) |
Called when finished indexing a layer with snapToMap. When index == count the indexing is complete. More... | |
virtual void | prepareIndexStarting (int count) |
Called when starting to index with snapToMap - can be overridden and e.g. progress dialog can be provided. More... | |
Properties | |
QgsSnappingConfig | config |
This class has all the configuration of snapping and can return answers to snapping queries.
Internally, it keeps a cache of QgsPointLocator instances for multiple layers.
Currently it supports the following queries:
For more complex queries it is possible to use locatorForLayer() method that returns point locator instance with layer's indexed data.
Indexing strategy determines how fast the queries will be and how much memory will be used.
When working with map canvas, it may be useful to use derived class QgsMapCanvasSnappingUtils which keeps the configuration in sync with map canvas (e.g. current view, active layer).
Definition at line 50 of file qgssnappingutils.h.
Definition at line 106 of file qgssnappingutils.h.
QgsSnappingUtils::QgsSnappingUtils | ( | QObject * | parent = nullptr , |
bool | enableSnappingForInvisibleFeature = true |
||
) |
Constructor for QgsSnappingUtils.
parent | parent object |
enableSnappingForInvisibleFeature | true if we want to snap feature even if there are not visible |
Definition at line 23 of file qgssnappingutils.cpp.
|
override |
Definition at line 30 of file qgssnappingutils.cpp.
|
inline |
Supply an extra snapping layer (typically a memory layer).
This can be used by map tools to provide additional snappings points.
Definition at line 201 of file qgssnappingutils.h.
|
protected |
Deletes all existing locators (e.g. when destination CRS has changed and we need to reindex)
Definition at line 50 of file qgssnappingutils.cpp.
QgsSnappingConfig QgsSnappingUtils::config | ( | ) | const |
The snapping configuration controls the behavior of this object.
Definition at line 535 of file qgssnappingutils.cpp.
|
signal |
Emitted when the snapping settings object changes.
|
inline |
The current layer used if mode is SnapCurrentLayer.
Definition at line 102 of file qgssnappingutils.h.
QString QgsSnappingUtils::dump | ( | ) |
Gets extra information about the instance.
Definition at line 596 of file qgssnappingutils.cpp.
|
inline |
Returns the list of extra snapping layers.
Definition at line 227 of file qgssnappingutils.h.
|
inline |
Find out which strategy is used for indexing - by default hybrid indexing is used.
Definition at line 117 of file qgssnappingutils.h.
|
inline |
Query layers used for snapping.
Definition at line 169 of file qgssnappingutils.h.
QgsPointLocator * QgsSnappingUtils::locatorForLayer | ( | QgsVectorLayer * | vl | ) |
Gets a point locator for the given layer.
If such locator does not exist, it will be created
vl | the vector layer |
Definition at line 36 of file qgssnappingutils.cpp.
|
inline |
Definition at line 97 of file qgssnappingutils.h.
|
inlineprotectedvirtual |
Called when finished indexing a layer with snapToMap. When index == count the indexing is complete.
Reimplemented in QgsMapCanvasSnappingUtils.
Definition at line 259 of file qgssnappingutils.h.
|
inlineprotectedvirtual |
Called when starting to index with snapToMap - can be overridden and e.g. progress dialog can be provided.
Reimplemented in QgsMapCanvasSnappingUtils.
Definition at line 257 of file qgssnappingutils.h.
|
inline |
|
slot |
The snapping configuration controls the behavior of this object.
Definition at line 545 of file qgssnappingutils.cpp.
void QgsSnappingUtils::setCurrentLayer | ( | QgsVectorLayer * | layer | ) |
Sets current layer so that if mode is SnapCurrentLayer we know which layer to use.
Definition at line 591 of file qgssnappingutils.cpp.
void QgsSnappingUtils::setEnableSnappingForInvisibleFeature | ( | bool | enable | ) |
Set if invisible features must be snapped or not.
enable | Enable or not this feature |
Definition at line 540 of file qgssnappingutils.cpp.
|
inline |
Sets a strategy for indexing geometry data - determines how fast and memory consuming the data structures will be.
Definition at line 115 of file qgssnappingutils.h.
void QgsSnappingUtils::setMapSettings | ( | const QgsMapSettings & | settings | ) |
Assign current map settings to the utils - used for conversion between screen coords to map coords.
Definition at line 581 of file qgssnappingutils.cpp.
QgsPointLocator::Match QgsSnappingUtils::snapToCurrentLayer | ( | QPoint | point, |
QgsPointLocator::Types | type, | ||
QgsPointLocator::MatchFilter * | filter = nullptr |
||
) |
Snap to current layer.
Definition at line 564 of file qgssnappingutils.cpp.
QgsPointLocator::Match QgsSnappingUtils::snapToMap | ( | const QgsPointXY & | pointMap, |
QgsPointLocator::MatchFilter * | filter = nullptr , |
||
bool | relaxed = false |
||
) |
Snap to map according to the current configuration.
pointMap | point in map coordinates |
filter | allows discarding unwanted matches. |
relaxed | true if this method is non blocking and the matching result can be invalid while indexing |
Definition at line 253 of file qgssnappingutils.cpp.
QgsPointLocator::Match QgsSnappingUtils::snapToMap | ( | QPoint | point, |
QgsPointLocator::MatchFilter * | filter = nullptr , |
||
bool | relaxed = false |
||
) |
Snap to map according to the current configuration.
point | point in canvas coordinates |
filter | allows discarding unwanted matches. |
relaxed | true if this method is non blocking and the matching result can be invalid while indexing |
Definition at line 242 of file qgssnappingutils.cpp.
|
slot |
|
readwrite |
Definition at line 1 of file qgssnappingutils.h.