/*************************************************************************** qgsmapoverviewcanvas.h Map canvas subclassed for overview ------------------- begin : 09/14/2005 copyright : (C) 2005 by Martin Dobias email : won.der at centrum.sk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef QGSMAPOVERVIEWCANVAS_H #define QGSMAPOVERVIEWCANVAS_H #include #include #include #include #include class QgsMapCanvas; class QgsPanningWidget; // defined in .cpp class QgsRectangle; class QgsMapRendererQImageJob; #include "qgsmapsettings.h" #include "qgis_gui.h" /** * \ingroup gui * A widget that displays an overview map. */ class GUI_EXPORT QgsMapOverviewCanvas : public QWidget { Q_OBJECT public: QgsMapOverviewCanvas( QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsMapCanvas *mapCanvas = nullptr ); //! renders overview and updates panning widget void refresh(); //! changes background color void setBackgroundColor( const QColor &color ); //! updates layer set for overview void setLayers( const QList &layers ); //! Returns list of layers visible in the overview QList layers() const; void enableAntiAliasing( bool flag ) { mSettings.setFlag( QgsMapSettings::Antialiasing, flag ); } void updateFullExtent(); protected slots: void mapRenderingFinished(); /** * Triggered when a layer in the overview requests a repaint. */ void layerRepaintRequested( bool deferred = false ); protected: //! used for overview canvas to reflect changed extent in main map canvas void drawExtentRect(); //! Should be called when the canvas destination CRS is changed void destinationCrsChanged(); //! Called when the canvas transform context is changed void transformContextChanged(); //! Overridden paint event void paintEvent( QPaintEvent *pe ) override; //! Overridden show event void showEvent( QShowEvent *e ) override; //! Overridden resize event void resizeEvent( QResizeEvent *e ) override; //! Overridden mouse move event void mouseMoveEvent( QMouseEvent *e ) override; //! Overridden mouse press event void mousePressEvent( QMouseEvent *e ) override; //! Overridden mouse release event void mouseReleaseEvent( QMouseEvent *e ) override; //! called when panning to reflect mouse movement void updatePanningWidget( QPoint pos ); //! widget for panning map in overview QgsPanningWidget *mPanningWidget = nullptr; //! position of cursor inside panning widget QPoint mPanningCursorOffset; //! main map canvas - used to get/set extent QgsMapCanvas *mMapCanvas = nullptr; //! pixmap where the map is stored QPixmap mPixmap; //! map settings used for rendering of the overview map QgsMapSettings mSettings; //! for rendering overview QgsMapRendererQImageJob *mJob = nullptr; }; #ifndef SIP_RUN /// @cond PRIVATE // Widget that serves as rectangle showing current extent in overview class QgsPanningWidget : public QWidget { Q_OBJECT QPolygon mPoly; public: explicit QgsPanningWidget( QWidget *parent ); void setPolygon( const QPolygon &p ); void paintEvent( QPaintEvent *pe ) override; }; ///@endcond #endif #endif