QGIS/python/gui/qgsrubberband.sip

235 lines
8.0 KiB
Plaintext
Raw Normal View History

class QgsRubberBand: QgsMapCanvasItem
{
%TypeHeaderCode
#include <qgsrubberband.h>
%End
public:
2016-02-14 03:50:23 +01:00
2014-11-21 01:17:21 +01:00
/** Icons */
enum IconType
{
2014-01-27 09:22:24 +01:00
/**
* No icon is used
*/
ICON_NONE,
2014-01-27 09:22:24 +01:00
/**
* A cross is used to highlight points (+)
*/
ICON_CROSS,
2014-01-27 09:22:24 +01:00
/**
* A cross is used to highlight points (x)
*/
ICON_X,
2014-01-27 09:22:24 +01:00
/**
* A box is used to highlight points (□)
*/
ICON_BOX,
2014-01-27 09:22:24 +01:00
/**
* A circle is used to highlight points (○)
*/
ICON_CIRCLE,
2014-01-27 09:22:24 +01:00
/**
* A full box is used to highlight points (■)
*/
ICON_FULL_BOX
};
2014-01-27 09:22:24 +01:00
/**
* Creates a new RubberBand.
* @param mapCanvas The map canvas to draw onto. It's CRS will be used map points onto screen coordinates.
* @param geometryType Defines how the data should be drawn onto the screen. (Use Qgis::Line, Qgis::Polygon or Qgis::Point)
2014-01-27 09:22:24 +01:00
*/
QgsRubberBand( QgsMapCanvas* mapCanvas /TransferThis/, Qgis::GeometryType geometryType = Qgis::Line );
2014-01-27 09:22:24 +01:00
/**
* Creates a new RubberBand.
* @deprecated Use the constructor which takes Qgis::GeometryType as second argument instead
2014-01-27 09:22:24 +01:00
* @param mapCanvas The map canvas to draw onto. It's CRS will be used map points onto screen coordinates.
* @param isPolygon true: draw as (multi-)polygon, false draw as (multi-)linestring
*/
QgsRubberBand( QgsMapCanvas* mapCanvas /TransferThis/, bool isPolygon ) /Deprecated/;
~QgsRubberBand();
2014-01-27 09:22:24 +01:00
/**
* Set the color for the rubberband
* @param color The color used to render this rubberband
*/
void setColor( const QColor & color );
/**
* Set the fill color for the rubberband
* @param color The color used to render this rubberband
* @note Added in 2.6
*/
void setFillColor( const QColor & color );
/**
* Set the border color for the rubberband
* @param color The color used to render this rubberband
* @note Added in 2.6
*/
void setBorderColor( const QColor & color );
2014-01-27 09:22:24 +01:00
/**
* Set the width of the line. Outline width for polygon.
* @param width The width for any lines painted for this rubberband
*/
void setWidth( int width );
2014-01-27 09:22:24 +01:00
/**
* Set the icon type to highlight point geometries.
* @param icon The icon to visualize point geometries
*/
void setIcon( IconType icon );
2014-01-27 09:22:24 +01:00
/**
* Set the size of the point icons
*/
void setIconSize( int iconSize );
2014-01-27 09:22:24 +01:00
/**
2016-02-14 03:50:23 +01:00
* Set the style of the line
*/
void setLineStyle( Qt::PenStyle penStyle );
2014-01-27 09:22:24 +01:00
/**
2016-02-14 03:50:23 +01:00
* Set the style of the brush
*/
void setBrushStyle( Qt::BrushStyle brushStyle );
2014-01-27 09:22:24 +01:00
/**
* Clears all the geometries in this rubberband.
* Sets the representation type according to geometryType.
* @param geometryType Defines how the data should be drawn onto the screen. (Use Qgis::Line, Qgis::Polygon or Qgis::Point)
2014-01-27 09:22:24 +01:00
*/
void reset( Qgis::GeometryType geometryType = Qgis::Line );
2014-01-27 09:22:24 +01:00
/**
* @deprecated Use the reset method which takes Qgis::GeometryType as second argument instead
2014-01-27 09:22:24 +01:00
* Clears all the geometries in this rubberband.
* Sets the representation type according to isPolygon.
* @param isPolygon true: draw as (multi-)polygon, false draw as (multi-)linestring
*/
void reset( bool isPolygon ) /Deprecated/;
2014-01-27 09:22:24 +01:00
/**
* Add a vertex to the rubberband and update canvas.
* The rendering of the vertex depends on the current GeometryType and icon.
* If adding more points consider using update=false for better performance
* @param p The vertex/point to add
* @param doUpdate Should the map canvas be updated immediately?
* @param geometryIndex The index of the feature part (in case of multipart geometries)
*/
void addPoint( const QgsPoint & p, bool doUpdate = true, int geometryIndex = 0 );
/** Ensures that a polygon geometry is closed and that the last vertex equals the
* first vertex.
* @param doUpdate set to true to update the map canvas immediately
* @param geometryIndex index of the feature part (in case of multipart geometries)
* @note added in QGIS 2.16
*/
void closePoints( bool doUpdate = true, int geometryIndex = 0 );
2014-01-27 09:22:24 +01:00
/**
2016-02-14 03:50:23 +01:00
* Remove a vertex from the rubberband and (optionally) update canvas.
* @param index The index of the vertex/point to remove, negative indexes start at end
* @param doUpdate Should the map canvas be updated immediately?
* @param geometryIndex The index of the feature part (in case of multipart geometries)
*/
void removePoint( int index = 0, bool doUpdate = true, int geometryIndex = 0 );
2014-01-27 09:22:24 +01:00
/**
* Removes the last point. Most useful in connection with undo operations
*/
2014-11-21 01:17:21 +01:00
void removeLastPoint( int geometryIndex = 0, bool doUpdate = true );
2014-01-27 09:22:24 +01:00
/**
* Moves the rubber band point specified by index. Note that if the rubber band is
* not used to track the last mouse position, the first point of the rubber band has two vertices
*/
void movePoint( const QgsPoint & p, int geometryIndex = 0 );
2014-01-27 09:22:24 +01:00
/**
* Moves the rubber band point specified by index. Note that if the rubber band is
* not used to track the last mouse position, the first point of the rubber band has two vertices
*/
void movePoint( int index, const QgsPoint& p, int geometryIndex = 0 );
2014-01-27 09:22:24 +01:00
/**
* Returns number of vertices in feature part
* @param geometryIndex The index of the feature part (in case of multipart geometries)
* @return number of vertices
*/
int partSize( int geometryIndex ) const;
/**
* Sets this rubber band to the geometry of an existing feature.
* This is useful for feature highlighting.
* In contrast to {@link addGeometry}, this method does also change the geometry type of the rubberband.
* @param geom the geometry object
* @param layer the layer containing the feature, used for coord transformation to map
* crs. In case of 0 pointer, the coordinates are not going to be transformed.
*/
void setToGeometry( const QgsGeometry& geom, QgsVectorLayer* layer );
2014-01-27 09:22:24 +01:00
/**
* Sets this rubber band to a map canvas rectangle
* @param rect rectangle in canvas coordinates
*/
void setToCanvasRectangle( QRect rect );
2014-01-27 09:22:24 +01:00
/**
* Add the geometry of an existing feature to a rubberband
* This is useful for multi feature highlighting.
* As of 2.0, this method does not change the GeometryType any more. You need to set the GeometryType
* of the rubberband explicitly by calling {@link reset} or {@link setToGeometry} with appropriate arguments.
* {@link setToGeometry} is also to be preferred for backwards-compatibility.
*
* @param geom the geometry object. Will be treated as a collection of vertices.
* @param layer the layer containing the feature, used for coord transformation to map
* crs. In case of 0 pointer, the coordinates are not going to be transformed.
*/
void addGeometry( const QgsGeometry& geom, QgsVectorLayer* layer );
2014-01-27 09:22:24 +01:00
/**
* Adds translation to original coordinates (all in map coordinates)
* @param dx x translation
* @param dy y translation
*/
void setTranslationOffset( double dx, double dy );
2014-01-27 09:22:24 +01:00
/**
* Returns number of geometries
* @return number of geometries
*/
int size() const;
2014-01-27 09:22:24 +01:00
/**
* Returns count of vertices in all lists of mPoint
* @return The total number of vertices
*/
int numberOfVertices() const;
2014-01-27 09:22:24 +01:00
/**
* Return vertex
* @param i The geometry index
* @param j The vertex index within geometry i
*/
const QgsPoint *getPoint( int i, int j = 0 ) const;
2014-01-27 09:22:24 +01:00
/**
* Returns the rubberband as a Geometry.
* @return A geometry object which reflects the current state of the rubberband.
*/
QgsGeometry* asGeometry();
2015-02-03 02:21:52 +01:00
virtual void updatePosition();
protected:
virtual void paint( QPainter* p );
//! recalculates needed rectangle
void updateRect();
};