QGIS API Documentation 3.43.0-Master (8fc5848dca1)
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 std::unique_ptr< QgsSymbol > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context );
394
403 template <class SymbolType> static std::unique_ptr< SymbolType > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
404 {
405 std::unique_ptr< QgsSymbol > tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
406 const bool canCast = dynamic_cast<SymbolType *>( tmpSymbol.get() );
407
408 if ( canCast )
409 {
410 std::unique_ptr< SymbolType > castRes( static_cast<SymbolType *>( tmpSymbol.release() ) );
411 return castRes;
412 }
413 else
414 {
415 //could not cast
416 return nullptr;
417 }
418 }
419
421 static std::unique_ptr< QgsSymbolLayer > loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context );
422
424 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
425
430 static QString symbolProperties( QgsSymbol *symbol );
431
435 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
436
440 static std::unique_ptr< QgsSymbolLayer > createFillLayerFromSld( QDomElement &element );
441
445 static std::unique_ptr< QgsSymbolLayer > createLineLayerFromSld( QDomElement &element );
446
450 static std::unique_ptr< QgsSymbolLayer > createMarkerLayerFromSld( QDomElement &element );
451
455 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
456
462 static bool hasExternalGraphic( QDomElement &element );
463
470 static bool hasExternalGraphicV2( const QDomElement &element, const QString format = QString() );
471
472 static bool hasWellKnownMark( QDomElement &element );
473
474 static bool needFontMarker( QDomElement &element );
475
481 static bool needSvgMarker( const QDomElement &element );
482
491 static bool needRasterMarker( const QDomElement &element );
492 static bool needEllipseMarker( QDomElement &element );
493 static bool needMarkerLine( QDomElement &element );
494 static bool needLinePatternFill( QDomElement &element );
495 static bool needPointPatternFill( QDomElement &element );
496 static bool needSvgFill( QDomElement &element );
497
504 static bool needRasterImageFill( QDomElement &element );
505
511 Q_DECL_DEPRECATED static void fillToSld( QDomDocument &doc, QDomElement &element,
512 Qt::BrushStyle brushStyle, const QColor &color = QColor() ) SIP_DEPRECATED;
513
519 static void fillToSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context,
520 Qt::BrushStyle brushStyle, const QColor &color = QColor() );
521
522 static bool fillFromSld( QDomElement &element,
523 Qt::BrushStyle &brushStyle, QColor &color );
524
526 static void lineToSld( QDomDocument &doc, QDomElement &element,
527 Qt::PenStyle penStyle, const QColor &color, QgsSldExportContext &context, double width = -1,
528 const Qt::PenJoinStyle *penJoinStyle = nullptr, const Qt::PenCapStyle *penCapStyle = nullptr,
529 const QVector<qreal> *customDashPattern = nullptr, double dashOffset = 0.0 ) SIP_SKIP;
530 static bool lineFromSld( QDomElement &element,
531 Qt::PenStyle &penStyle, QColor &color, double &width,
532 Qt::PenJoinStyle *penJoinStyle = nullptr, Qt::PenCapStyle *penCapStyle = nullptr,
533 QVector<qreal> *customDashPattern = nullptr, double *dashOffset = nullptr );
534
535 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
536 const QString &path, const QString &mime,
537 const QColor &color, double size = -1 );
538 static bool externalGraphicFromSld( QDomElement &element,
539 QString &path, QString &mime,
540 QColor &color, double &size );
541
546 Q_DECL_DEPRECATED static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
547 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
548 double strokeWidth = -1, double size = -1 ) SIP_DEPRECATED;
549
554 static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
555 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
556 QgsSldExportContext &context,
557 double strokeWidth = -1, double size = -1 );
558
562 static bool wellKnownMarkerFromSld( QDomElement &element,
563 QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
564 double &strokeWidth, double &size ) SIP_PYNAME( wellKnownMarkerFromSld2 );
565
571 Q_DECL_DEPRECATED static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
572 const QString &path, const QString &format, int *markIndex = nullptr,
573 const QColor &color = QColor(), double size = -1 ) SIP_DEPRECATED;
574
580 static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
581 const QString &path, const QString &format, QgsSldExportContext &context, int *markIndex = nullptr,
582 const QColor &color = QColor(), double size = -1 );
583
584 static bool externalMarkerFromSld( QDomElement &element,
585 QString &path, QString &format, int &markIndex,
586 QColor &color, double &size );
587
593 Q_DECL_DEPRECATED static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
594 const QFont &font, const QColor &color = QColor(), double size = -1 ) SIP_DEPRECATED;
595
601 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
602 const QFont &font, QgsSldExportContext &context, const QColor &color = QColor(), double size = -1 );
603
605 static QString ogrFeatureStylePen( double width, double mmScaleFactor, double mapUnitsScaleFactor, const QColor &c,
606 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
607 Qt::PenCapStyle capStyle = Qt::FlatCap,
608 double offset = 0.0,
609 const QVector<qreal> *dashPattern = nullptr );
610
615 static QString ogrFeatureStyleBrush( const QColor &fillColr );
616
621 Q_DECL_DEPRECATED static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc ) SIP_DEPRECATED;
622
627 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc, QgsSldExportContext &context );
628
629 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
630
635 Q_DECL_DEPRECATED static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc ) SIP_DEPRECATED;
636
641 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc, QgsSldExportContext &context );
642
643 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
644
645 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
646 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
647
654 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
655
656 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
657 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
658
663 Q_DECL_DEPRECATED static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc ) SIP_DEPRECATED;
664
669 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc, QgsSldExportContext &context );
670
671 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
672
680 Q_DECL_DEPRECATED static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
681
690 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
691
696 Q_DECL_DEPRECATED static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
697
702 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
703
704 static bool functionFromSldElement( QDomElement &element, QString &function );
705
706 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
707 static QgsStringMap getSvgParameterList( QDomElement &element );
708
709 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
710 static QgsStringMap getVendorOptionList( QDomElement &element );
711
713 static QVariantMap parseProperties( const QDomElement &element );
715 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
716
718 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
720 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
721
722 static void clearSymbolMap( QgsSymbolMap &symbols );
723
730 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
731
737 static std::unique_ptr< QgsSymbol > symbolFromMimeData( const QMimeData *data );
738
745 static std::unique_ptr< QgsColorRamp > loadColorRamp( QDomElement &element );
746
755 static QDomElement saveColorRamp( const QString &name, const QgsColorRamp *ramp, QDomDocument &doc );
756
763 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
764
771 static std::unique_ptr< QgsColorRamp > loadColorRamp( const QVariant &value );
772
778 static QString colorToName( const QColor &color );
779
786 static QList< QColor > parseColorList( const QString &colorStr );
787
794 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
795
803 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
804
810 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
811
818 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
819
828 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
829
838 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
839
847 static QColor parseColor( const QString &colorStr, bool strictEval = false );
848
857 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
858
862 static void multiplyImageOpacity( QImage *image, qreal opacity );
863
865 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
866
870 static void premultiplyColor( QColor &rgb, int alpha );
871
884 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
885
887 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
889 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
890
892 static QStringList listSvgFiles();
893
895 static QStringList listSvgFilesAt( const QString &directory );
896
903 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
904
909 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
910
918 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
919
927 static QList< QList< QPolygonF > > toQPolygonF( const QgsAbstractGeometry *geometry, Qgis::SymbolType type );
928
930 static QPointF polygonCentroid( const QPolygonF &points );
931
933 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
934
936 static bool pointInPolygon( const QPolygonF &points, QPointF point );
937
943 static double polylineLength( const QPolygonF &polyline );
944
957 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
958
966 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
967
975 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
976
983 static std::unique_ptr< QgsExpression > fieldOrExpressionToExpression( const QString &fieldOrExpression );
984
991 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
992
998 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
999
1004 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
1005
1010 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
1011
1016 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
1017
1021 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
1022
1026 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
1027
1034 Q_DECL_DEPRECATED static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
1035 const QString &path,
1036 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth ) SIP_DEPRECATED;
1037
1044 static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
1045 const QString &path,
1046 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth,
1047 QgsSldExportContext &context );
1048
1052 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
1053
1059 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
1060
1068 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
1069
1084 static QgsSymbol *restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
1085
1090 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
1091
1101 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
1102
1107 static void clearSymbolLayerIds( QgsSymbol *symbol );
1108
1113 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1114
1119 static void resetSymbolLayerIds( QgsSymbol *symbol );
1120
1125 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1126
1131 static void clearSymbolLayerMasks( QgsSymbol *symbol );
1132
1143 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
1144
1146#ifndef SIP_RUN
1147 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
1148 {
1149 const QString exprString = property.asExpression();
1150 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
1151 }
1152
1153 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
1154 {
1155 const QString exprString = property.asExpression();
1156 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
1157 }
1158
1159 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
1160 {
1161 const QString exprString = property.asExpression();
1163 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) +
1164 "|| ',' || " +
1165 ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : QStringLiteral( "'0'" ) ) );
1166 }
1167#endif
1169
1170};
1171
1172class QPolygonF;
1173
1175QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
1176
1177#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:54
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3159
LineClipMode
Line clipping modes.
Definition qgis.h:3173
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:2084
RenderUnit
Rendering size units.
Definition qgis.h:5045
EndCapStyle
End cap styles for buffers.
Definition qgis.h:2071
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1796
SymbolType
Symbol types.
Definition qgis.h:574
@ Hybrid
Hybrid symbol.
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:3117
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...
Handles 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:77
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.
A container for the context for various read/write operations on objects.
Contains information about the context of a rendering operation.
Stores properties relating to a screen.
Holds SLD export options and other information related to SLD export of a QGIS layer style.
We may need stable references to symbol layers, when pointers to symbol layers are not usable (when a...
Contains utility functions for working with symbols and symbol layers.
static std::unique_ptr< QgsSymbol > loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element.
static std::unique_ptr< 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.
Abstract base class for symbol layers.
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:6367
QMap< QString, QString > QgsStringMap
Definition qgis.h:6881
#define SIP_DEPRECATED
Definition qgis_sip.h:106
#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:49
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