Skip to content

Commit 6443df6

Browse files
pierreloicqnyalldawson
authored andcommitted
Nyall's comments
1 parent c921d2e commit 6443df6

File tree

4 files changed

+50
-49
lines changed

4 files changed

+50
-49
lines changed

python/core/auto_generated/symbology/qgsgraduatedsymbolrenderer.sip.in

+11-9
Original file line numberDiff line numberDiff line change
@@ -325,27 +325,27 @@ Reset the label decimal places to a numberbased on the minimum class interval
325325
const QString &attrName,
326326
int classes,
327327
Mode mode,
328-
bool useSymmetricMode,
329-
double symmetryPoint,
330-
QStringList listForCboPrettyBreaks,
331-
bool astride,
332328
QgsSymbol *symbol /Transfer/,
333329
QgsColorRamp *ramp /Transfer/,
334-
const QgsRendererRangeLabelFormat &legendFormat = QgsRendererRangeLabelFormat() );
330+
const QgsRendererRangeLabelFormat &legendFormat = QgsRendererRangeLabelFormat(),
331+
bool useSymmetricMode = false,
332+
double symmetryPoint = 0.0,
333+
QStringList listForCboPrettyBreaks = {},
334+
bool astride = false);
335335
%Docstring
336336
Creates a new graduated renderer.
337337

338338
:param vlayer: vector layer
339339
:param attrName: attribute to classify
340340
:param classes: number of classes
341341
:param mode: classification mode
342+
:param symbol: base symbol
343+
:param ramp: color ramp for classes
344+
:param legendFormat:
342345
:param useSymmetricMode: A bool indicating if we want to have classes and hence colors ramp symmetric around a value
343346
:param symmetryPoint: The value around which the classes will be symmetric if useSymmetricMode is checked
344347
:param listForCboPrettyBreaks: The list of potential pivot values for symmetric mode with prettybreaks mode
345348
:param astride: A bool indicating if the symmetry is made astride the symmetryPoint or not ( [-1,1] vs. [-1,0][0,1] )
346-
:param symbol: base symbol
347-
:param ramp: color ramp for classes
348-
:param legendFormat:
349349

350350
:return: new QgsGraduatedSymbolRenderer object
351351
%End
@@ -518,7 +518,9 @@ Gets the symbol which is used to represent ``value``.
518518
Returns the matching legend key for a value.
519519
%End
520520

521-
521+
522+
QStringList mListForCboPrettyBreaks = {};
523+
522524
private:
523525
QgsGraduatedSymbolRenderer( const QgsGraduatedSymbolRenderer & );
524526
QgsGraduatedSymbolRenderer &operator=( const QgsGraduatedSymbolRenderer & );

src/core/symbology/qgsgraduatedsymbolrenderer.cpp

+21-22
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,6 @@ QgsGraduatedSymbolRenderer::QgsGraduatedSymbolRenderer( const QString &attrName,
288288
{
289289
mRanges << range;
290290
}
291-
mUseSymmetricMode = false;
292-
mAstride = false;
293291
}
294292

