/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/gui/qgsgeometryrubberband.h                                      *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/





%ModuleHeaderCode
// For ConvertToSubClassCode.
#include <qgsgeometryrubberband.h>
%End


class QgsGeometryRubberBand : QgsMapCanvasItem
{
%Docstring(signature="appended")
A rubberband class for :py:class:`QgsAbstractGeometry` (considering
curved geometries).
%End

%TypeHeaderCode
#include "qgsgeometryrubberband.h"
%End
%ConvertToSubClassCode
    if ( dynamic_cast<QgsGeometryRubberBand *>( sipCpp ) )
      sipType = sipType_QgsGeometryRubberBand;
    else
      sipType = nullptr;
%End
  public:
    enum IconType /BaseType=IntEnum/
    {

      ICON_NONE,

      ICON_CROSS,

      ICON_X,

      ICON_BOX,

      ICON_CIRCLE,

      ICON_FULL_BOX
    };

    QgsGeometryRubberBand( QgsMapCanvas *mapCanvas, Qgis::GeometryType geomType = Qgis::GeometryType::Line );
%Docstring
Constructor for QgsGeometryRubberBand of the given ``geomType``, shown
in the specified ``mapCanvas``.
%End
    ~QgsGeometryRubberBand();

    virtual void setGeometry( QgsAbstractGeometry *geom /Transfer/ );
%Docstring
Sets geometry (takes ownership). Geometry is expected to be in map
coordinates
%End
    const QgsAbstractGeometry *geometry();
%Docstring
Returns a pointer to the geometry
%End
    void moveVertex( QgsVertexId id, const QgsPoint &newPos );
%Docstring
Moves vertex to new position (in map coordinates)
%End
    void setFillColor( const QColor &c );
%Docstring
Sets fill color for vertex markers
%End
    void setStrokeColor( const QColor &c );
%Docstring
Sets stroke color for vertex markers
%End
    void setStrokeWidth( int width );
%Docstring
Sets stroke width
%End
    void setLineStyle( Qt::PenStyle penStyle );
%Docstring
Sets pen style
%End
    void setBrushStyle( Qt::BrushStyle brushStyle );
%Docstring
Sets brush style
%End
    void setIconType( IconType iconType );
%Docstring
Sets vertex marker icon type
%End
    void setVertexDrawingEnabled( bool isVerticesDrawn );
%Docstring
Sets whether the vertices are drawn
%End
    virtual void updatePosition();


  protected:
    virtual void paint( QPainter *painter );


    Qgis::GeometryType geometryType() const;
%Docstring
Returns which geometry is handled by the rubber band, polygon or line
%End

    void setGeometryType( Qgis::GeometryType geometryType );
%Docstring
Sets which geometry is handled by the rubber band, polygon or line
%End

};


/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/gui/qgsgeometryrubberband.h                                      *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/
