QGIS API Documentation 4.1.0-Master (659fe69c07c)
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:
75 static QString encodeColor( const QColor &color );
76
86 static QColor decodeColor( const QString &str );
87
88 static QString encodeSldAlpha( int alpha );
89 static int decodeSldAlpha( const QString &str );
90
91 static QString encodeSldFontStyle( QFont::Style style );
92 static QFont::Style decodeSldFontStyle( const QString &str );
93
94 static QString encodeSldFontWeight( int weight );
95 static int decodeSldFontWeight( const QString &str );
96
97 static QString encodePenStyle( Qt::PenStyle style );
98 static Qt::PenStyle decodePenStyle( const QString &str );
99
100 static QString encodePenJoinStyle( Qt::PenJoinStyle style );
101 static Qt::PenJoinStyle decodePenJoinStyle( const QString &str );
102
103 static QString encodePenCapStyle( Qt::PenCapStyle style );
104 static Qt::PenCapStyle decodePenCapStyle( const QString &str );
105
106 static QString encodeSldLineJoinStyle( Qt::PenJoinStyle style );
107 static Qt::PenJoinStyle decodeSldLineJoinStyle( const QString &str );
108
109 static QString encodeSldLineCapStyle( Qt::PenCapStyle style );
110 static Qt::PenCapStyle decodeSldLineCapStyle( const QString &str );
111
112 static QString encodeBrushStyle( Qt::BrushStyle style );
113 static Qt::BrushStyle decodeBrushStyle( const QString &str );
114
115 static QString encodeSldBrushStyle( Qt::BrushStyle style );
116 static Qt::BrushStyle decodeSldBrushStyle( const QString &str );
117
123 static Qgis::EndCapStyle penCapStyleToEndCapStyle( Qt::PenCapStyle style );
124
130 static Qgis::JoinStyle penJoinStyleToJoinStyle( Qt::PenJoinStyle style );
131
137 static bool hasSldSymbolizer( const QDomElement &element );
138
149 static Qgis::SymbolCoordinateReference decodeCoordinateReference( const QString &string, bool *ok SIP_OUT = nullptr );
150
158 static QString encodeCoordinateReference( Qgis::SymbolCoordinateReference coordinateReference );
159
164 static QgsArrowSymbolLayer::HeadType decodeArrowHeadType( const QVariant &value, bool *ok SIP_OUT = nullptr );
165
170 static QgsArrowSymbolLayer::ArrowType decodeArrowType( const QVariant &value, bool *ok SIP_OUT = nullptr );
171
182 static Qgis::MarkerClipMode decodeMarkerClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
183
190 static QString encodeMarkerClipMode( Qgis::MarkerClipMode mode );
191
202 static Qgis::LineClipMode decodeLineClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
203
210 static QString encodeLineClipMode( Qgis::LineClipMode mode );
211
217 static QString encodePoint( QPointF point );
218
224 static QPointF decodePoint( const QString &string );
225
238 static QPointF toPoint( const QVariant &value, bool *ok SIP_OUT = nullptr );
239
245 static QString encodeSize( QSizeF size );
246
252 static QSizeF decodeSize( const QString &string );
253
266 static QSizeF toSize( const QVariant &value, bool *ok SIP_OUT = nullptr );
267
268 static QString encodeMapUnitScale( const QgsMapUnitScale &mapUnitScale );
269 static QgsMapUnitScale decodeMapUnitScale( const QString &str );
270
271 static QString encodeRealVector( const QVector<qreal> &v );
272 static QVector<qreal> decodeRealVector( const QString &s );
273
274 static QString encodeSldRealVector( const QVector<qreal> &v );
275 static QVector<qreal> decodeSldRealVector( const QString &s );
276
284 static QString encodeSldUom( Qgis::RenderUnit unit, double *scaleFactor );
285
293 static Qgis::RenderUnit decodeSldUom( const QString &str, double *scaleFactor = nullptr );
294
301 static double sizeInPixelsFromSldUom( const QString &uom, double size );
302
308 static QString encodeScaleMethod( Qgis::ScaleMethod scaleMethod );
309
315 static Qgis::ScaleMethod decodeScaleMethod( const QString &str );
316
317 static QPainter::CompositionMode decodeBlendMode( const QString &s );
318
328 static QIcon symbolPreviewIcon( const QgsSymbol *symbol, QSize size, int padding = 0, QgsLegendPatchShape *shape = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
329
342 static QPixmap symbolPreviewPixmap(
343 const QgsSymbol *symbol,
344 QSize size,
345 int padding = 0,
346 QgsRenderContext *customContext = nullptr,
347 bool selected = false,
348 const QgsExpressionContext *expressionContext = nullptr,
349 const QgsLegendPatchShape *shape = nullptr,
351 );
352
363 static QPicture symbolLayerPreviewPicture(
364 const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid
365 );
366
379 static QIcon symbolLayerPreviewIcon(
380 const QgsSymbolLayer *layer,
382 QSize size,
383 const QgsMapUnitScale &scale = QgsMapUnitScale(),
385 QgsMapLayer *mapLayer = nullptr,
387 );
388
396 static QIcon colorRampPreviewIcon( QgsColorRamp *ramp, QSize size, int padding = 0 );
397
410 static QPixmap colorRampPreviewPixmap( QgsColorRamp *ramp, QSize size, int padding = 0, Qt::Orientation direction = Qt::Horizontal, bool flipDirection = false, bool drawTransparentBackground = true );
411
412 static void drawStippledBackground( QPainter *painter, QRect rect );
413
418 static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize );
419
421 static double estimateMaxSymbolBleed( QgsSymbol *symbol, const QgsRenderContext &context );
422
429 static std::unique_ptr< QgsSymbol > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context );
430
439 template<class SymbolType> static std::unique_ptr< SymbolType > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
440 {
441 std::unique_ptr< QgsSymbol > tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
442 const bool canCast = dynamic_cast<SymbolType *>( tmpSymbol.get() );
443
444 if ( canCast )
445 {
446 std::unique_ptr< SymbolType > castRes( static_cast<SymbolType *>( tmpSymbol.release() ) );
447 return castRes;
448 }
449 else
450 {
451 //could not cast
452 return nullptr;
453 }
454 }
455
457 static std::unique_ptr< QgsSymbolLayer > loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context );
458
460 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
461
466 static QString symbolProperties( QgsSymbol *symbol );
467
471 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
472
476 static std::unique_ptr< QgsSymbolLayer > createFillLayerFromSld( QDomElement &element );
477
481 static std::unique_ptr< QgsSymbolLayer > createLineLayerFromSld( QDomElement &element );
482
486 static std::unique_ptr< QgsSymbolLayer > createMarkerLayerFromSld( QDomElement &element );
487
491 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
492
498 static bool hasExternalGraphic( QDomElement &element );
499
506 static bool hasExternalGraphicV2( const QDomElement &element, const QString format = QString() );
507
508 static bool hasWellKnownMark( QDomElement &element );
509
510 static bool needFontMarker( QDomElement &element );
511
517 static bool needSvgMarker( const QDomElement &element );
518
527 static bool needRasterMarker( const QDomElement &element );
528 static bool needEllipseMarker( QDomElement &element );
529 static bool needMarkerLine( QDomElement &element );
530 static bool needLinePatternFill( QDomElement &element );
531 static bool needPointPatternFill( QDomElement &element );
532 static bool needSvgFill( QDomElement &element );
533
540 static bool needRasterImageFill( QDomElement &element );
541
547 Q_DECL_DEPRECATED static void fillToSld( QDomDocument &doc, QDomElement &element, Qt::BrushStyle brushStyle, const QColor &color = QColor() ) SIP_DEPRECATED;
548
554 static void fillToSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context, Qt::BrushStyle brushStyle, const QColor &color = QColor() );
555
556 static bool fillFromSld( QDomElement &element, Qt::BrushStyle &brushStyle, QColor &color );
557
559 static void lineToSld(
560 QDomDocument &doc,
561 QDomElement &element,
562 Qt::PenStyle penStyle,
563 const QColor &color,
564 QgsSldExportContext &context,
565 double width = -1,
566 const Qt::PenJoinStyle *penJoinStyle = nullptr,
567 const Qt::PenCapStyle *penCapStyle = nullptr,
568 const QVector<qreal> *customDashPattern = nullptr,
569 double dashOffset = 0.0
570 ) SIP_SKIP;
571 static bool lineFromSld(
572 QDomElement &element,
573 Qt::PenStyle &penStyle,
574 QColor &color,
575 double &width,
576 Qt::PenJoinStyle *penJoinStyle = nullptr,
577 Qt::PenCapStyle *penCapStyle = nullptr,
578 QVector<qreal> *customDashPattern = nullptr,
579 double *dashOffset = nullptr
580 );
581
582 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element, const QString &path, const QString &mime, const QColor &color, double size = -1 );
583 static bool externalGraphicFromSld( QDomElement &element, QString &path, QString &mime, QColor &color, double &size );
584
589 Q_DECL_DEPRECATED static void wellKnownMarkerToSld(
590 QDomDocument &doc, QDomElement &element, const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle, double strokeWidth = -1, double size = -1
592
597 static void wellKnownMarkerToSld(
598 QDomDocument &doc,
599 QDomElement &element,
600 const QString &name,
601 const QColor &color,
602 const QColor &strokeColor,
603 Qt::PenStyle strokeStyle,
604 QgsSldExportContext &context,
605 double strokeWidth = -1,
606 double size = -1
607 );
608
612 static bool wellKnownMarkerFromSld( QDomElement &element, QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle, double &strokeWidth, double &size ) SIP_PYNAME(
613 wellKnownMarkerFromSld2
614 );
615
621 Q_DECL_DEPRECATED static void externalMarkerToSld(
622 QDomDocument &doc, QDomElement &element, const QString &path, const QString &format, int *markIndex = nullptr, const QColor &color = QColor(), double size = -1
624
630 static void externalMarkerToSld(
631 QDomDocument &doc, QDomElement &element, const QString &path, const QString &format, QgsSldExportContext &context, int *markIndex = nullptr, const QColor &color = QColor(), double size = -1
632 );
633
634 static bool externalMarkerFromSld( QDomElement &element, QString &path, QString &format, int &markIndex, QColor &color, double &size );
635
641 Q_DECL_DEPRECATED static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label, const QFont &font, const QColor &color = QColor(), double size = -1 ) SIP_DEPRECATED;
642
648 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label, const QFont &font, QgsSldExportContext &context, const QColor &color = QColor(), double size = -1 );
649
651 static QString ogrFeatureStylePen(
652 double width,
653 double mmScaleFactor,
654 double mapUnitsScaleFactor,
655 const QColor &c,
656 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
657 Qt::PenCapStyle capStyle = Qt::FlatCap,
658 double offset = 0.0,
659 const QVector<qreal> *dashPattern = nullptr
660 );
661
666 static QString ogrFeatureStyleBrush( const QColor &fillColr );
667
672 Q_DECL_DEPRECATED static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc ) SIP_DEPRECATED;
673
678 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc, QgsSldExportContext &context );
679
680 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
681
686 Q_DECL_DEPRECATED static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc ) SIP_DEPRECATED;
687
692 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc, QgsSldExportContext &context );
693
694 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
695
696 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
697 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
698
705 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
706
707 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
708 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
709
714 Q_DECL_DEPRECATED static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc ) SIP_DEPRECATED;
715
720 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc, QgsSldExportContext &context );
721
722 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
723
731 Q_DECL_DEPRECATED static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
732
741 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
742
747 Q_DECL_DEPRECATED static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
748
753 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
754
755 static bool functionFromSldElement( QDomElement &element, QString &function );
756
757 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
758 static QgsStringMap getSvgParameterList( QDomElement &element );
759
760 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
761 static QgsStringMap getVendorOptionList( QDomElement &element );
762
764 static QVariantMap parseProperties( const QDomElement &element );
766 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
767
769 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
771 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
772
773 static void clearSymbolMap( QgsSymbolMap &symbols );
774
781 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
782
788 static std::unique_ptr< QgsSymbol > symbolFromMimeData( const QMimeData *data );
789
796 static std::unique_ptr< QgsColorRamp > loadColorRamp( QDomElement &element );
797
806 static QDomElement saveColorRamp( const QString &name, const QgsColorRamp *ramp, QDomDocument &doc );
807
814 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
815
822 static std::unique_ptr< QgsColorRamp > loadColorRamp( const QVariant &value );
823
829 static QString colorToName( const QColor &color );
830
837 static QList< QColor > parseColorList( const QString &colorStr );
838
845 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
846
854 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
855
861 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
862
869 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
870
879 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
880
889 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
890
898 static QColor parseColor( const QString &colorStr, bool strictEval = false );
899
908 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
909
913 static void multiplyImageOpacity( QImage *image, qreal opacity );
914
916 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
917
921 static void premultiplyColor( QColor &rgb, int alpha );
922
935 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
936
938 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
940 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
941
943 static QStringList listSvgFiles();
944
946 static QStringList listSvgFilesAt( const QString &directory );
947
954 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
955
960 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
961
969 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
970
978 static QList< QList< QPolygonF > > toQPolygonF( const QgsAbstractGeometry *geometry, Qgis::SymbolType type );
979
981 static QPointF polygonCentroid( const QPolygonF &points );
982
984 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
985
987 static bool pointInPolygon( const QPolygonF &points, QPointF point );
988
994 static double polylineLength( const QPolygonF &polyline );
995
1008 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
1009
1017 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
1018
1026 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
1027
1034 static std::unique_ptr< QgsExpression > fieldOrExpressionToExpression( const QString &fieldOrExpression );
1035
1042 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
1043
1049 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
1050
1055 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
1056
1061 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
1062
1067 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
1068
1072 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
1073
1077 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
1078
1085 Q_DECL_DEPRECATED static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem, const QString &path, const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth )
1087
1094 static void parametricSvgToSld(
1095 QDomDocument &doc, QDomElement &graphicElem, const QString &path, const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth, QgsSldExportContext &context
1096 );
1097
1101 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
1102
1108 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
1109
1117 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
1118
1133 static std::unique_ptr< QgsSymbol > restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
1134
1139 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
1140
1150 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
1151
1156 static void clearSymbolLayerIds( QgsSymbol *symbol );
1157
1162 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1163
1168 static void resetSymbolLayerIds( QgsSymbol *symbol );
1169
1174 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1175
1180 static void clearSymbolLayerMasks( QgsSymbol *symbol );
1181
1192 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
1193
1195#ifndef SIP_RUN
1196 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
1197 {
1198 const QString exprString = property.asExpression();
1199 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
1200 }
1201
1202 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
1203 {
1204 const QString exprString = property.asExpression();
1205 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
1206 }
1207
1208 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
1209 {
1210 const QString exprString = property.asExpression();
1212 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : u"'0'"_s )
1213 + "|| ',' || "
1214 + ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : u"'0'"_s )
1215 );
1216 }
1217
1226 typedef QList<QPair<double, double>> BlankSegments;
1227
1241 static QList<QList<BlankSegments>> parseBlankSegments( const QString &strBlankSegments, const QgsRenderContext &renderContext, Qgis::RenderUnit unit, QString &error );
1242
1251 typedef QList<std::pair<QPointF, double>> ExtraItems;
1252
1264 static ExtraItems parseExtraItems( const QString &strExtraItems, QString &error );
1265
1266#endif
1268};
1269
1270class QPolygonF;
1271
1273QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
1274
1275#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3431
LineClipMode
Line clipping modes.
Definition qgis.h:3445
ScaleMethod
Scale methods.
Definition qgis.h:652
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:379
JoinStyle
Join styles for buffers.
Definition qgis.h:2243
RenderUnit
Rendering size units.
Definition qgis.h:5607
EndCapStyle
End cap styles for buffers.
Definition qgis.h:2230
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1954
SymbolType
Symbol types.
Definition qgis.h:638
@ Hybrid
Hybrid symbol.
Definition qgis.h:642
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:3389
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)
Decodes a string to a color.
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)
Lossy-encodes a color to a string.
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:227
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:7340
QMap< QString, QString > QgsStringMap
Definition qgis.h:7909
#define SIP_DEPRECATED
Definition qgis_sip.h:113
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_PYNAME(name)
Definition qgis_sip.h:88
#define SIP_OUT
Definition qgis_sip.h:57
#define SIP_FACTORY
Definition qgis_sip.h:83
#define SIP_INOUT
Definition qgis_sip.h:78
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