17#ifndef QGSSYMBOLLAYERUTILS_H 
   18#define QGSSYMBOLLAYERUTILS_H 
   61    static QString encodeColor( 
const QColor &color );
 
   62    static QColor decodeColor( 
const QString &
str );
 
   64    static QString encodeSldAlpha( 
int alpha );
 
   65    static int decodeSldAlpha( 
const QString &
str );
 
   67    static QString encodeSldFontStyle( QFont::Style style );
 
   68    static QFont::Style decodeSldFontStyle( 
const QString &
str );
 
   70    static QString encodeSldFontWeight( 
int weight );
 
   71    static int decodeSldFontWeight( 
const QString &
str );
 
   73    static QString encodePenStyle( Qt::PenStyle style );
 
   74    static Qt::PenStyle decodePenStyle( 
const QString &
str );
 
   76    static QString encodePenJoinStyle( Qt::PenJoinStyle style );
 
   77    static Qt::PenJoinStyle decodePenJoinStyle( 
const QString &
str );
 
   79    static QString encodePenCapStyle( Qt::PenCapStyle style );
 
   80    static Qt::PenCapStyle decodePenCapStyle( 
const QString &
str );
 
   82    static QString encodeSldLineJoinStyle( Qt::PenJoinStyle style );
 
   83    static Qt::PenJoinStyle decodeSldLineJoinStyle( 
const QString &
str );
 
   85    static QString encodeSldLineCapStyle( Qt::PenCapStyle style );
 
   86    static Qt::PenCapStyle decodeSldLineCapStyle( 
const QString &
str );
 
   88    static QString encodeBrushStyle( Qt::BrushStyle style );
 
   89    static Qt::BrushStyle decodeBrushStyle( 
const QString &
str );
 
   91    static QString encodeSldBrushStyle( Qt::BrushStyle style );
 
   92    static Qt::BrushStyle decodeSldBrushStyle( 
const QString &
str );
 
  172    static QString encodePoint( QPointF point );
 
  179    static QPointF decodePoint( 
const QString &
string );
 
  193    static QPointF toPoint( 
const QVariant &value, 
bool *ok 
SIP_OUT = 
nullptr );
 
  201    static QString encodeSize( QSizeF size );
 
  209    static QSizeF decodeSize( 
const QString &
string );
 
  223    static QSizeF toSize( 
const QVariant &value, 
bool *ok 
SIP_OUT = 
nullptr );
 
  225    static QString encodeMapUnitScale( 
const QgsMapUnitScale &mapUnitScale );
 
  228    static QString encodeRealVector( 
const QVector<qreal> &v );
 
  229    static QVector<qreal> decodeRealVector( 
const QString &s );
 
  231    static QString encodeSldRealVector( 
const QVector<qreal> &v );
 
  232    static QVector<qreal> decodeSldRealVector( 
const QString &s );
 
  259    static double sizeInPixelsFromSldUom( 
const QString &uom, 
double size );
 
  275    static QPainter::CompositionMode decodeBlendMode( 
const QString &s );
 
  300    static QPixmap symbolPreviewPixmap( 
const QgsSymbol *symbol, QSize size, 
int padding = 0, 
QgsRenderContext *customContext = 
nullptr, 
bool selected = 
false,
 
  339    static QIcon colorRampPreviewIcon( 
QgsColorRamp *ramp, QSize size, 
int padding = 0 );
 
  353    static QPixmap colorRampPreviewPixmap( 
QgsColorRamp *ramp, QSize size, 
int padding = 0, Qt::Orientation direction = Qt::Horizontal,
 
  354                                           bool flipDirection = 
false, 
bool drawTransparentBackground = 
true );
 
  356    static void drawStippledBackground( QPainter *painter, QRect rect );
 
  362    static void drawVertexMarker( 
double x, 
double y, QPainter &p, 
Qgis::VertexMarkerType type, 
int markerSize );
 
  386      SymbolType *symbolCastToType = 
dynamic_cast<SymbolType *
>( tmpSymbol );
 
  388      if ( symbolCastToType )
 
  390        return symbolCastToType;
 
  403    static QDomElement saveSymbol( 
const QString &symbolName, 
const QgsSymbol *symbol, QDomDocument &doc, 
const QgsReadWriteContext &context );
 
  410    static QString symbolProperties( 
QgsSymbol *symbol );
 
  415    static bool createSymbolLayerListFromSld( QDomElement &element, 
Qgis::GeometryType geomType, QList<QgsSymbolLayer *> &layers );
 
  424    static bool convertPolygonSymbolizerToPointMarker( QDomElement &element, QList<QgsSymbolLayer *> &layerList );
 
  430    static bool hasExternalGraphic( QDomElement &element );
 
  437    static bool hasExternalGraphicV2( QDomElement &element, 
const QString format = QString() );
 
  439    static bool hasWellKnownMark( QDomElement &element );
 
  441    static bool needFontMarker( QDomElement &element );
 
  442    static bool needSvgMarker( QDomElement &element );
 
  443    static bool needEllipseMarker( QDomElement &element );
 
  444    static bool needMarkerLine( QDomElement &element );
 
  445    static bool needLinePatternFill( QDomElement &element );
 
  446    static bool needPointPatternFill( QDomElement &element );
 
  447    static bool needSvgFill( QDomElement &element );
 
  454    static bool needRasterImageFill( QDomElement &element );
 
  456    static void fillToSld( QDomDocument &doc, QDomElement &element,
 
  457                           Qt::BrushStyle brushStyle, 
const QColor &color = QColor() );
 
  458    static bool fillFromSld( QDomElement &element,
 
  459                             Qt::BrushStyle &brushStyle, QColor &color );
 
  462    static void lineToSld( QDomDocument &doc, QDomElement &element,
 
  463                           Qt::PenStyle penStyle, 
const QColor &color, 
double width = -1,
 
  464                           const Qt::PenJoinStyle *penJoinStyle = 
nullptr, 
const Qt::PenCapStyle *penCapStyle = 
nullptr,
 
  465                           const QVector<qreal> *customDashPattern = 
nullptr, 
double dashOffset = 0.0 ) 
SIP_SKIP;
 
  466    static 
bool lineFromSld( QDomElement &element,
 
  467                             Qt::PenStyle &penStyle, QColor &color, 
double &width,
 
  468                             Qt::PenJoinStyle *penJoinStyle = 
nullptr, Qt::PenCapStyle *penCapStyle = 
nullptr,
 
  469                             QVector<qreal> *customDashPattern = 
nullptr, 
double *dashOffset = 
nullptr );
 
  471    static 
void externalGraphicToSld( QDomDocument &doc, QDomElement &element,
 
  472                                      const QString &path, const QString &mime,
 
  473                                      const QColor &color, 
double size = -1 );
 
  474    static 
bool externalGraphicFromSld( QDomElement &element,
 
  475                                        QString &path, QString &mime,
 
  476                                        QColor &color, 
double &size );
 
  478    static 
void wellKnownMarkerToSld( QDomDocument &doc, QDomElement &element,
 
  479                                      const QString &name, const QColor &color, const QColor &strokeColor, Qt::PenStyle strokeStyle,
 
  480                                      double strokeWidth = -1, 
double size = -1 );
 
  483    static 
bool wellKnownMarkerFromSld( QDomElement &element,
 
  484                                        QString &name, QColor &color, QColor &strokeColor, Qt::PenStyle &strokeStyle,
 
  485                                        double &strokeWidth, 
double &size ) 
SIP_PYNAME( wellKnownMarkerFromSld2 );
 
  487    static 
void externalMarkerToSld( QDomDocument &doc, QDomElement &element,
 
  488                                     const QString &path, const QString &format, 
int *markIndex = 
nullptr,
 
  489                                     const QColor &color = QColor(), 
double size = -1 );
 
  490    static 
bool externalMarkerFromSld( QDomElement &element,
 
  491                                       QString &path, QString &format, 
int &markIndex,
 
  492                                       QColor &color, 
double &size );
 
  495    static 
void labelTextToSld( QDomDocument &doc, QDomElement &element, const QString &label,
 
  496                                const QFont &font, const QColor &color = QColor(), 
double size = -1 );
 
  499    static QString ogrFeatureStylePen( 
double width, 
double mmScaleFactor, 
double mapUnitsScaleFactor, const QColor &
c,
 
  500                                       Qt::PenJoinStyle joinStyle = Qt::MiterJoin,
 
  501                                       Qt::PenCapStyle capStyle = Qt::FlatCap,
 
  503                                       const QVector<qreal> *dashPattern = 
nullptr );
 
  509    static QString ogrFeatureStyleBrush( const QColor &fillColr );
 
  511    static 
void createRotationElement( QDomDocument &doc, QDomElement &element, const QString &rotationFunc );
 
  512    static 
bool rotationFromSldElement( QDomElement &element, QString &rotationFunc );
 
  514    static 
void createOpacityElement( QDomDocument &doc, QDomElement &element, const QString &alphaFunc );
 
  515    static 
bool opacityFromSldElement( QDomElement &element, QString &alphaFunc );
 
  517    static 
void createDisplacementElement( QDomDocument &doc, QDomElement &element, QPointF offset );
 
  518    static 
bool displacementFromSldElement( QDomElement &element, QPointF &offset );
 
  526    static 
void createAnchorPointElement( QDomDocument &doc, QDomElement &element, QPointF anchor );
 
  528    static 
void createOnlineResourceElement( QDomDocument &doc, QDomElement &element, const QString &path, const QString &format );
 
  529    static 
bool onlineResourceFromSldElement( QDomElement &element, QString &path, QString &format );
 
  531    static 
void createGeometryElement( QDomDocument &doc, QDomElement &element, const QString &geomFunc );
 
  532    static 
bool geometryFromSldElement( QDomElement &element, QString &geomFunc );
 
  540    static 
bool createExpressionElement( QDomDocument &doc, QDomElement &element, const QString &function );
 
  541    static 
bool createFunctionElement( QDomDocument &doc, QDomElement &element, const QString &function );
 
  542    static 
bool functionFromSldElement( QDomElement &element, QString &function );
 
  544    static QDomElement createSvgParameterElement( QDomDocument &doc, const QString &name, const QString &value );
 
  545    static 
QgsStringMap getSvgParameterList( QDomElement &element );
 
  547    static QDomElement createVendorOptionElement( QDomDocument &doc, const QString &name, const QString &value );
 
  548    static 
QgsStringMap getVendorOptionList( QDomElement &element );
 
  551    static QVariantMap parseProperties( const QDomElement &element );
 
  553    static 
void saveProperties( QVariantMap props, QDomDocument &doc, QDomElement &element );
 
  595    static QDomElement saveColorRamp( const QString &name, 
QgsColorRamp *ramp, QDomDocument &doc );
 
  603    static QVariant colorRampToVariant( const QString &name, 
QgsColorRamp *ramp );
 
  619    static QString colorToName( const QColor &color );
 
  628    static QList< QColor > parseColorList( const QString &colorStr );
 
  637    static QMimeData *colorToMimeData( const QColor &color ) 
SIP_FACTORY;
 
  647    static QColor colorFromMimeData( const QMimeData *data, 
bool &hasAlpha 
SIP_OUT );
 
  674    static 
bool saveColorsToGpl( QFile &file, const QString &paletteName, const 
QgsNamedColorList &colors );
 
  684    static 
QgsNamedColorList importColorsFromGpl( QFile &file, 
bool &ok, QString &name );
 
  694    static QColor parseColor( const QString &colorStr, 
bool strictEval = false );
 
  705    static QColor parseColorWithAlpha( const QString &colorStr, 
bool &containsAlpha, 
bool strictEval = false );
 
  710    static 
void multiplyImageOpacity( QImage *image, qreal opacity );
 
  713    static 
void blurImageInPlace( QImage &image, QRect rect, 
int radius, 
bool alphaOnly );
 
  719    static 
void premultiplyColor( QColor &rgb, 
int alpha );
 
  736    static 
void sortVariantList( QList<QVariant> &list, Qt::SortOrder order );
 
  738    static QPointF pointOnLineWithDistance( QPointF startPoint, QPointF directionPoint, 
double distance );
 
  741    static QStringList listSvgFiles();
 
  744    static QStringList listSvgFilesAt( const QString &directory );
 
  752    static QString svgSymbolNameToPath( const QString &name, const 
QgsPathResolver &pathResolver );
 
  758    static QString svgSymbolPathToName( const QString &path, const 
QgsPathResolver &pathResolver );
 
  761    static QPointF polygonCentroid( const QPolygonF &points );
 
  764    static QPointF polygonPointOnSurface( const QPolygonF &points, const QVector<QPolygonF> *rings = 
nullptr );
 
  767    static 
bool pointInPolygon( const QPolygonF &points, QPointF point );
 
  774    static 
double polylineLength( const QPolygonF &polyline );
 
  788    static QPolygonF polylineSubstring( const QPolygonF &polyline, 
double startOffset, 
double endOffset );
 
  797    static 
bool isSharpCorner( QPointF p1, QPointF p2, QPointF p3 );
 
  806    static 
void appendPolyline( QPolygonF &target, const QPolygonF &line );
 
  824    static QString fieldOrExpressionFromExpression( 
QgsExpression *expression );
 
  832    static QList<
double> prettyBreaks( 
double minimum, 
double maximum, 
int classes );
 
  839    static 
double rescaleUom( 
double size, 
Qgis::RenderUnit unit, const QVariantMap &props );
 
  846    static QPointF rescaleUom( QPointF point, 
Qgis::RenderUnit unit, const QVariantMap &props ) 
SIP_PYNAME( rescalePointUom );
 
  853    static QVector<qreal> rescaleUom( const QVector<qreal> &array, 
Qgis::RenderUnit unit, const QVariantMap &props ) 
SIP_PYNAME( rescaleArrayUom );
 
  859    static 
void applyScaleDependency( QDomDocument &doc, QDomElement &ruleElem, QVariantMap &props );
 
  865    static 
void mergeScaleDependencies( 
double mScaleMinDenom, 
double mScaleMaxDenom, QVariantMap &props );
 
  873    static 
void parametricSvgToSld( QDomDocument &doc, QDomElement &graphicElem,
 
  875                                    const QColor &fillColor, 
double size, const QColor &strokeColor, 
double strokeWidth );
 
  881    static QString getSvgParametricPath( const QString &basePath, const QColor &fillColor, const QColor &strokeColor, 
double strokeWidth );
 
  913    static 
QgsSymbol *restrictedSizeSymbol( const 
QgsSymbol *s, 
double minSize, 
double maxSize, 
QgsRenderContext *context, 
double &width, 
double &height, 
bool *ok = 
nullptr );
 
  930    static QSize tileSize( 
int width, 
int height, 
double &angleRad 
SIP_INOUT );
 
  936    static 
void clearSymbolLayerIds( 
QgsSymbol *symbol );
 
  948    static 
void resetSymbolLayerIds( 
QgsSymbol *symbol );
 
  970    static QgsProperty scaleWholeSymbol( 
double scaleFactorX, 
double scaleFactorY, 
const QgsProperty &property )
 
  974               ( !
qgsDoubleNear( scaleFactorX, 0.0 ) ? 
"tostring(" + QString::number( scaleFactorX ) + 
"*(" + exprString + 
"))" : QStringLiteral( 
"'0'" ) ) +
 
  976               ( !
qgsDoubleNear( scaleFactorY, 0.0 ) ? 
"tostring(" + QString::number( scaleFactorY ) + 
"*(" + exprString + 
"))" : QStringLiteral( 
"'0'" ) ) );
 
The Qgis class provides global constants for use throughout the application.
 
MarkerClipMode
Marker clipping modes.
 
LineClipMode
Line clipping modes.
 
ScaleMethod
Scale methods.
 
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
 
RenderUnit
Rendering size units.
 
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
 
SymbolType
Attribute editing capabilities which may be supported by vector data providers.
 
SymbolCoordinateReference
Symbol coordinate reference modes.
 
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.
 
Base class for all map layer types.
 
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.
 
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.
 
Stores properties relating to a screen.
 
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.
 
Abstract base class for all rendered symbols.
 
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)
 
QMap< QString, QString > QgsStringMap
 
QMap< QString, QgsSymbol * > QgsSymbolMap
 
QList< QPolygonF > offsetLine(QPolygonF polyline, double dist, Qgis::GeometryType geometryType)
calculate geometry shifted by a specified distance
 
QMap< QString, QgsSymbol * > QgsSymbolMap
 
QMap< QString, QString > QgsStringMap