/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/analysis/network/qgsgraphbuilderinterface.h                      *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 ************************************************************************/




%ModuleHeaderCode
#include <qgsgraphbuilder.h>
%End

class QgsGraphBuilderInterface
{
%Docstring
 Determine interface for creating a graph. Contains the settings of the graph.
QgsGraphBuilder and QgsGraphDirector both use a "builder" design pattern
%End

%TypeHeaderCode
#include "qgsgraphbuilderinterface.h"
%End
%ConvertToSubClassCode
    if ( dynamic_cast< QgsGraphBuilder * >( sipCpp ) != NULL )
      sipType = sipType_QgsGraphBuilder;
    else
      sipType = NULL;
%End
  public:

    QgsGraphBuilderInterface( const QgsCoordinateReferenceSystem &crs, bool ctfEnabled = true, double topologyTolerance = 0.0, const QString &ellipsoidID = "WGS84" );
%Docstring
Default constructor

:param crs: Coordinate reference system for new graph vertex
:param ctfEnabled: enable coordinate transform from source graph CRS to CRS graph
:param topologyTolerance: sqrt distance between source point as one graph vertex
:param ellipsoidID: ellipsoid for edge measurement
%End

    virtual ~QgsGraphBuilderInterface();

    QgsCoordinateReferenceSystem destinationCrs() const;
%Docstring
Returns destinaltion CRS
%End

    bool coordinateTransformationEnabled();
%Docstring
Returns coordinate transformation enabled
%End

    double topologyTolerance();
%Docstring
Returns topology tolerance
%End

    QgsDistanceArea *distanceArea();
%Docstring
Returns measurement tool
%End

    virtual void addVertex( int id, const QgsPointXY &pt );
%Docstring
Add vertex to the graph

:param id: vertex identifier
:param pt: vertex coordinates

.. note::

   id and pt are redundant. You can use pt or id to identify the vertex
%End

    virtual void addEdge( int pt1id, const QgsPointXY &pt1, int pt2id, const QgsPointXY &pt2, const QVector< QVariant > &strategies );
%Docstring
Add edge to the graph

:param pt1id: first vertex identificator
:param pt1:   first vertex coordinates
:param pt2id: second vertex identificator
:param pt2:   second vertex coordinates
:param strategies: optimization strategies

.. note::

   pt1id, pt1 and pt2id, pt2 is a redundant interface. You can use vertex coordinates or their identificators.
%End

};


/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/analysis/network/qgsgraphbuilderinterface.h                      *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 ************************************************************************/