34#include <QDomDocument>
35#include <QGraphicsView>
41#include <QGestureEvent>
96 if ( qobject_cast<QgsMapCanvas *>( sipCpp ) !=
nullptr )
97 sipType = sipType_QgsMapCanvas;
104 Q_PROPERTY( QString theme READ theme WRITE setTheme NOTIFY themeChanged )
105 Q_PROPERTY(
bool previewJobsEnabled READ previewJobsEnabled WRITE setPreviewJobsEnabled )
117 double magnificationFactor() const;
129 void setLayers( const QList<
QgsMapLayer *> &layers );
170 void setMapSettingsFlags(
Qgis::MapSettingsFlags flags );
199 void setCachingEnabled(
bool enabled );
208 bool isCachingEnabled() const;
239 void waitWhileRendering();
244 void setParallelRenderingEnabled(
bool enabled );
249 bool isParallelRenderingEnabled() const;
254 void setMapUpdateInterval(
int timeMilliseconds );
259 int mapUpdateInterval() const;
265 double scale() const;
268 double mapUnitsPerPixel() const;
305 void setExtent( const
QgsRectangle &r,
bool magnified = false );
320 double rotation() const;
325 void setRotation(
double degrees );
342 void zoomToFullExtent();
352 void zoomToProjectExtent();
355 void zoomToPreviousExtent();
358 void zoomToNextExtent();
361 void clearExtentHistory();
380 void panToSelected(
QgsMapLayer *layer =
nullptr );
387 void panToSelected( const QList<
QgsMapLayer *> &layers );
401 const QColor &startColor = QColor( 255, 0, 0, 255 ), const QColor &endColor = QColor( 255, 0, 0, 0 ),
402 int flashes = 3,
int duration = 500 );
416 const QColor &startColor = QColor( 255, 0, 0, 255 ), const QColor &endColor = QColor( 255, 0, 0, 0 ),
417 int flashes = 3,
int duration = 500 );
420 void setMapTool(
QgsMapTool *mapTool,
bool clean = false );
450 void setCanvasColor( const QColor &_newVal );
452 QColor canvasColor() const;
457 void setSelectionColor( const QColor &color );
462 QColor selectionColor() const;
485 int layerCount() const;
495 QList<
QgsMapLayer *> layers(
bool expandGroupLayers = false ) const;
506 void freeze(
bool frozen = true );
515 bool isFrozen() const;
525 bool renderFlag()
const {
return mRenderFlag; }
537 QMap<QString, QString> layerStyleOverrides()
const;
549 void setLayerStyleOverrides(
const QMap<QString, QString> &overrides );
568 void setTheme(
const QString &theme );
574 QString
theme()
const {
return mTheme; }
586 void setWheelFactor(
double factor );
595 void zoomScale(
double scale,
bool ignoreScaleLock =
false );
604 void zoomByFactor(
double scaleFactor,
const QgsPointXY *center =
nullptr,
bool ignoreScaleLock =
false );
607 void zoomWithCenter(
int x,
int y,
bool zoomIn );
622 void enableAntiAliasing(
bool flag );
625 bool antiAliasingEnabled()
const;
628 void enableMapTileRendering(
bool flag );
633 void panActionEnd( QPoint releasePoint );
642 void panActionStart( QPoint releasePoint );
646 void panAction( QMouseEvent *event );
649 QPoint mouseLastXY();
656 void setPreviewModeEnabled(
bool previewEnabled );
664 bool previewModeEnabled()
const;
745 void setSegmentationTolerance(
double tolerance );
762 bool annotationsVisible()
const {
return mAnnotationsVisible; }
768 void setAnnotationsVisible(
bool visible );
787 bool previewJobsEnabled()
const;
796 void setPreviewJobsEnabled(
bool enabled );
803 void setCustomDropHandlers(
const QVector<QPointer<QgsCustomDropHandler >> &handlers )
SIP_SKIP;
876 void refreshAllLayers();
886 void redrawAllLayers();
889 void selectionChangedSlot();
892 void saveAsImage(
const QString &fileName, QPixmap *QPixmap =
nullptr,
const QString & =
"PNG" );
895 void layerStateChange();
904 void setRenderFlag(
bool flag );
909 void stopRendering();
912 void readProject(
const QDomDocument & );
915 void writeProject( QDomDocument & );
924 void setMagnificationFactor(
double factor,
const QgsPointXY *center =
nullptr );
930 void setScaleLocked(
bool isLocked );
942 void zoomToSelected(
QgsMapLayer *layer =
nullptr );
949 void zoomToSelected(
const QList<QgsMapLayer *> &layers );
961 double zoomInFactor()
const;
966 double zoomOutFactor()
const;
997 void mapToolDestroyed();
1000 void rendererJobFinished();
1003 void previewJobFinished();
1005 void mapUpdateTimeout();
1009 void mapThemeChanged(
const QString &theme );
1011 void mapThemeRenamed(
const QString &theme,
const QString &newTheme );
1013 void updateDevicePixelFromScreen();
1015 void onElevationShadingRendererChanged();
1193 bool event( QEvent *e )
override;
1194 void keyPressEvent( QKeyEvent *e )
override;
1195 void keyReleaseEvent( QKeyEvent *e )
override;
1196 void mouseDoubleClickEvent( QMouseEvent *e )
override;
1197 void mouseMoveEvent( QMouseEvent *e )
override;
1198 void mousePressEvent( QMouseEvent *e )
override;
1199 void mouseReleaseEvent( QMouseEvent *e )
override;
1200 void wheelEvent( QWheelEvent *e )
override;
1201 void resizeEvent( QResizeEvent *e )
override;
1202 void paintEvent( QPaintEvent *e )
override;
1203 void dragEnterEvent( QDragEnterEvent *e )
override;
1204 bool viewportEvent( QEvent *event )
override;
1207 void moveCanvasContents(
bool reset =
false );
1209 void dropEvent( QDropEvent *event )
override;
1211 void showEvent( QShowEvent *event )
override;
1218 void emitExtentsChanged();
1232 void connectNotify(
const char *signal )
override;
1237 void updateCanvasItemPositions();
1241 void layerRepaintRequested(
bool deferred );
1243 void autoRefreshTriggered();
1245 void updateAutoRefreshTimer();
1247 void projectThemesChanged();
1249 void startPreviewJob(
int number );
1251 void temporalControllerModeChanged();
1262 mLockedScale = mCanvas->mapSettings().scale();
1267 QgsRectangle newExtent = mCanvas->mapSettings().extent();
1268 newExtent.
scale( mLockedScale / mCanvas->mapSettings().scale() );
1269 mCanvas->mSettings.setExtent( newExtent );
1274 double mLockedScale;
1281 QgsMapCanvasMap *mMap =
nullptr;
1292 bool mFrozen =
false;
1295 bool mRefreshScheduled =
false;
1298 bool mRefreshAfterJob =
false;
1301 bool mRenderFlag =
true;
1304 QPointer< QgsMapLayer > mCurrentLayer;
1307 QGraphicsScene *mScene =
nullptr;
1316 QList <QgsRectangle> mLastExtent;
1317 int mLastExtentIndex = -1;
1320 double mWheelZoomFactor = 2.0;
1323 QTimer mMapUpdateTimer;
1329 bool mJobCanceled =
false;
1332 std::unique_ptr< QgsLabelingResults > mLabelingResults;
1335 bool mLabelingResultsOutdated =
false;
1341 std::unique_ptr< QgsRenderedItemResults > mRenderedItemResults;
1347 std::unique_ptr< QgsRenderedItemResults > mPreviousRenderedItemResults;
1354 bool mRenderedItemResultsOutdated =
false;
1357 bool mUseParallelRendering =
false;
1360 bool mDrawRenderingStats =
false;
1365 QTimer *mResizeTimer =
nullptr;
1366 QTimer *mRefreshTimer =
nullptr;
1374 QList< QgsMapRendererQImageJob * > mPreviewJobs;
1377 bool mScaleLocked =
false;
1385 bool mZoomDragging =
false;
1388 std::unique_ptr< QgsRubberBand > mZoomRubberBand;
1390 QCursor mZoomCursor;
1392 QTimer mAutoRefreshTimer;
1394 QTimer mPreviewTimer;
1395 QMetaObject::Connection mPreviewTimerConnection;
1401 bool mAnnotationsVisible =
true;
1403 bool mUsePreviewJobs =
false;
1405 QHash< QString, int > mLastLayerRenderTime;
1407 QVector<QPointer<QgsCustomDropHandler >> mDropHandlers;
1410 QList<double> mZoomResolutions;
1412 QList< QgsMapCanvasInteractionBlocker * > mInteractionBlockers;
1414 int mBlockItemPositionUpdates = 0;
1415 int mBlockExtentChangedSignal = 0;
1416 int mBlockScaleChangedSignal = 0;
1418 std::unique_ptr< QgsTemporaryCursorOverride > mTemporaryCursorOverride;
1427 QMap <QString, QDateTime> mRendererErrors;
1430 QPointer< QgsAbstract2DMapController > mMapController;
1441 void updateMapSize();
1447 void beginZoomRect( QPoint pos );
1453 void endZoomRect( QPoint pos );
1456 void stopZoomRect();
1482 void setLayersPrivate(
const QList<QgsMapLayer *> &layers );
1484 void startPreviewJobs();
1485 void stopPreviewJobs();
1486 void schedulePreviewJob(
int number );
1491 bool panOperationInProgress();
1493 int nextZoomLevel(
const QList<double> &resolutions,
bool zoomIn =
true )
const;
1499 void clearTemporalCache();
1504 void clearElevationCache();
1514 friend class TestQgsMapCanvas;
The Qgis class provides global constants for use throughout the application.
DistanceUnit
Units of distance.
MessageLevel
Level for messages This will be used both for message log and message bar in application.
@ Info
Information message.
Abstract base class for all 2D map controllers.
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 geometry is the spatial representation of a feature.
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.
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