@@ -757,6 +757,20 @@ void QgsVectorLayer::setExtent( const QgsRectangle &r )
757
757
mValidExtent = true ;
758
758
}
759
759
760
+ void QgsVectorLayer::applyGeometryFixes ( QgsGeometry &geom ) const
761
+ {
762
+ if ( mGeometryOptions .geometryPrecision != 0.0 )
763
+ geom = geom.snappedToGrid ( mGeometryOptions .geometryPrecision , mGeometryOptions .geometryPrecision );
764
+
765
+ if ( mGeometryOptions .removeDuplicateNodes )
766
+ geom.removeDuplicateNodes ();
767
+ }
768
+
769
+ bool QgsVectorLayer::geometryFixesEnabled () const
770
+ {
771
+ return mGeometryOptions .geometryPrecision != 0.0 || mGeometryOptions .removeDuplicateNodes ;
772
+ }
773
+
760
774
void QgsVectorLayer::updateDefaultValues ( QgsFeatureId fid, QgsFeature feature )
761
775
{
762
776
if ( !mDefaultValueOnUpdateFields .isEmpty () )
@@ -945,16 +959,10 @@ bool QgsVectorLayer::addFeature( QgsFeature &feature, Flags )
945
959
return false ;
946
960
947
961
948
- if ( mGeometryOptions . geometryPrecision != 0.0 || mGeometryOptions . removeDuplicateNodes )
962
+ if ( geometryFixesEnabled () )
949
963
{
950
964
QgsGeometry geom = feature.geometry ();
951
-
952
- if ( mGeometryOptions .geometryPrecision != 0.0 )
953
- geom = geom.snappedToGrid ( mGeometryOptions .geometryPrecision , mGeometryOptions .geometryPrecision );
954
-
955
- if ( mGeometryOptions .removeDuplicateNodes )
956
- geom.removeDuplicateNodes ();
957
-
965
+ applyGeometryFixes ( geom );
958
966
feature.setGeometry ( geom );
959
967
}
960
968
@@ -2518,11 +2526,7 @@ bool QgsVectorLayer::changeGeometry( QgsFeatureId fid, QgsGeometry &geom, bool s
2518
2526
return false ;
2519
2527
}
2520
2528
2521
- if ( mGeometryOptions .geometryPrecision != 0.0 )
2522
- geom = geom.snappedToGrid ( mGeometryOptions .geometryPrecision , mGeometryOptions .geometryPrecision );
2523
-
2524
- if ( mGeometryOptions .removeDuplicateNodes )
2525
- geom.removeDuplicateNodes ();
2529
+ applyGeometryFixes ( geom );
2526
2530
2527
2531
updateExtents ();
2528
2532
@@ -2992,18 +2996,12 @@ bool QgsVectorLayer::addFeatures( QgsFeatureList &features, Flags )
2992
2996
if ( !mEditBuffer || !mDataProvider )
2993
2997
return false ;
2994
2998
2995
- if ( mGeometryOptions . geometryPrecision != 0.0 || mGeometryOptions . removeDuplicateNodes )
2999
+ if ( geometryFixesEnabled () )
2996
3000
{
2997
3001
for ( auto feature = features.begin (); feature != features.end (); ++feature )
2998
3002
{
2999
3003
QgsGeometry geom = feature->geometry ();
3000
-
3001
- if ( mGeometryOptions .geometryPrecision != 0.0 )
3002
- geom = geom.snappedToGrid ( mGeometryOptions .geometryPrecision , mGeometryOptions .geometryPrecision );
3003
-
3004
- if ( mGeometryOptions .removeDuplicateNodes )
3005
- geom.removeDuplicateNodes ();
3006
-
3004
+ applyGeometryFixes ( geom );
3007
3005
feature->setGeometry ( geom );
3008
3006
}
3009
3007
}
0 commit comments