Skip to content

Commit 10239a0

Browse files
committed
[symbology] Use static QStrings for data defined keys rather than
creating new strings with every redraw (pt 1)
1 parent 2c5c866 commit 10239a0

7 files changed

+258
-189
lines changed

src/core/symbology-ng/qgsellipsesymbollayerv2.cpp

+39-39
Original file line numberDiff line numberDiff line change
@@ -172,31 +172,31 @@ QgsSymbolLayerV2* QgsEllipseSymbolLayerV2::create( const QgsStringMap& propertie
172172
//compatibility with old project file format
173173
if ( !properties["width_field"].isEmpty() )
174174
{
175-
layer->setDataDefinedProperty( "width", new QgsDataDefined( properties["width_field"] ) );
175+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, new QgsDataDefined( properties["width_field"] ) );
176176
}
177177
if ( !properties["height_field"].isEmpty() )
178178
{
179-
layer->setDataDefinedProperty( "height", new QgsDataDefined( properties["height_field"] ) );
179+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT, new QgsDataDefined( properties["height_field"] ) );
180180
}
181181
if ( !properties["rotation_field"].isEmpty() )
182182
{
183-
layer->setDataDefinedProperty( "rotation", new QgsDataDefined( properties["rotation_field"] ) );
183+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION, new QgsDataDefined( properties["rotation_field"] ) );
184184
}
185185
if ( !properties["outline_width_field"].isEmpty() )
186186
{
187-
layer->setDataDefinedProperty( "outline_width", new QgsDataDefined( properties[ "outline_width_field" ] ) );
187+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, new QgsDataDefined( properties[ "outline_width_field" ] ) );
188188
}
189189
if ( !properties["fill_color_field"].isEmpty() )
190190
{
191-
layer->setDataDefinedProperty( "fill_color", new QgsDataDefined( properties["fill_color_field"] ) );
191+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR, new QgsDataDefined( properties["fill_color_field"] ) );
192192
}
193193
if ( !properties["outline_color_field"].isEmpty() )
194194
{
195-
layer->setDataDefinedProperty( "outline_color", new QgsDataDefined( properties["outline_color_field"] ) );
195+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR, new QgsDataDefined( properties["outline_color_field"] ) );
196196
}
197197
if ( !properties["symbol_name_field"].isEmpty() )
198198
{
199-
layer->setDataDefinedProperty( "symbol_name", new QgsDataDefined( properties["symbol_name_field"] ) );
199+
layer->setDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME, new QgsDataDefined( properties["symbol_name_field"] ) );
200200
}
201201

202202
return layer;
@@ -205,41 +205,41 @@ QgsSymbolLayerV2* QgsEllipseSymbolLayerV2::create( const QgsStringMap& propertie
205205
void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2RenderContext& context )
206206
{
207207
bool ok;
208-
if ( hasDataDefinedProperty( "outline_width" ) )
208+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
209209
{
210-
double width = evaluateDataDefinedProperty( "outline_width", context.feature(), mOutlineWidth ).toDouble();
210+
double width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, context.feature(), mOutlineWidth ).toDouble();
211211
width *= QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mOutlineWidthUnit, mOutlineWidthMapUnitScale );
212212
mPen.setWidthF( width );
213213
}
214-
if ( hasDataDefinedProperty( "outline_style" ) )
214+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE ) )
215215
{
216-
QString styleString = evaluateDataDefinedProperty( "outline_style", context.feature(), QVariant(), &ok ).toString();
216+
QString styleString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE, context.feature(), QVariant(), &ok ).toString();
217217
if ( ok )
218218
{
219219
Qt::PenStyle style = QgsSymbolLayerV2Utils::decodePenStyle( styleString );
220220
mPen.setStyle( style );
221221
}
222222
}
223-
if ( hasDataDefinedProperty( "fill_color" ) )
223+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR ) )
224224
{
225-
QString colorString = evaluateDataDefinedProperty( "fill_color", context.feature(), QVariant(), &ok ).toString();
225+
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR, context.feature(), QVariant(), &ok ).toString();
226226
if ( ok )
227227
mBrush.setColor( QColor( QgsSymbolLayerV2Utils::decodeColor( colorString ) ) );
228228
}
229-
if ( hasDataDefinedProperty( "outline_color" ) )
229+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR ) )
230230
{
231-
QString colorString = evaluateDataDefinedProperty( "outline_color", context.feature(), QVariant(), &ok ).toString();
231+
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR, context.feature(), QVariant(), &ok ).toString();
232232
if ( ok )
233233
mPen.setColor( QColor( QgsSymbolLayerV2Utils::decodeColor( colorString ) ) );
234234
}
235235
double scaledWidth = mSymbolWidth;
236236
double scaledHeight = mSymbolHeight;
237-
if ( hasDataDefinedProperty( "width" ) || hasDataDefinedProperty( "height" ) || hasDataDefinedProperty( "symbol_name" ) )
237+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) || hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT ) || hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME ) )
238238
{
239239
QString symbolName = mSymbolName;
240-
if ( hasDataDefinedProperty( "symbol_name" ) )
240+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME ) )
241241
{
242-
symbolName = evaluateDataDefinedProperty( "symbol_name", context.feature(), mSymbolName ).toString();
242+
symbolName = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME, context.feature(), mSymbolName ).toString();
243243
}
244244
preparePath( symbolName, context, &scaledWidth, &scaledHeight, context.feature() );
245245
}
@@ -258,9 +258,9 @@ void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Rend
258258

