@@ -999,7 +999,12 @@ void QgsDxfExport::writeEntities()
999
999
continue ;
1000
1000
}
1001
1001
1002
- ctx.expressionContext ().appendScope ( QgsExpressionContextUtils::layerScope ( ml ) );
1002
+ auto scopePopper = [&ctx]( QgsExpressionContextScope * scope )
1003
+ {
1004
+ delete ctx.expressionContext ().popScope ();
1005
+ };
1006
+ std::unique_ptr<QgsExpressionContextScope, decltype ( scopePopper ) > layerScope ( QgsExpressionContextUtils::layerScope ( ml ), scopePopper );
1007
+ ctx.expressionContext ().appendScope ( layerScope.get () );
1003
1008
QgsSymbolRenderContext sctx ( ctx, QgsUnitTypes::RenderMillimeters, 1.0 , false , nullptr , nullptr );
1004
1009
1005
1010
std::unique_ptr< QgsFeatureRenderer > renderer ( vl->renderer ()->clone () );
@@ -1048,7 +1053,6 @@ void QgsDxfExport::writeEntities()
1048
1053
writeEntitiesSymbolLevels ( vl );
1049
1054
renderer->stopRender ( ctx );
1050
1055
1051
- delete ctx.expressionContext ().popScope ();
1052
1056
continue ;
1053
1057
}
1054
1058
@@ -1089,7 +1093,7 @@ void QgsDxfExport::writeEntities()
1089
1093
continue ;
1090
1094
}
1091
1095
1092
- bool isGeometryGenerator = ( sl->layerType () == " GeometryGenerator" );
1096
+ bool isGeometryGenerator = ( sl->layerType () == QLatin1String ( " GeometryGenerator" ) );
1093
1097
if ( isGeometryGenerator )
1094
1098
{
1095
1099
addGeometryGeneratorSymbolLayer ( sctx, ct, lName, sl, true );
@@ -1110,7 +1114,7 @@ void QgsDxfExport::writeEntities()
1110
1114
continue ;
1111
1115
}
1112
1116
1113
- if ( s->symbolLayer ( 0 )->layerType () == " GeometryGenerator" )
1117
+ if ( s->symbolLayer ( 0 )->layerType () == QLatin1String ( " GeometryGenerator" ) )
1114
1118
{
1115
1119
addGeometryGeneratorSymbolLayer ( sctx, ct, lName, s->symbolLayer ( 0 ), false );
1116
1120
}
@@ -1132,7 +1136,6 @@ void QgsDxfExport::writeEntities()
1132
1136
}
1133
1137
1134
1138
renderer->stopRender ( ctx );
1135
- delete ctx.expressionContext ().popScope ();
1136
1139
}
1137
1140
1138
1141
engine.run ( ctx );
@@ -3989,15 +3992,15 @@ QgsRenderContext QgsDxfExport::renderContext() const
3989
3992
return context;
3990
3993
}
3991
3994
3992
- double QgsDxfExport::mapUnitScaleFactor ( double scaleDenominator , QgsUnitTypes::RenderUnit symbolUnits, QgsUnitTypes::DistanceUnit mapUnits, double mapUnitsPerPixel )
3995
+ double QgsDxfExport::mapUnitScaleFactor ( double scale , QgsUnitTypes::RenderUnit symbolUnits, QgsUnitTypes::DistanceUnit mapUnits, double mapUnitsPerPixel )
3993
3996
{
3994
3997
if ( symbolUnits == QgsUnitTypes::RenderMapUnits )
3995
3998
{
3996
3999
return 1.0 ;
3997
4000
}
3998
4001
else if ( symbolUnits == QgsUnitTypes::RenderMillimeters )
3999
4002
{
4000
- return ( scaleDenominator * QgsUnitTypes::fromUnitToUnitFactor ( QgsUnitTypes::DistanceMeters, mapUnits ) / 1000.0 );
4003
+ return ( scale * QgsUnitTypes::fromUnitToUnitFactor ( QgsUnitTypes::DistanceMeters, mapUnits ) / 1000.0 );
4001
4004
}
4002
4005
else if ( symbolUnits == QgsUnitTypes::RenderPixels )
4003
4006
{
0 commit comments