Skip to content

Commit 176987e

Browse files
committedNov 21, 2016
Don't rely on RTTI to convert symbol layer to sip objects
1 parent 0185453 commit 176987e

File tree

1 file changed

+32
-36
lines changed

1 file changed

+32
-36
lines changed
 

‎python/core/symbology-ng/qgssymbollayerv2.sip

Lines changed: 32 additions & 36 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,53 +10,48 @@ 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<QgsSvgMarkerSymbolLayerV2*>(sipCpp) != NULL)
19-
sipType = sipType_QgsSvgMarkerSymbolLayerV2;
20-
else if (dynamic_cast<QgsVectorFieldSymbolLayer*>(sipCpp) != NULL)
21-
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() == "SvgMarker" )
20+
sipType = sipType_QgsSvgMarkerSymbolLayerV2;
21+
else if ( sipCpp->layerType() == "VectorField" )
22+
sipType = sipType_QgsVectorFieldSymbolLayer;
2223
else
2324
sipType = sipType_QgsMarkerSymbolLayerV2;
2425
break;
2526

2627
case QgsSymbolV2::Line:
27-
if (dynamic_cast<QgsMarkerLineSymbolLayerV2*>(sipCpp) != NULL)
28-
sipType = sipType_QgsMarkerLineSymbolLayerV2;
29-
else if (dynamic_cast<QgsSimpleLineSymbolLayerV2*>(sipCpp) != NULL)
30-
sipType = sipType_QgsSimpleLineSymbolLayerV2;
28+
if ( sipCpp->layerType() == "MarkerLine" )
29+
sipType = sipType_QgsMarkerLineSymbolLayerV2;
30+
else if ( sipCpp->layerType() == "SimpleLine" )
31+
sipType = sipType_QgsSimpleLineSymbolLayerV2;
3132
else
3233
sipType = sipType_QgsLineSymbolLayerV2;
3334
break;
3435

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

6157
case QgsSymbolV2::Hybrid:

0 commit comments

Comments
 (0)