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