QGIS API Documentation 3.41.0-Master (45a0abf3bec)
Loading...
Searching...
No Matches
qgssymbollayerutils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgssymbollayerutils.h
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16
17#ifndef QGSSYMBOLLAYERUTILS_H
18#define QGSSYMBOLLAYERUTILS_H
19
20#include "qgis_core.h"
21#include "qgis_sip.h"
22#include <QMap>
23#include <QFont>
24#include <QColor>
25#include <QPainter>
26#include "qgis.h"
27#include "qgsmapunitscale.h"
28#include "qgscolorramp.h"
29#include "qgsarrowsymbollayer.h"
30#include "qgssymbol.h"
31
32#include <QFile>
33
34#define FONTMARKER_CHR_FIX "~!_#!#_!~"
35
36class QgsExpression;
37class QgsPathResolver;
39class QgsSymbolLayer;
40
41typedef QMap<QString, QString> QgsStringMap;
42typedef QMap<QString, QgsSymbol * > QgsSymbolMap;
43typedef QList< QPair< QColor, QString > > QgsNamedColorList SIP_SKIP;
44
45class QDomDocument;
46class QDomElement;
47class QIcon;
48class QPixmap;
49class QPointF;
50class QSize;
51class QMimeData;
54
60class CORE_EXPORT QgsSymbolLayerUtils
61{
62 public:
63
64 static QString encodeColor( const QColor &color );
65 static QColor decodeColor( const QString &str );
66
67 static QString encodeSldAlpha( int alpha );
68 static int decodeSldAlpha( const QString &str );
69
70 static QString encodeSldFontStyle( QFont::Style style );
71 static QFont::Style decodeSldFontStyle( const QString &str );
72
73 static QString encodeSldFontWeight( int weight );
74 static int decodeSldFontWeight( const QString &str );
75
76 static QString encodePenStyle( Qt::PenStyle style );
77 static Qt::PenStyle decodePenStyle( const QString &str );
78
79 static QString encodePenJoinStyle( Qt::PenJoinStyle style );
80 static Qt::PenJoinStyle decodePenJoinStyle( const QString &str );
81
82 static QString encodePenCapStyle( Qt::PenCapStyle style );
83 static Qt::PenCapStyle decodePenCapStyle( const QString &str );
84
85 static QString encodeSldLineJoinStyle( Qt::PenJoinStyle style );
86 static Qt::PenJoinStyle decodeSldLineJoinStyle( const QString &str );
87
88 static QString encodeSldLineCapStyle( Qt::PenCapStyle style );
89 static Qt::PenCapStyle decodeSldLineCapStyle( const QString &str );
90
91 static QString encodeBrushStyle( Qt::BrushStyle style );
92 static Qt::BrushStyle decodeBrushStyle( const QString &str );
93
94 static QString encodeSldBrushStyle( Qt::BrushStyle style );
95 static Qt::BrushStyle decodeSldBrushStyle( const QString &str );
96
107 static Qgis::SymbolCoordinateReference decodeCoordinateReference( const QString &string, bool *ok SIP_OUT = nullptr );
108
116 static QString encodeCoordinateReference( Qgis::SymbolCoordinateReference coordinateReference );
117
122 static QgsArrowSymbolLayer::HeadType decodeArrowHeadType( const QVariant &value, bool *ok SIP_OUT = nullptr );
123
128 static QgsArrowSymbolLayer::ArrowType decodeArrowType( const QVariant &value, bool *ok SIP_OUT = nullptr );
129
140 static Qgis::MarkerClipMode decodeMarkerClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
141
148 static QString encodeMarkerClipMode( Qgis::MarkerClipMode mode );
149
160 static Qgis::LineClipMode decodeLineClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
161
168 static QString encodeLineClipMode( Qgis::LineClipMode mode );
169
175 static QString encodePoint( QPointF point );
176
182 static QPointF decodePoint( const QString &string );
183
196 static QPointF toPoint( const QVariant &value, bool *ok SIP_OUT = nullptr );
197
203 static QString encodeSize( QSizeF size );
204
210 static QSizeF decodeSize( const QString &string );
211
224 static QSizeF toSize( const QVariant &value, bool *ok SIP_OUT = nullptr );
225
226 static QString encodeMapUnitScale( const QgsMapUnitScale &mapUnitScale );
227 static QgsMapUnitScale decodeMapUnitScale( const QString &str );
228
229 static QString encodeRealVector( const QVector<qreal> &v );
230 static QVector<qreal> decodeRealVector( const QString &s );
231
232 static QString encodeSldRealVector( const QVector<qreal> &v );
233 static QVector<qreal> decodeSldRealVector( const QString &s );
234
242 static QString encodeSldUom( Qgis::RenderUnit unit, double *scaleFactor );
243
251 static Qgis::RenderUnit decodeSldUom( const QString &str, double *scaleFactor = nullptr );
252
259 static double sizeInPixelsFromSldUom( const QString &uom, double size );
260
266 static QString encodeScaleMethod( Qgis::ScaleMethod scaleMethod );
267
273 static Qgis::ScaleMethod decodeScaleMethod( const QString &str );
274
275 static QPainter::CompositionMode decodeBlendMode( const QString &s );
276
286 static QIcon symbolPreviewIcon( const QgsSymbol *symbol, QSize size, int padding = 0, QgsLegendPatchShape *shape = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
287
300 static QPixmap symbolPreviewPixmap( const QgsSymbol *symbol, QSize size, int padding = 0, QgsRenderContext *customContext = nullptr, bool selected = false,
301 const QgsExpressionContext *expressionContext = nullptr,
302 const QgsLegendPatchShape *shape = nullptr,
303 const QgsScreenProperties &screen = QgsScreenProperties() );
304
315 static QPicture symbolLayerPreviewPicture( const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid );
316
329 static QIcon symbolLayerPreviewIcon( const QgsSymbolLayer *layer, Qgis::RenderUnit u, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid, QgsMapLayer *mapLayer = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
330
338 static QIcon colorRampPreviewIcon( QgsColorRamp *ramp, QSize size, int padding = 0 );
339
352 static QPixmap colorRampPreviewPixmap( QgsColorRamp *ramp, QSize size, int padding = 0, Qt::Orientation direction = Qt::Horizontal,
353 bool flipDirection = false, bool drawTransparentBackground = true );
354
355 static void drawStippledBackground( QPainter *painter, QRect rect );
356
361 static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize );
362
364 static double estimateMaxSymbolBleed( QgsSymbol *symbol, const QgsRenderContext &context );
365
372 static QgsSymbol *loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
373
382 template <class SymbolType> static SymbolType *loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
383 {
384 QgsSymbol *tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
385 SymbolType *symbolCastToType = dynamic_cast<SymbolType *>( tmpSymbol );
386
387 if ( symbolCastToType )
388 {
389 return symbolCastToType;
390 }
391 else
392 {
393 //could not cast
394 delete tmpSymbol;
395 return nullptr;
396 }
397 }
398
400 static QgsSymbolLayer *loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
402 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
403
408 static QString symbolProperties( QgsSymbol *symbol );
409
413 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
414
415 static QgsSymbolLayer *createFillLayerFromSld( QDomElement &element ) SIP_FACTORY;
416 static QgsSymbolLayer *createLineLayerFromSld( QDomElement &element ) SIP_FACTORY;
417 static QgsSymbolLayer *createMarkerLayerFromSld( QDomElement &element ) SIP_FACTORY;
418
422 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
423
429 static bool hasExternalGraphic( QDomElement &element );
430
437 static bool hasExternalGraphicV2( QDomElement &element, const QString format = QString() );
438
439 static bool hasWellKnownMark( QDomElement &element );
440
441 static bool needFontMarker( QDomElement &element );
442 static bool needSvgMarker( QDomElement &element );
443 static bool needEllipseMarker( QDomElement &element );
444 static bool needMarkerLine( QDomElement &element );
445 static bool needLinePatternFill( QDomElement &element );
446 static bool needPointPatternFill( QDomElement &element );
447 static bool needSvgFill( QDomElement &element );
448
455 static bool needRasterImageFill( QDomElement &element );
456
457 static void fillToSld( QDomDocument &doc, QDomElement &element,
458 Qt::BrushStyle brushStyle, const QColor &color = QColor() );
459 static bool fillFromSld( QDomElement &element,
460 Qt::BrushStyle &brushStyle, QColor &color );
461
463 static void lineToSld( QDomDocument &doc, QDomElement &element,
464 Qt::PenStyle penStyle, const QColor &color, double width = -1,
465 const Qt::PenJoinStyle *penJoinStyle = nullptr, const Qt::PenCapStyle *penCapStyle = nullptr,
466 const QVector<qreal> *customDashPattern = nullptr, double dashOffset = 0.0 ) SIP_SKIP;
467 static bool lineFromSld( QDomElement &element,
468 Qt::PenStyle &penStyle, QColor &color, double &width,
469 Qt::PenJoinStyle *penJoinStyle = nullptr, Qt::PenCapStyle *penCapStyle = nullptr,
470 QVector<qreal> *customDashPattern = nullptr, double *dashOffset = nullptr );
471
472 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
473 const QString &path, const QString &mime,
474 const QColor &color, double size = -1 );
475 static bool externalGraphicFromSld( QDomElement &element,
476 QString &path, QString &mime,
477 QColor &color, double &size );
478
479 static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
480 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
481 double strokeWidth = -1, double size = -1 );
482
484 static bool wellKnownMarkerFromSld( QDomElement &element,
485 QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
486 double &strokeWidth, double &size ) SIP_PYNAME( wellKnownMarkerFromSld2 );
487
488 static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
489 const QString &path, const QString &format, int *markIndex = nullptr,
490 const QColor &color = QColor(), double size = -1 );
491 static bool externalMarkerFromSld( QDomElement &element,
492 QString &path, QString &format, int &markIndex,
493 QColor &color, double &size );
494
495
496 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
497 const QFont &font, const QColor &color = QColor(), double size = -1 );
498
500 static QString ogrFeatureStylePen( double width, double mmScaleFactor, double mapUnitsScaleFactor, const QColor &c,
501 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
502 Qt::PenCapStyle capStyle = Qt::FlatCap,
503 double offset = 0.0,
504 const QVector<qreal> *dashPattern = nullptr );
505
510 static QString ogrFeatureStyleBrush( const QColor &fillColr );
511
512 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc );
513 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
514
515 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc );
516 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
517
518 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
519 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
520
527 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
528
529 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
530 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
531
532 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc );
533 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
534
541 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function );
542 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function );
543 static bool functionFromSldElement( QDomElement &element, QString &function );
544
545 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
546 static QgsStringMap getSvgParameterList( QDomElement &element );
547
548 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
549 static QgsStringMap getVendorOptionList( QDomElement &element );
550
552 static QVariantMap parseProperties( const QDomElement &element );
554 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
555
557 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
559 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
560
561 static void clearSymbolMap( QgsSymbolMap &symbols );
562
569 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
570
576 static QgsSymbol *symbolFromMimeData( const QMimeData *data ) SIP_FACTORY;
577
584 static QgsColorRamp *loadColorRamp( QDomElement &element ) SIP_FACTORY;
585
594 static QDomElement saveColorRamp( const QString &name, QgsColorRamp *ramp, QDomDocument &doc );
595
602 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
603
610 static QgsColorRamp *loadColorRamp( const QVariant &value ) SIP_FACTORY;
611
617 static QString colorToName( const QColor &color );
618
625 static QList< QColor > parseColorList( const QString &colorStr );
626
633 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
634
642 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
643
649 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
650
657 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
658
667 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
668
677 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
678
686 static QColor parseColor( const QString &colorStr, bool strictEval = false );
687
696 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
697
701 static void multiplyImageOpacity( QImage *image, qreal opacity );
702
704 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
705
709 static void premultiplyColor( QColor &rgb, int alpha );
710
723 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
724
726 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
728 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
729
731 static QStringList listSvgFiles();
732
734 static QStringList listSvgFilesAt( const QString &directory );
735
742 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
743
748 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
749
757 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
758
760 static QPointF polygonCentroid( const QPolygonF &points );
761
763 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
764
766 static bool pointInPolygon( const QPolygonF &points, QPointF point );
767
773 static double polylineLength( const QPolygonF &polyline );
774
787 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
788
796 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
797
805 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
806
813 static QgsExpression *fieldOrExpressionToExpression( const QString &fieldOrExpression ) SIP_FACTORY;
814
821 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
822
828 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
829
834 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
835
840 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
841
846 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
847
851 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
852
856 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
857
863 static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
864 const QString &path,
865 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth );
866
870 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
871
877 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
878
886 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
887
902 static QgsSymbol *restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
903
908 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
909
919 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
920
925 static void clearSymbolLayerIds( QgsSymbol *symbol );
926
931 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
932
937 static void resetSymbolLayerIds( QgsSymbol *symbol );
938
943 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
944
955 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
956
958#ifndef SIP_RUN
959 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
960 {
961 const QString exprString = property.asExpression();
962 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
963 }
964
965 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
966 {
967 const QString exprString = property.asExpression();
968 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
969 }
970
971 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
972 {
973 const QString exprString = property.asExpression();
975 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) +
976 "|| ',' || " +
977 ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) );
978 }
979#endif
981
982};
983
984class QPolygonF;
985
987QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
988
989#endif
The Qgis class provides global constants for use throughout the application.
Definition qgis.h:54
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3026
LineClipMode
Line clipping modes.
Definition qgis.h:3040
ScaleMethod
Scale methods.
Definition qgis.h:588
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:337
RenderUnit
Rendering size units.
Definition qgis.h:4847
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1680
SymbolType
Symbol types.
Definition qgis.h:574
@ Hybrid
Hybrid symbol.
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:2984
HeadType
Possible head types.
ArrowType
Possible arrow types.
Abstract base class for color ramps.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Class for parsing and evaluation of expressions (formerly called "search strings").
Abstract base class for all 2D vector feature renderers.
Abstract base class for fill symbol layers.
A geometry is the spatial representation of a feature.
Represents a patch shape for use in map legends.
Abstract base class for line symbol layers.
Base class for all map layer types.
Definition qgsmaplayer.h:76
Struct for storing maximum and minimum scales for measurements in map units.
Resolves relative paths into absolute paths and vice versa.
A store for object properties.
QString asExpression() const
Returns an expression string representing the state of the property, or an empty string if the proper...
static QgsProperty fromExpression(const QString &expression, bool isActive=true)
Returns a new ExpressionBasedProperty created from the specified expression.
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
Stores properties relating to a screen.
We may need stable references to symbol layers, when pointers to symbol layers is not usable (when a ...
Contains utility functions for working with symbols and symbol layers.
static SymbolType * loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element and cast it to a particular symbol type.
static QgsSymbol * loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
QList< QPair< QColor, QString > > QgsNamedColorList
List of colors paired with a friendly display name identifying the color.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
#define str(x)
Definition qgis.cpp:39
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
Definition qgis.h:5958
QMap< QString, QString > QgsStringMap
Definition qgis.h:6496
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_PYNAME(name)
Definition qgis_sip.h:81
#define SIP_OUT
Definition qgis_sip.h:58
#define SIP_FACTORY
Definition qgis_sip.h:76
#define SIP_INOUT
Definition qgis_sip.h:71
QMap< QString, QgsSymbol * > QgsSymbolMap
Definition qgsrenderer.h:48
QList< QPolygonF > offsetLine(QPolygonF polyline, double dist, Qgis::GeometryType geometryType)
calculate geometry shifted by a specified distance
QMap< QString, QgsSymbol * > QgsSymbolMap
QMap< QString, QString > QgsStringMap