29 #include <QDomDocument>
30 #include <QDomElement>
35 : mPenStyle( penStyle )
38 , mUseCustomDashPattern( false )
40 , mDrawInsidePolygon( false )
90 if ( props.
contains(
"line_color" ) )
94 else if ( props.
contains(
"outline_color" ) )
98 else if ( props.
contains(
"color" ) )
103 if ( props.
contains(
"line_width" ) )
105 width = props[
"line_width"].toDouble();
107 else if ( props.
contains(
"outline_width" ) )
109 width = props[
"outline_width"].toDouble();
111 else if ( props.
contains(
"width" ) )
114 width = props[
"width"].toDouble();
116 if ( props.
contains(
"line_style" ) )
120 else if ( props.
contains(
"outline_style" ) )
124 else if ( props.
contains(
"penstyle" ) )
130 if ( props.
contains(
"line_width_unit" ) )
134 else if ( props.
contains(
"outline_width_unit" ) )
138 else if ( props.
contains(
"width_unit" ) )
143 if ( props.
contains(
"width_map_unit_scale" ) )
146 l->
setOffset( props[
"offset"].toDouble() );
147 if ( props.
contains(
"offset_unit" ) )
149 if ( props.
contains(
"offset_map_unit_scale" ) )
151 if ( props.
contains(
"joinstyle" ) )
156 if ( props.
contains(
"use_custom_dash" ) )
160 if ( props.
contains(
"customdash" ) )
164 if ( props.
contains(
"customdash_unit" ) )
168 if ( props.
contains(
"customdash_map_unit_scale" ) )
173 if ( props.
contains(
"draw_inside_polygon" ) )
201 double dashWidthDiv = scaledWidth;
204 if ( versionSplit.
size() > 1
205 && versionSplit.
at( 1 ).toInt() >= 8
260 for ( ; it != rings->
constEnd(); ++it )
275 Q_FOREACH (
const QPolygonF& ring, *rings )
303 applyDataDefinedSymbology( context,
mPen,
mSelPen, offset );
309 if ( points.
size() <= 2 &&
340 for (
int part = 0; part < mline.count(); ++part )
401 if ( !props.
value(
"uom",
"" ).isEmpty() )
448 if ( strokeElem.
isNull() )
460 &penJoinStyle, &penCapStyle,
461 &customDashVector ) )
466 if ( !perpOffsetElem.
isNull() )
496 bool hasStrokeWidthExpression =
false;
505 hasStrokeWidthExpression =
true;
531 if ( hasStrokeWidthExpression )
533 dashWidthDiv = pen.
widthF();
534 scaledWidth = pen.
widthF();
539 if ( versionSplit.
size() > 1
540 && versionSplit.
at( 1 ).toInt() >= 8
551 for ( ; dashIt != dashList.
constEnd(); ++dashIt )
661 MyLine(
QPointF p1,
QPointF p2 ) : mVertical( false ), mIncreasing( false ), mT( 0.0 ), mLength( 0.0 )
671 mIncreasing = ( p2.
y() > p1.
y() );
676 mT = float( p2.
y() - p1.
y() ) / ( p2.
x() - p1.
x() );
677 mIncreasing = ( p2.
x() > p1.
x() );
681 double x = ( p2.
x() - p1.
x() );
682 double y = ( p2.
y() - p1.
y() );
683 mLength = sqrt( x * x + y * y );
689 double a = ( mVertical ?
M_PI / 2 : atan( mT ) );
697 QPointF diffForInterval(
double interval )
700 return ( mIncreasing ?
QPointF( 0, interval ) :
QPointF( 0, -interval ) );
702 double alpha = atan( mT );
703 double dx = cos( alpha ) * interval;
704 double dy = sin( alpha ) * interval;
708 double length() {
return mLength; }
744 interval = props[
"interval"].toDouble();
746 rotate = ( props[
"rotate"] ==
"1" );
751 x->
setOffset( props[
"offset"].toDouble() );
753 if ( props.
contains(
"offset_unit" ) )
757 if ( props.
contains(
"interval_unit" ) )
761 if ( props.
contains(
"offset_along_line" ) )
765 if ( props.
contains(
"offset_along_line_unit" ) )
769 if ( props.
contains((
"offset_along_line_map_unit_scale" ) ) )
774 if ( props.
contains(
"offset_map_unit_scale" ) )
778 if ( props.
contains(
"interval_map_unit_scale" ) )
783 if ( props.
contains(
"placement" ) )
785 if ( props[
"placement"] ==
"vertex" )
787 else if ( props[
"placement"] ==
"lastvertex" )
789 else if ( props[
"placement"] ==
"firstvertex" )
791 else if ( props[
"placement"] ==
"centralpoint" )
793 else if ( props[
"placement"] ==
"curvepoint" )
861 if ( placementString.
compare(
"vertex", Qt::CaseInsensitive ) == 0 )
865 else if ( placementString.
compare(
"lastvertex", Qt::CaseInsensitive ) == 0 )
869 else if ( placementString.
compare(
"firstvertex", Qt::CaseInsensitive ) == 0 )
873 else if ( placementString.
compare(
"centerpoint", Qt::CaseInsensitive ) == 0 )
877 else if ( placementString.
compare(
"curvepoint", Qt::CaseInsensitive ) == 0 )
905 for (
int part = 0; part < mline.
count(); ++part )
907 const QPolygonF &points2 = mline[ part ];
933 for (
int i = 0; i < rings->
size(); ++i )
951 double lengthLeft = 0;
975 for (
int i = 1; i < points.
count(); ++i )
983 MyLine l( lastPt, pt );
984 QPointF diff = l.diffForInterval( painterUnitInterval );
988 double c = 1 - lengthLeft / painterUnitInterval;
990 lengthLeft += l.length();
1000 while ( lengthLeft > painterUnitInterval )
1004 lengthLeft -= painterUnitInterval;
1016 double a1 = MyLine( prevPt, pt ).angle();
1017 double a2 = MyLine( pt, nextPt ).angle();
1018 double unitX = cos( a1 ) + cos( a2 ), unitY = sin( a1 ) + sin( a2 );
1020 return atan2( unitY, unitX );
1032 bool isRing =
false;
1062 x = vPoint.
x(), y = vPoint.
y();
1089 i = points.
count() - 1;
1090 maxCount = points.
count();
1092 else if ( placement ==
Vertex )
1095 maxCount = points.
count();
1108 renderOffsetVertexAlongLine( points, i, distance, context );
1114 for ( ; i < maxCount; ++i )
1116 if ( isRing && placement ==
Vertex && i == points.
count() - 1 )
1137 const QPointF& pt = points[vertex];
1139 if ( isRing || ( vertex > 0 && vertex < points.
count() - 1 ) )
1141 int prevIndex = vertex - 1;
1142 int nextIndex = vertex + 1;
1144 if ( isRing && ( vertex == 0 || vertex == points.
count() - 1 ) )
1146 prevIndex = points.
count() - 2;
1151 while ( prevIndex >= 0 )
1153 prevPoint = points[ prevIndex ];
1154 if ( prevPoint != pt )
1161 while ( nextIndex < points.
count() )
1163 nextPoint = points[ nextIndex ];
1164 if ( nextPoint != pt )
1171 if ( prevIndex >= 0 && nextIndex < points.
count() )
1180 while ( vertex < points.
size() - 1 )
1182 const QPointF& nextPt = points[vertex+1];
1185 angle = MyLine( pt, nextPt ).angle();
1194 while ( vertex >= 1 )
1196 const QPointF& prevPt = points[vertex-1];
1199 angle = MyLine( prevPt, pt ).angle();
1221 bool isRing =
false;
1231 int pointIncrement = distance > 0 ? 1 : -1;
1232 QPointF previousPoint = points[vertex];
1233 int startPoint = distance > 0 ? qMin( vertex + 1, points.
count() - 1 ) : qMax( vertex - 1, 0 );
1234 int endPoint = distance > 0 ? points.
count() - 1 : 0;
1235 double distanceLeft = qAbs( distance );
1237 for (
int i = startPoint; pointIncrement > 0 ? i <= endPoint : i >= endPoint; i += pointIncrement )
1239 const QPointF& pt = points[i];
1241 if ( previousPoint == pt )
1245 MyLine l( previousPoint, pt );
1247 if ( distanceLeft < l.length() )
1250 QPointF markerPoint = previousPoint + l.diffForInterval( distanceLeft );
1260 distanceLeft -= l.length();
1276 for ( ++it; it != points.
constEnd(); ++it )
1278 length += sqrt(( last.
x() - it->x() ) * ( last.
x() - it->x() ) +
1279 ( last.
y() - it->y() ) * ( last.
y() - it->y() ) );
1286 qreal last_at = 0, next_at = 0;
1289 for ( ++it; it != points.
constEnd(); ++it )
1292 next_at += sqrt(( last.
x() - it->x() ) * ( last.
x() - it->x() ) +
1293 ( last.
y() - it->y() ) * ( last.
y() - it->y() ) );
1294 if ( next_at >= length / 2 )
1302 MyLine l( last, next );
1303 qreal k = ( length * 0.5 - last_at ) / ( next_at - last_at );
1304 QPointF pt = last + ( next - last ) * k;
1331 map[
"placement"] =
"vertex";
1333 map[
"placement"] =
"lastvertex";
1335 map[
"placement"] =
"firstvertex";
1337 map[
"placement"] =
"centralpoint";
1339 map[
"placement"] =
"curvepoint";
1341 map[
"placement"] =
"interval";
1389 if ( !props.
value(
"uom",
"" ).isEmpty() )
1444 if ( !gap.isEmpty() )
1466 if ( strokeElem.
isNull() )
1470 if ( graphicStrokeElem.
isNull() )
1480 if ( it.key() ==
"placement" )
1482 if ( it.value() ==
"points" ) placement =
Vertex;
1483 else if ( it.value() ==
"firstPoint" ) placement =
FirstVertex;
1484 else if ( it.value() ==
"lastPoint" ) placement =
LastVertex;
1485 else if ( it.value() ==
"centralPoint" ) placement =
CentralPoint;
1487 else if ( it.value() ==
"rotateMarker" )
1489 rotateMarker = it.value() ==
"0";
1506 double interval = 0.0;
1516 double offset = 0.0;
1518 if ( !perpOffsetElem.
isNull() )
virtual QSet< QString > usedAttributes() const
Returns the set of attributes referenced by the layer.
static double mapUnitScaleFactor(double scaleDenominator, QgsSymbolV2::OutputUnit symbolUnits, QGis::UnitType mapUnits)
void setIntervalUnit(QgsSymbolV2::OutputUnit unit)
static QString encodeOutputUnit(QgsSymbolV2::OutputUnit unit)
const QgsCurveV2 * exteriorRing() const
#define DEFAULT_SIMPLELINE_PENSTYLE
#define DEFAULT_MARKERLINE_ROTATE
static const QString EXPR_JOINSTYLE
double estimateMaxBleed() const override
Returns the estimated maximum distance which the layer style will bleed outside the drawn shape...
void setStyle(Qt::PenStyle style)
double dxfWidth(const QgsDxfExport &e, QgsSymbolV2RenderContext &context) const override
OutputUnit
The unit of the output.
float threshold() const
Gets the simplification threshold of the vector layer managed.
QVector< qreal > dxfCustomDashPattern(QgsSymbolV2::OutputUnit &unit) const override
static bool lineFromSld(QDomElement &element, Qt::PenStyle &penStyle, QColor &color, double &width, Qt::PenJoinStyle *penJoinStyle=nullptr, Qt::PenCapStyle *penCapStyle=nullptr, QVector< qreal > *customDashPattern=nullptr, double *dashOffset=nullptr)
A container class for data source field mapping or expression.
bool contains(const Key &key) const
virtual double width() const
void setClipPath(const QPainterPath &path, Qt::ClipOperation operation)
double markerAngle(const QPolygonF &points, bool isRing, int vertex)
void renderPolyline(const QPolygonF &points, QgsSymbolV2RenderContext &context) override
static double _averageAngle(QPointF prevPt, QPointF pt, QPointF nextPt)
void setRenderHint(RenderHint hint, bool on)
QDomNode appendChild(const QDomNode &newChild)
#define DEFAULT_MARKERLINE_INTERVAL
QgsStringMap properties() const override
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
double x() const
Returns the point's x-coordinate.
static double rescaleUom(double size, QgsSymbolV2::OutputUnit unit, const QgsStringMap &props)
Rescales the given size based on the uomScale found in the props, if any is found, otherwise returns the value un-modified.
static QDomElement createVendorOptionElement(QDomDocument &doc, const QString &name, const QString &value)
RenderHints renderHints() const
static void createGeometryElement(QDomDocument &doc, QDomElement &element, const QString &geomFunc)
QColor selectionColor() const
QSet< QString > usedAttributes() const
Return a list of attributes required to render this feature.
const QgsVectorSimplifyMethod & vectorSimplifyMethod() const
Added in QGIS v2.4.
QString nodeValue() const
virtual void setWidth(double width) override
void setDataDefinedSize(const QgsDataDefined &dd)
Set data defined size for whole symbol (including all symbol layers).
void setCustomDashPatternUnit(QgsSymbolV2::OutputUnit unit)
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
static QString encodeColor(const QColor &color)
Placement
Defines how/where the marker should be placed on the line.
QgsMapUnitScale mCustomDashPatternMapUnitScale
double size() const
Returns the size for the whole symbol, which is the maximum size of all marker symbol layers in the s...
void renderPolyline(const QPolygonF &points, QgsSymbolV2RenderContext &context) override
static const QString EXPR_WIDTH
static const QString EXPR_CUSTOMDASH
void drawPolyline(const QPointF *points, int pointCount)
static QgsStringMap getVendorOptionList(QDomElement &element)
virtual void writeSldMarker(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const
QGis::UnitType mapUnits() const
Retrieve map units.
const_iterator constEnd() const
void startRender(QgsSymbolV2RenderContext &context) override
const T & at(int i) const
void setUseCustomDashPattern(bool b)
static QVector< qreal > decodeRealVector(const QString &s)
void renderPolylineInterval(const QPolygonF &points, QgsSymbolV2RenderContext &context)
QgsSymbolV2::OutputUnit outputUnit() const override
QVector< qreal > customDashVector() const
bool setSubSymbol(QgsSymbolV2 *symbol) override
set layer's subsymbol. takes ownership of the passed symbol
QGis::GeometryType type() const
Returns type of the geometry as a QGis::GeometryType.
void setPenJoinStyle(Qt::PenJoinStyle style)
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for data defined symbology.
double dxfOffset(const QgsDxfExport &e, QgsSymbolV2RenderContext &context) const override
static QString ogrFeatureStylePen(double width, double mmScaleFactor, double mapUnitsScaleFactor, const QColor &c, Qt::PenJoinStyle joinStyle=Qt::MiterJoin, Qt::PenCapStyle capStyle=Qt::FlatCap, double offset=0.0, const QVector< qreal > *dashPattern=nullptr)
Create ogr feature style string for pen.
void setJoinStyle(Qt::PenJoinStyle style)
Qt::PenCapStyle mPenCapStyle
static Qt::PenJoinStyle decodePenJoinStyle(const QString &str)
void copyPaintEffect(QgsSymbolLayerV2 *destLayer) const
Copies paint effect of this layer to another symbol layer.
static const bool selectionIsOpaque
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
virtual bool hasDataDefinedProperty(const QString &property) const
Checks whether the layer has a matching data defined property and if that property is currently activ...
static const QString EXPR_OFFSET_ALONG_LINE
QgsMapUnitScale mWidthMapUnitScale
void setIntervalMapUnitScale(const QgsMapUnitScale &scale)
const QgsCoordinateTransform * coordinateTransform() const
QString layerType() const override
Returns a string that represents this layer type.
double toDouble(bool *ok) const
void setMapUnitScale(const QgsMapUnitScale &scale) override
QgsMapUnitScale mOffsetMapUnitScale
bool qgsDoubleNear(double a, double b, double epsilon=4 *DBL_EPSILON)
static const QString EXPR_OFFSET
Qt::PenStyle penStyle() const
QgsSymbolV2::OutputUnit mOffsetUnit
void setWidthUnit(QgsSymbolV2::OutputUnit unit)
QgsMapUnitScale mOffsetAlongLineMapUnitScale
void setOffsetAlongLine(double offsetAlongLine)
Sets the the offset along the line for the marker placement.
void setInterval(double interval)
The interval between individual markers.
double y() const
Returns the point's y-coordinate.
QgsMapUnitScale mapUnitScale() const override
static QgsSymbolV2::OutputUnit decodeOutputUnit(const QString &str)
qreal alpha() const
Get alpha transparency 1 for opaque, 0 for invisible.
bool mUseCustomDashPattern
void setDrawInsidePolygon(bool drawInsidePolygon)
static QString encodePenStyle(Qt::PenStyle style)
void setCapStyle(Qt::PenCapStyle style)
Perform transforms between map coordinates and device coordinates.
void setColor(const QColor &color)
QgsSymbolV2::OutputUnit mIntervalUnit
QgsSimpleLineSymbolLayerV2 * clone() const override
Shall be reimplemented by subclasses to create a deep copy of the instance.
Mixed units in symbol layers.
void transformInPlace(double &x, double &y) const
Transform device coordinates to map coordinates.
static QgsSymbolLayerV2 * createMarkerLayerFromSld(QDomElement &element)
The output shall be in millimeters.
static const QString EXPR_PLACEMENT
double offsetAlongLine() const
Returns the offset along the line for the marker placement.
QString number(int n, int base)
int count(const T &value) const
void append(const T &value)
void setDashPattern(const QVector< qreal > &pattern)
void addPolygon(const QPolygonF &polygon)
void setOffset(double offset)
void setOutputUnit(QgsSymbolV2::OutputUnit unit) override
void setMapUnitScale(const QgsMapUnitScale &scale) override
const QgsFeature * feature() const
Current feature being rendered - may be null.
void startRender(QgsRenderContext &context, const QgsFields *fields=nullptr)
void renderPolygonOutline(const QPolygonF &points, QList< QPolygonF > *rings, QgsSymbolV2RenderContext &context) override
QgsSymbolV2::OutputUnit outputUnit() const override
static double convertToPainterUnits(const QgsRenderContext &c, double size, QgsSymbolV2::OutputUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale())
Converts a size from the specied units to painter units.
void setLineAngle(double lineAngle)
Sets the line angle modification for the symbol's angle.
Utility class for identifying a unique vertex within a geometry.
double z() const
Returns the point's z-coordinate.
The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'...
Qt::PenJoinStyle mPenJoinStyle
static QgsSymbolLayerV2 * create(const QgsStringMap &properties=QgsStringMap())
static bool createExpressionElement(QDomDocument &doc, QDomElement &element, const QString &function)
Creates a OGC Expression element based on the provided function expression.
void setPen(const QColor &color)
virtual QColor color() const override
The fill color.
QgsSymbolV2::OutputUnit mWidthUnit
void setAttribute(const QString &name, const QString &value)
void setWidthMapUnitScale(const QgsMapUnitScale &scale)
QVector< qreal > mCustomDashVector
Vector with an even number of entries for the.
Point geometry type, with support for z-dimension and m-values.
QString qgsDoubleToString(double a, int precision=17)
#define DEFAULT_SIMPLELINE_WIDTH
static QString encodePenJoinStyle(Qt::PenJoinStyle style)
void renderPolygonOutline(const QPolygonF &points, QList< QPolygonF > *rings, QgsSymbolV2RenderContext &context) override
static QgsSymbolLayerV2 * createFromSld(QDomElement &element)
Create a new MarkerLineSymbolLayerV2 from SLD.
double angle() const
Returns the marker angle for the whole symbol.
void setAngle(double angle)
Sets the angle for the whole symbol.
bool rotateMarker() const
Shall the marker be rotated.
#define DEFAULT_SIMPLELINE_CAPSTYLE
#define DEFAULT_SIMPLELINE_JOINSTYLE
void setWidthF(qreal width)
virtual bool hasCurvedSegments() const
Returns true if the geometry contains curved segments.
int symbolLayerCount()
Returns total number of symbol layers contained in the symbol.
static Qt::PenCapStyle decodePenCapStyle(const QString &str)
void setBrush(const QBrush &brush)
QString layerType() const override
Returns a string that represents this layer type.
void setSize(double size)
Sets the size for the whole symbol.
double rasterScaleFactor() const
double interval() const
The interval between individual markers.
void stopRender(QgsSymbolV2RenderContext &context) override
virtual QColor color() const
The fill color.
void setOffsetAlongLineMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for calculating the offset in map units along line for markers...
virtual bool nextVertex(QgsVertexId &id, QgsPointV2 &vertex) const =0
Returns next vertex id and coordinates.
void toSld(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const override
Writes the SLD element following the SLD v1.1 specs.
void setOffsetAlongLineUnit(QgsSymbolV2::OutputUnit unit)
Sets the unit used for calculating the offset along line for markers.
void setColor(const QColor &color)
virtual Q_DECL_DEPRECATED void prepareExpressions(const QgsFields *fields, double scale=-1.0)
Prepares all data defined property expressions for evaluation.
double estimateMaxBleed() const override
Returns the estimated maximum distance which the layer style will bleed outside the drawn shape...
QgsSymbolV2 * subSymbol() override
void setPenCapStyle(Qt::PenCapStyle style)
static void lineToSld(QDomDocument &doc, QDomElement &element, Qt::PenStyle penStyle, const QColor &color, double width=-1, const Qt::PenJoinStyle *penJoinStyle=nullptr, const Qt::PenCapStyle *penCapStyle=nullptr, const QVector< qreal > *customDashPattern=nullptr, double dashOffset=0.0)
virtual bool hasDataDefinedProperties() const
Checks whether the layer has any associated data defined properties.
void setCustomDashVector(const QVector< qreal > &vector)
static QgsSymbolLayerV2 * create(const QgsStringMap &properties=QgsStringMap())
Create a new MarkerLineSymbolLayerV2.
static Qt::PenStyle decodePenStyle(const QString &str)
static const QString EXPR_CAPSTYLE
QgsMarkerLineSymbolLayerV2 * clone() const override
Shall be reimplemented by subclasses to create a deep copy of the instance.
QString ogrFeatureStyle(double mmScaleFactor, double mapUnitScaleFactor) const override
QDomText createTextNode(const QString &value)
QgsMarkerSymbolV2 * mMarker
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)
void setOffsetUnit(QgsSymbolV2::OutputUnit unit)
static const QString EXPR_COLOR
void setDataDefinedProperty(const QString &property, QgsDataDefined *dataDefined) override
Sets a data defined property for the layer.
static QString encodeRealVector(const QVector< qreal > &v)
QgsSymbolV2::OutputUnit outputUnit() const override
QgsSymbolV2::OutputUnit mCustomDashPatternUnit
virtual QString layerType() const =0
Returns a string that represents this layer type.
const QgsCurveV2 * interiorRing(int i) const
double symbologyScaleDenominator() const
Retrieve reference scale for output.
~QgsMarkerLineSymbolLayerV2()
virtual double vertexAngle(QgsVertexId vertex) const =0
Returns approximate angle at a vertex.
static QgsSymbolLayerV2 * createFromSld(QDomElement &element)
const T & at(int i) const
#define DEFAULT_SIMPLELINE_COLOR
const_iterator constBegin() const
QgsMapUnitScale mIntervalMapUnitScale
Contains information about the context of a rendering operation.
QgsMapUnitScale mapUnitScale() const override
QgsSymbolV2::OutputUnit mOffsetAlongLineUnit
QDomNode firstChild() const
void stopRender(QgsRenderContext &context)
void setMapUnitScale(const QgsMapUnitScale &scale) override
void drawPath(const QPainterPath &path)
QSet< T > & unite(const QSet< T > &other)
void setPlacement(Placement p)
The placement of the markers.
Struct for storing maximum and minimum scales for measurements in map units.
Qt::PenStyle dxfPenStyle() const override
QList< QPolygonF > offsetLine(QPolygonF polyline, double dist, QGis::GeometryType geometryType)
calculate geometry shifted by a specified distance
QgsSimpleLineSymbolLayerV2(const QColor &color=DEFAULT_SIMPLELINE_COLOR, double width=DEFAULT_SIMPLELINE_WIDTH, Qt::PenStyle penStyle=DEFAULT_SIMPLELINE_PENSTYLE)
void setCustomDashPatternMapUnitScale(const QgsMapUnitScale &scale)
const QgsAbstractGeometryV2 * geometry() const
Returns pointer to the unsegmentized geometry.
void stopRender(QgsSymbolV2RenderContext &context) override
QgsRenderContext & renderContext()
void setOutputUnit(QgsSymbolV2::OutputUnit unit) override
QDomElement firstChildElement(const QString &tagName) const
QColor dxfColor(QgsSymbolV2RenderContext &context) const override
int count(const T &value) const
QgsMapUnitScale mapUnitScale() const override
void setOutputUnit(QgsSymbolV2::OutputUnit unit) override
SimplifyHints simplifyHints() const
Gets the simplification hints of the vector layer managed.
const QgsGeometry * constGeometry() const
Gets a const pointer to the geometry object associated with this feature.
void renderPoint(QPointF point, const QgsFeature *f, QgsRenderContext &context, int layer=-1, bool selected=false)
void setColor(const QColor &color) override
The fill color.
const QgsMapToPixel & mapToPixel() const
const QgsFields * fields() const
Fields of the layer.
void push_back(const T &value)
void setRenderHints(int hints)
void setAlphaF(qreal alpha)
Placement placement() const
The placement of the markers.
double toDouble(bool *ok) const
static QColor decodeColor(const QString &str)
Curve polygon geometry type.
void restoreDataDefinedProperties(const QgsStringMap &stringMap)
Restores all data defined properties from string map.
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
QgsSymbolLayerV2 * symbolLayer(int layer)
Returns a specific symbol layers contained in the symbol.
const_iterator constEnd() const
QDomElement createElement(const QString &tagName)
const_iterator constBegin() const
void toSld(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const override
Writes the SLD element following the SLD v1.1 specs.
void startRender(QgsSymbolV2RenderContext &context) override
QgsMarkerLineSymbolLayerV2(bool rotateMarker=DEFAULT_MARKERLINE_ROTATE, double interval=DEFAULT_MARKERLINE_INTERVAL)
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
static bool isGeneralizableByDeviceBoundingBox(const QgsRectangle &envelope, float mapToPixelTol=1.0f)
Returns whether the device-envelope can be replaced by its BBOX when is applied the specified toleran...
int compare(const QString &other) const
static const QString EXPR_LINE_STYLE
void saveDataDefinedProperties(QgsStringMap &stringMap) const
Saves all data defined properties to a string map.
void setOutputUnit(QgsSymbolV2::OutputUnit u)
static const QString EXPR_INTERVAL
void setAlpha(qreal alpha)
Set alpha transparency 1 for opaque, 0 for invisible.
void renderPolylineCentral(const QPolygonF &points, QgsSymbolV2RenderContext &context)
void setGeometry(const QgsAbstractGeometryV2 *geometry)
Sets pointer to original (unsegmentized) geometry.
virtual double width() const override
QgsSymbolV2::OutputUnit widthUnit() const
QSet< QString > usedAttributes() const override
Returns the set of attributes referenced by the layer.
Qt::PenJoinStyle penJoinStyle() const
void renderPolylineVertex(const QPolygonF &points, QgsSymbolV2RenderContext &context, Placement placement=Vertex)
void copyDataDefinedProperties(QgsSymbolLayerV2 *destLayer) const
Copies all data defined properties of this layer to another symbol layer.
virtual QgsMarkerSymbolV2 * clone() const override
Qt::PenCapStyle penCapStyle() const
const T value(const Key &key) const
static QString encodePenCapStyle(Qt::PenCapStyle style)
QgsStringMap properties() const override
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
virtual Q_DECL_DEPRECATED void setDataDefinedProperty(const QString &property, const QString &expressionString)
Sets a data defined expression for a property.
virtual Q_DECL_DEPRECATED QVariant evaluateDataDefinedProperty(const QString &property, const QgsFeature *feature, const QVariant &defaultVal=QVariant(), bool *ok=nullptr) const
Evaluates the matching data defined property and returns the calculated value.