Skip to content

Commit e323df9

Browse files
committed
Fixed scale method (area/diameter) for graduated and categorized markers
1 parent a9008d0 commit e323df9

6 files changed

+31
-3
lines changed

src/core/symbology-ng/qgscategorizedsymbolrendererv2.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ QgsCategorizedSymbolRendererV2::QgsCategorizedSymbolRendererV2( QString attrName
122122
mCategories( categories ),
123123
mSourceSymbol( NULL ),
124124
mSourceColorRamp( NULL ),
125+
mScaleMethod( QgsSymbolV2::ScaleArea ),
125126
mRotationFieldIdx( -1 ),
126127
mSizeScaleFieldIdx( -1 )
127128
{
@@ -216,6 +217,7 @@ QgsSymbolV2* QgsCategorizedSymbolRendererV2::symbolForFeature( QgsFeature& featu
216217
markerSymbol->setAngle( rotation );
217218
if ( mSizeScaleFieldIdx != -1 )
218219
markerSymbol->setSize( sizeScale * static_cast<QgsMarkerSymbolV2*>( symbol )->size() );
220+
markerSymbol->setScaleMethod( mScaleMethod );
219221
}
220222
else if ( tempSymbol->type() == QgsSymbolV2::Line )
221223
{
@@ -374,6 +376,7 @@ QgsFeatureRendererV2* QgsCategorizedSymbolRendererV2::clone()
374376
r->setUsingSymbolLevels( usingSymbolLevels() );
375377
r->setRotationField( rotationField() );
376378
r->setSizeScaleField( sizeScaleField() );
379+
r->setScaleMethod( scaleMethod() );
377380
return r;
378381
}
379382

src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ QgsGraduatedSymbolRendererV2::QgsGraduatedSymbolRendererV2( QString attrName, Qg
140140
mMode( Custom ),
141141
mSourceSymbol( NULL ),
142142
mSourceColorRamp( NULL ),
143+
mScaleMethod( QgsSymbolV2::ScaleArea ),
143144
mRotationFieldIdx( -1 ),
144145
mSizeScaleFieldIdx( -1 )
145146
{
@@ -201,6 +202,7 @@ QgsSymbolV2* QgsGraduatedSymbolRendererV2::symbolForFeature( QgsFeature& feature
201202
markerSymbol->setAngle( rotation );
202203
if ( mSizeScaleFieldIdx != -1 )
203204
markerSymbol->setSize( sizeScale * static_cast<QgsMarkerSymbolV2*>( symbol )->size() );
205+
markerSymbol->setScaleMethod( mScaleMethod );
204206
}
205207
else if ( tempSymbol->type() == QgsSymbolV2::Line )
206208
{
@@ -332,6 +334,7 @@ QgsFeatureRendererV2* QgsGraduatedSymbolRendererV2::clone()
332334
r->setUsingSymbolLevels( usingSymbolLevels() );
333335
r->setRotationField( rotationField() );
334336
r->setSizeScaleField( sizeScaleField() );
337+
r->setScaleMethod( scaleMethod() );
335338
return r;
336339
}
337340

src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.cpp

+13-3
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ QgsCategorizedSymbolRendererV2Widget::QgsCategorizedSymbolRendererV2Widget( QgsV
107107
mRenderer->rotationField(), mRenderer->sizeScaleField(), mRenderer->scaleMethod() );
108108
connect( mDataDefinedMenus, SIGNAL( rotationFieldChanged( QString ) ), this, SLOT( rotationFieldChanged( QString ) ) );
109109
connect( mDataDefinedMenus, SIGNAL( sizeScaleFieldChanged( QString ) ), this, SLOT( sizeScaleFieldChanged( QString ) ) );
110+
connect( mDataDefinedMenus, SIGNAL( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ), this, SLOT( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ) );
110111
btnAdvanced->setMenu( advMenu );
111112
}
112113

@@ -366,10 +367,14 @@ void QgsCategorizedSymbolRendererV2Widget::addCategories()
366367
*/
367368

368369
// recreate renderer
370+
QgsCategorizedSymbolRendererV2 *r = new QgsCategorizedSymbolRendererV2( attrName, cats );
371+
r->setSourceSymbol( mCategorizedSymbol->clone() );
372+
r->setSourceColorRamp( ramp->clone() );
373+
r->setScaleMethod( mRenderer->scaleMethod() );
374+
r->setSizeScaleField( mRenderer->sizeScaleField() );
375+
r->setRotationField( mRenderer->rotationField() );
369376
delete mRenderer;
370-
mRenderer = new QgsCategorizedSymbolRendererV2( attrName, cats );
371-
mRenderer->setSourceSymbol( mCategorizedSymbol->clone() );
372-
mRenderer->setSourceColorRamp( ramp->clone() );
377+
mRenderer = r;
373378

374379
populateCategories();
375380
}
@@ -452,6 +457,11 @@ void QgsCategorizedSymbolRendererV2Widget::sizeScaleFieldChanged( QString fldNam
452457
mRenderer->setSizeScaleField( fldName );
453458
}
454459

460+
void QgsCategorizedSymbolRendererV2Widget::scaleMethodChanged( QgsSymbolV2::ScaleMethod scaleMethod )
461+
{
462+
mRenderer->setScaleMethod( scaleMethod );
463+
}
464+
455465
QList<QgsSymbolV2*> QgsCategorizedSymbolRendererV2Widget::selectedSymbols()
456466
{
457467
QList<QgsSymbolV2*> selectedSymbols;

src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.h

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class GUI_EXPORT QgsCategorizedSymbolRendererV2Widget : public QgsRendererV2Widg
4848

4949
void rotationFieldChanged( QString fldName );
5050
void sizeScaleFieldChanged( QString fldName );
51+
void scaleMethodChanged( QgsSymbolV2::ScaleMethod scaleMethod );
5152

5253
void showSymbolLevels();
5354

src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ QgsGraduatedSymbolRendererV2Widget::QgsGraduatedSymbolRendererV2Widget( QgsVecto
106106
mRenderer->rotationField(), mRenderer->sizeScaleField(), mRenderer->scaleMethod() );
107107
connect( mDataDefinedMenus, SIGNAL( rotationFieldChanged( QString ) ), this, SLOT( rotationFieldChanged( QString ) ) );
108108
connect( mDataDefinedMenus, SIGNAL( sizeScaleFieldChanged( QString ) ), this, SLOT( sizeScaleFieldChanged( QString ) ) );
109+
connect( mDataDefinedMenus, SIGNAL( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ), this, SLOT( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ) );
109110
btnAdvanced->setMenu( advMenu );
110111
}
111112

@@ -216,6 +217,10 @@ void QgsGraduatedSymbolRendererV2Widget::classifyGraduated()
216217
return;
217218
}
218219

220+
r->setSizeScaleField( mRenderer->sizeScaleField() );
221+
r->setRotationField( mRenderer->rotationField() );
222+
r->setScaleMethod( mRenderer->scaleMethod() );
223+
219224
delete mRenderer;
220225
mRenderer = r;
221226

@@ -383,6 +388,11 @@ void QgsGraduatedSymbolRendererV2Widget::sizeScaleFieldChanged( QString fldName
383388
mRenderer->setSizeScaleField( fldName );
384389
}
385390

391+
void QgsGraduatedSymbolRendererV2Widget::scaleMethodChanged( QgsSymbolV2::ScaleMethod scaleMethod )
392+
{
393+
mRenderer->setScaleMethod( scaleMethod );
394+
}
395+
386396
QList<QgsSymbolV2*> QgsGraduatedSymbolRendererV2Widget::selectedSymbols()
387397
{
388398
QList<QgsSymbolV2*> selectedSymbols;

src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
5151

5252
void rotationFieldChanged( QString fldName );
5353
void sizeScaleFieldChanged( QString fldName );
54+
void scaleMethodChanged( QgsSymbolV2::ScaleMethod scaleMethod );
5455

5556
void showSymbolLevels();
5657

0 commit comments

Comments
 (0)