Skip to content

Commit

Permalink
Merge pull request #51589 from 3nids/settings-simplify-alg
Browse files Browse the repository at this point in the history
migrate simplify methods settings
  • Loading branch information
3nids committed Jan 27, 2023
2 parents 69cb0bb + 91e94e0 commit da29df8
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 21 deletions.
3 changes: 3 additions & 0 deletions python/core/auto_generated/vector/qgsvectorlayer.sip.in
Expand Up @@ -14,6 +14,7 @@




typedef QList<int> QgsAttributeList;
typedef QSet<int> QgsAttributeIds;

Expand Down Expand Up @@ -339,6 +340,8 @@ Provider to display vector data in a GRASS GIS layer.
%End
public:



struct LayerOptions
{

Expand Down
19 changes: 9 additions & 10 deletions src/app/options/qgsvectorrenderingoptions.cpp
Expand Up @@ -17,9 +17,9 @@
#include "qgsvectorrenderingoptions.h"
#include "qgssettings.h"
#include "qgsapplication.h"
#include "qgssettingsregistrycore.h"
#include "qgsguiutils.h"
#include "qgsvectorsimplifymethod.h"
#include "qgsvectorlayer.h"
#include "qgssettingsentryenumflag.h"

#include <QThread>
//
Expand All @@ -35,8 +35,8 @@ QgsVectorRenderingOptionsWidget::QgsVectorRenderingOptionsWidget( QWidget *paren

// Default simplify drawing configuration
mSimplifyDrawingGroupBox->setChecked( settings.enumValue( QStringLiteral( "/qgis/simplifyDrawingHints" ), QgsVectorSimplifyMethod::GeometrySimplification ) != QgsVectorSimplifyMethod::NoSimplification );
mSimplifyDrawingSpinBox->setValue( settings.value( QStringLiteral( "/qgis/simplifyDrawingTol" ), Qgis::DEFAULT_MAPTOPIXEL_THRESHOLD ).toFloat() );
mSimplifyDrawingAtProvider->setChecked( !settings.value( QStringLiteral( "/qgis/simplifyLocal" ), true ).toBool() );
mSimplifyDrawingSpinBox->setValue( QgsVectorLayer::settingsSimplifyDrawingTol->value() );
mSimplifyDrawingAtProvider->setChecked( !QgsVectorLayer::settingsSimplifyLocal->value() );

//segmentation tolerance type
mToleranceTypeComboBox->addItem( tr( "Maximum Angle" ), QgsAbstractGeometry::MaximumAngle );
Expand All @@ -59,14 +59,13 @@ QgsVectorRenderingOptionsWidget::QgsVectorRenderingOptionsWidget( QWidget *paren
QStringList myScalesList = Qgis::defaultProjectScales().split( ',' );
myScalesList.append( QStringLiteral( "1:1" ) );
mSimplifyMaximumScaleComboBox->updateScales( myScalesList );
mSimplifyMaximumScaleComboBox->setScale( settings.value( QStringLiteral( "/qgis/simplifyMaxScale" ), 1 ).toFloat() );
mSimplifyMaximumScaleComboBox->setScale( QgsVectorLayer::settingsSimplifyMaxScale->value() );

// Default local simplification algorithm
mSimplifyAlgorithmComboBox->addItem( tr( "Distance" ), static_cast<int>( QgsVectorSimplifyMethod::Distance ) );
mSimplifyAlgorithmComboBox->addItem( tr( "SnapToGrid" ), static_cast<int>( QgsVectorSimplifyMethod::SnapToGrid ) );
mSimplifyAlgorithmComboBox->addItem( tr( "Visvalingam" ), static_cast<int>( QgsVectorSimplifyMethod::Visvalingam ) );
mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( settings.enumValue( QStringLiteral( "/qgis/simplifyAlgorithm" ), QgsVectorSimplifyMethod::NoSimplification ) ) );

mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( QgsVectorLayer::settingsSimplifyAlgorithm->value() ) );
}

void QgsVectorRenderingOptionsWidget::apply()
Expand All @@ -82,9 +81,9 @@ void QgsVectorRenderingOptionsWidget::apply()
}
settings.setEnumValue( QStringLiteral( "/qgis/simplifyDrawingHints" ), simplifyHints );
settings.setEnumValue( QStringLiteral( "/qgis/simplifyAlgorithm" ), ( QgsVectorSimplifyMethod::SimplifyHints )mSimplifyAlgorithmComboBox->currentData().toInt() );
settings.setValue( QStringLiteral( "/qgis/simplifyDrawingTol" ), mSimplifyDrawingSpinBox->value() );
settings.setValue( QStringLiteral( "/qgis/simplifyLocal" ), !mSimplifyDrawingAtProvider->isChecked() );
settings.setValue( QStringLiteral( "/qgis/simplifyMaxScale" ), mSimplifyMaximumScaleComboBox->scale() );
QgsVectorLayer::settingsSimplifyDrawingTol->setValue( mSimplifyDrawingSpinBox->value() );
QgsVectorLayer::settingsSimplifyLocal->setValue( !mSimplifyDrawingAtProvider->isChecked() );
QgsVectorLayer::settingsSimplifyMaxScale->setValue( mSimplifyMaximumScaleComboBox->scale() );

