QGIS API Documentation 3.99.0-Master (d270888f95f)
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.h"
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgsarrowsymbollayer.h"
24#include "qgscolorramp.h"
25#include "qgsmapunitscale.h"
26#include "qgssymbol.h"
27
28#include <QColor>
29#include <QFile>
30#include <QFont>
31#include <QMap>
32#include <QPainter>
33#include <QString>
34
35using namespace Qt::StringLiterals;
36
37#define FONTMARKER_CHR_FIX "~!_#!#_!~"
38
39class QgsExpression;
40class QgsPathResolver;
42class QgsSymbolLayer;
43
44typedef QMap<QString, QString> QgsStringMap;
45typedef QMap<QString, QgsSymbol * > QgsSymbolMap;
46typedef QList< QPair< QColor, QString > > QgsNamedColorList SIP_SKIP;
47
48class QDomDocument;
49class QDomElement;
50class QIcon;
51class QPixmap;
52class QPointF;
53class QSize;
54class QMimeData;
57
63class CORE_EXPORT QgsSymbolLayerUtils
64{
65 public:
66
67 static QString encodeColor( const QColor &color );
68 static QColor decodeColor( const QString &str );
69
70 static QString encodeSldAlpha( int alpha );
71 static int decodeSldAlpha( const QString &str );
72
73 static QString encodeSldFontStyle( QFont::Style style );
74 static QFont::Style decodeSldFontStyle( const QString &str );
75
76 static QString encodeSldFontWeight( int weight );
77 static int decodeSldFontWeight( const QString &str );
78
79 static QString encodePenStyle( Qt::PenStyle style );
80 static Qt::PenStyle decodePenStyle( const QString &str );
81
82 static QString encodePenJoinStyle( Qt::PenJoinStyle style );
83 static Qt::PenJoinStyle decodePenJoinStyle( const QString &str );
84
85 static QString encodePenCapStyle( Qt::PenCapStyle style );
86 static Qt::PenCapStyle decodePenCapStyle( const QString &str );
87
88 static QString encodeSldLineJoinStyle( Qt::PenJoinStyle style );
89 static Qt::PenJoinStyle decodeSldLineJoinStyle( const QString &str );
90
91 static QString encodeSldLineCapStyle( Qt::PenCapStyle style );
92 static Qt::PenCapStyle decodeSldLineCapStyle( const QString &str );
93
94 static QString encodeBrushStyle( Qt::BrushStyle style );
95 static Qt::BrushStyle decodeBrushStyle( const QString &str );
96
97 static QString encodeSldBrushStyle( Qt::BrushStyle style );
98 static Qt::BrushStyle decodeSldBrushStyle( const QString &str );
99
105 static Qgis::EndCapStyle penCapStyleToEndCapStyle( Qt::PenCapStyle style );
106
112 static Qgis::JoinStyle penJoinStyleToJoinStyle( Qt::PenJoinStyle style );
113
119 static bool hasSldSymbolizer( const QDomElement &element );
120
131 static Qgis::SymbolCoordinateReference decodeCoordinateReference( const QString &string, bool *ok SIP_OUT = nullptr );
132
140 static QString encodeCoordinateReference( Qgis::SymbolCoordinateReference coordinateReference );
141
146 static QgsArrowSymbolLayer::HeadType decodeArrowHeadType( const QVariant &value, bool *ok SIP_OUT = nullptr );
147
152 static QgsArrowSymbolLayer::ArrowType decodeArrowType( const QVariant &value, bool *ok SIP_OUT = nullptr );
153
164 static Qgis::MarkerClipMode decodeMarkerClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
165
172 static QString encodeMarkerClipMode( Qgis::MarkerClipMode mode );
173
184 static Qgis::LineClipMode decodeLineClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
185
192 static QString encodeLineClipMode( Qgis::LineClipMode mode );
193
199 static QString encodePoint( QPointF point );
200
206 static QPointF decodePoint( const QString &string );
207
220 static QPointF toPoint( const QVariant &value, bool *ok SIP_OUT = nullptr );
221
227 static QString encodeSize( QSizeF size );
228
234 static QSizeF decodeSize( const QString &string );
235
248 static QSizeF toSize( const QVariant &value, bool *ok SIP_OUT = nullptr );
249
250 static QString encodeMapUnitScale( const QgsMapUnitScale &mapUnitScale );
251 static QgsMapUnitScale decodeMapUnitScale( const QString &str );
252
253 static QString encodeRealVector( const QVector<qreal> &v );
254 static QVector<qreal> decodeRealVector( const QString &s );
255
256 static QString encodeSldRealVector( const QVector<qreal> &v );
257 static QVector<qreal> decodeSldRealVector( const QString &s );
258
266 static QString encodeSldUom( Qgis::RenderUnit unit, double *scaleFactor );
267
275 static Qgis::RenderUnit decodeSldUom( const QString &str, double *scaleFactor = nullptr );
276
283 static double sizeInPixelsFromSldUom( const QString &uom, double size );
284
290 static QString encodeScaleMethod( Qgis::ScaleMethod scaleMethod );
291
297 static Qgis::ScaleMethod decodeScaleMethod( const QString &str );
298
299 static QPainter::CompositionMode decodeBlendMode( const QString &s );
300
310 static QIcon symbolPreviewIcon( const QgsSymbol *symbol, QSize size, int padding = 0, QgsLegendPatchShape *shape = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
311
324 static QPixmap symbolPreviewPixmap( const QgsSymbol *symbol, QSize size, int padding = 0, QgsRenderContext *customContext = nullptr, bool selected = false,
325 const QgsExpressionContext *expressionContext = nullptr,
326 const QgsLegendPatchShape *shape = nullptr,
327 const QgsScreenProperties &screen = QgsScreenProperties() );
328
339 static QPicture symbolLayerPreviewPicture( const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid );
340
353 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() );
354
362 static QIcon colorRampPreviewIcon( QgsColorRamp *ramp, QSize size, int padding = 0 );
363
376 static QPixmap colorRampPreviewPixmap( QgsColorRamp *ramp, QSize size, int padding = 0, Qt::Orientation direction = Qt::Horizontal,
377 bool flipDirection = false, bool drawTransparentBackground = true );
378
379 static void drawStippledBackground( QPainter *painter, QRect rect );
380
385 static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize );
386
388 static double estimateMaxSymbolBleed( QgsSymbol *symbol, const QgsRenderContext &context );
389
396 static std::unique_ptr< QgsSymbol > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context );
397
406 template <class SymbolType> static std::unique_ptr< SymbolType > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
407 {
408 std::unique_ptr< QgsSymbol > tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
409 const bool canCast = dynamic_cast<SymbolType *>( tmpSymbol.get() );
410
411 if ( canCast )
412 {
413 std::unique_ptr< SymbolType > castRes( static_cast<SymbolType *>( tmpSymbol.release() ) );
414 return castRes;
415 }
416 else
417 {
418 //could not cast
419 return nullptr;
420 }
421 }
422
424 static std::unique_ptr< QgsSymbolLayer > loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context );
425
427 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
428
433 static QString symbolProperties( QgsSymbol *symbol );
434
438 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
439
443 static std::unique_ptr< QgsSymbolLayer > createFillLayerFromSld( QDomElement &element );
444
448 static std::unique_ptr< QgsSymbolLayer > createLineLayerFromSld( QDomElement &element );
449
453 static std::unique_ptr< QgsSymbolLayer > createMarkerLayerFromSld( QDomElement &element );
454
458 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
459
465 static bool hasExternalGraphic( QDomElement &element );
466
473 static bool hasExternalGraphicV2( const QDomElement &element, const QString format = QString() );
474
475 static bool hasWellKnownMark( QDomElement &element );
476
477 static bool needFontMarker( QDomElement &element );
478
484 static bool needSvgMarker( const QDomElement &element );
485
494 static bool needRasterMarker( const QDomElement &element );
495 static bool needEllipseMarker( QDomElement &element );
496 static bool needMarkerLine( QDomElement &element );
497 static bool needLinePatternFill( QDomElement &element );
498 static bool needPointPatternFill( QDomElement &element );
499 static bool needSvgFill( QDomElement &element );
500
507 static bool needRasterImageFill( QDomElement &element );
508
514 Q_DECL_DEPRECATED static void fillToSld( QDomDocument &doc, QDomElement &element,
515 Qt::BrushStyle brushStyle, const QColor &color = QColor() ) SIP_DEPRECATED;
516
522 static void fillToSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context,
523 Qt::BrushStyle brushStyle, const QColor &color = QColor() );
524
525 static bool fillFromSld( QDomElement &element,
526 Qt::BrushStyle &brushStyle, QColor &color );
527
529 static void lineToSld( QDomDocument &doc, QDomElement &element,
530 Qt::PenStyle penStyle, const QColor &color, QgsSldExportContext &context, double width = -1,
531 const Qt::PenJoinStyle *penJoinStyle = nullptr, const Qt::PenCapStyle *penCapStyle = nullptr,
532 const QVector<qreal> *customDashPattern = nullptr, double dashOffset = 0.0 ) SIP_SKIP;
533 static bool lineFromSld( QDomElement &element,
534 Qt::PenStyle &penStyle, QColor &color, double &width,
535 Qt::PenJoinStyle *penJoinStyle = nullptr, Qt::PenCapStyle *penCapStyle = nullptr,
536 QVector<qreal> *customDashPattern = nullptr, double *dashOffset = nullptr );
537
538 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
539 const QString &path, const QString &mime,
540 const QColor &color, double size = -1 );
541 static bool externalGraphicFromSld( QDomElement &element,
542 QString &path, QString &mime,
543 QColor &color, double &size );
544
549 Q_DECL_DEPRECATED static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
550 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
551 double strokeWidth = -1, double size = -1 ) SIP_DEPRECATED;
552
557 static void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
558 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
559 QgsSldExportContext &context,
560 double strokeWidth = -1, double size = -1 );
561
565 static bool wellKnownMarkerFromSld( QDomElement &element,
566 QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
567 double &strokeWidth, double &size ) SIP_PYNAME( wellKnownMarkerFromSld2 );
568
574 Q_DECL_DEPRECATED static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
575 const QString &path, const QString &format, int *markIndex = nullptr,
576 const QColor &color = QColor(), double size = -1 ) SIP_DEPRECATED;
577
583 static void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
584 const QString &path, const QString &format, QgsSldExportContext &context, int *markIndex = nullptr,
585 const QColor &color = QColor(), double size = -1 );
586
587 static bool externalMarkerFromSld( QDomElement &element,
588 QString &path, QString &format, int &markIndex,
589 QColor &color, double &size );
590
596 Q_DECL_DEPRECATED static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
597 const QFont &font, const QColor &color = QColor(), double size = -1 ) SIP_DEPRECATED;
598
604 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
605 const QFont &font, QgsSldExportContext &context, const QColor &color = QColor(), double size = -1 );
606
608 static QString ogrFeatureStylePen( double width, double mmScaleFactor, double mapUnitsScaleFactor, const QColor &c,
609 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
610 Qt::PenCapStyle capStyle = Qt::FlatCap,
611 double offset = 0.0,
612 const QVector<qreal> *dashPattern = nullptr );
613
618 static QString ogrFeatureStyleBrush( const QColor &fillColr );
619
624 Q_DECL_DEPRECATED static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc ) SIP_DEPRECATED;
625
630 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc, QgsSldExportContext &context );
631
632 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
633
638 Q_DECL_DEPRECATED static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc ) SIP_DEPRECATED;
639
644 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc, QgsSldExportContext &context );
645
646 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
647
648 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
649 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
650
657 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
658
659 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
660 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
661
666 Q_DECL_DEPRECATED static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc ) SIP_DEPRECATED;
667
672 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc, QgsSldExportContext &context );
673
674 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
675
683 Q_DECL_DEPRECATED static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
684
693 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
694
699 Q_DECL_DEPRECATED static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
700
705 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
706
707 static bool functionFromSldElement( QDomElement &element, QString &function );
708
709 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
710 static QgsStringMap getSvgParameterList( QDomElement &element );
711
712 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
713 static QgsStringMap getVendorOptionList( QDomElement &element );
714
716 static QVariantMap parseProperties( const QDomElement &element );
718 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
719
721 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
723 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
724
725 static void clearSymbolMap( QgsSymbolMap &symbols );
726
733 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
734
740 static std::unique_ptr< QgsSymbol > symbolFromMimeData( const QMimeData *data );
741
748 static std::unique_ptr< QgsColorRamp > loadColorRamp( QDomElement &element );
749
758 static QDomElement saveColorRamp( const QString &name, const QgsColorRamp *ramp, QDomDocument &doc );
759
766 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
767
774 static std::unique_ptr< QgsColorRamp > loadColorRamp( const QVariant &value );
775
781 static QString colorToName( const QColor &color );
782
789 static QList< QColor > parseColorList( const QString &colorStr );
790
797 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
798
806 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
807
813 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
814
821 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
822
831 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
832
841 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
842
850 static QColor parseColor( const QString &colorStr, bool strictEval = false );
851
860 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
861
865 static void multiplyImageOpacity( QImage *image, qreal opacity );
866
868 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
869
873 static void premultiplyColor( QColor &rgb, int alpha );
874
887 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
888
890 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
892 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
893
895 static QStringList listSvgFiles();
896
898 static QStringList listSvgFilesAt( const QString &directory );
899
906 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
907
912 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
913
921 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
922
930 static QList< QList< QPolygonF > > toQPolygonF( const QgsAbstractGeometry *geometry, Qgis::SymbolType type );
931
933 static QPointF polygonCentroid( const QPolygonF &points );
934
936 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
937
939 static bool pointInPolygon( const QPolygonF &points, QPointF point );
940
946 static double polylineLength( const QPolygonF &polyline );
947
960 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
961
969 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
970
978 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
979
986 static std::unique_ptr< QgsExpression > fieldOrExpressionToExpression( const QString &fieldOrExpression );
987
994 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
995
1001 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
1002
1007 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
1008
1013 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
1014
1019 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
1020
1024 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
1025
1029 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
1030
1037 Q_DECL_DEPRECATED static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
1038 const QString &path,
1039 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth ) SIP_DEPRECATED;
1040
1047 static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
1048 const QString &path,
1049 const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth,
1050 QgsSldExportContext &context );
1051
1055 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
1056
1062 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
1063
1071 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
1072
1087 static std::unique_ptr< QgsSymbol > restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
1088
1093 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
1094
1104 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
1105
1110 static void clearSymbolLayerIds( QgsSymbol *symbol );
1111
1116 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1117
1122 static void resetSymbolLayerIds( QgsSymbol *symbol );
1123
1128 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1129
1134 static void clearSymbolLayerMasks( QgsSymbol *symbol );
1135
1146 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
1147
1149#ifndef SIP_RUN
1150 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
1151 {
1152 const QString exprString = property.asExpression();
1153 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
1154 }
1155
1156 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
1157 {
1158 const QString exprString = property.asExpression();
1159 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
1160 }
1161
1162 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
1163 {
1164 const QString exprString = property.asExpression();
1166 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : u"'0'"_s ) +
1167 "|| ',' || " +
1168 ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : u"'0'"_s ) );
1169 }
1170#endif
1172
1173};
1174
1175class QPolygonF;
1176
1178QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
1179
1180#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:59
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3308
LineClipMode
Line clipping modes.
Definition qgis.h:3322
ScaleMethod
Scale methods.
Definition qgis.h:643
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:365
JoinStyle
Join styles for buffers.
Definition qgis.h:2179
RenderUnit
Rendering size units.
Definition qgis.h:5255
EndCapStyle
End cap styles for buffers.
Definition qgis.h:2166
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1891
SymbolType
Symbol types.
Definition qgis.h:629
@ Hybrid
Hybrid symbol.
Definition qgis.h:633
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:3266
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:83
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 Qgis::MarkerClipMode decodeMarkerClipMode(const QString &string, bool *ok=nullptr)
Decodes a string representing a marker clip mode.
static QPicture symbolLayerPreviewPicture(const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::SymbolType parentSymbolType=Qgis::SymbolType::Hybrid)
Draws a symbol layer preview to a QPicture.
static QString encodePenStyle(Qt::PenStyle style)
static QVector< qreal > decodeSldRealVector(const QString &s)
static QString encodeSldBrushStyle(Qt::BrushStyle style)
static Qt::PenJoinStyle decodePenJoinStyle(const QString &str)
static QgsArrowSymbolLayer::HeadType decodeArrowHeadType(const QVariant &value, bool *ok=nullptr)
Decodes a value representing an arrow head type.
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
static void drawVertexMarker(double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize)
Draws a vertex symbol at (painter) coordinates x, y.
static QColor decodeColor(const QString &str)
static QIcon colorRampPreviewIcon(QgsColorRamp *ramp, QSize size, int padding=0)
Returns an icon preview for a color ramp.
static QString encodeBrushStyle(Qt::BrushStyle style)
static QPixmap colorRampPreviewPixmap(QgsColorRamp *ramp, QSize size, int padding=0, Qt::Orientation direction=Qt::Horizontal, bool flipDirection=false, bool drawTransparentBackground=true)
Returns a pixmap preview for a color ramp.
static QString encodeSldAlpha(int alpha)
static QPointF toPoint(const QVariant &value, bool *ok=nullptr)
Converts a value to a point.
static bool hasSldSymbolizer(const QDomElement &element)
Returns true if a DOM element contains an SLD Symbolizer element.
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
static QSizeF toSize(const QVariant &value, bool *ok=nullptr)
Converts a value to a size.
static Qt::PenCapStyle decodePenCapStyle(const QString &str)
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())
Draws a symbol layer preview to an icon.
static QString encodeSldLineCapStyle(Qt::PenCapStyle style)
static QString encodeSldUom(Qgis::RenderUnit unit, double *scaleFactor)
Encodes a render unit into an SLD unit of measure string.
static std::unique_ptr< QgsSymbol > loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element.
static QVector< qreal > decodeRealVector(const QString &s)
static QPainter::CompositionMode decodeBlendMode(const QString &s)
static Qgis::ScaleMethod decodeScaleMethod(const QString &str)
Decodes a symbol scale method from a string.
static QString encodeLineClipMode(Qgis::LineClipMode mode)
Encodes a line clip mode to a string.
static QPixmap symbolPreviewPixmap(const QgsSymbol *symbol, QSize size, int padding=0, QgsRenderContext *customContext=nullptr, bool selected=false, const QgsExpressionContext *expressionContext=nullptr, const QgsLegendPatchShape *shape=nullptr, const QgsScreenProperties &screen=QgsScreenProperties())
Returns a pixmap preview for a color ramp.
static Qgis::LineClipMode decodeLineClipMode(const QString &string, bool *ok=nullptr)
Decodes a string representing a line clip mode.
static QString encodePenCapStyle(Qt::PenCapStyle style)
static QFont::Style decodeSldFontStyle(const QString &str)
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.
static QString encodeSldFontWeight(int weight)
static Qt::BrushStyle decodeBrushStyle(const QString &str)
static Qt::PenCapStyle decodeSldLineCapStyle(const QString &str)
static QString encodeSize(QSizeF size)
Encodes a QSizeF to a string.
static double sizeInPixelsFromSldUom(const QString &uom, double size)
Returns the size scaled in pixels according to the uom attribute.
static int decodeSldAlpha(const QString &str)
static QString encodeSldLineJoinStyle(Qt::PenJoinStyle style)
static void drawStippledBackground(QPainter *painter, QRect rect)
static QString encodeColor(const QColor &color)
static Qt::PenJoinStyle decodeSldLineJoinStyle(const QString &str)
static Qgis::EndCapStyle penCapStyleToEndCapStyle(Qt::PenCapStyle style)
Converts a Qt pen cap style to a QGIS end cap style.
static QString encodeSldFontStyle(QFont::Style style)
static int decodeSldFontWeight(const QString &str)
static Qgis::RenderUnit decodeSldUom(const QString &str, double *scaleFactor=nullptr)
Decodes a SLD unit of measure string to a render unit.
static QgsArrowSymbolLayer::ArrowType decodeArrowType(const QVariant &value, bool *ok=nullptr)
Decodes a value representing an arrow type.
static Qt::BrushStyle decodeSldBrushStyle(const QString &str)
static double estimateMaxSymbolBleed(QgsSymbol *symbol, const QgsRenderContext &context)
Returns the maximum estimated bleed for the symbol.
static QString encodeScaleMethod(Qgis::ScaleMethod scaleMethod)
Encodes a symbol scale method to a string.
static Qt::PenStyle decodePenStyle(const QString &str)
static Qgis::SymbolCoordinateReference decodeCoordinateReference(const QString &string, bool *ok=nullptr)
Decodes a string representing a symbol coordinate reference mode.
static QString encodePoint(QPointF point)
Encodes a QPointF to a string.
static QString encodePenJoinStyle(Qt::PenJoinStyle style)
static Qgis::JoinStyle penJoinStyleToJoinStyle(Qt::PenJoinStyle style)
Converts a Qt pen joinstyle to a QGIS join style.
static QIcon symbolPreviewIcon(const QgsSymbol *symbol, QSize size, int padding=0, QgsLegendPatchShape *shape=nullptr, const QgsScreenProperties &screen=QgsScreenProperties())
Returns an icon preview for a color ramp.
static QPointF decodePoint(const QString &string)
Decodes a QSizeF from a string.
static QString encodeSldRealVector(const QVector< qreal > &v)
static QString encodeCoordinateReference(Qgis::SymbolCoordinateReference coordinateReference)
Encodes a symbol coordinate reference mode to a string.
static QString encodeMarkerClipMode(Qgis::MarkerClipMode mode)
Encodes a marker clip mode to a string.
static QSizeF decodeSize(const QString &string)
Decodes a QSizeF from a string.
static QString encodeRealVector(const QVector< qreal > &v)
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:6900
QMap< QString, QString > QgsStringMap
Definition qgis.h:7413
#define SIP_DEPRECATED
Definition qgis_sip.h:114
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_PYNAME(name)
Definition qgis_sip.h:89
#define SIP_OUT
Definition qgis_sip.h:58
#define SIP_FACTORY
Definition qgis_sip.h:84
#define SIP_INOUT
Definition qgis_sip.h:79
QMap< QString, QgsSymbol * > QgsSymbolMap
Definition qgsrenderer.h:52
QList< QPolygonF > offsetLine(QPolygonF polyline, double dist, Qgis::GeometryType geometryType)
calculate geometry shifted by a specified distance