/** \class QgsMapCanvasLayer \brief class that stores additional layer's flags together with pointer to the layer */ class QgsMapCanvasLayer { %TypeHeaderCode #include %End public: QgsMapCanvasLayer(QgsMapLayer* layer, bool visible = TRUE, bool inOverview = FALSE); void setVisible(bool visible); void setInOverview(bool inOverview); bool visible() const; bool inOverview() const; QgsMapLayer* layer(); //const QgsMapLayer* layer() const; }; /*! \class QgsMapCanvas * \brief Map canvas class for displaying all GIS data types. */ class QgsMapCanvas : QGraphicsView { %TypeHeaderCode #include %End %ConvertToSubClassCode if (dynamic_cast(sipCpp) != NULL) sipClass = sipClass_QgsMapCanvas; else sipClass = NULL; %End public: enum WheelAction { WheelZoom, WheelZoomAndRecenter, WheelNothing }; //! Constructor QgsMapCanvas(QWidget * parent /TransferThis/ = 0, const char *name = 0); //! Destructor ~QgsMapCanvas(); void setLayerSet(QList& layers); void setCurrentLayer(QgsMapLayer* layer); void updateOverview(); void setOverview(QgsMapOverviewCanvas* overview); QgsMapCanvasMap* map(); QgsMapRender* mapRender(); //! Accessor for the canvas pixmap QPixmap& canvasPixmap(); //! Get the last reported scale of the canvas double getScale(); //! Clear the map canvas void clear(); //! Returns the mupp (map units per pixel) for the canvas double mupp() const; //! Returns the current zoom exent of the map canvas QgsRect extent() const; //! Returns the combined exent for all layers on the map canvas QgsRect fullExtent() const; //! Set the extent of the map canvas void setExtent(const QgsRect & r); //! Zoom to the full extent of all layers void zoomFullExtent(); //! Zoom to the previous extent (view) void zoomPreviousExtent(); /**Zooms to the extend of the selected features*/ void zoomToSelected(); /** \brief Sets the map tool currently being used on the canvas */ void setMapTool(QgsMapTool* mapTool); /** \brief Unset the current mapset tool or last non zoom tool if * it the same as passed map tool pointer. The tool is not * referenced/used any more, but the instance is not deleted * by this method. */ void unsetMapTool(QgsMapTool* mapTool); /**Returns the currently active tool*/ QgsMapTool* mapTool(); /** Write property of QColor bgColor. */ virtual void setCanvasColor(const QColor & _newVal); /** Emits signal scalChanged to update scale in main window */ void updateScale(); /** Updates the full extent */ void updateFullExtent(); //! return the map layer at postion index in the layer stack QgsMapLayer *getZpos(int index); //! return number of layers on the map int layerCount() const; /*! Freeze/thaw the map canvas. This is used to prevent the canvas from * responding to events while layers are being added/removed etc. * @param frz Boolean specifying if the canvas should be frozen (true) or * thawed (false). Default is true. */ void freeze(bool frz = true); /*! Accessor for frozen status of canvas */ bool isFrozen(); //! Flag the canvas as dirty and needed a refresh void setDirty(bool _dirty); //! Return the state of the canvas (dirty or not) bool isDirty() const; //! Set map units (needed by project properties dialog) void setMapUnits(QGis::units mapUnits); //! Get the current canvas map units QGis::units mapUnits() const; //! Get the current coordinate transform QgsMapToPixel * getCoordinateTransform(); //! true if canvas currently drawing bool isDrawing(); //! returns current layer (set by legend widget) QgsMapLayer* currentLayer(); //! set wheel action and zoom factor (should be greater than 1) void setWheelAction(WheelAction action, double factor = 2); //! Zooms in/out preserving void zoom(bool zoomIn); //! Zooms in/out with a given center void zoomWithCenter(int x, int y, bool zoomIn); //! used to determine if anti-aliasing is enabled or not void enableAntiAliasing(bool theFlag); //! Select which Qt class to render with void useQImageToRender(bool theFlag); // following 2 methods should be moved elsewhere or changed to private // currently used by pan map tool //! Ends pan action and redraws the canvas. void panActionEnd(QPoint releasePoint); //! Called when mouse is moving and pan is activated void panAction(QMouseEvent * event); //! returns last position of mouse cursor QPoint mouseLastXY(); public slots: /**Sets dirty=true and calls render()*/ void refresh(); virtual void render(); //! Save the convtents of the map canvas to disk as an image void saveAsImage(QString theFileName,QPixmap * QPixmap=0, QString="PNG" ); //! This slot is connected to the visibility change of one or more layers void layerStateChange(); //! Whether to suppress rendering or not void setRenderFlag(bool theFlag); //! State of render suppression flag bool renderFlag(); /** A simple helper method to find out if on the fly projections are enabled or not */ bool projectionsEnabled(); /** The map units may have changed, so cope with that */ void mapUnitsChanged(); /** updates pixmap on render progress */ void updateMap(); //! show whatever error is exposed by the QgsMapLayer. void showError(QgsMapLayer * mapLayer); //! called to read map canvas settings from project void readProject(const QDomDocument &); //! called to write map canvas settings to project void writeProject(QDomDocument &); signals: /** Let the owner know how far we are with render operations */ void setProgress(int,int); /** emits current mouse position */ void xyCoordinates(QgsPoint & p); //! Emitted when the scale of the map changes void scaleChanged(QString); //! Emitted when the extents of the map change void extentsChanged(); /** Emitted when the canvas has rendered. Passes a pointer to the painter on which the map was drawn. This is useful for plugins that wish to draw on the map after it has been rendered. Passing the painter allows plugins to work when the map is being rendered onto a pixmap other than the mapCanvas own pixmap member. */ void renderComplete(QPainter *); //! Emitted when a new set of layers has been received void layersChanged(); //! Emit key press event void keyPressed(QKeyEvent * e); //! Emit key release event void keyReleased(QKeyEvent * e); protected: //! Overridden key press event void keyPressEvent(QKeyEvent * e); //! Overridden key release event void keyReleaseEvent(QKeyEvent * e); //! Overridden mouse move event void mouseMoveEvent(QMouseEvent * e); //! Overridden mouse press event void mousePressEvent(QMouseEvent * e); //! Overridden mouse release event void mouseReleaseEvent(QMouseEvent * e); //! Overridden mouse wheel event void wheelEvent(QWheelEvent * e); //! Overridden resize event void resizeEvent(QResizeEvent * e); //! called when panning is in action, reset indicates end of panning void moveCanvasContents(bool reset = FALSE); //! called on resize or changed extent to notify canvas items to change their rectangle void updateCanvasItemsPositions(); }; // class QgsMapCanvas