1 /***************************************************************************
2     qgsgeometrysegmentlengthcheck.h
3     ---------------------
4     begin                : September 2015
5     copyright            : (C) 2014 by Sandro Mani / Sourcepole AG
6     email                : smani at sourcepole dot 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 #define SIP_NO_FILE
17 
18 #ifndef QGS_GEOMETRY_SEGMENTLENGTH_CHECK_H
19 #define QGS_GEOMETRY_SEGMENTLENGTH_CHECK_H
20 
21 #include "qgsgeometrycheck.h"
22 
23 /**
24  * \ingroup analysis
25  * \brief A segment length check.
26  */
27 class ANALYSIS_EXPORT QgsGeometrySegmentLengthCheck : public QgsGeometryCheck
28 {
Q_DECLARE_TR_FUNCTIONS(QgsGeometrySegmentLengthCheck)29     Q_DECLARE_TR_FUNCTIONS( QgsGeometrySegmentLengthCheck )
30   public:
31     QgsGeometrySegmentLengthCheck( QgsGeometryCheckContext *context, const QVariantMap &configuration )
32       : QgsGeometryCheck( context, configuration )
33       , mMinLengthMapUnits( configuration.value( "minSegmentLength" ).toDouble() )
34     {}
factoryCompatibleGeometryTypes()35     static QList<QgsWkbTypes::GeometryType> factoryCompatibleGeometryTypes() {return {QgsWkbTypes::LineGeometry, QgsWkbTypes::PolygonGeometry}; }
factoryIsCompatible(QgsVectorLayer * layer)36     static bool factoryIsCompatible( QgsVectorLayer *layer ) SIP_SKIP { return factoryCompatibleGeometryTypes().contains( layer->geometryType() ); }
compatibleGeometryTypes()37     QList<QgsWkbTypes::GeometryType> compatibleGeometryTypes() const override { return factoryCompatibleGeometryTypes(); }
38     void collectErrors( const QMap<QString, QgsFeaturePool *> &featurePools, QList<QgsGeometryCheckError *> &errors, QStringList &messages, QgsFeedback *feedback, const LayerFeatureIds &ids = LayerFeatureIds() ) const override;
39     void fixError( const QMap<QString, QgsFeaturePool *> &featurePools, QgsGeometryCheckError *error, int method, const QMap<QString, int> &mergeAttributeIndices, Changes &changes ) const override;
40     Q_DECL_DEPRECATED QStringList resolutionMethods() const override;
factoryDescription()41     static QString factoryDescription() { return tr( "Minimal segment length" ); }
description()42     QString description() const override { return factoryDescription(); }
factoryId()43     static QString factoryId() { return QStringLiteral( "QgsGeometrySegmentLengthCheck" ); }
id()44     QString id() const override { return factoryId(); }
checkType()45     QgsGeometryCheck::CheckType checkType() const override { return factoryCheckType(); }
46     static QgsGeometryCheck::CheckType factoryCheckType() SIP_SKIP;
47 
48     enum ResolutionMethod { NoChange };
49 
50   private:
51     double mMinLengthMapUnits;
52 };
53 
54 #endif // QGS_GEOMETRY_SEGMENTLENGTH_CHECK_H
55