Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsgraphbuilderinterface.h 3 : : -------------------------------------- 4 : : Date : 2010-10-22 5 : : Copyright : (C) 2010 by Yakushev Sergey 6 : : Email : YakushevS <at> list.ru 7 : : **************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #ifndef QGSGRAPHBUILDERINTERFACE_H 17 : : #define QGSGRAPHBUILDERINTERFACE_H 18 : : 19 : : #include <QVector> 20 : : #include <QVariant> 21 : : 22 : : #include "qgscoordinatereferencesystem.h" 23 : : #include "qgsdistancearea.h" 24 : : #include "qgis_analysis.h" 25 : : 26 : : class QgsPoint; 27 : : 28 : : #ifdef SIP_RUN 29 : : % ModuleHeaderCode 30 : : #include <qgsgraphbuilder.h> 31 : : % End 32 : : #endif 33 : : 34 : : /** 35 : : * \ingroup analysis 36 : : * \class QgsGraphBuilderInterface 37 : : * \brief Determine interface for creating a graph. Contains the settings of the graph. 38 : : * QgsGraphBuilder and QgsGraphDirector both use a "builder" design pattern 39 : : */ 40 : : class ANALYSIS_EXPORT QgsGraphBuilderInterface 41 : : { 42 : : 43 : : #ifdef SIP_RUN 44 : : SIP_CONVERT_TO_SUBCLASS_CODE 45 : : if ( dynamic_cast< QgsGraphBuilder * >( sipCpp ) != NULL ) 46 : : sipType = sipType_QgsGraphBuilder; 47 : : else 48 : : sipType = NULL; 49 : : SIP_END 50 : : #endif 51 : : 52 : : public: 53 : : 54 : : /** 55 : : * Default constructor 56 : : * \param crs Coordinate reference system for new graph vertex 57 : : * \param ctfEnabled enable coordinate transform from source graph CRS to CRS graph 58 : : * \param topologyTolerance sqrt distance between source point as one graph vertex 59 : : * \param ellipsoidID ellipsoid for edge measurement 60 : : */ 61 : : QgsGraphBuilderInterface( const QgsCoordinateReferenceSystem &crs, bool ctfEnabled = true, 62 : : double topologyTolerance = 0.0, const QString &ellipsoidID = "WGS84" ); 63 : : 64 : 0 : virtual ~QgsGraphBuilderInterface() = default; 65 : : 66 : : //! Returns destinaltion CRS 67 : 0 : QgsCoordinateReferenceSystem destinationCrs() const 68 : : { 69 : 0 : return mCrs; 70 : : } 71 : : 72 : : //! Returns coordinate transformation enabled 73 : 0 : bool coordinateTransformationEnabled() 74 : : { 75 : 0 : return mCtfEnabled; 76 : : } 77 : : 78 : : //! Returns topology tolerance 79 : 0 : double topologyTolerance() 80 : : { 81 : 0 : return mTopologyTolerance; 82 : : } 83 : : 84 : : //! Returns measurement tool 85 : 0 : QgsDistanceArea *distanceArea() 86 : : { 87 : 0 : return &mDa; 88 : : } 89 : : 90 : : /** 91 : : * Add vertex to the graph 92 : : * \param id vertex identifier 93 : : * \param pt vertex coordinates 94 : : * \note id and pt are redundant. You can use pt or id to identify the vertex 95 : : */ 96 : : virtual void addVertex( int id, const QgsPointXY &pt ); 97 : : 98 : : /** 99 : : * Add edge to the graph 100 : : * \param pt1id first vertex identificator 101 : : * \param pt1 first vertex coordinates 102 : : * \param pt2id second vertex identificator 103 : : * \param pt2 second vertex coordinates 104 : : * \param strategies optimization strategies 105 : : * \note pt1id, pt1 and pt2id, pt2 is a redundant interface. You can use vertex coordinates or their identificators. 106 : : */ 107 : : virtual void addEdge( int pt1id, const QgsPointXY &pt1, int pt2id, const QgsPointXY &pt2, const QVector< QVariant > &strategies ); 108 : : 109 : : private: 110 : : QgsCoordinateReferenceSystem mCrs; 111 : : 112 : : QgsDistanceArea mDa; 113 : : 114 : : bool mCtfEnabled; 115 : : 116 : : double mTopologyTolerance; 117 : : 118 : : }; 119 : : 120 : : // clazy:excludeall=qstring-allocations 121 : : 122 : : #endif // QGSGRAPHBUILDERINTERFACE_H