22 mVectorFieldType( Cartesian ), mAngleOrientation( ClockwiseFromNorth ), mAngleUnits( Degrees ), mXIndex( -1 ), mYIndex( -1 )
64 if ( properties.contains(
"x_attribute" ) )
68 if ( properties.contains(
"y_attribute" ) )
72 if ( properties.contains(
"distance_unit" ) )
76 if ( properties.contains(
"distance_map_unit_scale" ) )
80 if ( properties.contains(
"scale" ) )
82 symbolLayer->
setScale( properties[
"scale"].toDouble() );
84 if ( properties.contains(
"vector_field_type" ) )
88 if ( properties.contains(
"angle_orientation" ) )
92 if ( properties.contains(
"angle_units" ) )
96 if ( properties.contains(
"size" ) )
98 symbolLayer->
setSize( properties[
"size"].toDouble() );
100 if ( properties.contains(
"size_unit" ) )
104 if ( properties.contains(
"size_map_unit_scale" ) )
108 if ( properties.contains(
"offset" ) )
112 if ( properties.contains(
"offset_unit" ) )
116 if ( properties.contains(
"offset_map_unit_scale" ) )
147 line << QPointF( 0, 50 );
148 line << QPointF( 100, 50 );
152 double xComponent = 0;
153 double yComponent = 0;
190 line << QPointF( point.x() + xComponent, point.y() - yComponent );
239 properties[
"scale"] = QString::number(
mScale );
242 properties[
"angle_units"] = QString::number(
mAngleUnits );
243 properties[
"size"] = QString::number(
mSize );
254 element.appendChild( doc.createComment(
"VectorField not implemented yet..." ) );
274 QSet<QString> attributes;
297 angle = 360 - angle + 90;
303 angle = angle *
M_PI / 180.0;
306 x = length * sin( angle );
307 y = length * cos( angle );
static QgsSymbolLayerV2 * createFromSld(QDomElement &element)
static QString encodeOutputUnit(QgsSymbolV2::OutputUnit unit)
QgsSymbolV2::OutputUnit mDistanceUnit
void setXAttribute(const QString &attribute)
AngleOrientation mAngleOrientation
QgsMapUnitScale mSizeMapUnitScale
void setYAttribute(const QString &attribute)
QgsSymbolV2::OutputUnit outputUnit() const
QgsVectorFieldSymbolLayer()
void setMapUnitScale(const QgsMapUnitScale &scale)
void setAngleUnits(AngleUnits units)
void drawPreviewIcon(QPainter *painter, QSize size)
int fieldNameIndex(const QString &fieldName) const
Look up field's index from name - case insensitive TODO: sort out case sensitive (indexFromName()) vs...
void setOffset(QPointF offset)
void setMapUnitScale(const QgsMapUnitScale &scale)
VectorFieldType mVectorFieldType
static QPointF decodePoint(QString str)
Container of fields for a vector layer.
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
void setOutputUnit(QgsSymbolV2::OutputUnit unit)
QgsSymbolV2::OutputUnit outputUnit() const
QMap< QString, QString > QgsStringMap
~QgsVectorFieldSymbolLayer()
void toSld(QDomDocument &doc, QDomElement &element, QgsStringMap props) const
void setOffsetUnit(QgsSymbolV2::OutputUnit unit)
void startRender(QgsSymbolV2RenderContext &context)
A symbol layer class for displaying displacement arrows based on point layer attributes.
void stopRender(QgsSymbolV2RenderContext &context)
const QgsFeature * feature() const
Current feature being rendered - may be null.
QgsMapUnitScale mapUnitScale() const
static QString encodePoint(QPointF point)
void startRender(QgsRenderContext &context, const QgsFields *fields=0)
void toSld(QDomDocument &doc, QDomElement &element, QgsStringMap props) const
void renderPolyline(const QPolygonF &points, const QgsFeature *f, QgsRenderContext &context, int layer=-1, bool selected=false)
QgsMapUnitScale mDistanceMapUnitScale
void setSizeUnit(QgsSymbolV2::OutputUnit unit)
void setDistanceMapUnitScale(const QgsMapUnitScale &scale)
bool setSubSymbol(QgsSymbolV2 *symbol)
QgsMapUnitScale mapUnitScale() const
double ANALYSIS_EXPORT angle(Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
virtual QgsSymbolV2 * clone() const
static QgsSymbolLayerV2 * create(const QgsStringMap &properties=QgsStringMap())
void drawPreviewIcon(QgsSymbolV2RenderContext &context, QSize size)
Contains information about the context of a rendering operation.
void setOutputUnit(QgsSymbolV2::OutputUnit unit)
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
void stopRender(QgsRenderContext &context)
static double lineWidthScaleFactor(const QgsRenderContext &c, QgsSymbolV2::OutputUnit u, const QgsMapUnitScale &scale=QgsMapUnitScale())
Returns the line width scale factor depending on the unit and the paint device.
void renderPoint(const QPointF &point, QgsSymbolV2RenderContext &context)
QgsRenderContext & renderContext()
QgsLineSymbolV2 * mLineSymbol
QgsSymbolLayerV2 * clone() const
void setDistanceUnit(QgsSymbolV2::OutputUnit unit)
const QgsFields * fields() const
Fields of the layer.
void setAngleOrientation(AngleOrientation orientation)
QgsSymbolV2::OutputUnit mOffsetUnit
QgsSymbolV2::OutputUnit mSizeUnit
QgsMapUnitScale mOffsetMapUnitScale
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
QSet< QString > usedAttributes() const
void convertPolarToCartesian(double length, double angle, double &x, double &y) const
QgsStringMap properties() const
void setSize(double size)
virtual bool setSubSymbol(QgsSymbolV2 *symbol)
void setVectorFieldType(VectorFieldType type)
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
static QgsSymbolV2::OutputUnit decodeOutputUnit(QString str)