259259
//priority for rotation: 1. data defined symbol level, 2. symbol layer rotation (mAngle)
260260
double rotation = 0.0;
261-
if ( hasDataDefinedProperty( "rotation" ) )
261+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION ) )
262262
{
263-
rotation = evaluateDataDefinedProperty( "rotation", context.feature(), mAngle ).toDouble() + mLineAngle;
263+
rotation = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION, context.feature(), mAngle ).toDouble() + mLineAngle;
264264
}
265265
else if ( !qgsDoubleNear( mAngle + mLineAngle, 0.0 ) )
266266
{
@@ -336,7 +336,7 @@ void QgsEllipseSymbolLayerV2::writeSldMarker( QDomDocument &doc, QDomElement &el
336336
graphicElem.appendChild( factorElem );
337337

338338
// <Rotation>
339-
QgsDataDefined* ddRotation = getDataDefinedProperty( "rotation" );
339+
QgsDataDefined* ddRotation = getDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION );
340340

341341
QString angleFunc = props.value( "angle", "" );
342342
if ( angleFunc.isEmpty() ) // symbol has no angle set
@@ -460,9 +460,9 @@ void QgsEllipseSymbolLayerV2::preparePath( const QString& symbolName, QgsSymbolV
460460

461461
double width = 0;
462462

463-
if ( hasDataDefinedProperty( "width" ) ) //1. priority: data defined setting on symbol layer le
463+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) ) //1. priority: data defined setting on symbol layer le
464464
{
465-
width = evaluateDataDefinedProperty( "width", f, mSymbolWidth ).toDouble();
465+
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, f, mSymbolWidth ).toDouble();
466466
}
467467
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
468468
{
@@ -479,9 +479,9 @@ void QgsEllipseSymbolLayerV2::preparePath( const QString& symbolName, QgsSymbolV
479479
width *= QgsSymbolLayerV2Utils::lineWidthScaleFactor( ct, mSymbolWidthUnit, mSymbolHeightMapUnitScale );
480480

481481
double height = 0;
482-
if ( hasDataDefinedProperty( "height" ) ) //1. priority: data defined setting on symbol layer level
482+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT ) ) //1. priority: data defined setting on symbol layer level
483483
{
484-
height = evaluateDataDefinedProperty( "height", f, mSymbolHeight ).toDouble();
484+
height = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT, f, mSymbolHeight ).toDouble();
485485
}
486486
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
487487
{
@@ -563,9 +563,9 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
563563
//width
564564
double symbolWidth = mSymbolWidth;
565565

566-
if ( hasDataDefinedProperty( "width" ) ) //1. priority: data defined setting on symbol layer le
566+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) ) //1. priority: data defined setting on symbol layer le
567567
{
568-
symbolWidth = evaluateDataDefinedProperty( "width", f, mSymbolWidth ).toDouble();
568+
symbolWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, f, mSymbolWidth ).toDouble();
569569
}
570570
else if ( context->renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
571571
{
@@ -578,9 +578,9 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
578578

579579
//height
580580
double symbolHeight = mSymbolHeight;
581-
if ( hasDataDefinedProperty( "height" ) ) //1. priority: data defined setting on symbol layer level
581+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT ) ) //1. priority: data defined setting on symbol layer level
582582
{
583-
symbolHeight = evaluateDataDefinedProperty( "height", f, mSymbolHeight ).toDouble();
583+
symbolHeight = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT, f, mSymbolHeight ).toDouble();
584584
}
585585
else if ( context->renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
586586
{
@@ -594,9 +594,9 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
594594
//outline width
595595
double outlineWidth = mOutlineWidth;
596596

597-
if ( hasDataDefinedProperty( "outline_width" ) )
597+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
598598
{
599-
outlineWidth = evaluateDataDefinedProperty( "outline_width", f, mOutlineWidth ).toDouble();
599+
outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, f, mOutlineWidth ).toDouble();
600600
}
601601
if ( mOutlineWidthUnit == QgsSymbolV2::MM )
602602
{
@@ -606,27 +606,27 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
606606
//fill color
607607
bool ok;
608608
QColor fc = mFillColor;
609-
if ( hasDataDefinedProperty( "fill_color" ) )
609+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR ) )
610610
{
611-
QString colorString = evaluateDataDefinedProperty( "fill_color", f, QVariant(), &ok ).toString();
611+
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR, f, QVariant(), &ok ).toString();
612612
if ( ok )
613613
fc = QColor( colorString );
614614
}
615615

616616
//outline color
617617
QColor oc = mOutlineColor;
618-
if ( hasDataDefinedProperty( "outline_color" ) )
618+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR ) )
619619
{
620-
QString colorString = evaluateDataDefinedProperty( "outline_color", f, QVariant(), &ok ).toString();
620+
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR, f, QVariant(), &ok ).toString();
621621
if ( ok )
622622
oc = QColor( colorString );
623623
}
624624

625625
//symbol name
626626
QString symbolName = mSymbolName;
627-
if ( hasDataDefinedProperty( "symbol_name" ) )
627+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME ) )
628628
{
629-
symbolName = evaluateDataDefinedProperty( "symbol_name", f, mSymbolName ).toString();
629+
symbolName = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME, f, mSymbolName ).toString();
630630
}
631631

632632
//offset
@@ -637,9 +637,9 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
637637

638638
//priority for rotation: 1. data defined symbol level, 2. symbol layer rotation (mAngle)
639639
double rotation = 0.0;
640-
if ( hasDataDefinedProperty( "rotation" ) )
640+
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION ) )
641641
{
642-
rotation = evaluateDataDefinedProperty( "rotation", f, mAngle ).toDouble() + mLineAngle;
642+
rotation = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION, f, mAngle ).toDouble() + mLineAngle;
643643
}
644644
else if ( !qgsDoubleNear( mAngle + mLineAngle, 0.0 ) )
645645
{

0 commit comments

Comments
 (0)