17 #ifndef QGSSYMBOLLAYERUTILS_H
18 #define QGSSYMBOLLAYERUTILS_H
20 #include "qgis_core.h"
67 static QString encodeColor(
const QColor &color );
68 static QColor decodeColor(
const QString &str );
70 static QString encodeSldAlpha(
int alpha );
71 static int decodeSldAlpha(
const QString &str );
73 static QString encodeSldFontStyle( QFont::Style style );
74 static QFont::Style decodeSldFontStyle(
const QString &str );
76 static QString encodeSldFontWeight(
int weight );
77 static int decodeSldFontWeight(
const QString &str );
79 static QString encodePenStyle( Qt::PenStyle style );
80 static Qt::PenStyle decodePenStyle(
const QString &str );
82 static QString encodePenJoinStyle( Qt::PenJoinStyle style );
83 static Qt::PenJoinStyle decodePenJoinStyle(
const QString &str );
85 static QString encodePenCapStyle( Qt::PenCapStyle style );
86 static Qt::PenCapStyle decodePenCapStyle(
const QString &str );
88 static QString encodeSldLineJoinStyle( Qt::PenJoinStyle style );
89 static Qt::PenJoinStyle decodeSldLineJoinStyle(
const QString &str );
91 static QString encodeSldLineCapStyle( Qt::PenCapStyle style );
92 static Qt::PenCapStyle decodeSldLineCapStyle(
const QString &str );
94 static QString encodeBrushStyle( Qt::BrushStyle style );
95 static Qt::BrushStyle decodeBrushStyle(
const QString &str );
97 static QString encodeSldBrushStyle( Qt::BrushStyle style );
98 static Qt::BrushStyle decodeSldBrushStyle(
const QString &str );
117 static QString encodePoint( QPointF point );
124 static QPointF decodePoint(
const QString &
string );
138 static QPointF toPoint(
const QVariant &value,
bool *ok
SIP_OUT =
nullptr );
146 static QString encodeSize( QSizeF size );
154 static QSizeF decodeSize(
const QString &
string );
168 static QSizeF toSize(
const QVariant &value,
bool *ok
SIP_OUT =
nullptr );
170 static QString encodeMapUnitScale(
const QgsMapUnitScale &mapUnitScale );
173 static QString encodeRealVector(
const QVector<qreal> &v );
174 static QVector<qreal> decodeRealVector(
const QString &s );
176 static QString encodeSldRealVector(
const QVector<qreal> &v );
177 static QVector<qreal> decodeSldRealVector(
const QString &s );
204 static double sizeInPixelsFromSldUom(
const QString &uom,
double size );
209 static QPainter::CompositionMode decodeBlendMode(
const QString &s );
236 static QPixmap symbolPreviewPixmap(
const QgsSymbol *symbol, QSize size,
int padding = 0,
QgsRenderContext *customContext =
nullptr,
bool selected =
false,
270 static QIcon colorRampPreviewIcon(
QgsColorRamp *ramp, QSize size,
int padding = 0 );
284 static QPixmap colorRampPreviewPixmap(
QgsColorRamp *ramp, QSize size,
int padding = 0, Qt::Orientation direction = Qt::Horizontal,
285 bool flipDirection =
false,
bool drawTransparentBackground =
true );
287 static void drawStippledBackground( QPainter *painter, QRect rect );
317 SymbolType *symbolCastToType =
dynamic_cast<SymbolType *
>( tmpSymbol );
319 if ( symbolCastToType )
321 return symbolCastToType;
334 static QDomElement saveSymbol(
const QString &symbolName,
const QgsSymbol *symbol, QDomDocument &doc,
const QgsReadWriteContext &context );
341 static QString symbolProperties(
QgsSymbol *symbol );
349 static bool convertPolygonSymbolizerToPointMarker( QDomElement &element,
QgsSymbolLayerList &layerList );
350 static bool hasExternalGraphic( QDomElement &element );
351 static bool hasWellKnownMark( QDomElement &element );
353 static bool needFontMarker( QDomElement &element );
354 static bool needSvgMarker( QDomElement &element );
355 static bool needEllipseMarker( QDomElement &element );
356 static bool needMarkerLine( QDomElement &element );
357 static bool needLinePatternFill( QDomElement &element );
358 static bool needPointPatternFill( QDomElement &element );
359 static bool needSvgFill( QDomElement &element );
361 static void fillToSld( QDomDocument &doc, QDomElement &element,
362 Qt::BrushStyle brushStyle,
const QColor &color = QColor() );
363 static bool fillFromSld( QDomElement &element,
364 Qt::BrushStyle &brushStyle, QColor &color );
367 static void lineToSld( QDomDocument &doc, QDomElement &element,
368 Qt::PenStyle penStyle,
const QColor &color,
double width = -1,
369 const Qt::PenJoinStyle *penJoinStyle =
nullptr,
const Qt::PenCapStyle *penCapStyle =
nullptr,
370 const QVector<qreal> *customDashPattern =
nullptr,
double dashOffset = 0.0 )
SIP_SKIP;
371 static
bool lineFromSld( QDomElement &element,
372 Qt::PenStyle &penStyle, QColor &color,
double &width,
373 Qt::PenJoinStyle *penJoinStyle =
nullptr, Qt::PenCapStyle *penCapStyle =
nullptr,
374 QVector<qreal> *customDashPattern =
nullptr,
double *dashOffset =
nullptr );
376 static
void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
377 const QString &path, const QString &mime,
378 const QColor &color,
double size = -1 );
379 static
bool externalGraphicFromSld( QDomElement &element,
380 QString &path, QString &mime,
381 QColor &color,
double &size );
383 static
void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
384 const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
385 double strokeWidth = -1,
double size = -1 );
388 static
bool wellKnownMarkerFromSld( QDomElement &element,
389 QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
390 double &strokeWidth,
double &size )
SIP_PYNAME( wellKnownMarkerFromSld2 );
392 static
void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
393 const QString &path, const QString &format,
int *markIndex =
nullptr,
394 const QColor &color = QColor(),
double size = -1 );
395 static
bool externalMarkerFromSld( QDomElement &element,
396 QString &path, QString &format,
int &markIndex,
397 QColor &color,
double &size );
400 static
void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
401 const QFont &font, const QColor &color = QColor(),
double size = -1 );
404 static QString ogrFeatureStylePen(
double width,
double mmScaleFactor,
double mapUnitsScaleFactor, const QColor &
c,
405 Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
406 Qt::PenCapStyle capStyle = Qt::FlatCap,
408 const QVector<qreal> *dashPattern =
nullptr );
414 static QString ogrFeatureStyleBrush( const QColor &fillColr );
416 static
void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc );
417 static
bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
419 static
void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc );
420 static
bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
422 static
void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
423 static
bool displacementFromSldElement( QDomElement &element, QPointF &offset );
431 static
void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
433 static
void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
434 static
bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
436 static
void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc );
437 static
bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
445 static
bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function );
446 static
bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function );
447 static
bool functionFromSldElement( QDomElement &element, QString &function );
449 static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
450 static
QgsStringMap getSvgParameterList( QDomElement &element );
452 static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
453 static
QgsStringMap getVendorOptionList( QDomElement &element );
456 static QVariantMap parseProperties( const QDomElement &element );
458 static
void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
500 static QDomElement saveColorRamp( const QString &name,
QgsColorRamp *ramp, QDomDocument &doc );
508 static QVariant colorRampToVariant( const QString &name,
QgsColorRamp *ramp );
524 static QString colorToName( const QColor &color );
533 static QList< QColor > parseColorList( const QString &colorStr );
542 static QMimeData *colorToMimeData( const QColor &color )
SIP_FACTORY;
552 static QColor colorFromMimeData( const QMimeData *data,
bool &hasAlpha
SIP_OUT );
579 static
bool saveColorsToGpl( QFile &file, const QString &paletteName, const
QgsNamedColorList &colors );
589 static
QgsNamedColorList importColorsFromGpl( QFile &file,
bool &ok, QString &name );
599 static QColor parseColor( const QString &colorStr,
bool strictEval = false );
610 static QColor parseColorWithAlpha( const QString &colorStr,
bool &containsAlpha,
bool strictEval = false );
615 static
void multiplyImageOpacity( QImage *image, qreal opacity );
618 static
void blurImageInPlace( QImage &image, QRect rect,
int radius,
bool alphaOnly );
624 static
void premultiplyColor( QColor &rgb,
int alpha );
627 static
void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
629 static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint,
double distance );
632 static QStringList listSvgFiles();
635 static QStringList listSvgFilesAt( const QString &directory );
643 static QString svgSymbolNameToPath( const QString &name, const
QgsPathResolver &pathResolver );
649 static QString svgSymbolPathToName( const QString &path, const
QgsPathResolver &pathResolver );
652 static QPointF polygonCentroid( const QPolygonF &points );
655 static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings =
nullptr );
658 static
bool pointInPolygon( const QPolygonF &points, QPointF point );
672 static QPolygonF polylineSubstring( const QPolygonF &polyline,
double startOffset,
double endOffset );
681 static
bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
690 static
void appendPolyline( QPolygonF &target, const QPolygonF &line );
708 static QString fieldOrExpressionFromExpression(
QgsExpression *expression );
716 static QList<
double> prettyBreaks(
double minimum,
double maximum,
int classes );
723 static
double rescaleUom(
double size,
QgsUnitTypes::RenderUnit unit, const QVariantMap &props );
730 static QPointF rescaleUom( QPointF point,
QgsUnitTypes::RenderUnit unit, const QVariantMap &props )
SIP_PYNAME( rescalePointUom );
737 static QVector<qreal> rescaleUom( const QVector<qreal> &array,
QgsUnitTypes::RenderUnit unit, const QVariantMap &props )
SIP_PYNAME( rescaleArrayUom );
743 static
void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
749 static
void mergeScaleDependencies(
double mScaleMinDenom,
double mScaleMaxDenom, QVariantMap &props );
757 static
void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
759 const QColor &fillColor,
double size, const QColor &strokeColor,
double strokeWidth );
765 static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor,
double strokeWidth );
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...
Class for parsing and evaluation of expressions (formerly called "search strings").
Represents a patch shape for use in map legends.
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.
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
We may need stable references to symbol layers, when pointers to symbol layers is not usable (when a ...
static 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 QgsSymbol * loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element.
VertexMarkerType
Editing vertex markers.
Abstract base class for all rendered symbols.
Helper functions for various unit types.
RenderUnit
Rendering size units.
Handles storage of information regarding WKB types and their properties.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
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
QMap< QString, QString > QgsStringMap
QMap< QString, QgsSymbol * > QgsSymbolMap
QList< QgsSymbolLayer * > QgsSymbolLayerList
QList< QPolygonF > offsetLine(QPolygonF polyline, double dist, QgsWkbTypes::GeometryType geometryType)
calculate geometry shifted by a specified distance
QMap< QString, QgsSymbol * > QgsSymbolMap
QMap< QString, QString > QgsStringMap