//curve segmentation
QgsAbstractGeometry::SegmentationToleranceType segmentationType = ( QgsAbstractGeometry::SegmentationToleranceType )mToleranceTypeComboBox->currentData().toInt();
Expand Down
8 changes: 4 additions & 4 deletions src/core/settings/qgssettingsentry.h
Expand Up @@ -405,10 +405,10 @@ class QgsSettingsEntryByReference : public QgsSettingsEntryBase


//! Returns the settings value with a \a defaultValueOverride and with an optional \a dynamicKeyPart
T valueWithDefaultOverride( const T &defaultValueOverride, const QString &dynamicKeyPart = QString() ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( defaultValueOverride, dynamicKeyPart ) );}
inline T valueWithDefaultOverride( const T &defaultValueOverride, const QString &dynamicKeyPart = QString() ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( QVariant::fromValue( defaultValueOverride ), dynamicKeyPart ) );}

//! Returns the settings value with a \a defaultValueOverride for the \a dynamicKeyPartList
T valueWithDefaultOverride( const T &defaultValueOverride, const QStringList &dynamicKeyPartList ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( defaultValueOverride, dynamicKeyPartList ) );}
inline T valueWithDefaultOverride( const T &defaultValueOverride, const QStringList &dynamicKeyPartList ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( QVariant::fromValue( defaultValueOverride ), dynamicKeyPartList ) );}

