Skip to content

Commit c3852c0

Browse files
committed
Don't rely on RTTI to convert symbol layer to sip objects
1 parent 4e8357f commit c3852c0

File tree

1 file changed

+36
-40
lines changed

1 file changed

+36
-40
lines changed

python/core/symbology-ng/qgssymbollayerv2.sip

Lines changed: 36 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
class QgsSymbolLayerV2
22
{
33
%TypeHeaderCode
4+
#include <qgssymbolv2.h>
45
#include <qgssymbollayerv2.h>
56
#include <qgslinesymbollayerv2.h>
67
%End
@@ -9,57 +10,52 @@ class QgsSymbolLayerV2
910
switch (sipCpp->type())
1011
{
1112
case QgsSymbolV2::Marker:
12-
if (dynamic_cast<QgsEllipseSymbolLayerV2*>(sipCpp) != NULL)
13-
sipType = sipType_QgsEllipseSymbolLayerV2;
14-
else if (dynamic_cast<QgsFontMarkerSymbolLayerV2*>(sipCpp) != NULL)
15-
sipType = sipType_QgsFontMarkerSymbolLayerV2;
16-
else if (dynamic_cast<QgsSimpleMarkerSymbolLayerV2*>(sipCpp) != NULL)
17-
sipType = sipType_QgsSimpleMarkerSymbolLayerV2;
18-
else if (dynamic_cast<QgsFilledMarkerSymbolLayer*>(sipCpp) != NULL)
19-
sipType = sipType_QgsFilledMarkerSymbolLayer;
20-
else if (dynamic_cast<QgsSvgMarkerSymbolLayerV2*>(sipCpp) != NULL)
21-
sipType = sipType_QgsSvgMarkerSymbolLayerV2;
22-
else if (dynamic_cast<QgsVectorFieldSymbolLayer*>(sipCpp) != NULL)
23-
sipType = sipType_QgsVectorFieldSymbolLayer;
13+
if ( sipCpp->layerType() == "EllipseMarker" )
14+
sipType = sipType_QgsEllipseSymbolLayerV2;
15+
else if ( sipCpp->layerType() == "FontMarker" )
16+
sipType = sipType_QgsFontMarkerSymbolLayerV2;
17+
else if ( sipCpp->layerType() == "SimpleMarker" )
18+
sipType = sipType_QgsSimpleMarkerSymbolLayerV2;
19+
else if ( sipCpp->layerType() == "FilledMarker" )
20+
sipType = sipType_QgsFilledMarkerSymbolLayer;
21+
else if ( sipCpp->layerType() == "SvgMarker" )
22+
sipType = sipType_QgsSvgMarkerSymbolLayerV2;
23+
else if ( sipCpp->layerType() == "VectorField" )
24+
sipType = sipType_QgsVectorFieldSymbolLayer;
2425
else
2526
sipType = sipType_QgsMarkerSymbolLayerV2;
2627
break;
2728

2829
case QgsSymbolV2::Line:
29-
if (dynamic_cast<QgsMarkerLineSymbolLayerV2*>(sipCpp) != NULL)
30-
sipType = sipType_QgsMarkerLineSymbolLayerV2;
31-
else if (dynamic_cast<QgsSimpleLineSymbolLayerV2*>(sipCpp) != NULL)
32-
sipType = sipType_QgsSimpleLineSymbolLayerV2;
33-
else if (dynamic_cast<QgsArrowSymbolLayer*>(sipCpp) != NULL)
34-
sipType = sipType_QgsArrowSymbolLayer;
30+
if ( sipCpp->layerType() == "MarkerLine" )
31+
sipType = sipType_QgsMarkerLineSymbolLayerV2;
32+
else if ( sipCpp->layerType() == "SimpleLine" )
33+
sipType = sipType_QgsSimpleLineSymbolLayerV2;
34+
else if ( sipCpp->layerType() == "ArrowLine" )
35+
sipType = sipType_QgsArrowSymbolLayer;
3536
else
3637
sipType = sipType_QgsLineSymbolLayerV2;
3738
break;
3839

3940
case QgsSymbolV2::Fill:
40-
if (dynamic_cast<QgsSimpleFillSymbolLayerV2*>(sipCpp) != NULL)
41-
sipType = sipType_QgsSimpleFillSymbolLayerV2;
42-
else if (dynamic_cast<QgsImageFillSymbolLayer*>(sipCpp) != NULL)
43-
{
44-
if (dynamic_cast<QgsLinePatternFillSymbolLayer*>(sipCpp) != NULL)
45-
sipType = sipType_QgsLinePatternFillSymbolLayer;
46-
else if (dynamic_cast<QgsPointPatternFillSymbolLayer*>(sipCpp) != NULL)
47-
sipType = sipType_QgsPointPatternFillSymbolLayer;
48-
else if (dynamic_cast<QgsSVGFillSymbolLayer*>(sipCpp) != NULL)
49-
sipType = sipType_QgsSVGFillSymbolLayer;
50-
else if (dynamic_cast<QgsRasterFillSymbolLayer*>(sipCpp) != NULL)
51-
sipType = sipType_QgsRasterFillSymbolLayer;
52-
else
53-
sipType = sipType_QgsImageFillSymbolLayer;
54-
}
55-
else if (dynamic_cast<QgsCentroidFillSymbolLayerV2*>(sipCpp) != NULL)
56-
sipType = sipType_QgsCentroidFillSymbolLayerV2;
57-
else if (dynamic_cast<QgsGradientFillSymbolLayerV2*>(sipCpp) != NULL)
58-
sipType = sipType_QgsGradientFillSymbolLayerV2;
59-
else if (dynamic_cast<QgsShapeburstFillSymbolLayerV2*>(sipCpp) != NULL)
60-
sipType = sipType_QgsShapeburstFillSymbolLayerV2;
41+
if ( sipCpp->layerType() == "SimpleFill" )
42+
sipType = sipType_QgsSimpleFillSymbolLayerV2;
43+
else if ( sipCpp->layerType() == "LinePatternFill" )
44+
sipType = sipType_QgsLinePatternFillSymbolLayer;
45+
else if ( sipCpp->layerType() == "PointPatternFill" )
46+
sipType = sipType_QgsPointPatternFillSymbolLayer;
47+
else if ( sipCpp->layerType() == "SVGFill" )
48+
sipType = sipType_QgsSVGFillSymbolLayer;
49+
else if ( sipCpp->layerType() == "RasterFill" )
50+
sipType = sipType_QgsRasterFillSymbolLayer;
51+
else if ( sipCpp->layerType() == "CentroidFill" )
52+
sipType = sipType_QgsCentroidFillSymbolLayerV2;
53+
else if ( sipCpp->layerType() == "GradientFill" )
54+
sipType = sipType_QgsGradientFillSymbolLayerV2;
55+
else if ( sipCpp->layerType() == "ShapeburstFill" )
56+
sipType = sipType_QgsShapeburstFillSymbolLayerV2;
6157
else
62-
sipType = sipType_QgsFillSymbolLayerV2;
58+
sipType = sipType_QgsFillSymbolLayerV2;
6359
break;
6460

6561
case QgsSymbolV2::Hybrid:

0 commit comments

Comments
 (0)