QGIS API Documentation 3.41.0-Master (88383c3d16f)
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 Qgis::EndCapStyle penCapStyleToEndCapStyle( Qt::PenCapStyle style );
103
109 static Qgis::JoinStyle penJoinStyleToJoinStyle( Qt::PenJoinStyle style );
110
116 static bool hasSldSymbolizer( const QDomElement &element );
117
128 static Qgis::SymbolCoordinateReference decodeCoordinateReference( const QString &string, bool *ok SIP_OUT = nullptr );
129
137 static QString encodeCoordinateReference( Qgis::SymbolCoordinateReference coordinateReference );
138
143 static QgsArrowSymbolLayer::HeadType decodeArrowHeadType( const QVariant &value, bool *ok SIP_OUT = nullptr );
144
149 static QgsArrowSymbolLayer::ArrowType decodeArrowType( const QVariant &value, bool *ok SIP_OUT = nullptr );
150
161 static Qgis::MarkerClipMode decodeMarkerClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
162
169 static QString encodeMarkerClipMode( Qgis::MarkerClipMode mode );
170
181 static Qgis::LineClipMode decodeLineClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
182
189 static QString encodeLineClipMode( Qgis::LineClipMode mode );
190
196 static QString encodePoint( QPointF point );
197
203 static QPointF decodePoint( const QString &string );
204
217 static QPointF toPoint( const QVariant &value, bool *ok SIP_OUT = nullptr );
218
224 static QString encodeSize( QSizeF size );
225
231 static QSizeF decodeSize( const QString &string );
232
245 static QSizeF toSize( const QVariant &value, bool *ok SIP_OUT = nullptr );
246
247 static QString encodeMapUnitScale( const QgsMapUnitScale &mapUnitScale );
248 static QgsMapUnitScale decodeMapUnitScale( const QString &str );
249
250 static QString encodeRealVector( const QVector<qreal> &v );
251 static QVector<qreal> decodeRealVector( const QString &s );
252
253 static QString encodeSldRealVector( const QVector<qreal> &v );
254 static QVector<qreal> decodeSldRealVector( const QString &s );
255
263 static QString encodeSldUom( Qgis::RenderUnit unit, double *scaleFactor );
264
272 static Qgis::RenderUnit decodeSldUom( const QString &str, double *scaleFactor = nullptr );
273
280 static double sizeInPixelsFromSldUom( const QString &uom, double size );
281
287 static QString encodeScaleMethod( Qgis::ScaleMethod scaleMethod );
288
294 static Qgis::ScaleMethod decodeScaleMethod( const QString &str );
295
296 static QPainter::CompositionMode decodeBlendMode( const QString &s );
297
307 static QIcon symbolPreviewIcon( const QgsSymbol *symbol, QSize size, int padding = 0, QgsLegendPatchShape *shape = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
308
321 static QPixmap symbolPreviewPixmap( const QgsSymbol *symbol, QSize size, int padding = 0, QgsRenderContext *customContext = nullptr, bool selected = false,
322 const QgsExpressionContext *expressionContext = nullptr,
323 const QgsLegendPatchShape *shape = nullptr,
324 const QgsScreenProperties &screen = QgsScreenProperties() );
325
336 static QPicture symbolLayerPreviewPicture( const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid );
337
350 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() );
351
359 static QIcon colorRampPreviewIcon( QgsColorRamp *ramp, QSize size, int padding = 0 );
360
373 static QPixmap colorRampPreviewPixmap( QgsColorRamp *ramp, QSize size, int padding = 0, Qt::Orientation direction = Qt::Horizontal,
374 bool flipDirection = false, bool drawTransparentBackground = true );
375
376 static void drawStippledBackground( QPainter *painter, QRect rect );
377
382 static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize );
383
385 static double estimateMaxSymbolBleed( QgsSymbol *symbol, const QgsRenderContext &context );
386
393 static QgsSymbol *loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
394
403 template <class SymbolType> static SymbolType *loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
404 {
405 QgsSymbol *tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
406 SymbolType *symbolCastToType = dynamic_cast<SymbolType *>( tmpSymbol );
407
408 if ( symbolCastToType )
409 {
410 return symbolCastToType;
411 }
412 else
413 {
414 //could not cast
415 delete tmpSymbol;
416 return nullptr;
417 }
418 }
419
421 static QgsSymbolLayer *loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
423 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
424
429 static QString symbolProperties( QgsSymbol *symbol );
430
434 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
435
436 static QgsSymbolLayer *createFillLayerFromSld( QDomElement &element ) SIP_FACTORY;
437 static QgsSymbolLayer *createLineLayerFromSld( QDomElement &element ) SIP_FACTORY;
438 static QgsSymbolLayer *createMarkerLayerFromSld( QDomElement &element ) SIP_FACTORY;
439
443 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
444
450 static bool hasExternalGraphic( QDomElement &element );
451
458 static bool hasExternalGraphicV2( QDomElement &element, const QString format = QString() );
459
460 static bool hasWellKnownMark( QDomElement &element );
461
462 static bool needFontMarker( QDomElement &element );
463 static bool needSvgMarker( QDomElement &element );
464 static bool needEllipseMarker( QDomElement &element );
465 static bool needMarkerLine( QDomElement &element );
466 static bool needLinePatternFill( QDomElement &element );
467 static bool needPointPatternFill( QDomElement &element );
468 static bool needSvgFill( QDomElement &element );
469
476 static bool needRasterImageFill( QDomElement &element );
477
478 static void fillToSld( QDomDocument &doc, QDomElement &element,
479 Qt::BrushStyle brushStyle, const QColor &color = QColor() );
480 static bool fillFromSld( QDomElement &element,
481 Qt::BrushStyle &brushStyle, QColor &color );
482
484 static void lineToSld( QDomDocument &doc, QDomElement &element,
485 Qt::PenStyle penStyle, const QColor &color, double width = -1,
486 const Qt::PenJoinStyle *penJoinStyle = nullptr, const Qt::PenCapStyle *penCapStyle = nullptr,
487 const QVector<qreal> *customDashPattern = nullptr, double dashOffset = 0.0 ) SIP_SKIP;
488 static bool lineFromSld( QDomElement &element,
489 Qt::PenStyle &penStyle, QColor &color, double &width,
490 Qt::PenJoinStyle *penJoinStyle = nullptr, Qt::PenCapStyle *penCapStyle = nullptr,
491 QVector<qreal> *customDashPattern = nullptr, double *dashOffset = nullptr );
492
493 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
494 const QString &path, const QString &mime,
495 const QColor &color, double size = -1 );
496 static bool externalGraphicFromSld( QDomElement &element,
497 QString &path, QString &mime,
498 QColor &color, double &size );
499
500 static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
501 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
502 double strokeWidth = -1, double size = -1 );
503
505 static bool wellKnownMarkerFromSld( QDomElement &element,
506 QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
507 double &strokeWidth, double &size ) SIP_PYNAME( wellKnownMarkerFromSld2 );
508
509 static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
510 const QString &path, const QString &format, int *markIndex = nullptr,
511 const QColor &color = QColor(), double size = -1 );
512 static bool externalMarkerFromSld( QDomElement &element,
513 QString &path, QString &format, int &markIndex,
514 QColor &color, double &size );
515
516
517 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
518 const QFont &font, const QColor &color = QColor(), double size = -1 );
519
521 static QString ogrFeatureStylePen( double width, double mmScaleFactor, double mapUnitsScaleFactor, const QColor &c,
522 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
523 Qt::PenCapStyle capStyle = Qt::FlatCap,
524 double offset = 0.0,
525 const QVector<qreal> *dashPattern = nullptr );
526
531 static QString ogrFeatureStyleBrush( const QColor &fillColr );
532
533 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc );
534 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
535
536 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc );
537 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
538
539 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
540 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
541
548 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
549
550 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
551 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
552
553 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc );
554 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
555
562 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function );
563 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function );
564 static bool functionFromSldElement( QDomElement &element, QString &function );
565
566 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
567 static QgsStringMap getSvgParameterList( QDomElement &element );
568
569 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
570 static QgsStringMap getVendorOptionList( QDomElement &element );
571
573 static QVariantMap parseProperties( const QDomElement &element );
575 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
576
578 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
580 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
581
582 static void clearSymbolMap( QgsSymbolMap &symbols );
583
590 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
591
597 static QgsSymbol *symbolFromMimeData( const QMimeData *data ) SIP_FACTORY;
598
605 static QgsColorRamp *loadColorRamp( QDomElement &element ) SIP_FACTORY;
606
615 static QDomElement saveColorRamp( const QString &name, QgsColorRamp *ramp, QDomDocument &doc );
616
623 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
624
631 static QgsColorRamp *loadColorRamp( const QVariant &value ) SIP_FACTORY;
632
638 static QString colorToName( const QColor &color );
639
646 static QList< QColor > parseColorList( const QString &colorStr );
647
654 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
655
663 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
664
670 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
671
678 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
679
688 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
689
698 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
699
707 static QColor parseColor( const QString &colorStr, bool strictEval = false );
708
717 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
718
722 static void multiplyImageOpacity( QImage *image, qreal opacity );
723
725 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
726
730 static void premultiplyColor( QColor &rgb, int alpha );
731
744 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
745
747 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
749 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
750
752 static QStringList listSvgFiles();
753
755 static QStringList listSvgFilesAt( const QString &directory );
756
763 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
764
769 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
770
778 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
779
787 static QList< QList< QPolygonF > > toQPolygonF( const QgsAbstractGeometry *geometry, Qgis::SymbolType type );
788
790 static QPointF polygonCentroid( const QPolygonF &points );
791
793 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
794
796 static bool pointInPolygon( const QPolygonF &points, QPointF point );
797
803 static double polylineLength( const QPolygonF &polyline );
804
817 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
818
826 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
827
835 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
836
843 static QgsExpression *fieldOrExpressionToExpression( const QString &fieldOrExpression ) SIP_FACTORY;
844
851 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
852
858 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
859
864 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
865
870 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
871
876 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
877
881 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
882
886 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
887
893 static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
894 const QString &path,
895 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth );
896
900 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
901
907 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
908
916 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
917
932 static QgsSymbol *restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
933
938 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
939
949 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
950
955 static void clearSymbolLayerIds( QgsSymbol *symbol );
956
961 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
962
967 static void resetSymbolLayerIds( QgsSymbol *symbol );
968
973 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
974
979 static void clearSymbolLayerMasks( QgsSymbol *symbol );
980
991 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
992
994#ifndef SIP_RUN
995 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
996 {
997 const QString exprString = property.asExpression();
998 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
999 }
1000
1001 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
1002 {
1003 const QString exprString = property.asExpression();
1004 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
1005 }
1006
1007 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
1008 {
1009 const QString exprString = property.asExpression();
1011 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) +
1012 "|| ',' || " +
1013 ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) );
1014 }
1015#endif
1017
1018};
1019
1020class QPolygonF;
1021
1023QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
1024
1025#endif
The Qgis class provides global constants for use throughout the application.
Definition qgis.h:54
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3109
LineClipMode
Line clipping modes.
Definition qgis.h:3123
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
JoinStyle
Join styles for buffers.
Definition qgis.h:2051
RenderUnit
Rendering size units.
Definition qgis.h:4930
EndCapStyle
End cap styles for buffers.
Definition qgis.h:2038
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1763
SymbolType
Symbol types.
Definition qgis.h:574
@ Hybrid
Hybrid symbol.
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:3067
Abstract base class for all geometries.
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
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
Definition qgis.h:6125
QMap< QString, QString > QgsStringMap
Definition qgis.h:6663
#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