Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsgeometrycheckfactory.h 3 : : -------------------------------------- 4 : : Date : September 2018 5 : : Copyright : (C) 2018 Matthias Kuhn 6 : : Email : matthias@opengis.ch 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 QGSGEOMETRYCHECKFACTORY_H 17 : : #define QGSGEOMETRYCHECKFACTORY_H 18 : : 19 : : #include <QString> 20 : : #include <QMap> 21 : : #include <QVariantMap> 22 : : 23 : : #include "qgsgeometrycheck.h" 24 : : #include "qgis_sip.h" 25 : : #include "qgis_analysis.h" 26 : : 27 : : #include "qgsgeometryselfintersectioncheck.h" 28 : : #include "qgssinglegeometrycheck.h" 29 : : 30 : : class QgsGeometryCheck; 31 : : class QgsSingleGeometryCheck; 32 : : 33 : : class QgsGeometryCheckContext; 34 : : 35 : : /** 36 : : * \ingroup analysis 37 : : * 38 : : * \brief A factory for geometry checks. 39 : : * 40 : : * \note This class is a technology preview and unstable API. 41 : : * \since QGIS 3.4 42 : : */ 43 : 0 : class ANALYSIS_EXPORT QgsGeometryCheckFactory SIP_ABSTRACT 44 : : { 45 : : public: 46 : : 47 : : /** 48 : : * Destructor 49 : : * 50 : : * Deletes all the registered checks 51 : : */ 52 : 0 : virtual ~QgsGeometryCheckFactory() = default; 53 : : 54 : : /** 55 : : * Creates a new geometry check with \a context and \a configuration. 56 : : */ 57 : : virtual QgsGeometryCheck *createGeometryCheck( const QgsGeometryCheckContext *context, const QVariantMap &configuration ) const = 0 SIP_FACTORY; 58 : : 59 : : /** 60 : : * The unique id for this geometry check. 61 : : */ 62 : : virtual QString id() const = 0; 63 : : 64 : : /** 65 : : * A human readable description for this check. 66 : : */ 67 : : virtual QString description() const = 0; 68 : : 69 : : /** 70 : : * Checks if this check should be made available for \a layer. 71 : : */ 72 : : virtual bool isCompatible( QgsVectorLayer *layer ) const = 0; 73 : : 74 : : /** 75 : : * Flags for this check. 76 : : */ 77 : : virtual QgsGeometryCheck::Flags flags() const = 0; 78 : : 79 : : /** 80 : : * The type of this check. 81 : : */ 82 : : virtual QgsGeometryCheck::CheckType checkType() const = 0; 83 : : }; 84 : : 85 : : /** 86 : : * \ingroup analysis 87 : : * \brief Template to create a factory for a geometry check. 88 : : * 89 : : * \note Not available in Python bindings. 90 : : */ 91 : : template<class T> 92 : 0 : class QgsGeometryCheckFactoryT : public QgsGeometryCheckFactory 93 : : { 94 : : public: 95 : 0 : QgsGeometryCheck *createGeometryCheck( const QgsGeometryCheckContext *context, const QVariantMap &configuration ) const override 96 : : { 97 : 0 : return new T( context, configuration ); 98 : 0 : } 99 : : 100 : 0 : QString description() const override 101 : : { 102 : 0 : return T::factoryDescription(); 103 : : } 104 : : 105 : 0 : QString id() const override 106 : : { 107 : 0 : return T::factoryId(); 108 : : } 109 : : 110 : 0 : bool isCompatible( QgsVectorLayer *layer ) const override 111 : : { 112 : 0 : return T::factoryIsCompatible( layer ); 113 : : } 114 : : 115 : 0 : QgsGeometryCheck::Flags flags() const override 116 : : { 117 : 0 : return T::factoryFlags(); 118 : : } 119 : : 120 : 0 : QgsGeometryCheck::CheckType checkType() const override 121 : : { 122 : 0 : return T::factoryCheckType(); 123 : : } 124 : : }; 125 : : 126 : : 127 : : #endif // QGSGEOMETRYCHECKFACTORY_H