QGIS API Documentation 3.41.0-Master (3440c17df1d)
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
102 static bool hasSldSymbolizer( const QDomElement &element );
103
114 static Qgis::SymbolCoordinateReference decodeCoordinateReference( const QString &string, bool *ok SIP_OUT = nullptr );
115
123 static QString encodeCoordinateReference( Qgis::SymbolCoordinateReference coordinateReference );
124
129 static QgsArrowSymbolLayer::HeadType decodeArrowHeadType( const QVariant &value, bool *ok SIP_OUT = nullptr );
130
135 static QgsArrowSymbolLayer::ArrowType decodeArrowType( const QVariant &value, bool *ok SIP_OUT = nullptr );
136
147 static Qgis::MarkerClipMode decodeMarkerClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
148
155 static QString encodeMarkerClipMode( Qgis::MarkerClipMode mode );
156
167 static Qgis::LineClipMode decodeLineClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
168
175 static QString encodeLineClipMode( Qgis::LineClipMode mode );
176
182 static QString encodePoint( QPointF point );
183
189 static QPointF decodePoint( const QString &string );
190
203 static QPointF toPoint( const QVariant &value, bool *ok SIP_OUT = nullptr );
204
210 static QString encodeSize( QSizeF size );
211
217 static QSizeF decodeSize( const QString &string );
218
231 static QSizeF toSize( const QVariant &value, bool *ok SIP_OUT = nullptr );
232
233 static QString encodeMapUnitScale( const QgsMapUnitScale &mapUnitScale );
234 static QgsMapUnitScale decodeMapUnitScale( const QString &str );
235
236 static QString encodeRealVector( const QVector<qreal> &v );
237 static QVector<qreal> decodeRealVector( const QString &s );
238
239 static QString encodeSldRealVector( const QVector<qreal> &v );
240 static QVector<qreal> decodeSldRealVector( const QString &s );
241
249 static QString encodeSldUom( Qgis::RenderUnit unit, double *scaleFactor );
250
258 static Qgis::RenderUnit decodeSldUom( const QString &str, double *scaleFactor = nullptr );
259
266 static double sizeInPixelsFromSldUom( const QString &uom, double size );
267
273 static QString encodeScaleMethod( Qgis::ScaleMethod scaleMethod );
274
280 static Qgis::ScaleMethod decodeScaleMethod( const QString &str );
281
282 static QPainter::CompositionMode decodeBlendMode( const QString &s );
283
293 static QIcon symbolPreviewIcon( const QgsSymbol *symbol, QSize size, int padding = 0, QgsLegendPatchShape *shape = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
294
307 static QPixmap symbolPreviewPixmap( const QgsSymbol *symbol, QSize size, int padding = 0, QgsRenderContext *customContext = nullptr, bool selected = false,
308 const QgsExpressionContext *expressionContext = nullptr,
309 const QgsLegendPatchShape *shape = nullptr,
310 const QgsScreenProperties &screen = QgsScreenProperties() );
311
322 static QPicture symbolLayerPreviewPicture( const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid );
323
336 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() );
337
345 static QIcon colorRampPreviewIcon( QgsColorRamp *ramp, QSize size, int padding = 0 );
346
359 static QPixmap colorRampPreviewPixmap( QgsColorRamp *ramp, QSize size, int padding = 0, Qt::Orientation direction = Qt::Horizontal,
360 bool flipDirection = false, bool drawTransparentBackground = true );
361
362 static void drawStippledBackground( QPainter *painter, QRect rect );
363
368 static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize );
369
371 static double estimateMaxSymbolBleed( QgsSymbol *symbol, const QgsRenderContext &context );
372
379 static QgsSymbol *loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
380
389 template <class SymbolType> static SymbolType *loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
390 {
391 QgsSymbol *tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
392 SymbolType *symbolCastToType = dynamic_cast<SymbolType *>( tmpSymbol );
393
394 if ( symbolCastToType )
395 {
396 return symbolCastToType;
397 }
398 else
399 {
400 //could not cast
401 delete tmpSymbol;
402 return nullptr;
403 }
404 }
405
407 static QgsSymbolLayer *loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
409 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
410
415 static QString symbolProperties( QgsSymbol *symbol );
416
420 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
421
422 static QgsSymbolLayer *createFillLayerFromSld( QDomElement &element ) SIP_FACTORY;
423 static QgsSymbolLayer *createLineLayerFromSld( QDomElement &element ) SIP_FACTORY;
424 static QgsSymbolLayer *createMarkerLayerFromSld( QDomElement &element ) SIP_FACTORY;
425
429 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
430
436 static bool hasExternalGraphic( QDomElement &element );
437
444 static bool hasExternalGraphicV2( QDomElement &element, const QString format = QString() );
445
446 static bool hasWellKnownMark( QDomElement &element );
447
448 static bool needFontMarker( QDomElement &element );
449 static bool needSvgMarker( QDomElement &element );
450 static bool needEllipseMarker( QDomElement &element );
451 static bool needMarkerLine( QDomElement &element );
452 static bool needLinePatternFill( QDomElement &element );
453 static bool needPointPatternFill( QDomElement &element );
454 static bool needSvgFill( QDomElement &element );
455
462 static bool needRasterImageFill( QDomElement &element );
463
464 static void fillToSld( QDomDocument &doc, QDomElement &element,
465 Qt::BrushStyle brushStyle, const QColor &color = QColor() );
466 static bool fillFromSld( QDomElement &element,
467 Qt::BrushStyle &brushStyle, QColor &color );
468
470 static void lineToSld( QDomDocument &doc, QDomElement &element,
471 Qt::PenStyle penStyle, const QColor &color, double width = -1,
472 const Qt::PenJoinStyle *penJoinStyle = nullptr, const Qt::PenCapStyle *penCapStyle = nullptr,
473 const QVector<qreal> *customDashPattern = nullptr, double dashOffset = 0.0 ) SIP_SKIP;
474 static bool lineFromSld( QDomElement &element,
475 Qt::PenStyle &penStyle, QColor &color, double &width,
476 Qt::PenJoinStyle *penJoinStyle = nullptr, Qt::PenCapStyle *penCapStyle = nullptr,
477 QVector<qreal> *customDashPattern = nullptr, double *dashOffset = nullptr );
478
479 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
480 const QString &path, const QString &mime,
481 const QColor &color, double size = -1 );
482 static bool externalGraphicFromSld( QDomElement &element,
483 QString &path, QString &mime,
484 QColor &color, double &size );
485
486 static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
487 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
488 double strokeWidth = -1, double size = -1 );
489
491 static bool wellKnownMarkerFromSld( QDomElement &element,
492 QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
493 double &strokeWidth, double &size ) SIP_PYNAME( wellKnownMarkerFromSld2 );
494
495 static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
496 const QString &path, const QString &format, int *markIndex = nullptr,
497 const QColor &color = QColor(), double size = -1 );
498 static bool externalMarkerFromSld( QDomElement &element,
499 QString &path, QString &format, int &markIndex,
500 QColor &color, double &size );
501
502
503 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
504 const QFont &font, const QColor &color = QColor(), double size = -1 );
505
507 static QString ogrFeatureStylePen( double width, double mmScaleFactor, double mapUnitsScaleFactor, const QColor &c,
508 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
509 Qt::PenCapStyle capStyle = Qt::FlatCap,
510 double offset = 0.0,
511 const QVector<qreal> *dashPattern = nullptr );
512
517 static QString ogrFeatureStyleBrush( const QColor &fillColr );
518
519 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc );
520 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
521
522 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc );
523 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
524
525 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
526 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
527
534 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
535
536 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
537 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
538
539 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc );
540 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
541
548 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function );
549 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function );
550 static bool functionFromSldElement( QDomElement &element, QString &function );
551
552 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
553 static QgsStringMap getSvgParameterList( QDomElement &element );
554
555 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
556 static QgsStringMap getVendorOptionList( QDomElement &element );
557
559 static QVariantMap parseProperties( const QDomElement &element );
561 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
562
564 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
566 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
567
568 static void clearSymbolMap( QgsSymbolMap &symbols );
569
576 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
577
583 static QgsSymbol *symbolFromMimeData( const QMimeData *data ) SIP_FACTORY;
584
591 static QgsColorRamp *loadColorRamp( QDomElement &element ) SIP_FACTORY;
592
601 static QDomElement saveColorRamp( const QString &name, QgsColorRamp *ramp, QDomDocument &doc );
602
609 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
610
617 static QgsColorRamp *loadColorRamp( const QVariant &value ) SIP_FACTORY;
618
624 static QString colorToName( const QColor &color );
625
632 static QList< QColor > parseColorList( const QString &colorStr );
633
640 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
641
649 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
650
656 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
657
664 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
665
674 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
675
684 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
685
693 static QColor parseColor( const QString &colorStr, bool strictEval = false );
694
703 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
704
708 static void multiplyImageOpacity( QImage *image, qreal opacity );
709
711 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
712
716 static void premultiplyColor( QColor &rgb, int alpha );
717
730 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
731
733 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
735 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
736
738 static QStringList listSvgFiles();
739
741 static QStringList listSvgFilesAt( const QString &directory );
742
749 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
750
755 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
756
764 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
765
767 static QPointF polygonCentroid( const QPolygonF &points );
768
770 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
771
773 static bool pointInPolygon( const QPolygonF &points, QPointF point );
774
780 static double polylineLength( const QPolygonF &polyline );
781
794 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
795
803 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
804
812 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
813
820 static QgsExpression *fieldOrExpressionToExpression( const QString &fieldOrExpression ) SIP_FACTORY;
821
828 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
829
835 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
836
841 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
842
847 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
848
853 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
854
858 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
859
863 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
864
870 static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
871 const QString &path,
872 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth );
873
877 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
878
884 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
885
893 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
894
909 static QgsSymbol *restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
910
915 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
916
926 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
927
932 static void clearSymbolLayerIds( QgsSymbol *symbol );
933
938 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
939
944 static void resetSymbolLayerIds( QgsSymbol *symbol );
945
950 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
951
962 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
963
965#ifndef SIP_RUN
966 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
967 {
968 const QString exprString = property.asExpression();
969 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
970 }
971
972 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
973 {
974 const QString exprString = property.asExpression();
975 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
976 }
977
978 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
979 {
980 const QString exprString = property.asExpression();
982 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) +
983 "|| ',' || " +
984 ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) );
985 }
986#endif
988
989};
990
991class QPolygonF;
992
994QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
995
996#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