295293
QgsGraduatedSymbolRenderer::~QgsGraduatedSymbolRenderer()
@@ -555,7 +553,7 @@ static void _makeBreaksSymmetric( QList<double> &breaks, double symmetryPoint, b
555553
}
556554
}
557555
// remove symmetry point
558-
if ( true == astride ) // && breaks.indexOf( symmetryPoint ) != -1) // if symmetryPoint is found
556+
if ( astride ) // && breaks.indexOf( symmetryPoint ) != -1) // if symmetryPoint is found
559557
{
560558
breaks.removeAt( breaks.indexOf( symmetryPoint ) );
561559
}
@@ -567,7 +565,7 @@ static QList<double> _calcEqualIntervalBreaks( double minimum, double maximum, i
567565
// Equal interval algorithm
568566
// Returns breaks based on dividing the range ('minimum' to 'maximum') into 'classes' parts.
569567
QList<double> breaks;
570-
if ( false == useSymmetricMode ) // nomal mode
568+
if ( !useSymmetricMode ) // nomal mode
571569
{
572570
double step = ( maximum - minimum ) / classes;
573571

@@ -582,24 +580,25 @@ static QList<double> _calcEqualIntervalBreaks( double minimum, double maximum, i
582580
// set the last break to be exactly maximum so we do not miss it
583581
breaks[classes - 1] = maximum;
584582
}
585-
else if ( true == useSymmetricMode ) // symmetric mode
583+
else if ( useSymmetricMode ) // symmetric mode
586584
{
587585
double distBelowSymmetricValue = std::abs( minimum - symmetryPoint );
588586
double distAboveSymmetricValue = std::abs( maximum - symmetryPoint ) ;
589587

590-
if ( true == astride )
588+
if ( astride )
591589
{
592-
( 0 == classes % 2 ) ? ++classes : classes; // we want odd number of classes
590+
if ( classes % 2 == 0 ) // we want odd number of classes
591+
++classes;
593592
}
594593
else
595594
{
596-
( 1 == classes % 2 ) ? ++classes : classes; // we want even number of classes
595+
if ( classes % 2 == 1 ) // we want even number of classes
596+
++classes;
597597
}
598598
double step = 2 * std::min( distBelowSymmetricValue, distAboveSymmetricValue ) / classes;
599599

600-
double value;
601600
breaks.reserve( classes );
602-
value = ( distBelowSymmetricValue < distAboveSymmetricValue ) ? minimum : maximum - classes * step;
601+
double value = ( distBelowSymmetricValue < distAboveSymmetricValue ) ? minimum : maximum - classes * step;
603602

604603
for ( int i = 0; i < classes; i++ )
605604
{
@@ -689,7 +688,7 @@ static QList<double> _calcStdDevBreaks( QList<double> values, int classes, QList
689688
}
690689
stdDev = std::sqrt( stdDev / n );
691690

692-
if ( false == useSymmetricMode )
691+
if ( !useSymmetricMode )
693692
symmetryPoint = mean; // otherwise symmetryPoint = symmetryPoint
694693

695694
QList<double> breaks = QgsSymbolLayerUtils::prettyBreaks( ( minimum - symmetryPoint ) / stdDev, ( maximum - symmetryPoint ) / stdDev, classes );
@@ -833,28 +832,28 @@ static QList<double> _calcJenksBreaks( QList<double> values, int classes,
833832
return breaks.toList();
834833
} //_calcJenksBreaks
835834

836-
static QStringList _breaksAsStrings( QList<double> breaks ) // get QStringList from QList<double> without maxi break (min is not in)
835+
static QStringList _breaksAsStrings( const QList<double> &breaks ) // get QStringList from QList<double> without maxi break (min is not in)
837836
{
838-
QStringList breaksAsTrings;
837+
QStringList breaksAsStrings;
839838
for ( int i = 0; i < breaks.count() - 1; i++ )
840839
{
841-
breaksAsTrings << QString::number( breaks.at( i ), 'f', 2 );
840+
breaksAsStrings << QString::number( breaks.at( i ), 'f', 2 );
842841
}
843-
return breaksAsTrings;
842+
return breaksAsStrings;
844843
}
845844

846845
QgsGraduatedSymbolRenderer *QgsGraduatedSymbolRenderer::createRenderer(
847846
QgsVectorLayer *vlayer,
848847
const QString &attrName,
849848
int classes,
850849
Mode mode,
850+
QgsSymbol *symbol,
851+
QgsColorRamp *ramp,
852+
const QgsRendererRangeLabelFormat &labelFormat,
851853
bool useSymmetricMode,
852854
double symmetryPoint,
853855
QStringList listForCboPrettyBreaks,
854-
bool astride,
855-
QgsSymbol *symbol,
856-
QgsColorRamp *ramp,
857-
const QgsRendererRangeLabelFormat &labelFormat
856+
bool astride
858857
)
859858
{
860859
QgsRangeList ranges;
@@ -926,7 +925,7 @@ void QgsGraduatedSymbolRenderer::updateClasses( QgsVectorLayer *vlayer, Mode mod
926925
breaks = QgsSymbolLayerUtils::prettyBreaks( minimum, maximum, nclasses );
927926
setListForCboPrettyBreaks( _breaksAsStrings( breaks ) );
928927

929-
if ( true == useSymmetricMode )
928+
if ( useSymmetricMode )
930929
_makeBreaksSymmetric( breaks, symmetryPoint, astride );
931930
}
932931
else if ( mode == Quantile || mode == Jenks || mode == StdDev )
@@ -1082,7 +1081,7 @@ QgsFeatureRenderer *QgsGraduatedSymbolRenderer::create( QDomElement &element, co
10821081
QString symmetricPointString = symmetricModeElem.attribute( QStringLiteral( "symmetryPoint" ) );
10831082
r->setSymmetryPoint( symmetricPointString.toDouble() );
10841083
QString breaksForPretty = symmetricModeElem.attribute( QStringLiteral( "valueForCboPrettyBreaks" ) );
1085-
r->setListForCboPrettyBreaks( breaksForPretty.split( "/" ) );
1084+
r->setListForCboPrettyBreaks( breaksForPretty.split( '/' ) );
10861085

10871086
QString astrideEnabled = symmetricModeElem.attribute( QStringLiteral( "astride" ) );
10881087
astrideEnabled == QLatin1String( "true" ) ? r->setAstride( true ) : r->setAstride( false );
@@ -1215,7 +1214,7 @@ QDomElement QgsGraduatedSymbolRenderer::save( QDomDocument &doc, const QgsReadWr
12151214
for ( int i = 0; i < mListForCboPrettyBreaks.size() - 1; i++ ) // -1 to write 1/2/3 instead of 1/2/3/
12161215
{
12171216
breaks.append( mListForCboPrettyBreaks.at( i ) );
1218-
breaks.append( QStringLiteral( "/" ) );
1217+
breaks.append( '/' );
12191218
}
12201219
if ( mListForCboPrettyBreaks.size() > 0 ) //make sure we can go at size-1
12211220
breaks.append( mListForCboPrettyBreaks.at( mListForCboPrettyBreaks.size() - 1 ) ); //add the last break

src/core/symbology/qgsgraduatedsymbolrenderer.h

+13-12
Original file line numberDiff line numberDiff line change
@@ -309,26 +309,26 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
309309
* \param attrName attribute to classify
310310
* \param classes number of classes
311311
* \param mode classification mode
312+
* \param symbol base symbol
313+
* \param ramp color ramp for classes
314+
* \param legendFormat
312315
* \param useSymmetricMode A bool indicating if we want to have classes and hence colors ramp symmetric around a value
313316
* \param symmetryPoint The value around which the classes will be symmetric if useSymmetricMode is checked
314317
* \param listForCboPrettyBreaks The list of potential pivot values for symmetric mode with prettybreaks mode
315318
* \param astride A bool indicating if the symmetry is made astride the symmetryPoint or not ( [-1,1] vs. [-1,0][0,1] )
316-
* \param symbol base symbol
317-
* \param ramp color ramp for classes
318-
* \param legendFormat
319319
* \returns new QgsGraduatedSymbolRenderer object
320320
*/
321321
static QgsGraduatedSymbolRenderer *createRenderer( QgsVectorLayer *vlayer,
322322
const QString &attrName,
323323
int classes,
324324
Mode mode,
325-
bool useSymmetricMode,
326-
double symmetryPoint,
327-
QStringList listForCboPrettyBreaks,
328-
bool astride,
329325
QgsSymbol *symbol SIP_TRANSFER,
330326
QgsColorRamp *ramp SIP_TRANSFER,
331-
const QgsRendererRangeLabelFormat &legendFormat = QgsRendererRangeLabelFormat() );
327+
const QgsRendererRangeLabelFormat &legendFormat = QgsRendererRangeLabelFormat(),
328+
bool useSymmetricMode = false,
329+
double symmetryPoint = 0.0,
330+
QStringList listForCboPrettyBreaks = {},
331+
bool astride = false );
332332

333333
//! create renderer from XML element
334334
static QgsFeatureRenderer *create( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
@@ -455,10 +455,6 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
455455
QString mAttrName;
456456
QgsRangeList mRanges;
457457
Mode mMode = Custom;
458-
bool mUseSymmetricMode;
459-
double mSymmetryPoint;
460-
QStringList mListForCboPrettyBreaks;
461-
bool mAstride;
462458
std::unique_ptr<QgsSymbol> mSourceSymbol;
463459
std::unique_ptr<QgsColorRamp> mSourceColorRamp;
464460
QgsRendererRangeLabelFormat mLabelFormat;
@@ -485,6 +481,11 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
485481
//! \note not available in Python bindings
486482
static const char *graduatedMethodStr( GraduatedMethod method ) SIP_SKIP;
487483

484+
bool mUseSymmetricMode = false;
485+
double mSymmetryPoint = 0.0;
486+
QStringList mListForCboPrettyBreaks = {};
487+
bool mAstride = false;
488+
488489
private:
489490

490491
/**

src/gui/symbology/qgsgraduatedsymbolrendererwidget.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ void QgsGraduatedSymbolRendererWidget::updateUiFromRenderer( bool updateCount )
641641
spinSymmetryPointForOtherMethods->setValue( mRenderer->symmetryPoint() );
642642
}
643643

644-
if ( true == mRenderer->useSymmetricMode() )
644+
if ( mRenderer->useSymmetricMode() )
645645
{
646646
cbxClassifySymmetric->setChecked( true );
647647
spinSymmetryPointForOtherMethods->setEnabled( true );
@@ -656,12 +656,11 @@ void QgsGraduatedSymbolRendererWidget::updateUiFromRenderer( bool updateCount )
656656
cboSymmetryPointForPretty->setEnabled( false );
657657
}
658658

659-
if ( true == mRenderer->astride() )
659+
if ( mRenderer->astride() )
660660
cbxAstride->setChecked( true );
661661
else
662662
cbxAstride->setChecked( false );
663663

664-
665664
// Only update class count if different - otherwise typing value gets very messy
666665
int nclasses = mRenderer->ranges().count();
667666
if ( nclasses && updateCount )
@@ -886,7 +885,7 @@ void QgsGraduatedSymbolRendererWidget::classifyGraduated()
886885
{
887886
useSymmetricMode = true;
888887
symmetryPoint = spinSymmetryPointForOtherMethods->value();
889-
cbxAstride->isChecked() ? astride = true : astride = false;
888+
astride = cbxAstride->isChecked();
890889
}
891890
}
892891
else if ( cboGraduatedMode->currentIndex() == 2 ) // Jenks
@@ -905,7 +904,7 @@ void QgsGraduatedSymbolRendererWidget::classifyGraduated()
905904
{
906905
useSymmetricMode = true;
907906
symmetryPoint = spinSymmetryPointForOtherMethods->value();
908-
cbxAstride->isChecked() ? astride = true : astride = false;
907+
astride = cbxAstride->isChecked();
909908
}
910909
}
911910
else if ( cboGraduatedMode->currentIndex() == 4 ) // Pretty
@@ -914,7 +913,7 @@ void QgsGraduatedSymbolRendererWidget::classifyGraduated()
914913
if ( cbxClassifySymmetric->isChecked() )
915914
{
916915
useSymmetricMode = true;
917-
cbxAstride->isChecked() ? astride = true : astride = false;
916+
astride = cbxAstride->isChecked();
918917
symmetryPoint = cboSymmetryPointForPretty->currentText().toDouble(); //selected number
919918
}
920919
}

0 commit comments

Comments
 (0)