34#include <QDomDocument>
35#include <QGraphicsView>
41#include <QGestureEvent>
94 if ( qobject_cast<QgsMapCanvas *>( sipCpp ) !=
nullptr )
95 sipType = sipType_QgsMapCanvas;
102 Q_PROPERTY( QString theme READ theme WRITE setTheme NOTIFY themeChanged )
103 Q_PROPERTY(
bool previewJobsEnabled READ previewJobsEnabled WRITE setPreviewJobsEnabled )
116 double magnificationFactor()
const;
129 void setLayers(
const QList<QgsMapLayer *> &layers );
165 void setMapSettingsFlags( Qgis::MapSettingsFlags flags );
192 void setCachingEnabled(
bool enabled );
198 bool isCachingEnabled()
const;
221 void waitWhileRendering();
227 void setParallelRenderingEnabled(
bool enabled );
233 bool isParallelRenderingEnabled()
const;
239 void setMapUpdateInterval(
int timeMilliseconds );
245 int mapUpdateInterval()
const;
251 double scale()
const;
254 double mapUnitsPerPixel()
const;
291 void setExtent(
const QgsRectangle &r,
bool magnified =
false );
307 double rotation()
const;
313 void setRotation(
double degrees );
332 void zoomToFullExtent();
342 void zoomToProjectExtent();
345 void zoomToPreviousExtent();
348 void zoomToNextExtent();
351 void clearExtentHistory();
370 void panToSelected(
QgsMapLayer *layer =
nullptr );
377 void panToSelected(
const QList<QgsMapLayer *> &layers );
392 const QColor &startColor = QColor( 255, 0, 0, 255 ),
const QColor &endColor = QColor( 255, 0, 0, 0 ),
393 int flashes = 3,
int duration = 500 );
408 const QColor &startColor = QColor( 255, 0, 0, 255 ),
const QColor &endColor = QColor( 255, 0, 0, 0 ),
409 int flashes = 3,
int duration = 500 );
412 void setMapTool(
QgsMapTool *mapTool,
bool clean =
false );
442 void setCanvasColor(
const QColor &_newVal );
444 QColor canvasColor()
const;
450 void setSelectionColor(
const QColor &color );
456 QColor selectionColor()
const;
479 int layerCount()
const;
489 QList<QgsMapLayer *> layers(
bool expandGroupLayers =
false )
const;
500 void freeze(
bool frozen =
true );
509 bool isFrozen()
const;
532 QMap<QString, QString> layerStyleOverrides()
const;
545 void setLayerStyleOverrides(
const QMap<QString, QString> &overrides );
565 void setTheme(
const QString &theme );
572 QString
theme()
const {
return mTheme; }
584 void setWheelFactor(
double factor );
593 void zoomScale(
double scale,
bool ignoreScaleLock =
false );
602 void zoomByFactor(
double scaleFactor,
const QgsPointXY *center =
nullptr,
bool ignoreScaleLock =
false );
605 void zoomWithCenter(
int x,
int y,
bool zoomIn );
621 void enableAntiAliasing(
bool flag );
624 bool antiAliasingEnabled()
const;
627 void enableMapTileRendering(
bool flag );
632 void panActionEnd( QPoint releasePoint );
641 void panActionStart( QPoint releasePoint );
645 void panAction( QMouseEvent *event );
648 QPoint mouseLastXY();
656 void setPreviewModeEnabled(
bool previewEnabled );
665 bool previewModeEnabled()
const;
753 void setSegmentationTolerance(
double tolerance );
772 bool annotationsVisible()
const {
return mAnnotationsVisible; }
779 void setAnnotationsVisible(
bool visible );
801 bool previewJobsEnabled()
const;
811 void setPreviewJobsEnabled(
bool enabled );
818 void setCustomDropHandlers(
const QVector<QPointer<QgsCustomDropHandler >> &handlers )
SIP_SKIP;
830 void setTemporalRange(
const QgsDateTimeRange &range );
838 const QgsDateTimeRange &temporalRange()
const;
883 void refreshAllLayers();
893 void redrawAllLayers();
896 void selectionChangedSlot();
899 void saveAsImage(
const QString &fileName, QPixmap *QPixmap =
nullptr,
const QString & =
"PNG" );
902 void layerStateChange();
911 void setRenderFlag(
bool flag );
917 void stopRendering();
920 void readProject(
const QDomDocument & );
923 void writeProject( QDomDocument & );
933 void setMagnificationFactor(
double factor,
const QgsPointXY *center =
nullptr );
940 void setScaleLocked(
bool isLocked );
952 void zoomToSelected(
QgsMapLayer *layer =
nullptr );
959 void zoomToSelected(
const QList<QgsMapLayer *> &layers );
971 double zoomInFactor()
const;
976 double zoomOutFactor()
const;
1007 void mapToolDestroyed();
1010 void rendererJobFinished();
1013 void previewJobFinished();
1015 void mapUpdateTimeout();
1019 void mapThemeChanged(
const QString &theme );
1021 void mapThemeRenamed(
const QString &theme,
const QString &newTheme );
1023 void updateDevicePixelFromScreen();
1025 void onElevationShadingRendererChanged();
1212 bool event( QEvent *e )
override;
1213 void keyPressEvent( QKeyEvent *e )
override;
1214 void keyReleaseEvent( QKeyEvent *e )
override;
1215 void mouseDoubleClickEvent( QMouseEvent *e )
override;
1216 void mouseMoveEvent( QMouseEvent *e )
override;
1217 void mousePressEvent( QMouseEvent *e )
override;
1218 void mouseReleaseEvent( QMouseEvent *e )
override;
1219 void wheelEvent( QWheelEvent *e )
override;
1220 void resizeEvent( QResizeEvent *e )
override;
1221 void paintEvent( QPaintEvent *e )
override;
1222 void dragEnterEvent( QDragEnterEvent *e )
override;
1223 bool viewportEvent( QEvent *event )
override;
1226 void moveCanvasContents(
bool reset =
false );
1228 void dropEvent( QDropEvent *event )
override;
1230 void showEvent( QShowEvent *event )
override;
1237 void emitExtentsChanged();
1251 void connectNotify(
const char *signal )
override;
1256 void updateCanvasItemPositions();
1260 void layerRepaintRequested(
bool deferred );
1262 void autoRefreshTriggered();
1264 void updateAutoRefreshTimer();
1266 void projectThemesChanged();
1268 void startPreviewJob(
int number );
1270 void temporalControllerModeChanged();
1281 mLockedScale = mCanvas->mapSettings().scale();
1286 QgsRectangle newExtent = mCanvas->mapSettings().extent();
1287 newExtent.
scale( mLockedScale / mCanvas->mapSettings().scale() );
1288 mCanvas->mSettings.setExtent( newExtent );
1293 double mLockedScale;
1300 QgsMapCanvasMap *mMap =
nullptr;
1311 bool mFrozen =
false;
1314 bool mRefreshScheduled =
false;
1317 bool mRefreshAfterJob =
false;
1320 bool mRenderFlag =
true;
1323 QPointer< QgsMapLayer > mCurrentLayer;
1326 QGraphicsScene *mScene =
nullptr;
1338 QList <QgsRectangle> mLastExtent;
1339 int mLastExtentIndex = -1;
1342 double mWheelZoomFactor = 2.0;
1345 QTimer mMapUpdateTimer;
1351 bool mJobCanceled =
false;
1354 std::unique_ptr< QgsLabelingResults > mLabelingResults;
1357 bool mLabelingResultsOutdated =
false;
1363 std::unique_ptr< QgsRenderedItemResults > mRenderedItemResults;
1369 std::unique_ptr< QgsRenderedItemResults > mPreviousRenderedItemResults;
1376 bool mRenderedItemResultsOutdated =
false;
1379 bool mUseParallelRendering =
false;
1382 bool mDrawRenderingStats =
false;
1387 QTimer *mResizeTimer =
nullptr;
1388 QTimer *mRefreshTimer =
nullptr;
1396 QList< QgsMapRendererQImageJob * > mPreviewJobs;
1399 bool mScaleLocked =
false;
1407 bool mZoomDragging =
false;
1410 std::unique_ptr< QgsRubberBand > mZoomRubberBand;
1412 QCursor mZoomCursor;
1414 QTimer mAutoRefreshTimer;
1416 QTimer mPreviewTimer;
1417 QMetaObject::Connection mPreviewTimerConnection;
1423 bool mAnnotationsVisible =
true;
1425 bool mUsePreviewJobs =
false;
1427 QHash< QString, int > mLastLayerRenderTime;
1429 QVector<QPointer<QgsCustomDropHandler >> mDropHandlers;
1432 QList<double> mZoomResolutions;
1434 QList< QgsMapCanvasInteractionBlocker * > mInteractionBlockers;
1436 int mBlockItemPositionUpdates = 0;
1437 int mBlockExtentChangedSignal = 0;
1438 int mBlockScaleChangedSignal = 0;
1440 std::unique_ptr< QgsTemporaryCursorOverride > mTemporaryCursorOverride;
1449 QMap <QString, QDateTime> mRendererErrors;
1461 void updateMapSize();
1468 void beginZoomRect( QPoint pos );
1475 void endZoomRect( QPoint pos );
1478 void stopZoomRect();
1504 void setLayersPrivate(
const QList<QgsMapLayer *> &layers );
1506 void startPreviewJobs();
1507 void stopPreviewJobs();
1508 void schedulePreviewJob(
int number );
1513 bool panOperationInProgress();
1515 int nextZoomLevel(
const QList<double> &resolutions,
bool zoomIn =
true )
const;
1521 void clearTemporalCache();
1526 void clearElevationCache();
1536 friend class TestQgsMapCanvas;
DistanceUnit
Units of distance.
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Abstract base class for all geometries.
This class represents a coordinate reference system (CRS).
Custom exception class for Coordinate Reference System related exceptions.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
QgsRange which stores a range of double values.
Abstract interface for generating an expression context.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A class for highlight features on the map.
Stores global configuration for labeling engine.
Class that stores computed placement from labeling engine.
An interactive map canvas item which displays a QgsAnnotation.
An interface for objects which block interactions with a QgsMapCanvas.
Interaction
Available interactions to block.
Deprecated to be deleted, stuff from here should be moved elsewhere.
Map canvas is a class for displaying all GIS data types on a canvas.
void messageEmitted(const QString &title, const QString &message, Qgis::MessageLevel=Qgis::MessageLevel::Info)
emit a message (usually to be displayed in a message bar)
void contextMenuAboutToShow(QMenu *menu, QgsMapMouseEvent *event)
Emitted before the map canvas context menu will be shown.
void selectionChanged(QgsMapLayer *layer)
Emitted when selection in any layer gets changed.
void extentsChanged()
Emitted when the extents of the map change.
void xyCoordinates(const QgsPointXY &p)
Emits current mouse position.
QgsExpressionContextScope & expressionContextScope()
Returns a reference to the expression context scope for the map canvas.
void magnificationChanged(double)
Emitted when the scale of the map changes.
void setZoomResolutions(const QList< double > &resolutions)
Set a list of resolutions (map units per pixel) to which to "snap to" when zooming the map.
QString theme() const
Returns the map's theme shown in the canvas, if set.
void renderComplete(QPainter *)
Emitted when the canvas has rendered.
void tapAndHoldGestureOccurred(const QgsPointXY &mapPoint, QTapAndHoldGesture *gesture)
Emitted whenever a tap and hold gesture occurs at the specified map point.
void zoomNextStatusChanged(bool)
Emitted when zoom next status changed.
const QList< double > & zoomResolutions() const
void panDistanceBearingChanged(double distance, Qgis::DistanceUnit unit, double bearing)
Emitted whenever the distance or bearing of an in-progress panning operation is changed.
void rotationChanged(double)
Emitted when the rotation of the map changes.
bool scaleLocked() const
Returns whether the scale is locked, so zooming can be performed using magnication.
void zRangeChanged()
Emitted when the map canvas z (elevation) range changes.
void mapToolSet(QgsMapTool *newTool, QgsMapTool *oldTool)
Emit map tool changed with the old tool.
void canvasColorChanged()
Emitted when canvas background color changes.
void currentLayerChanged(QgsMapLayer *layer)
Emitted when the current layer is changed.
void renderErrorOccurred(const QString &error, QgsMapLayer *layer)
Emitted whenever an error is encountered during a map render operation.
void mapRefreshCanceled()
Emitted when the pending map refresh has been canceled.
void renderStarting()
Emitted when the canvas is about to be rendered.
std::unique_ptr< CanvasProperties > mCanvasProperties
Handle pattern for implementation object.
void keyReleased(QKeyEvent *e)
Emit key release event.
const QgsExpressionContextScope & expressionContextScope() const
Returns a const reference to the expression context scope for the map canvas.
void layerStyleOverridesChanged()
Emitted when the configuration of overridden layer styles changes.
void scaleChanged(double)
Emitted when the scale of the map changes.
void scaleLockChanged(bool locked)
Emitted when the scale locked state of the map changes.
bool renderFlag() const
Returns true if canvas render is disabled as a result of user disabling renders via the GUI.
void temporalRangeChanged()
Emitted when the map canvas temporal range changes.
void themeChanged(const QString &theme)
Emitted when the canvas has been assigned a different map theme.
void destinationCrsChanged()
Emitted when map CRS has changed.
void transformContextChanged()
Emitted when the canvas transform context is changed.
void keyPressed(QKeyEvent *e)
Emit key press event.
void mapCanvasRefreshed()
Emitted when canvas finished a refresh request.
void zoomLastStatusChanged(bool)
Emitted when zoom last status changed.
void layersChanged()
Emitted when a new set of layers has been received.
void setExpressionContextScope(const QgsExpressionContextScope &scope)
Sets an expression context scope for the map canvas.
Base class for all map layer types.
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
A widget that displays an overview map.
This class is responsible for keeping cache of rendered images resulting from a map rendering job.
QList< QgsMapRendererJob::Error > Errors
Intermediate base class adding functionality that allows client to query the rendered image.
The QgsMapSettings class contains configuration for rendering of the map.
Perform transforms between map coordinates and device coordinates.
A class to represent a 2D point.
A graphics effect which can be applied to a widget to simulate various printing and color blindness m...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
A rectangle specified with double values.
void scale(double scaleFactor, const QgsPointXY *c=nullptr)
Scale the rectangle around its center point.
A QgsRectangle with associated coordinate reference system.
Stores collated details of rendered items during a map rendering operation.
A class for drawing transient features (e.g.
A utility class for dynamic handling of changes to screen properties.
This class has all the configuration of snapping and can return answers to snapping queries.
A controller base class for temporal objects, contains a signal for notifying updates of the objects ...
Temporarily sets a cursor override for the QApplication for the lifetime of the object.
Represents a vector layer which manages a vector based data sets.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
#define SIP_KEEPREFERENCE
#define SIP_THROW(name,...)
QSet< QgsFeatureId > QgsFeatureIds
const QgsCoordinateReferenceSystem & crs