QGIS API Documentation 4.3.0-Master (0de80482b60)
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 return qgis::unique_ptr_dynamic_cast<SymbolType>( QgsSymbolLayerUtils::loadSymbol( element, context ) );
442 }
443
445 static std::unique_ptr< QgsSymbolLayer > loadSymbolLayer( QDomElement &element, const QgsReadWriteContext &context );
446
448 static QDomElement saveSymbol( const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context );
449
454 static QString symbolProperties( QgsSymbol *symbol );
455
459 static bool createSymbolLayerListFromSld( QDomElement &element, Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
460
464 static std::unique_ptr< QgsSymbolLayer > createFillLayerFromSld( QDomElement &element );
465
469 static std::unique_ptr< QgsSymbolLayer > createLineLayerFromSld( QDomElement &element );
470
474 static std::unique_ptr< QgsSymbolLayer > createMarkerLayerFromSld( QDomElement &element );
475
479 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
480
486 static bool hasExternalGraphic( QDomElement &element );
487
494 static bool hasExternalGraphicV2( const QDomElement &element, const QString format = QString() );
495
496 static bool hasWellKnownMark( QDomElement &element );
497
498 static bool needFontMarker( QDomElement &element );
499
505 static bool needSvgMarker( const QDomElement &element );
506
515 static bool needRasterMarker( const QDomElement &element );
516 static bool needEllipseMarker( QDomElement &element );
517 static bool needMarkerLine( QDomElement &element );
518 static bool needLinePatternFill( QDomElement &element );
519 static bool needPointPatternFill( QDomElement &element );
520 static bool needSvgFill( QDomElement &element );
521
528 static bool needRasterImageFill( QDomElement &element );
529
535 Q_DECL_DEPRECATED static void fillToSld( QDomDocument &doc, QDomElement &element, Qt::BrushStyle brushStyle, const QColor &color = QColor() ) SIP_DEPRECATED;
536
542 static void fillToSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context, Qt::BrushStyle brushStyle, const QColor &color = QColor() );
543
544 static bool fillFromSld( QDomElement &element, Qt::BrushStyle &brushStyle, QColor &color );
545
547 static void lineToSld(
548 QDomDocument &doc,
549 QDomElement &element,
550 Qt::PenStyle penStyle,
551 const QColor &color,
552 QgsSldExportContext &context,
553 double width = -1,
554 const Qt::PenJoinStyle *penJoinStyle = nullptr,
555 const Qt::PenCapStyle *penCapStyle = nullptr,
556 const QVector<qreal> *customDashPattern = nullptr,
557 double dashOffset = 0.0
558 ) SIP_SKIP;
559 static bool lineFromSld(
560 QDomElement &element,
561 Qt::PenStyle &penStyle,
562 QColor &color,
563 double &width,
564 Qt::PenJoinStyle *penJoinStyle = nullptr,
565 Qt::PenCapStyle *penCapStyle = nullptr,
566 QVector<qreal> *customDashPattern = nullptr,
567 double *dashOffset = nullptr
568 );
569
570 static void externalGraphicToSld( QDomDocument &doc, QDomElement &element, const QString &path, const QString &mime, const QColor &color, double size = -1 );
571 static bool externalGraphicFromSld( QDomElement &element, QString &path, QString &mime, QColor &color, double &size );
572
577 Q_DECL_DEPRECATED static void wellKnownMarkerToSld(
578 QDomDocument &doc, QDomElement &element, const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle, double strokeWidth = -1, double size = -1
580
585 static void wellKnownMarkerToSld(
586 QDomDocument &doc,
587 QDomElement &element,
588 const QString &name,
589 const QColor &color,
590 const QColor &strokeColor,
591 Qt::PenStyle strokeStyle,
592 QgsSldExportContext &context,
593 double strokeWidth = -1,
594 double size = -1
595 );
596
600 static bool wellKnownMarkerFromSld( QDomElement &element, QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle, double &strokeWidth, double &size ) SIP_PYNAME(
601 wellKnownMarkerFromSld2
602 );
603
609 Q_DECL_DEPRECATED static void externalMarkerToSld(
610 QDomDocument &doc, QDomElement &element, const QString &path, const QString &format, int *markIndex = nullptr, const QColor &color = QColor(), double size = -1
612
618 static void externalMarkerToSld(
619 QDomDocument &doc, QDomElement &element, const QString &path, const QString &format, QgsSldExportContext &context, int *markIndex = nullptr, const QColor &color = QColor(), double size = -1
620 );
621
622 static bool externalMarkerFromSld( QDomElement &element, QString &path, QString &format, int &markIndex, QColor &color, double &size );
623
629 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;
630
636 static void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label, const QFont &font, QgsSldExportContext &context, const QColor &color = QColor(), double size = -1 );
637
639 static QString ogrFeatureStylePen(
640 double width,
641 double mmScaleFactor,
642 double mapUnitsScaleFactor,
643 const QColor &c,
644 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
645 Qt::PenCapStyle capStyle = Qt::FlatCap,
646 double offset = 0.0,
647 const QVector<qreal> *dashPattern = nullptr
648 );
649
654 static QString ogrFeatureStyleBrush( const QColor &fillColr );
655
660 Q_DECL_DEPRECATED static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc ) SIP_DEPRECATED;
661
666 static void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc, QgsSldExportContext &context );
667
668 static bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
669
674 Q_DECL_DEPRECATED static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc ) SIP_DEPRECATED;
675
680 static void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc, QgsSldExportContext &context );
681
682 static bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
683
684 static void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
685 static bool displacementFromSldElement( QDomElement &element, QPointF &offset );
686
693 static void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
694
695 static void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
696 static bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
697
702 Q_DECL_DEPRECATED static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc ) SIP_DEPRECATED;
703
708 static void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc, QgsSldExportContext &context );
709
710 static bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
711
719 Q_DECL_DEPRECATED static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
720
729 static bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
730
735 Q_DECL_DEPRECATED static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function ) SIP_DEPRECATED;
736
741 static bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function, QgsSldExportContext &context );
742
743 static bool functionFromSldElement( QDomElement &element, QString &function );
744
745 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
746 static QgsStringMap getSvgParameterList( QDomElement &element );
747
748 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
749 static QgsStringMap getVendorOptionList( QDomElement &element );
750
752 static QVariantMap parseProperties( const QDomElement &element );
754 static void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
755
757 static QgsSymbolMap loadSymbols( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
759 static QDomElement saveSymbols( QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context );
760
761 static void clearSymbolMap( QgsSymbolMap &symbols );
762
769 static std::unique_ptr<QMimeData> symbolToMimeData( const QgsSymbol *symbol );
770
776 static std::unique_ptr< QgsSymbol > symbolFromMimeData( const QMimeData *data );
777
784 static std::unique_ptr< QgsColorRamp > loadColorRamp( QDomElement &element );
785
794 static QDomElement saveColorRamp( const QString &name, const QgsColorRamp *ramp, QDomDocument &doc );
795
802 static QVariant colorRampToVariant( const QString &name, QgsColorRamp *ramp );
803
810 static std::unique_ptr< QgsColorRamp > loadColorRamp( const QVariant &value );
811
817 static QString colorToName( const QColor &color );
818
825 static QList< QColor > parseColorList( const QString &colorStr );
826
833 static std::unique_ptr<QMimeData> colorToMimeData( const QColor &color );
834
842 static QColor colorFromMimeData( const QMimeData *data, bool &hasAlpha SIP_OUT );
843
849 static QgsNamedColorList colorListFromMimeData( const QMimeData *data );
850
857 static std::unique_ptr<QMimeData> colorListToMimeData( const QgsNamedColorList &colorList, bool allFormats = true );
858
867 static bool saveColorsToGpl( QFile &file, const QString &paletteName, const QgsNamedColorList &colors );
868
877 static QgsNamedColorList importColorsFromGpl( QFile &file, bool &ok, QString &name );
878
886 static QColor parseColor( const QString &colorStr, bool strictEval = false );
887
896 static QColor parseColorWithAlpha( const QString &colorStr, bool &containsAlpha, bool strictEval = false );
897
901 static void multiplyImageOpacity( QImage *image, qreal opacity );
902
904 static void blurImageInPlace( QImage &image, QRect rect, int radius, bool alphaOnly );
905
909 static void premultiplyColor( QColor &rgb, int alpha );
910
923 static bool condenseFillAndOutline( QgsFillSymbolLayer *fill, QgsLineSymbolLayer *outline );
924
926 static void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
928 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, double distance );
929
931 static QStringList listSvgFiles();
932
934 static QStringList listSvgFilesAt( const QString &directory );
935
942 static QString svgSymbolNameToPath( const QString &name, const QgsPathResolver &pathResolver );
943
948 static QString svgSymbolPathToName( const QString &path, const QgsPathResolver &pathResolver );
949
957 static QList< QList< QPolygonF > > toQPolygonF( const QgsGeometry &geometry, Qgis::SymbolType type );
958
966 static QList< QList< QPolygonF > > toQPolygonF( const QgsAbstractGeometry *geometry, Qgis::SymbolType type );
967
969 static QPointF polygonCentroid( const QPolygonF &points );
970
972 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = nullptr );
973
975 static bool pointInPolygon( const QPolygonF &points, QPointF point );
976
982 static double polylineLength( const QPolygonF &polyline );
983
996 static QPolygonF polylineSubstring( const QPolygonF &polyline, double startOffset, double endOffset );
997
1005 static bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
1006
1014 static void appendPolyline( QPolygonF &target, const QPolygonF &line );
1015
1022 static std::unique_ptr< QgsExpression > fieldOrExpressionToExpression( const QString &fieldOrExpression );
1023
1030 static QString fieldOrExpressionFromExpression( QgsExpression *expression );
1031
1037 static QList<double> prettyBreaks( double minimum, double maximum, int classes );
1038
1043 static double rescaleUom( double size, Qgis::RenderUnit unit, const QVariantMap &props );
1044
1049 static QPointF rescaleUom( QPointF point, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescalePointUom );
1050
1055 static QVector<qreal> rescaleUom( const QVector<qreal> &array, Qgis::RenderUnit unit, const QVariantMap &props ) SIP_PYNAME( rescaleArrayUom );
1056
1060 static void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
1061
1065 static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QVariantMap &props );
1066
1073 Q_DECL_DEPRECATED static void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem, const QString &path, const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth )
1075
1082 static void parametricSvgToSld(
1083 QDomDocument &doc, QDomElement &graphicElem, const QString &path, const QColor &fillColor, double size, const QColor &strokeColor, double strokeWidth, QgsSldExportContext &context
1084 );
1085
1089 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, double strokeWidth );
1090
1096 Q_DECL_DEPRECATED static QSet<const QgsSymbolLayer *> toSymbolLayerPointers( const QgsFeatureRenderer *renderer, const QSet<QgsSymbolLayerId> &symbolLayerIds );
1097
1105 static double rendererFrameRate( const QgsFeatureRenderer *renderer );
1106
1121 static std::unique_ptr< QgsSymbol > restrictedSizeSymbol( const QgsSymbol *s, double minSize, double maxSize, QgsRenderContext *context, double &width, double &height, bool *ok = nullptr );
1122
1127 static QgsStringMap evaluatePropertiesMap( const QMap<QString, QgsProperty> &propertiesMap, const QgsExpressionContext &context );
1128
1138 static QSize tileSize( int width, int height, double &angleRad SIP_INOUT );
1139
1144 static void clearSymbolLayerIds( QgsSymbol *symbol );
1145
1150 static void clearSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1151
1156 static void resetSymbolLayerIds( QgsSymbol *symbol );
1157
1162 static void resetSymbolLayerIds( QgsSymbolLayer *symbolLayer );
1163
1168 static void clearSymbolLayerMasks( QgsSymbol *symbol );
1169
1180 static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
1181
1183#ifndef SIP_RUN
1184 static QgsProperty rotateWholeSymbol( double additionalRotation, const QgsProperty &property )
1185 {
1186 const QString exprString = property.asExpression();
1187 return QgsProperty::fromExpression( QString::number( additionalRotation ) + " + (" + exprString + ')' );
1188 }
1189
1190 static QgsProperty scaleWholeSymbol( double scaleFactor, const QgsProperty &property )
1191 {
1192 const QString exprString = property.asExpression();
1193 return QgsProperty::fromExpression( QString::number( scaleFactor ) + "*(" + exprString + ')' );
1194 }
1195
1196 static QgsProperty scaleWholeSymbol( double scaleFactorX, double scaleFactorY, const QgsProperty &property )
1197 {
1198 const QString exprString = property.asExpression();
1200 ( !qgsDoubleNear( scaleFactorX, 0.0 ) ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : u"'0'"_s )
1201 + "|| ',' || "
1202 + ( !qgsDoubleNear( scaleFactorY, 0.0 ) ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : u"'0'"_s )
1203 );
1204 }
1205
1214 typedef QList<QPair<double, double>> BlankSegments;
1215
1229 static QList<QList<BlankSegments>> parseBlankSegments( const QString &strBlankSegments, const QgsRenderContext &renderContext, Qgis::RenderUnit unit, QString &error );
1230
1239 typedef QList<std::pair<QPointF, double>> ExtraItems;
1240
1252 static ExtraItems parseExtraItems( const QString &strExtraItems, QString &error );
1253
1254#endif
1256};
1257
1258class QPolygonF;
1259
1261QList<QPolygonF> offsetLine( QPolygonF polyline, double dist, Qgis::GeometryType geometryType ) SIP_SKIP;
1262
1263#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
MarkerClipMode
Marker clipping modes.
Definition qgis.h:3465
LineClipMode
Line clipping modes.
Definition qgis.h:3479
ScaleMethod
Scale methods.
Definition qgis.h:665
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:2273
RenderUnit
Rendering size units.
Definition qgis.h:5682
EndCapStyle
End cap styles for buffers.
Definition qgis.h:2260
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1983
SymbolType
Symbol types.
Definition qgis.h:651
@ Hybrid
Hybrid symbol.
Definition qgis.h:655
SymbolCoordinateReference
Symbol coordinate reference modes.
Definition qgis.h:3423
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:7557
QMap< QString, QString > QgsStringMap
Definition qgis.h:8164
#define SIP_DEPRECATED
Definition qgis_sip.h:113
#define SIP_SKIP
Definition qgis_sip.h:138
#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