Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsgraphdirector.h 3 : : -------------------------------------- 4 : : Date : 2010-10-18 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 QGSGRAPHDIRECTOR_H 17 : : #define QGSGRAPHDIRECTOR_H 18 : : 19 : : #include <QObject> 20 : : #include <QVector> 21 : : #include <QList> 22 : : 23 : : #include "qgis_sip.h" 24 : : #include "qgsfeedback.h" 25 : : #include "qgsnetworkstrategy.h" 26 : : #include "qgis_analysis.h" 27 : : 28 : : class QgsGraphBuilderInterface; 29 : : class QgsPoint; 30 : : 31 : : #ifdef SIP_RUN 32 : : % ModuleHeaderCode 33 : : #include <qgsvectorlayerdirector.h> 34 : : % End 35 : : #endif 36 : : 37 : : /** 38 : : * \ingroup analysis 39 : : * \class QgsGraphDirector 40 : : * \brief Determine making the graph. QgsGraphBuilder and QgsGraphDirector implemented 41 : : * using "builder" design patter. 42 : : */ 43 : 0 : class ANALYSIS_EXPORT QgsGraphDirector : public QObject 44 : : { 45 : : 46 : : #ifdef SIP_RUN 47 : : SIP_CONVERT_TO_SUBCLASS_CODE 48 : : if ( dynamic_cast< QgsVectorLayerDirector * >( sipCpp ) != NULL ) 49 : : sipType = sipType_QgsVectorLayerDirector; 50 : : else 51 : : sipType = NULL; 52 : : SIP_END 53 : : #endif 54 : : 55 : : Q_OBJECT 56 : : 57 : : public: 58 : : 59 : 0 : ~QgsGraphDirector() override 60 : 0 : { 61 : 0 : qDeleteAll( mStrategies ); 62 : 0 : } 63 : : 64 : : /** 65 : : * Make a graph using QgsGraphBuilder 66 : : * 67 : : * \param builder the graph builder 68 : : * \param additionalPoints list of points that should be snapped to the graph 69 : : * \param snappedPoints list of snapped points 70 : : * \param feedback feedback object for reporting progress 71 : : * \note if snappedPoints[i] == QgsPointXY(0.0,0.0) then snapping failed. 72 : : */ 73 : 0 : virtual void makeGraph( QgsGraphBuilderInterface *builder, 74 : : const QVector< QgsPointXY > &additionalPoints, 75 : : QVector< QgsPointXY > &snappedPoints SIP_OUT, 76 : : QgsFeedback *feedback = nullptr ) const 77 : : { 78 : : Q_UNUSED( builder ) 79 : 0 : Q_UNUSED( additionalPoints ) 80 : 0 : Q_UNUSED( snappedPoints ) 81 : : Q_UNUSED( feedback ) 82 : 0 : } 83 : : 84 : : //! Add optimization strategy 85 : 0 : void addStrategy( QgsNetworkStrategy *prop SIP_TRANSFER ) 86 : : { 87 : 0 : mStrategies.push_back( prop ); 88 : 0 : } 89 : : 90 : : //! Returns director name 91 : : virtual QString name() const = 0; 92 : : 93 : : protected: 94 : : QList<QgsNetworkStrategy *> mStrategies; 95 : : }; 96 : : 97 : : #endif // QGSGRAPHDIRECTOR_H