Skip to content

Commit 2a92bfb

Browse files
committedOct 23, 2017
[Geometry checker] Introduce QgsGeometryCheckerContext
1 parent 31cc65d commit 2a92bfb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+353
-338
lines changed
 

‎src/plugins/geometry_checker/checks/qgsgeometryanglecheck.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@ void QgsGeometryAngleCheck::collectErrors( QList<QgsGeometryCheckError *> &error
2222
QMap<QString, QgsFeatureIds> featureIds = ids.isEmpty() ? allLayerFeatureIds() : ids;
2323
for ( const QString &layerId : featureIds.keys() )
2424
{
25-
if ( !getCompatibility( getFeaturePool( layerId )->getLayer()->geometryType() ) )
25+
QgsFeaturePool *featurePool = mContext->featurePools[ layerId ];
26+
if ( !getCompatibility( featurePool->getLayer()->geometryType() ) )
2627
{
2728
continue;
2829
}
2930
for ( QgsFeatureId featureid : featureIds[layerId] )
3031
{
3132
if ( progressCounter ) progressCounter->fetchAndAddRelaxed( 1 );
3233
QgsFeature feature;
33-
if ( !getFeaturePool( layerId )->get( featureid, feature ) )
34+
if ( !featurePool->get( featureid, feature ) )
3435
{
3536
continue;
3637
}
@@ -77,8 +78,9 @@ void QgsGeometryAngleCheck::collectErrors( QList<QgsGeometryCheckError *> &error
7778

7879
void QgsGeometryAngleCheck::fixError( QgsGeometryCheckError *error, int method, const QMap<QString, int> & /*mergeAttributeIndices*/, Changes &changes ) const
7980
{
81+
QgsFeaturePool *featurePool = mContext->featurePools[ error->layerId() ];
8082
QgsFeature feature;
81-
if ( !getFeaturePool( error->layerId() )->get( error->featureId(), feature ) )
83+
if ( !featurePool->get( error->featureId(), feature ) )
8284
{
8385
error->setObsolete();
8486
return;
@@ -140,14 +142,14 @@ void QgsGeometryAngleCheck::fixError( QgsGeometryCheckError *error, int method,
140142
else
141143
{
142144
changes[error->layerId()][error->featureId()].append( Change( ChangeNode, ChangeRemoved, vidx ) );
143-
if ( QgsGeometryUtils::sqrDistance2D( p1, p3 ) < QgsGeometryCheckPrecision::tolerance() * QgsGeometryCheckPrecision::tolerance()
144-
&& QgsGeometryCheckerUtils::canDeleteVertex( geometry, vidx.part, vidx.ring ) &&
145+
if ( QgsGeometryUtils::sqrDistance2D( p1, p3 ) < mContext->tolerance &&
146+
QgsGeometryCheckerUtils::canDeleteVertex( geometry, vidx.part, vidx.ring ) &&
145147
geometry->deleteVertex( error->vidx() ) ) // error->vidx points to p3 after removing p2
146148
{
147149
changes[error->layerId()][error->featureId()].append( Change( ChangeNode, ChangeRemoved, QgsVertexId( vidx.part, vidx.ring, ( vidx.vertex + 1 ) % n ) ) );
148150
}
149151
feature.setGeometry( g );
150-
getFeaturePool( error->layerId() )->updateFeature( feature );
152+
featurePool->updateFeature( feature );
151153
error->setFixed( method );
152154
}
153155
}

‎src/plugins/geometry_checker/checks/qgsgeometryanglecheck.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class QgsGeometryAngleCheck : public QgsGeometryCheck
2323
Q_OBJECT
2424

2525
public:
26-
QgsGeometryAngleCheck( const QMap<QString, QgsFeaturePool *> &featurePools, double minAngle )
27-
: QgsGeometryCheck( FeatureNodeCheck, {QgsWkbTypes::LineGeometry, QgsWkbTypes::PolygonGeometry}, featurePools )
26+
QgsGeometryAngleCheck( QgsGeometryCheckerContext *context, double minAngle )
27+
: QgsGeometryCheck( FeatureNodeCheck, {QgsWkbTypes::LineGeometry, QgsWkbTypes::PolygonGeometry}, context )
2828
, mMinAngle( minAngle )
2929
{}
3030
void collectErrors( QList<QgsGeometryCheckError *> &errors, QStringList &messages, QAtomicInt *progressCounter = nullptr, const QMap<QString, QgsFeatureIds> &ids = QMap<QString, QgsFeatureIds>() ) const override;

0 commit comments

Comments
 (0)
Please sign in to comment.