QGIS API Documentation 4.1.0-Master (60fea48833c)
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 static QString encodeColor( const QColor &color );
67 static QColor decodeColor( const QString &str );
68
69 static QString encodeSldAlpha( int alpha );
70 static int decodeSldAlpha( const QString &str );
71
72 static QString encodeSldFontStyle( QFont::Style style );
73 static QFont::Style decodeSldFontStyle( const QString &str );
74
75 static QString encodeSldFontWeight( int weight );
76 static int decodeSldFontWeight( const QString &str );
77
78 static QString encodePenStyle( Qt::PenStyle style );
79 static Qt::PenStyle decodePenStyle( const QString &str );
80
81 static QString encodePenJoinStyle( Qt::PenJoinStyle style );
82 static Qt::PenJoinStyle decodePenJoinStyle( const QString &str );
83
84 static QString encodePenCapStyle( Qt::PenCapStyle style );
85 static Qt::PenCapStyle decodePenCapStyle( const QString &str );
86
87 static QString encodeSldLineJoinStyle( Qt::PenJoinStyle style );
88 static Qt::PenJoinStyle decodeSldLineJoinStyle( const QString &str );
89
90 static QString encodeSldLineCapStyle( Qt::PenCapStyle style );
91 static Qt::PenCapStyle decodeSldLineCapStyle( const QString &str );
92
93 static QString encodeBrushStyle( Qt::BrushStyle style );
94 static Qt::BrushStyle decodeBrushStyle( const QString &str );
95
96 static QString encodeSldBrushStyle( Qt::BrushStyle style );
97 static Qt::BrushStyle decodeSldBrushStyle( const QString &str );
98
104 static Qgis::EndCapStyle penCapStyleToEndCapStyle( Qt::PenCapStyle style );
105
111 static Qgis::JoinStyle penJoinStyleToJoinStyle( Qt::PenJoinStyle style );
112
118 static bool hasSldSymbolizer( const QDomElement &element );
119
130 static Qgis::SymbolCoordinateReference decodeCoordinateReference( const QString &string, bool *ok SIP_OUT = nullptr );
131
139 static QString encodeCoordinateReference( Qgis::SymbolCoordinateReference coordinateReference );
140
145 static QgsArrowSymbolLayer::HeadType decodeArrowHeadType( const QVariant &value, bool *ok SIP_OUT = nullptr );
146
151 static QgsArrowSymbolLayer::ArrowType decodeArrowType( const QVariant &value, bool *ok SIP_OUT = nullptr );
152
163 static Qgis::MarkerClipMode decodeMarkerClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
164
171 static QString encodeMarkerClipMode( Qgis::MarkerClipMode mode );
172
183 static Qgis::LineClipMode decodeLineClipMode( const QString &string, bool *ok SIP_OUT = nullptr );
184
191 static QString encodeLineClipMode( Qgis::LineClipMode mode );
192
198 static QString encodePoint( QPointF point );
199
205 static QPointF decodePoint( const QString &string );
206
219 static QPointF toPoint( const QVariant &value, bool *ok SIP_OUT = nullptr );
220
226 static QString encodeSize( QSizeF size );
227
233 static QSizeF decodeSize( const QString &string );
234
247 static QSizeF toSize( const QVariant &value, bool *ok SIP_OUT = nullptr );
248
249 static QString encodeMapUnitScale( const QgsMapUnitScale &mapUnitScale );
250 static QgsMapUnitScale decodeMapUnitScale( const QString &str );
251
252 static QString encodeRealVector( const QVector<qreal> &v );
253 static QVector<qreal> decodeRealVector( const QString &s );
254
255 static QString encodeSldRealVector( const QVector<qreal> &v );
256 static QVector<qreal> decodeSldRealVector( const QString &s );
257
265 static QString encodeSldUom( Qgis::RenderUnit unit, double *scaleFactor );
266
274 static Qgis::RenderUnit decodeSldUom( const QString &str, double *scaleFactor = nullptr );
275
282 static double sizeInPixelsFromSldUom( const QString &uom, double size );
283
289 static QString encodeScaleMethod( Qgis::ScaleMethod scaleMethod );
290
296 static Qgis::ScaleMethod decodeScaleMethod( const QString &str );
297
298 static QPainter::CompositionMode decodeBlendMode( const QString &s );
299
309 static QIcon symbolPreviewIcon( const QgsSymbol *symbol, QSize size, int padding = 0, QgsLegendPatchShape *shape = nullptr, const QgsScreenProperties &screen = QgsScreenProperties() );
310
323 static QPixmap symbolPreviewPixmap(
324 const QgsSymbol *symbol,
325 QSize size,
326 int padding = 0,
327 QgsRenderContext *customContext = nullptr,
328 bool selected = false,
329 const QgsExpressionContext *expressionContext = nullptr,
330 const QgsLegendPatchShape *shape = nullptr,
332 );
333
344 static QPicture symbolLayerPreviewPicture(
345 const QgsSymbolLayer *layer, Qgis::RenderUnit units, QSize size, const QgsMapUnitScale &scale = QgsMapUnitScale(), Qgis::SymbolType parentSymbolType = Qgis::SymbolType::Hybrid
346 );
347
360 static QIcon symbolLayerPreviewIcon(
361 const QgsSymbolLayer *layer,
363 QSize size,
364 const QgsMapUnitScale &scale = QgsMapUnitScale(),
366 QgsMapLayer *mapLayer = nullptr,
368 );
369
377 static QIcon colorRampPreviewIcon( QgsColorRamp *ramp, QSize size, int padding = 0 );
378
391 static QPixmap colorRampPreviewPixmap( QgsColorRamp *ramp, QSize size, int padding = 0, Qt::Orientation direction = Qt::Horizontal, bool flipDirection = false, bool drawTransparentBackground = true );
392
393 static void drawStippledBackground( QPainter *painter, QRect rect );
394
399 static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int markerSize );
400
402 static double estimateMaxSymbolBleed( QgsSymbol *symbol, const QgsRenderContext &context );
403
410 static std::unique_ptr< QgsSymbol > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context );
411
420 template<class SymbolType> static std::unique_ptr< SymbolType > loadSymbol( const QDomElement &element, const QgsReadWriteContext &context ) SIP_SKIP
421 {
422 std::unique_ptr< QgsSymbol > tmpSymbol = QgsSymbolLayerUtils::loadSymbol( element, context );
423 const bool canCast = dynamic_cast<SymbolType *>( tmpSymbol.get() );
424
425 if ( canCast )
426 {
427 std::unique_ptr< SymbolType > castRes( static_cast<SymbolType *>( tmpSymbol.release() ) );
428 return castRes;
429 }
430 else
431 {
432 //could not cast
433 return nullptr;
434 }
435 }
436
438 static std::unique_ptr< QgsSymbolLayer > loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context );
439
441 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
442
447 static QString symbolProperties( QgsSymbol *symbol );
448
452 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
453
457 static std::unique_ptr< QgsSymbolLayer > createFillLayerFromSld( QDomElement &element );
458
462 static std::unique_ptr< QgsSymbolLayer > createLineLayerFromSld( QDomElement &element );
463
467 static std::unique_ptr< QgsSymbolLayer > createMarkerLayerFromSld( QDomElement &element );
468
472 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
473
479 static bool hasExternalGraphic( QDomElement &element );
480
487 static bool hasExternalGraphicV2( const QDomElement &element, const QString format = QString() );
488
489 static bool hasWellKnownMark( QDomElement &element );
490
491 static bool needFontMarker( QDomElement &element );
492
498 static bool needSvgMarker( const QDomElement &element );
499
508 static bool needRasterMarker( const QDomElement &element );
509 static bool needEllipseMarker( QDomElement &element );
510 static bool needMarkerLine( QDomElement &element );
511 static bool needLinePatternFill( QDomElement &element );
512 static bool needPointPatternFill( QDomElement &element );
513 static bool needSvgFill( QDomElement &element );
514
521 static bool needRasterImageFill( QDomElement &element );
522
528 Q_DECL_DEPRECATED static void fillToSld( QDomDocument &doc, QDomElement &element, Qt::BrushStyle brushStyle, const QColor &color = QColor() ) SIP_DEPRECATED;
529
535 static void fillToSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context, Qt::BrushStyle brushStyle, const QColor &color = QColor() );
536
537 static bool fillFromSld( QDomElement &element, Qt::BrushStyle &brushStyle, QColor &color );
538
540 static void lineToSld(
541 QDomDocument &doc,
542 QDomElement &element,
543 Qt::PenStyle penStyle,
544 const QColor &color,
545 QgsSldExportContext &context,
546 double width = -1,
547 const Qt::PenJoinStyle *penJoinStyle = nullptr,
548 const Qt::PenCapStyle *penCapStyle = nullptr,
549 const QVector<qreal> *customDashPattern = nullptr,
550 double dashOffset = 0.0
551 ) SIP_SKIP;
552 static bool lineFromSld(
553 QDomElement &element,
554 Qt::PenStyle &penStyle,
555 QColor &color,
556 double &width,
557 Qt::PenJoinStyle *penJoinStyle = nullptr,
558 Qt::PenCapStyle *penCapStyle = nullptr,
559 QVector<qreal> *customDashPattern = nullptr,
560 double *dashOffset = nullptr
561 );
562
563 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element, const QString &path, const QString &mime, const QColor &color, double size = -1 );
564 static bool externalGraphicFromSld( QDomElement &element, QString &path, QString &mime, QColor &color, double &size );
565
570 Q_DECL_DEPRECATED static void wellKnownMarkerToSld(
571 QDomDocument &doc, QDomElement &element, const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle, double strokeWidth = -1, double size = -1
573
578 static void wellKnownMarkerToSld(
579 QDomDocument &doc,
580 QDomElement &element,
581 const QString &name,
582 const QColor &color,
583 const QColor &strokeColor,
584 Qt::PenStyle strokeStyle,
585 QgsSldExportContext &context,
586 double strokeWidth = -1,
587 double size = -1
588 );
589
593 static bool wellKnownMarkerFromSld( QDomElement &element, QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle, double &strokeWidth, double &size ) SIP_PYNAME(
594 wellKnownMarkerFromSld2
595 );
596
602 Q_DECL_DEPRECATED static void externalMarkerToSld(
603 QDomDocument &doc, QDomElement &element, const QString &path, const QString &format, int *markIndex = nullptr, const QColor &color = QColor(), double size = -1
605
611 static void externalMarkerToSld(
612 QDomDocument &doc, QDomElement &element, const QString &path, const QString &format, QgsSldExportContext &context, int *markIndex = nullptr, const QColor &color = QColor(), double size = -1
613 );
614
615 static bool externalMarkerFromSld( QDomElement &element, QString &path, QString &format, int &markIndex, QColor &color, double &size );
616
622 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;
623
629 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label, const QFont &font, QgsSldExportContext &context, const QColor &color = QColor(), double size = -1 );
630
632 static QString ogrFeatureStylePen(
633 double width,
634 double mmScaleFactor,
635 double mapUnitsScaleFactor,
636 const QColor &c,
637 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
638 Qt::PenCapStyle capStyle = Qt::FlatCap,
639 double offset = 0.0,
640 const QVector<qreal> *dashPattern = nullptr
641 );
642
647 static QString ogrFeatureStyleBrush( const QColor &fillColr );
648
653 Q_DECL_DEPRECATED static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc ) SIP_DEPRECATED;
654
659 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc, QgsSldExportContext &context );
660
661 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
662
667 Q_DECL_DEPRECATED static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc ) SIP_DEPRECATED;
668
673 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc, QgsSldExportContext &context );
674
675 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
676
677 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
678 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
679
686 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
687
688 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
689 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
690
695 Q_DECL_DEPRECATED static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc ) SIP_DEPRECATED;
696
701 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc, QgsSldExportContext &context );
702
703 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
704
712 Q_DECL_DEPRECATED static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
713
722 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
723
728 Q_DECL_DEPRECATED static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
729
734 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
735
736 static bool functionFromSldElement( QDomElement &element, QString &function );
737
738 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
739 static QgsStringMap getSvgParameterList( QDomElement &element );
740
741 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
742 static QgsStringMap getVendorOptionList( QDomElement &element );
743
745 static QVariantMap parseProperties( const QDomElement &element );
747 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
748
750 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
752 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
753
754 static void clearSymbolMap( QgsSymbolMap &symbols );
755
762 static QMimeData *symbolToMimeData( const QgsSymbol *symbol ) SIP_FACTORY;
763
769 static std::unique_ptr< QgsSymbol > symbolFromMimeData( const QMimeData *data );
770
777 static std::unique_ptr< QgsColorRamp > loadColorRamp( QDomElement &element );
778
787 static QDomElement saveColorRamp( const QString &name, const QgsColorRamp *ramp, QDomDocument &doc );
788
795 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
796
803 static std::unique_ptr< QgsColorRamp > loadColorRamp( const QVariant &value );
804
810 static QString colorToName( const QColor &color );
811
818 static QList< QColor > parseColorList( const QString &colorStr );
819
826 static QMimeData *colorToMimeData( const QColor &color ) SIP_FACTORY;
827
835 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
836
842 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
843
850 static QMimeData *colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true ) SIP_FACTORY;
851
860 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
861
870 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
871
879 static QColor parseColor( const QString &colorStr, bool strictEval = false );
880
889 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
890
894 static void multiplyImageOpacity( QImage *image, qreal opacity );
895
897 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
898
902 static void premultiplyColor( QColor &rgb, int alpha );
903
916 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
917
919 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
921 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
922
924 static QStringList listSvgFiles();
925
927 static QStringList listSvgFilesAt( const QString &directory );
928
935 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
936
941 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
942
950 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
951
959 static QList< QList< QPolygonF > > toQPolygonF( const QgsAbstractGeometry *geometry, Qgis::SymbolType type );
960
962 static QPointF polygonCentroid( const QPolygonF &points );
963
965 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
966
968 static bool pointInPolygon( const QPolygonF &points, QPointF point );
969
975 static double polylineLength( const QPolygonF &polyline );
976
989 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
990
998 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
999
1007 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
1008
1015 static std::unique_ptr< QgsExpression > fieldOrExpressionToExpression( const QString &fieldOrExpression );
1016
1023 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
1024
1030 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
1031
1036 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
1037
1042 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
1043
1048 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
1049
1053 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
1054
1058 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
1059
1066 Q_DECL_DEPRECATED static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem, const QString &path, const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth )
1068
1075 static void parametricSvgToSld(
1076 QDomDocument &doc, QDomElement &graphicElem, const QString &path, const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth, QgsSldExportContext &context
1077 );
1078
1082 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
1083
1089 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
1090
1098 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
1099
1114 static std::unique_ptr< QgsSymbol > restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
1115
1120 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
1121
1131 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
1132
1137 static void clearSymbolLayerIds( QgsSymbol *symbol );
1138
1143 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1144
1149 static void resetSymbolLayerIds( QgsSymbol *symbol );
1150
1155 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1156
1161 static void clearSymbolLayerMasks( QgsSymbol *symbol );
1162
1173 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
1174
1176#ifndef SIP_RUN
1177 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
1178 {
1179 const QString exprString = property.asExpression();
1180 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
1181 }
1182
1183 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
1184 {
1185 const QString exprString = property.asExpression();
1186 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
1187 }
1188
1189 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
1190 {
1191 const QString exprString = property.asExpression();
1193 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : u"'0'"_s )
1194 + "|| ',' || "
1195 + ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : u"'0'"_s )
1196 );
1197 }
1198#endif
1200};
1201
1202class QPolygonF;
1203
1205QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
1206
1207#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3363
LineClipMode
Line clipping modes.
Definition qgis.h:3377
ScaleMethod
Scale methods.
Definition qgis.h:650
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:2201
RenderUnit
Rendering size units.
Definition qgis.h:5340
EndCapStyle
End cap styles for buffers.
Definition qgis.h:2188
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1912
SymbolType
Symbol types.
Definition qgis.h:636
@ Hybrid
Hybrid symbol.
Definition qgis.h:640
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:3321
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: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:6975
QMap< QString, QString > QgsStringMap
Definition qgis.h:7475
#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