From ed13141b672f6c3bbf56d0b39890cbc4456093ba Mon Sep 17 00:00:00 2001 From: Marco Hugentobler Date: Tue, 15 Nov 2011 16:22:46 +0100 Subject: [PATCH] Added python bindings for vector field symbollayer --- python/core/core.sip | 1 + python/core/qgsvectorfieldsymbollayer.sip | 60 +++++++++++++++++++++++ python/core/symbology-ng-core.sip | 11 ++++- 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 python/core/qgsvectorfieldsymbollayer.sip diff --git a/python/core/core.sip b/python/core/core.sip index c8c084a0b4e..9bc3173821f 100644 --- a/python/core/core.sip +++ b/python/core/core.sip @@ -82,6 +82,7 @@ %Include qgsuniquevaluerenderer.sip %Include qgsattributeaction.sip %Include qgsvectordataprovider.sip +%Include qgsvectorfieldsymbollayer.sip %Include qgsvectorfilewriter.sip %Include qgsvectorlayer.sip %Include qgsvectorlayerimport.sip diff --git a/python/core/qgsvectorfieldsymbollayer.sip b/python/core/qgsvectorfieldsymbollayer.sip new file mode 100644 index 00000000000..679e9e6a350 --- /dev/null +++ b/python/core/qgsvectorfieldsymbollayer.sip @@ -0,0 +1,60 @@ +class QgsVectorFieldSymbolLayer: QgsMarkerSymbolLayerV2 +{ + %TypeHeaderCode + #include + %End + public: + enum VectorFieldType + { + Cartesian = 0, + Polar, + Height + }; + + enum AngleOrientation + { + ClockwiseFromNorth = 0, + CounterclockwiseFromEast + }; + + enum AngleUnits + { + Degrees = 0, + Radians + }; + + QgsVectorFieldSymbolLayer(); + ~QgsVectorFieldSymbolLayer(); + + static QgsSymbolLayerV2* create( const QgsStringMap& properties ); + + QString layerType() const; + + bool setSubSymbol( QgsSymbolV2* symbol ); + QgsSymbolV2* subSymbol(); + + void renderPoint( const QPointF& point, QgsSymbolV2RenderContext& context ); + void startRender( QgsSymbolV2RenderContext& context ); + void stopRender( QgsSymbolV2RenderContext& context ); + + QgsSymbolLayerV2* clone() const; + QgsStringMap properties() const; + + void drawPreviewIcon( QgsSymbolV2RenderContext& context, QSize size ); + + QSet usedAttributes() const; + + //setters and getters + void setXAttribute( const QString& attribute ); + QString xAttribute() const; + void setYAttribute( const QString& attribute ); + QString yAttribute() const; + void setScale( double s ); + double scale() const; + void setVectorFieldType( VectorFieldType type ); + VectorFieldType vectorFieldType() const; + void setAngleOrientation( AngleOrientation orientation ); + AngleOrientation angleOrientation() const; + void setAngleUnits( AngleUnits units ); + AngleUnits angleUnits() const; +}; \ No newline at end of file diff --git a/python/core/symbology-ng-core.sip b/python/core/symbology-ng-core.sip index 894090d5e0b..2a909271abc 100644 --- a/python/core/symbology-ng-core.sip +++ b/python/core/symbology-ng-core.sip @@ -490,7 +490,16 @@ class QgsSymbolLayerV2 %ConvertToSubClassCode switch (sipCpp->type()) { - case QgsSymbolV2::Marker: sipClass = sipClass_QgsMarkerSymbolLayerV2; break; + case QgsSymbolV2::Marker: + if( sipCpp->layerType() == "VectorField" ) + { + sipClass = sipClass_QgsVectorFieldSymbolLayer; + } + else + { + sipClass = sipClass_QgsMarkerSymbolLayerV2; + } + break; case QgsSymbolV2::Line: sipClass = sipClass_QgsLineSymbolLayerV2; break; case QgsSymbolV2::Fill: sipClass = sipClass_QgsFillSymbolLayerV2; break; default: sipClass = 0; break;