Skip to content

Commit 95cabe5

Browse files
committed
#8725: AA-disabling only for simplify factor>1
AA-disabling only is executed for '1-pixel' geometries when the configuration slider is greater than minimum value. The rendering speed up is lower (http://hub.qgis.org/issues/8725#note-59), but with higher quality result
1 parent 6b11258 commit 95cabe5

5 files changed

+19
-7
lines changed

src/app/qgsoptions.cpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
561561
chkUseRenderCaching->setChecked( settings.value( "/qgis/enable_render_caching", false ).toBool() );
562562

563563
// Default simplify drawing configuration
564-
mSimplifyDrawingGroupBox->setChecked( settings.value( "/qgis/simplifyDrawingHints", (int)QgsVectorLayer::FullSimplification ).toInt() != QgsVectorLayer::NoSimplification );
564+
mSimplifyDrawingGroupBox->setChecked( settings.value( "/qgis/simplifyDrawingHints", (int)QgsVectorLayer::DefaultSimplification ).toInt() != QgsVectorLayer::NoSimplification );
565565
mSimplifyDrawingSlider->setValue( (int)(5.0f * (settings.value( "/qgis/simplifyDrawingTol", 1.0F ).toFloat()-1)) );
566566
mSimplifyDrawingPanel->setVisible( mSimplifyDrawingSlider->value()>0 );
567567

@@ -1097,8 +1097,14 @@ void QgsOptions::saveOptions()
10971097
settings.setValue( "/qgis/capitaliseLayerName", capitaliseCheckBox->isChecked() );
10981098

10991099
// Default simplify drawing configuration
1100-
settings.setValue( "/qgis/simplifyDrawingHints", (int)(mSimplifyDrawingGroupBox->isChecked() ? QgsVectorLayer::FullSimplification : QgsVectorLayer::NoSimplification) );
1101-
settings.setValue( "/qgis/simplifyDrawingTol", (float)(1.0f + 0.2f*mSimplifyDrawingSlider->value()) );
1100+
int simplifyDrawingHints = QgsVectorLayer::NoSimplification;
1101+
if ( mSimplifyDrawingGroupBox->isChecked() )
1102+
{
1103+
simplifyDrawingHints |= QgsVectorLayer::DefaultSimplification;
1104+
if ( mSimplifyDrawingSlider->value() > 0 ) simplifyDrawingHints |= QgsVectorLayer::AntialiasingSimplification;
1105+
}
1106+
settings.setValue( "/qgis/simplifyDrawingHints", simplifyDrawingHints );
1107+
settings.setValue( "/qgis/simplifyDrawingTol", 1.0f + 0.2f*mSimplifyDrawingSlider->value() );
11021108

11031109
// project
11041110
settings.setValue( "/qgis/projOpenAtLaunch", mProjectOnLaunchCmbBx->currentIndex() );

src/app/qgsvectorlayerproperties.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,13 @@ void QgsVectorLayerProperties::apply()
535535
layer->setMetadataUrlFormat( mLayerMetadataUrlFormatComboBox->currentText() );
536536

537537
//layer simplify drawing configuration
538-
layer->setSimplifyDrawingHints( mSimplifyDrawingGroupBox->isChecked() ? QgsVectorLayer::FullSimplification : QgsVectorLayer::NoSimplification );
538+
int simplifyDrawingHints = QgsVectorLayer::NoSimplification;
539+
if ( mSimplifyDrawingGroupBox->isChecked() )
540+
{
541+
simplifyDrawingHints |= QgsVectorLayer::DefaultSimplification;
542+
if ( mSimplifyDrawingSlider->value() > 0 ) simplifyDrawingHints |= QgsVectorLayer::AntialiasingSimplification;
543+
}
544+
layer->setSimplifyDrawingHints( simplifyDrawingHints );
539545
layer->setSimplifyDrawingTol( 1.0f + 0.2f*mSimplifyDrawingSlider->value() );
540546

541547
// update symbology

src/core/qgsfeaturerequest.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "qgsfield.h"
1818
#include "qgsgeometry.h"
1919

20-
#include <limits>
2120
#include <QStringList>
2221

2322
QgsFeatureRequest::QgsFeatureRequest()

src/core/qgsvectorlayer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ QgsVectorLayer::QgsVectorLayer( QString vectorLayerPath,
137137
, mValidExtent( false )
138138
, mSymbolFeatureCounted( false )
139139
, mCurrentRendererContext( 0 )
140-
, mSimplifyDrawingHints( QgsVectorLayer::FullSimplification )
140+
, mSimplifyDrawingHints( QGis::DEFAULT_MAPTOPIXEL_THRESHOLD > 1 ? QgsVectorLayer::FullSimplification : QgsVectorLayer::DefaultSimplification )
141141
, mSimplifyDrawingTol( QGis::DEFAULT_MAPTOPIXEL_THRESHOLD )
142142

143143
{

src/core/qgsvectorlayer.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -1376,7 +1376,8 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer
13761376
GeometrySimplification = 1, //!< The geometries can be simplified using the current map2pixel context state
13771377
EnvelopeSimplification = 2, //!< The geometries can be fully simplified by its BoundingBox using the current map2pixel context state
13781378
AntialiasingSimplification = 4, //!< The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'
1379-
FullSimplification = 7, //!< All simplification hints can be applied
1379+
DefaultSimplification = 3, //!< Default simplification hints can be applied ( Geometry + Envelope )
1380+
FullSimplification = 7, //!< All simplification hints can be applied ( Geometry + Envelope + AA-disabling )
13801381
};
13811382
/** Set the Map2pixel simplification hints for fast rendering of features */
13821383
void setSimplifyDrawingHints( int simplifyDrawingHints ) { mSimplifyDrawingHints = simplifyDrawingHints; }

0 commit comments

Comments
 (0)