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