Skip to content

Commit 7f20833

Browse files
committed
- QgsSymbolLayerV2 descendants missing from sip.
QgsSymbolLayerV2 class has been modified to convert into SubClass as needed - A test is provided for check subclasses binding and behaviour - A fix has been done for src\core\symbology-ng\qgsellipsesymbollayerv2.cpp because of an error in createFromSld about fillColor Signed-off-by: endmax <massimo.endrighi@geopartner.it>
1 parent 58e423a commit 7f20833

17 files changed

+1000
-13
lines changed

python/core/symbology-ng/qgssymbollayerv2.sip

+44-10
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,52 @@ class QgsSymbolLayerV2
88
switch (sipCpp->type())
99
{
1010
case QgsSymbolV2::Marker:
11-
if( sipCpp->layerType() == "VectorField" )
12-
{
13-
sipClass = sipClass_QgsVectorFieldSymbolLayer;
14-
}
15-
else
16-
{
11+
if (dynamic_cast<QgsEllipseSymbolLayerV2*>(sipCpp) != NULL)
12+
sipClass = sipClass_QgsEllipseSymbolLayerV2;
13+
else if (dynamic_cast<QgsFontMarkerSymbolLayerV2*>(sipCpp) != NULL)
14+
sipClass = sipClass_QgsFontMarkerSymbolLayerV2;
15+
else if (dynamic_cast<QgsSimpleMarkerSymbolLayerV2*>(sipCpp) != NULL)
16+
sipClass = sipClass_QgsSimpleMarkerSymbolLayerV2;
17+
else if (dynamic_cast<QgsSvgMarkerSymbolLayerV2*>(sipCpp) != NULL)
18+
sipClass = sipClass_QgsSvgMarkerSymbolLayerV2;
19+
else if (dynamic_cast<QgsVectorFieldSymbolLayer*>(sipCpp) != NULL)
20+
sipClass = sipClass_QgsVectorFieldSymbolLayer;
21+
else
1722
sipClass = sipClass_QgsMarkerSymbolLayerV2;
18-
}
1923
break;
20-
case QgsSymbolV2::Line: sipClass = sipClass_QgsLineSymbolLayerV2; break;
21-
case QgsSymbolV2::Fill: sipClass = sipClass_QgsFillSymbolLayerV2; break;
22-
default: sipClass = 0; break;
24+
25+
case QgsSymbolV2::Line:
26+
if (dynamic_cast<QgsLineDecorationSymbolLayerV2*>(sipCpp) != NULL)
27+
sipClass = sipClass_QgsLineDecorationSymbolLayerV2;
28+
else if (dynamic_cast<QgsMarkerLineSymbolLayerV2*>(sipCpp) != NULL)
29+
sipClass = sipClass_QgsMarkerLineSymbolLayerV2;
30+
else if (dynamic_cast<QgsSimpleLineSymbolLayerV2*>(sipCpp) != NULL)
31+
sipClass = sipClass_QgsSimpleLineSymbolLayerV2;
32+
else
33+
sipClass = sipClass_QgsLineSymbolLayerV2;
34+
break;
35+
36+
case QgsSymbolV2::Fill:
37+
if (dynamic_cast<QgsSimpleFillSymbolLayerV2*>(sipCpp) != NULL)
38+
sipClass = sipClass_QgsSimpleFillSymbolLayerV2;
39+
else if (dynamic_cast<QgsImageFillSymbolLayer*>(sipCpp) != NULL)
40+
if (dynamic_cast<QgsLinePatternFillSymbolLayer*>(sipCpp) != NULL)
41+
sipClass = sipClass_QgsLinePatternFillSymbolLayer;
42+
else if (dynamic_cast<QgsPointPatternFillSymbolLayer*>(sipCpp) != NULL)
43+
sipClass = sipClass_QgsPointPatternFillSymbolLayer;
44+
else if (dynamic_cast<QgsSVGFillSymbolLayer*>(sipCpp) != NULL)
45+
sipClass = sipClass_QgsSVGFillSymbolLayer;
46+
else
47+
sipClass = sipClass_QgsImageFillSymbolLayer;
48+
else if (dynamic_cast<QgsCentroidFillSymbolLayerV2*>(sipCpp) != NULL)
49+
sipClass = sipClass_QgsCentroidFillSymbolLayerV2;
50+
else
51+
sipClass = sipClass_QgsFillSymbolLayerV2;
52+
break;
53+
54+
default:
55+
sipClass = 0;
56+
break;
2357
}
2458
%End
2559

src/core/symbology-ng/qgsellipsesymbollayerv2.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ QgsSymbolLayerV2* QgsEllipseSymbolLayerV2::createFromSld( QDomElement &element )
274274
return NULL;
275275

276276
QString name = "circle";
277-
QColor color, borderColor;
277+
QColor fillColor, borderColor;
278278
double borderWidth, size;
279279
double widthHeightFactor = 1.0;
280280

@@ -290,7 +290,7 @@ QgsSymbolLayerV2* QgsEllipseSymbolLayerV2::createFromSld( QDomElement &element )
290290
}
291291
}
292292

293-
if ( !QgsSymbolLayerV2Utils::wellKnownMarkerFromSld( graphicElem, name, color, borderColor, borderWidth, size ) )
293+
if ( !QgsSymbolLayerV2Utils::wellKnownMarkerFromSld( graphicElem, name, fillColor, borderColor, borderWidth, size ) )
294294
return NULL;
295295

296296
double angle = 0.0;
@@ -305,7 +305,7 @@ QgsSymbolLayerV2* QgsEllipseSymbolLayerV2::createFromSld( QDomElement &element )
305305

306306
QgsEllipseSymbolLayerV2 *m = new QgsEllipseSymbolLayerV2();
307307
m->setSymbolName( name );
308-
m->setColor( color );
308+
m->setFillColor( fillColor );
309309
m->setOutlineColor( borderColor );
310310
m->setOutlineWidth( borderWidth );
311311
m->setSymbolWidth( size );

tests/src/python/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ ADD_PYTHON_TEST(PyQgsComposerHtml test_qgscomposerhtml.py)
1313
ADD_PYTHON_TEST(PyQgsComposition test_qgscomposition.py)
1414
ADD_PYTHON_TEST(PyQgsAnalysis test_qgsanalysis.py)
1515
#ADD_PYTHON_TEST(PyQgsComposerMap test_qgscomposermap.py)
16+
ADD_PYTHON_TEST(PyQgsSymbolLayerV2 test_qgssymbollayerv2.py)

0 commit comments

Comments
 (0)