/**
* Returns the settings value for the \a dynamicKeyPart and with a \a defaultValueOverride
Expand Down Expand Up @@ -561,10 +561,10 @@ class QgsSettingsEntryByValue : public QgsSettingsEntryBase
T value( const QStringList &dynamicKeyPartList ) const { return this->convertFromVariant( valueAsVariant( dynamicKeyPartList ) );}

//! Returns the settings value with a \a defaultValueOverride and with an optional \a dynamicKeyPart
T valueWithDefaultOverride( T defaultValueOverride, const QString &dynamicKeyPart = QString() ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( defaultValueOverride, dynamicKeyPart ) );}
inline T valueWithDefaultOverride( T defaultValueOverride, const QString &dynamicKeyPart = QString() ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( QVariant::fromValue( defaultValueOverride ), dynamicKeyPart ) );}

//! Returns the settings value with a \a defaultValueOverride for the \a dynamicKeyPartList
T valueWithDefaultOverride( T defaultValueOverride, const QStringList &dynamicKeyPartList ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( defaultValueOverride, dynamicKeyPartList ) );}
inline T valueWithDefaultOverride( T defaultValueOverride, const QStringList &dynamicKeyPartList ) const { return this->convertFromVariant( valueAsVariantWithDefaultOverride( QVariant::fromValue( defaultValueOverride ), dynamicKeyPartList ) );}

/**
* Returns the settings value for the \a dynamicKeyPart and with a \a defaultValueOverride
Expand Down
2 changes: 1 addition & 1 deletion src/core/settings/qgssettingsregistrycore.cpp
Expand Up @@ -26,7 +26,7 @@
#include "qgsprocessing.h"
#include "qgsvectortileconnection.h"
#include "qgsgpsdetector.h"

#include "qgsvectorlayer.h"

const QgsSettingsEntryEnumFlag<Qgis::SnappingMode> *QgsSettingsRegistryCore::settingsDigitizingDefaultSnapMode = new QgsSettingsEntryEnumFlag<Qgis::SnappingMode>( QStringLiteral( "default_snap_mode" ), QgsSettings::sTreeDigitizing, Qgis::SnappingMode::AllLayers );

Expand Down
20 changes: 15 additions & 5 deletions src/core/vector/qgsvectorlayer.cpp
Expand Up @@ -107,6 +107,16 @@
#include <limits>
#include <optional>

#include "qgssettingsentryenumflag.h"
#include "qgssettingsentryimpl.h"

const QgsSettingsEntryDouble *QgsVectorLayer::settingsSimplifyDrawingTol = new QgsSettingsEntryDouble( QStringLiteral( "simplifyDrawingTol" ), QgsSettings::sTreeQgis, Qgis::DEFAULT_MAPTOPIXEL_THRESHOLD );
const QgsSettingsEntryBool *QgsVectorLayer::settingsSimplifyLocal = new QgsSettingsEntryBool( QStringLiteral( "simplifyLocal" ), QgsSettings::sTreeQgis, false );
const QgsSettingsEntryDouble *QgsVectorLayer::settingsSimplifyMaxScale = new QgsSettingsEntryDouble( QStringLiteral( "simplifyMaxScale" ), QgsSettings::sTreeQgis, 1.0 );
const QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyHints> *QgsVectorLayer::settingsSimplifyDrawingHints = new QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyHints>( QStringLiteral( "simplifyDrawingHints" ), QgsSettings::sTreeQgis, QgsVectorSimplifyMethod::SimplifyHint::NoSimplification );
const QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyAlgorithm> *QgsVectorLayer::settingsSimplifyAlgorithm = new QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyAlgorithm>( QStringLiteral( "simplifyAlgorithm" ), QgsSettings::sTreeQgis, QgsVectorSimplifyMethod::SimplifyAlgorithm::Distance );


#ifdef TESTPROVIDERLIB
#include <dlfcn.h>
#endif
Expand Down Expand Up @@ -225,11 +235,11 @@ QgsVectorLayer::QgsVectorLayer( const QString &vectorLayerPath,

// Default simplify drawing settings
QgsSettings settings;
mSimplifyMethod.setSimplifyHints( settings.flagValue( QStringLiteral( "qgis/simplifyDrawingHints" ), mSimplifyMethod.simplifyHints(), QgsSettings::NoSection ) );
mSimplifyMethod.setSimplifyAlgorithm( settings.enumValue( QStringLiteral( "qgis/simplifyAlgorithm" ), mSimplifyMethod.simplifyAlgorithm() ) );
mSimplifyMethod.setThreshold( settings.value( QStringLiteral( "qgis/simplifyDrawingTol" ), mSimplifyMethod.threshold() ).toFloat() );
mSimplifyMethod.setForceLocalOptimization( settings.value( QStringLiteral( "qgis/simplifyLocal" ), mSimplifyMethod.forceLocalOptimization() ).toBool() );
mSimplifyMethod.setMaximumScale( settings.value( QStringLiteral( "qgis/simplifyMaxScale" ), mSimplifyMethod.maximumScale() ).toFloat() );
mSimplifyMethod.setSimplifyHints( QgsVectorLayer::settingsSimplifyDrawingHints->valueWithDefaultOverride( mSimplifyMethod.simplifyHints() ) );
mSimplifyMethod.setSimplifyAlgorithm( QgsVectorLayer::settingsSimplifyAlgorithm->valueWithDefaultOverride( mSimplifyMethod.simplifyAlgorithm() ) );
mSimplifyMethod.setThreshold( QgsVectorLayer::settingsSimplifyDrawingTol->valueWithDefaultOverride( mSimplifyMethod.threshold() ) );
mSimplifyMethod.setForceLocalOptimization( QgsVectorLayer::settingsSimplifyLocal->valueWithDefaultOverride( mSimplifyMethod.forceLocalOptimization() ) );
mSimplifyMethod.setMaximumScale( QgsVectorLayer::settingsSimplifyMaxScale->valueWithDefaultOverride( mSimplifyMethod.maximumScale() ) );

connect( mRefreshRendererTimer, &QTimer::timeout, this, [ = ] { triggerRepaint( true ); } );
}
Expand Down
16 changes: 15 additions & 1 deletion src/core/vector/qgsvectorlayer.h
Expand Up @@ -18,7 +18,6 @@
#ifndef QGSVECTORLAYER_H
#define QGSVECTORLAYER_H


#include "qgis_core.h"
#include <QMap>
#include <QSet>
Expand Down Expand Up @@ -83,6 +82,14 @@ class QgsVectorLayerTemporalProperties;
class QgsFeatureRendererGenerator;
class QgsVectorLayerElevationProperties;

#ifndef SIP_RUN
template<class T>
class QgsSettingsEntryEnumFlag;
#endif
class QgsSettingsEntryDouble;
class QgsSettingsEntryBool;


typedef QList<int> QgsAttributeList;
typedef QSet<int> QgsAttributeIds;

Expand Down Expand Up @@ -400,6 +407,13 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte

public:

static const QgsSettingsEntryBool *settingsSimplifyLocal SIP_SKIP;

static const QgsSettingsEntryDouble *settingsSimplifyMaxScale SIP_SKIP;
static const QgsSettingsEntryDouble *settingsSimplifyDrawingTol SIP_SKIP;
static const QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyAlgorithm> *settingsSimplifyAlgorithm SIP_SKIP;
static const QgsSettingsEntryEnumFlag<QgsVectorSimplifyMethod::SimplifyHints> *settingsSimplifyDrawingHints SIP_SKIP;

/**
* Setting options for loading vector layers.
* \since QGIS 3.0
Expand Down

0 comments on commit da29df8

Please sign in to comment.