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 );
196 void setCachingEnabled(
bool enabled );
206 bool isCachingEnabled()
const;
239 void waitWhileRendering();
245 void setParallelRenderingEnabled(
bool enabled );
251 bool isParallelRenderingEnabled()
const;
257 void setMapUpdateInterval(
int timeMilliseconds );
263 int mapUpdateInterval()
const;
269 double scale()
const;
272 double mapUnitsPerPixel()
const;
309 void setExtent(
const QgsRectangle &r,
bool magnified =
false );
325 double rotation()
const;
331 void setRotation(
double degrees );
350 void zoomToFullExtent();
360 void zoomToProjectExtent();
363 void zoomToPreviousExtent();
366 void zoomToNextExtent();
369 void clearExtentHistory();
388 void panToSelected(
QgsMapLayer *layer =
nullptr );
395 void panToSelected(
const QList<QgsMapLayer *> &layers );
410 const QColor &startColor = QColor( 255, 0, 0, 255 ),
const QColor &endColor = QColor( 255, 0, 0, 0 ),
411 int flashes = 3,
int duration = 500 );
426 const QColor &startColor = QColor( 255, 0, 0, 255 ),
const QColor &endColor = QColor( 255, 0, 0, 0 ),
427 int flashes = 3,
int duration = 500 );
430 void setMapTool(
QgsMapTool *mapTool,
bool clean =
false );
460 void setCanvasColor(
const QColor &_newVal );
462 QColor canvasColor()
const;
468 void setSelectionColor(
const QColor &color );
474 QColor selectionColor()
const;
497 int layerCount()
const;
507 QList<QgsMapLayer *> layers(
bool expandGroupLayers =
false )
const;
518 void freeze(
bool frozen =
true );
527 bool isFrozen()
const;
550 QMap<QString, QString> layerStyleOverrides()
const;
563 void setLayerStyleOverrides(
const QMap<QString, QString> &overrides );
583 void setTheme(
const QString &theme );
590 QString
theme()
const {
return mTheme; }
602 void setWheelFactor(
double factor );
611 void zoomScale(
double scale,
bool ignoreScaleLock =
false );
620 void zoomByFactor(
double scaleFactor,
const QgsPointXY *center =
nullptr,
bool ignoreScaleLock =
false );
623 void zoomWithCenter(
int x,
int y,
bool zoomIn );
639 void enableAntiAliasing(
bool flag );
642 bool antiAliasingEnabled()
const;
645 void enableMapTileRendering(
bool flag );
650 void panActionEnd( QPoint releasePoint );
659 void panActionStart( QPoint releasePoint );
663 void panAction( QMouseEvent *event );
666 QPoint mouseLastXY();
674 void setPreviewModeEnabled(
bool previewEnabled );
683 bool previewModeEnabled()
const;
771 void setSegmentationTolerance(
double tolerance );
790 bool annotationsVisible()
const {
return mAnnotationsVisible; }
797 void setAnnotationsVisible(
bool visible );
819 bool previewJobsEnabled()
const;
829 void setPreviewJobsEnabled(
bool enabled );
836 void setCustomDropHandlers(
const QVector<QPointer<QgsCustomDropHandler >> &handlers )
SIP_SKIP;
848 void setTemporalRange(
const QgsDateTimeRange &range );
856 const QgsDateTimeRange &temporalRange()
const;
901 void refreshAllLayers();
911 void redrawAllLayers();
914 void selectionChangedSlot();
917 void saveAsImage(
const QString &fileName, QPixmap *QPixmap =
nullptr,
const QString & =
"PNG" );
920 void layerStateChange();
929 void setRenderFlag(
bool flag );
935 void stopRendering();
938 void readProject(
const QDomDocument & );
941 void writeProject( QDomDocument & );
951 void setMagnificationFactor(
double factor,
const QgsPointXY *center =
nullptr );
958 void setScaleLocked(
bool isLocked );
970 void zoomToSelected(
QgsMapLayer *layer =
nullptr );
977 void zoomToSelected(
const QList<QgsMapLayer *> &layers );
989 double zoomInFactor()
const;
994 double zoomOutFactor()
const;
1025 void mapToolDestroyed();
1028 void rendererJobFinished();
1031 void previewJobFinished();
1033 void mapUpdateTimeout();
1037 void mapThemeChanged(
const QString &theme );
1039 void mapThemeRenamed(
const QString &theme,
const QString &newTheme );
1041 void updateDevicePixelFromScreen();
1043 void onElevationShadingRendererChanged();
1230 bool event( QEvent *e )
override;
1231 void keyPressEvent( QKeyEvent *e )
override;
1232 void keyReleaseEvent( QKeyEvent *e )
override;
1233 void mouseDoubleClickEvent( QMouseEvent *e )
override;
1234 void mouseMoveEvent( QMouseEvent *e )
override;
1235 void mousePressEvent( QMouseEvent *e )
override;
1236 void mouseReleaseEvent( QMouseEvent *e )
override;
1237 void wheelEvent( QWheelEvent *e )
override;
1238 void resizeEvent( QResizeEvent *e )
override;
1239 void paintEvent( QPaintEvent *e )
override;
1240 void dragEnterEvent( QDragEnterEvent *e )
override;
1241 bool viewportEvent( QEvent *event )
override;
1244 void moveCanvasContents(
bool reset =
false );
1246 void dropEvent( QDropEvent *event )
override;
1248 void showEvent( QShowEvent *event )
override;
1255 void emitExtentsChanged();
1269 void connectNotify(
const char *signal )
override;
1274 void updateCanvasItemPositions();
1278 void layerRepaintRequested(
bool deferred );
1280 void autoRefreshTriggered();
1282 void updateAutoRefreshTimer();
1284 void projectThemesChanged();
1286 void startPreviewJob(
int number );
1288 void temporalControllerModeChanged();
1299 mLockedScale = mCanvas->mapSettings().scale();
1304 QgsRectangle newExtent = mCanvas->mapSettings().extent();
1305 newExtent.
scale( mLockedScale / mCanvas->mapSettings().scale() );
1306 mCanvas->mSettings.setExtent( newExtent );
1311 double mLockedScale;
1318 QgsMapCanvasMap *mMap =
nullptr;
1329 bool mFrozen =
false;
1332 bool mRefreshScheduled =
false;
1335 bool mRefreshAfterJob =
false;
1338 bool mRenderFlag =
true;
1341 QPointer< QgsMapLayer > mCurrentLayer;
1344 QGraphicsScene *mScene =
nullptr;
1356 QList <QgsRectangle> mLastExtent;
1357 int mLastExtentIndex = -1;
1360 double mWheelZoomFactor = 2.0;
1363 QTimer mMapUpdateTimer;
1369 bool mJobCanceled =
false;
1372 std::unique_ptr< QgsLabelingResults > mLabelingResults;
1375 bool mLabelingResultsOutdated =
false;
1381 std::unique_ptr< QgsRenderedItemResults > mRenderedItemResults;
1387 std::unique_ptr< QgsRenderedItemResults > mPreviousRenderedItemResults;
1394 bool mRenderedItemResultsOutdated =
false;
1397 bool mUseParallelRendering =
false;
1400 bool mDrawRenderingStats =
false;
1405 QTimer *mResizeTimer =
nullptr;
1406 QTimer *mRefreshTimer =
nullptr;
1414 QList< QgsMapRendererQImageJob * > mPreviewJobs;
1417 bool mScaleLocked =
false;
1425 bool mZoomDragging =
false;
1428 std::unique_ptr< QgsRubberBand > mZoomRubberBand;
1430 QCursor mZoomCursor;
1432 QTimer mAutoRefreshTimer;
1434 QTimer mPreviewTimer;
1435 QMetaObject::Connection mPreviewTimerConnection;
1441 bool mAnnotationsVisible =
true;
1443 bool mUsePreviewJobs =
false;
1445 QHash< QString, int > mLastLayerRenderTime;
1447 QVector<QPointer<QgsCustomDropHandler >> mDropHandlers;
1450 QList<double> mZoomResolutions;
1452 QList< QgsMapCanvasInteractionBlocker * > mInteractionBlockers;
1454 int mBlockItemPositionUpdates = 0;
1455 int mBlockExtentChangedSignal = 0;
1456 int mBlockScaleChangedSignal = 0;
1458 std::unique_ptr< QgsTemporaryCursorOverride > mTemporaryCursorOverride;
1467 QMap <QString, QDateTime> mRendererErrors;
1479 void updateMapSize();
1486 void beginZoomRect( QPoint pos );
1493 void endZoomRect( QPoint pos );
1496 void stopZoomRect();
1522 void setLayersPrivate(
const QList<QgsMapLayer *> &layers );
1524 void startPreviewJobs();
1525 void stopPreviewJobs();
1526 void schedulePreviewJob(
int number );
1531 bool panOperationInProgress();
1533 int nextZoomLevel(
const QList<double> &resolutions,
bool zoomIn =
true )
const;
1539 void clearTemporalCache();
1544 void clearElevationCache();
1554 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