00001 00002 00003 #ifndef QGSSYMBOLLAYERV2UTILS_H 00004 #define QGSSYMBOLLAYERV2UTILS_H 00005 00006 #include <QMap> 00007 #include <Qt> 00008 #include "qgssymbolv2.h" 00009 00010 class QgsSymbolV2; 00011 class QgsSymbolLayerV2; 00012 class QgsVectorColorRampV2; 00013 00014 typedef QMap<QString, QString> QgsStringMap; 00015 typedef QMap<QString, QgsSymbolV2* > QgsSymbolV2Map; 00016 00017 class QColor; 00018 class QDomDocument; 00019 class QDomElement; 00020 class QIcon; 00021 class QPixmap; 00022 class QPointF; 00023 class QSize; 00024 00025 class CORE_EXPORT QgsSymbolLayerV2Utils 00026 { 00027 public: 00028 00029 static QString encodeColor( QColor color ); 00030 static QColor decodeColor( QString str ); 00031 00032 static QString encodePenStyle( Qt::PenStyle style ); 00033 static Qt::PenStyle decodePenStyle( QString str ); 00034 00035 static QString encodePenJoinStyle( Qt::PenJoinStyle style ); 00036 static Qt::PenJoinStyle decodePenJoinStyle( QString str ); 00037 00038 static QString encodePenCapStyle( Qt::PenCapStyle style ); 00039 static Qt::PenCapStyle decodePenCapStyle( QString str ); 00040 00041 static QString encodeBrushStyle( Qt::BrushStyle style ); 00042 static Qt::BrushStyle decodeBrushStyle( QString str ); 00043 00044 static QString encodePoint( QPointF point ); 00045 static QPointF decodePoint( QString str ); 00046 00047 static QString encodeRealVector( const QVector<qreal>& v ); 00048 static QVector<qreal> decodeRealVector( const QString& s ); 00049 00050 static QString encodeOutputUnit( QgsSymbolV2::OutputUnit unit ); 00051 static QgsSymbolV2::OutputUnit decodeOutputUnit( QString str ); 00052 00053 static QIcon symbolPreviewIcon( QgsSymbolV2* symbol, QSize size ); 00054 static QIcon symbolLayerPreviewIcon( QgsSymbolLayerV2* layer, QgsSymbolV2::OutputUnit u, QSize size ); 00055 static QIcon colorRampPreviewIcon( QgsVectorColorRampV2* ramp, QSize size ); 00056 00057 static QPixmap symbolPreviewPixmap( QgsSymbolV2* symbol, QSize size ); 00058 static QPixmap colorRampPreviewPixmap( QgsVectorColorRampV2* ramp, QSize size ); 00059 00060 static QgsSymbolV2* loadSymbol( QDomElement& element ); 00061 static QgsSymbolLayerV2* loadSymbolLayer( QDomElement& element ); 00062 static QDomElement saveSymbol( QString name, QgsSymbolV2* symbol, QDomDocument& doc, QgsSymbolV2Map* subSymbols = NULL ); 00063 00064 static QgsStringMap parseProperties( QDomElement& element ); 00065 static void saveProperties( QgsStringMap props, QDomDocument& doc, QDomElement& element ); 00066 00067 static QgsSymbolV2Map loadSymbols( QDomElement& element ); 00068 static QDomElement saveSymbols( QgsSymbolV2Map& symbols, QString tagName, QDomDocument& doc ); 00069 00070 static void clearSymbolMap( QgsSymbolV2Map& symbols ); 00071 00072 static QgsVectorColorRampV2* loadColorRamp( QDomElement& element ); 00073 static QDomElement saveColorRamp( QString name, QgsVectorColorRampV2* ramp, QDomDocument& doc ); 00074 00076 static double lineWidthScaleFactor( QgsRenderContext& c, QgsSymbolV2::OutputUnit u ); 00078 static double pixelSizeScaleFactor( QgsRenderContext& c, QgsSymbolV2::OutputUnit u ); 00080 static QgsRenderContext createRenderContext( QPainter* p ); 00081 00083 static void multiplyImageOpacity( QImage* image, qreal alpha ); 00084 }; 00085 00086 class QPolygonF; 00087 00089 QPolygonF offsetLine( QPolygonF polyline, double dist ); 00090 00091 00092 #endif