2009-11-16 10:36:24 +00:00
|
|
|
|
|
|
|
typedef QList<QgsSymbolV2*> QgsSymbolV2List;
|
|
|
|
|
|
|
|
typedef QList< QPair<QString, QPixmap> > QgsLegendSymbologyList;
|
|
|
|
|
2010-01-15 17:54:18 +00:00
|
|
|
|
|
|
|
// this is a workaround for an error in generated code by SIP
|
|
|
|
// to ensure it will recognize the class name
|
|
|
|
%ModuleHeaderCode
|
|
|
|
class QgsRendererV2Widget;
|
|
|
|
class QgsSymbolLayerV2Widget;
|
|
|
|
%End
|
|
|
|
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
///////////////
|
|
|
|
|
|
|
|
/*
|
|
|
|
class QgsSymbolV2LevelItem
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
QgsSymbolV2LevelItem( QgsSymbolV2* symbol, int layer );
|
|
|
|
QgsSymbolV2* symbol();
|
|
|
|
int layer();
|
|
|
|
};
|
|
|
|
|
|
|
|
// every level has list of items: symbol + symbol layer num
|
|
|
|
typedef QList< QgsSymbolV2LevelItem > QgsSymbolV2Level;
|
|
|
|
|
|
|
|
// this is a list of levels
|
|
|
|
typedef QList< QgsSymbolV2Level > QgsSymbolV2LevelOrder;
|
|
|
|
*/
|
|
|
|
|
|
|
|
///////////////
|
|
|
|
|
|
|
|
|
|
|
|
class QgsFeatureRendererV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
2009-12-07 18:18:30 +00:00
|
|
|
|
|
|
|
%ConvertToSubClassCode
|
|
|
|
if (sipCpp->type() == "singleSymbol")
|
|
|
|
sipClass = sipClass_QgsSingleSymbolRendererV2;
|
|
|
|
else if (sipCpp->type() == "categorizedSymbol")
|
|
|
|
sipClass = sipClass_QgsCategorizedSymbolRendererV2;
|
|
|
|
else if (sipCpp->type() == "graduatedSymbol")
|
|
|
|
sipClass = sipClass_QgsGraduatedSymbolRendererV2;
|
|
|
|
else
|
|
|
|
sipClass = 0;
|
|
|
|
%End
|
|
|
|
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
public:
|
|
|
|
|
|
|
|
//! return a new renderer - used by default in vector layers
|
|
|
|
static QgsFeatureRendererV2* defaultRenderer(QGis::GeometryType geomType) /Factory/;
|
|
|
|
|
|
|
|
QString type() const;
|
|
|
|
|
2009-12-07 00:36:57 +00:00
|
|
|
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature)=0;
|
|
|
|
|
|
|
|
virtual void startRender(QgsRenderContext& context, const QgsVectorLayer * )=0;
|
|
|
|
|
|
|
|
virtual void stopRender(QgsRenderContext& context)=0;
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QList<QString> usedAttributes()=0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
virtual ~QgsFeatureRendererV2();
|
|
|
|
|
|
|
|
virtual QString dump();
|
2009-11-16 10:36:24 +00:00
|
|
|
|
|
|
|
virtual QgsFeatureRendererV2* clone()=0 /Factory/;
|
|
|
|
|
|
|
|
virtual QgsSymbolV2List symbols()=0;
|
|
|
|
|
2009-12-20 15:39:05 +00:00
|
|
|
void renderFeature(QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool drawVertexMarker = false );
|
2009-11-16 10:36:24 +00:00
|
|
|
|
|
|
|
bool usingSymbolLevels() const;
|
|
|
|
void setUsingSymbolLevels(bool usingSymbolLevels);
|
|
|
|
|
|
|
|
//! create a renderer from XML element
|
|
|
|
static QgsFeatureRendererV2* load(QDomElement& symbologyElem);
|
|
|
|
|
|
|
|
//! store renderer info to XML element
|
|
|
|
virtual QDomElement save(QDomDocument& doc);
|
|
|
|
|
|
|
|
//! return a list of symbology items for the legend
|
|
|
|
virtual QgsLegendSymbologyList legendSymbologyItems(QSize iconSize);
|
|
|
|
|
2009-12-20 15:39:05 +00:00
|
|
|
//! set type and size of editing vertex markers for subsequent rendering
|
|
|
|
void setVertexMarkerAppearance( int type, int size );
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
protected:
|
|
|
|
QgsFeatureRendererV2(QString type);
|
|
|
|
|
2009-12-20 15:39:05 +00:00
|
|
|
//! render editing vertex marker at specified point
|
|
|
|
void renderVertexMarker( QPointF& pt, QgsRenderContext& context );
|
|
|
|
//! render editing vertex marker for a polyline
|
|
|
|
void renderVertexMarkerPolyline( QPolygonF& pts, QgsRenderContext& context );
|
|
|
|
//! render editing vertex marker for a polygon
|
|
|
|
void renderVertexMarkerPolygon( QPolygonF& pts, QList<QPolygonF>* rings, QgsRenderContext& context );
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
///////////////
|
|
|
|
|
|
|
|
class QgsSingleSymbolRendererV2 : QgsFeatureRendererV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssinglesymbolrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
QgsSingleSymbolRendererV2(QgsSymbolV2* symbol /Transfer/);
|
|
|
|
|
|
|
|
virtual ~QgsSingleSymbolRendererV2();
|
|
|
|
|
|
|
|
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
|
|
|
|
|
|
|
|
virtual void startRender(QgsRenderContext& context, const QgsVectorLayer * );
|
|
|
|
|
|
|
|
virtual void stopRender(QgsRenderContext& context);
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QList<QString> usedAttributes();
|
|
|
|
|
|
|
|
QgsSymbolV2* symbol() const;
|
|
|
|
void setSymbol(QgsSymbolV2* s /Transfer/);
|
|
|
|
|
|
|
|
virtual QString dump();
|
|
|
|
|
|
|
|
virtual QgsFeatureRendererV2* clone() /Factory/;
|
|
|
|
|
|
|
|
//! create a renderer from XML element
|
|
|
|
static QgsFeatureRendererV2* load(QDomElement& symbologyElem) /Factory/;
|
|
|
|
|
|
|
|
//! store renderer info to XML element
|
|
|
|
virtual QDomElement save(QDomDocument& doc);
|
|
|
|
|
|
|
|
//! return a list of symbology items for the legend
|
|
|
|
virtual QgsLegendSymbologyList legendSymbologyItems(QSize iconSize);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsRendererCategoryV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgscategorizedsymbolrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! takes ownership of symbol
|
|
|
|
QgsRendererCategoryV2(QVariant value, QgsSymbolV2* symbol /Transfer/, QString label);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QgsRendererCategoryV2(const QgsRendererCategoryV2& cat);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
~QgsRendererCategoryV2();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QVariant value() const;
|
|
|
|
QgsSymbolV2* symbol();
|
|
|
|
QString label() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void setSymbol(QgsSymbolV2* s /Transfer/);
|
|
|
|
void setLabel(QString label);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QString dump();
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef QList<QgsRendererCategoryV2> QgsCategoryList;
|
|
|
|
|
|
|
|
class QgsCategorizedSymbolRendererV2 : QgsFeatureRendererV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgscategorizedsymbolrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QgsCategorizedSymbolRendererV2(QString attrName = QString(), QgsCategoryList categories = QgsCategoryList());
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
virtual ~QgsCategorizedSymbolRendererV2();
|
|
|
|
|
|
|
|
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
|
|
|
|
|
|
|
|
virtual void startRender(QgsRenderContext& context, const QgsVectorLayer * );
|
|
|
|
|
|
|
|
virtual void stopRender(QgsRenderContext& context);
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QList<QString> usedAttributes();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QString dump();
|
|
|
|
|
|
|
|
virtual QgsFeatureRendererV2* clone() /Factory/;
|
|
|
|
|
|
|
|
const QgsCategoryList& categories();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return index of category with specified value (-1 if not found)
|
|
|
|
int categoryIndexForValue(QVariant val);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
bool updateCategorySymbol(int catIndex, QgsSymbolV2* symbol /Transfer/);
|
|
|
|
bool updateCategoryLabel(int catIndex, QString label);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
bool deleteCategory(int catIndex);
|
|
|
|
void deleteAllCategories();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! create a renderer from XML element
|
|
|
|
static QgsFeatureRendererV2* load(QDomElement& symbologyElem) /Factory/;
|
|
|
|
|
|
|
|
//! store renderer info to XML element
|
|
|
|
virtual QDomElement save(QDomDocument& doc);
|
|
|
|
|
|
|
|
//! return a list of symbology items for the legend
|
|
|
|
virtual QgsLegendSymbologyList legendSymbologyItems(QSize iconSize);
|
|
|
|
|
|
|
|
QString classAttribute() const;
|
|
|
|
void setClassAttribute(QString attr);
|
|
|
|
|
|
|
|
QgsSymbolV2* sourceSymbol();
|
|
|
|
void setSourceSymbol(QgsSymbolV2* sym /Transfer/);
|
|
|
|
|
|
|
|
QgsVectorColorRampV2* sourceColorRamp();
|
|
|
|
void setSourceColorRamp(QgsVectorColorRampV2* ramp /Transfer/);
|
|
|
|
|
|
|
|
protected:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QgsSymbolV2* symbolForValue(QVariant value);
|
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsRendererRangeV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsgraduatedsymbolrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
QgsRendererRangeV2(double lowerValue, double upperValue, QgsSymbolV2* symbol /Transfer/, QString label);
|
|
|
|
QgsRendererRangeV2(const QgsRendererRangeV2& range);
|
|
|
|
|
|
|
|
~QgsRendererRangeV2();
|
|
|
|
|
|
|
|
double lowerValue() const;
|
|
|
|
double upperValue() const;
|
|
|
|
|
|
|
|
QgsSymbolV2* symbol() const;
|
|
|
|
QString label() const;
|
|
|
|
|
|
|
|
void setSymbol(QgsSymbolV2* s /Transfer/);
|
|
|
|
void setLabel(QString label);
|
|
|
|
|
|
|
|
QString dump();
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef QList<QgsRendererRangeV2> QgsRangeList;
|
|
|
|
|
|
|
|
class QgsGraduatedSymbolRendererV2 : QgsFeatureRendererV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsgraduatedsymbolrendererv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
QgsGraduatedSymbolRendererV2(QString attrNum = QString(), QgsRangeList ranges = QgsRangeList());
|
|
|
|
|
|
|
|
virtual ~QgsGraduatedSymbolRendererV2();
|
|
|
|
|
|
|
|
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
|
|
|
|
|
2009-12-07 00:36:57 +00:00
|
|
|
virtual void startRender(QgsRenderContext& context, const QgsVectorLayer * );
|
2009-11-16 10:36:24 +00:00
|
|
|
|
|
|
|
virtual void stopRender(QgsRenderContext& context);
|
|
|
|
|
|
|
|
virtual QList<QString> usedAttributes();
|
|
|
|
|
|
|
|
virtual QString dump();
|
|
|
|
|
|
|
|
virtual QgsFeatureRendererV2* clone() /Factory/;
|
|
|
|
|
|
|
|
QString classAttribute() const;
|
|
|
|
void setClassAttribute(QString attr);
|
|
|
|
|
|
|
|
const QgsRangeList& ranges();
|
|
|
|
|
|
|
|
bool updateRangeSymbol(int rangeIndex, QgsSymbolV2* symbol /Transfer/);
|
|
|
|
bool updateRangeLabel(int rangeIndex, QString label);
|
|
|
|
|
|
|
|
enum Mode
|
|
|
|
{
|
|
|
|
EqualInterval,
|
|
|
|
Quantile,
|
|
|
|
Custom
|
|
|
|
};
|
|
|
|
|
|
|
|
Mode mode() const;
|
|
|
|
void setMode(Mode mode);
|
|
|
|
|
|
|
|
static QgsGraduatedSymbolRendererV2* createRenderer(
|
|
|
|
QgsVectorLayer* vlayer,
|
|
|
|
QString attrName,
|
|
|
|
int classes,
|
|
|
|
Mode mode,
|
|
|
|
QgsSymbolV2* symbol,
|
|
|
|
QgsVectorColorRampV2* ramp);
|
|
|
|
|
|
|
|
//! create a renderer from XML element
|
|
|
|
static QgsFeatureRendererV2* load(QDomElement& symbologyElem) /Factory/;
|
|
|
|
|
|
|
|
//! store renderer info to XML element
|
|
|
|
virtual QDomElement save(QDomDocument& doc);
|
|
|
|
|
|
|
|
//! return a list of symbology items for the legend
|
|
|
|
virtual QgsLegendSymbologyList legendSymbologyItems(QSize iconSize);
|
|
|
|
|
|
|
|
QgsSymbolV2* sourceSymbol();
|
|
|
|
void setSourceSymbol(QgsSymbolV2* sym /Transfer/);
|
|
|
|
|
|
|
|
QgsVectorColorRampV2* sourceColorRamp();
|
|
|
|
void setSourceColorRamp(QgsVectorColorRampV2* ramp /Transfer/);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
QgsSymbolV2* symbolForValue(double value);
|
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsSymbolLayerV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbollayerv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
%ConvertToSubClassCode
|
|
|
|
switch (sipCpp->type())
|
|
|
|
{
|
|
|
|
case QgsSymbolV2::Marker: sipClass = sipClass_QgsMarkerSymbolLayerV2; break;
|
2009-12-13 14:28:22 +00:00
|
|
|
case QgsSymbolV2::Line: sipClass = sipClass_QgsLineSymbolLayerV2; break;
|
|
|
|
case QgsSymbolV2::Fill: sipClass = sipClass_QgsFillSymbolLayerV2; break;
|
2009-11-16 10:36:24 +00:00
|
|
|
default: sipClass = 0; break;
|
|
|
|
}
|
|
|
|
%End
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
virtual void setColor(const QColor& color);
|
|
|
|
virtual QColor color() const;
|
|
|
|
|
|
|
|
virtual ~QgsSymbolLayerV2();
|
|
|
|
|
|
|
|
virtual QString layerType() const = 0;
|
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
virtual void startRender(QgsSymbolV2RenderContext& context) = 0;
|
|
|
|
virtual void stopRender(QgsSymbolV2RenderContext& context) = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
virtual QgsSymbolLayerV2* clone() const = 0 /Factory/;
|
|
|
|
|
|
|
|
virtual QgsStringMap properties() const = 0;
|
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
virtual void drawPreviewIcon(QgsSymbolV2RenderContext& context, QSize size) = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
virtual QgsSymbolV2* subSymbol();
|
|
|
|
virtual bool setSubSymbol(QgsSymbolV2* symbol /Transfer/);
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QgsSymbolV2::SymbolType type() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void setLocked(bool locked);
|
2009-12-07 00:36:57 +00:00
|
|
|
bool isLocked() const;
|
2009-11-16 10:36:24 +00:00
|
|
|
|
|
|
|
// used only with rending with symbol levels is turned on (0 = first pass, 1 = second, ...)
|
|
|
|
void setRenderingPass(int renderingPass);
|
|
|
|
int renderingPass() const;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
QgsSymbolLayerV2(QgsSymbolV2::SymbolType type, bool locked = false);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
///////////////
|
|
|
|
|
|
|
|
class QgsMarkerSymbolLayerV2 : QgsSymbolLayerV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbollayerv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2010-01-14 16:18:13 +00:00
|
|
|
virtual void renderPoint(const QPointF& point, QgsSymbolV2RenderContext& context) = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
void drawPreviewIcon(QgsSymbolV2RenderContext& context, QSize size);
|
2009-11-16 10:36:24 +00:00
|
|
|
|
|
|
|
void setAngle(double angle);
|
|
|
|
double angle() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void setSize(double size);
|
|
|
|
double size() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
protected:
|
|
|
|
QgsMarkerSymbolLayerV2(bool locked = false);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class QgsLineSymbolLayerV2 : QgsSymbolLayerV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbollayerv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2010-01-14 16:18:13 +00:00
|
|
|
virtual void renderPolyline(const QPolygonF& points, QgsSymbolV2RenderContext& context) = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void setWidth(double width);
|
|
|
|
double width() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
void drawPreviewIcon(QgsSymbolV2RenderContext& context, QSize size);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
protected:
|
|
|
|
QgsLineSymbolLayerV2(bool locked = false);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
class QgsFillSymbolLayerV2 : QgsSymbolLayerV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbollayerv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2010-01-14 16:18:13 +00:00
|
|
|
virtual void renderPolygon(const QPolygonF& points, QList<QPolygonF>* rings, QgsSymbolV2RenderContext& context) = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
void drawPreviewIcon(QgsSymbolV2RenderContext& context, QSize size);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
protected:
|
|
|
|
QgsFillSymbolLayerV2(bool locked = false);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
///////////////
|
|
|
|
|
|
|
|
class QgsSymbolV2RenderContext
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbolv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2010-01-14 17:50:44 +00:00
|
|
|
QgsSymbolV2RenderContext( QgsRenderContext& c, QgsSymbolV2::OutputUnit u);
|
2010-01-14 16:18:13 +00:00
|
|
|
~QgsSymbolV2RenderContext();
|
|
|
|
|
2010-01-14 17:50:44 +00:00
|
|
|
QgsRenderContext& renderContext();
|
|
|
|
//void setRenderContext( QgsRenderContext* c );
|
2010-01-14 16:18:13 +00:00
|
|
|
|
|
|
|
QgsSymbolV2::OutputUnit outputUnit() const;
|
|
|
|
void setOutputUnit( QgsSymbolV2::OutputUnit u );
|
2010-01-14 17:50:44 +00:00
|
|
|
|
|
|
|
double outputLineWidth(double width) const;
|
|
|
|
double outputPixelSize(double size) const;
|
2010-01-14 16:18:13 +00:00
|
|
|
};
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
///////////////
|
|
|
|
|
|
|
|
|
|
|
|
typedef QList<QgsSymbolLayerV2*> QgsSymbolLayerV2List;
|
|
|
|
|
|
|
|
class QgsSymbolV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbolv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
%ConvertToSubClassCode
|
|
|
|
switch (sipCpp->type())
|
|
|
|
{
|
|
|
|
case QgsSymbolV2::Marker: sipClass = sipClass_QgsMarkerSymbolV2; break;
|
2009-12-13 14:28:22 +00:00
|
|
|
case QgsSymbolV2::Line: sipClass = sipClass_QgsLineSymbolV2; break;
|
|
|
|
case QgsSymbolV2::Fill: sipClass = sipClass_QgsFillSymbolV2; break;
|
2009-11-16 10:36:24 +00:00
|
|
|
default: sipClass = 0; break;
|
|
|
|
}
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
enum OutputUnit
|
|
|
|
{
|
|
|
|
MM,
|
|
|
|
MapUnit
|
|
|
|
};
|
|
|
|
|
2009-12-07 00:36:57 +00:00
|
|
|
enum SymbolType
|
|
|
|
{
|
|
|
|
Marker,
|
|
|
|
Line,
|
|
|
|
Fill
|
|
|
|
};
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual ~QgsSymbolV2();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return new default symbol for specified geometry type
|
|
|
|
static QgsSymbolV2* defaultSymbol(QGis::GeometryType geomType) /Factory/;
|
|
|
|
|
|
|
|
SymbolType type() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
// symbol layers handling
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QgsSymbolLayerV2* symbolLayer(int layer);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
int symbolLayerCount();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! insert symbol layer to specified index
|
|
|
|
bool insertSymbolLayer(int index, QgsSymbolLayerV2* layer /Transfer/);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! append symbol layer at the end of the list
|
|
|
|
bool appendSymbolLayer(QgsSymbolLayerV2* layer /Transfer/);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! delete symbol layer at specified index
|
|
|
|
bool deleteSymbolLayer(int index);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! remove symbol layer from the list and return pointer to it
|
|
|
|
QgsSymbolLayerV2* takeSymbolLayer(int index) /TransferBack/;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! delete layer at specified index and set a new one
|
|
|
|
bool changeSymbolLayer(int index, QgsSymbolLayerV2* layer /Transfer/);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
void startRender(QgsRenderContext& context);
|
|
|
|
void stopRender(QgsRenderContext& context);
|
|
|
|
|
|
|
|
void setColor(const QColor& color);
|
|
|
|
QColor color();
|
|
|
|
|
|
|
|
void drawPreviewIcon(QPainter* painter, QSize size);
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QImage bigSymbolPreviewImage();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
QString dump();
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QgsSymbolV2* clone() const = 0 /Factory/;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-14 16:18:13 +00:00
|
|
|
OutputUnit outputUnit() const;
|
|
|
|
void setOutputUnit( OutputUnit u );
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
protected:
|
|
|
|
QgsSymbolV2(SymbolType type, QgsSymbolLayerV2List layers /Transfer/); // can't be instantiated
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
|
|
|
|
class QgsMarkerSymbolV2 : QgsSymbolV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbolv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
QgsMarkerSymbolV2(QgsSymbolLayerV2List layers /Transfer/ = QgsSymbolLayerV2List());
|
|
|
|
|
|
|
|
void setAngle(double angle);
|
|
|
|
double angle();
|
|
|
|
|
|
|
|
void setSize(double size);
|
|
|
|
double size();
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void renderPoint(const QPointF& point, QgsRenderContext& context, int layer = -1);
|
|
|
|
|
|
|
|
virtual QgsSymbolV2* clone() const /Factory/;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QgsLineSymbolV2 : QgsSymbolV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbolv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
QgsLineSymbolV2(QgsSymbolLayerV2List layers /Transfer/ = QgsSymbolLayerV2List());
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void setWidth(double width);
|
|
|
|
double width();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void renderPolyline(const QPolygonF& points, QgsRenderContext& context, int layer = -1);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QgsSymbolV2* clone() const /Factory/;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QgsFillSymbolV2 : QgsSymbolV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbolv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
QgsFillSymbolV2(QgsSymbolLayerV2List layers /Transfer/ = QgsSymbolLayerV2List());
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
void renderPolygon(const QPolygonF& points, QList<QPolygonF>* rings, QgsRenderContext& context, int layer = -1);
|
|
|
|
|
|
|
|
virtual QgsSymbolV2* clone() const /Factory/;
|
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
typedef QMap<QString, QString> QgsStringMap;
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
2010-01-15 17:54:18 +00:00
|
|
|
class QgsSymbolLayerV2Widget /External/;
|
2010-01-14 17:50:44 +00:00
|
|
|
|
2010-01-15 17:54:18 +00:00
|
|
|
class QgsSymbolLayerV2AbstractMetadata
|
2009-11-16 10:36:24 +00:00
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbollayerv2registry.h>
|
|
|
|
%End
|
|
|
|
|
2010-01-15 17:54:18 +00:00
|
|
|
public:
|
|
|
|
/** construct metadata */
|
|
|
|
QgsSymbolLayerV2AbstractMetadata( QString name, QgsSymbolV2::SymbolType type );
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-15 17:54:18 +00:00
|
|
|
QString name() const;
|
|
|
|
QgsSymbolV2::SymbolType type() const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2010-01-15 17:54:18 +00:00
|
|
|
/** create a symbol layer of this type given the map of properties. */
|
|
|
|
virtual QgsSymbolLayerV2* createSymbolLayer( const QgsStringMap& map ) = 0 /Factory/;
|
|
|
|
/** create widget for symbol layer of this type. Can return NULL if there's no GUI */
|
|
|
|
virtual QgsSymbolLayerV2Widget* createSymbolLayerWidget() /Factory/;
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsSymbolLayerV2Registry
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbollayerv2registry.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return the single instance of this class (instantiate it if not exists)
|
2009-12-07 00:36:57 +00:00
|
|
|
static QgsSymbolLayerV2Registry* instance();
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return metadata for specified symbol layer
|
2010-01-15 17:54:18 +00:00
|
|
|
QgsSymbolLayerV2AbstractMetadata* symbolLayerMetadata(QString name) const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! register a new symbol layer type
|
2010-01-15 17:54:18 +00:00
|
|
|
void addSymbolLayerType(QgsSymbolLayerV2AbstractMetadata* metadata /Transfer/);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! create a new instance of symbol layer given symbol layer name and properties
|
2010-01-15 17:54:18 +00:00
|
|
|
// TODO: disabled in PyQGIS because if used with symbol layer from Python
|
|
|
|
// the combination of /Factory/ annotation QgsSymbolLayerV2AbstractMetadata::createSymbolLayer()
|
|
|
|
// and here is deadly: results in premature deallocation of the symbol layer -> segfaults
|
|
|
|
//QgsSymbolLayerV2* createSymbolLayer(QString name, const QgsStringMap& properties) const /Factory/;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a list of available symbol layers for a specified symbol type
|
|
|
|
QStringList symbolLayersForType(QgsSymbolV2::SymbolType type);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! create a new instance of symbol layer for specified symbol type with default settings
|
2009-12-07 00:36:57 +00:00
|
|
|
static QgsSymbolLayerV2* defaultSymbolLayer(QgsSymbolV2::SymbolType type) /Factory/;
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
protected:
|
2009-12-07 00:36:57 +00:00
|
|
|
QgsSymbolLayerV2Registry();
|
2010-01-15 17:54:18 +00:00
|
|
|
~QgsSymbolLayerV2Registry();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsStyleV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsstylev2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
QgsStyleV2();
|
|
|
|
~QgsStyleV2();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return default application-wide style
|
|
|
|
static QgsStyleV2* defaultStyle();
|
|
|
|
|
|
|
|
//! remove all contents of the style
|
|
|
|
void clear();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! add symbol to style. takes symbol's ownership
|
|
|
|
bool addSymbol(QString name, QgsSymbolV2* symbol);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! remove symbol from style (and delete it)
|
|
|
|
bool removeSymbol(QString name);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a NEW copy of symbol
|
|
|
|
QgsSymbolV2* symbol(QString name);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a const pointer to a symbol (doesn't create new instance)
|
|
|
|
const QgsSymbolV2* symbolRef(QString name) const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return count of symbols in style
|
|
|
|
int symbolCount();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a list of names of symbols
|
|
|
|
QStringList symbolNames();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! add color ramp to style. takes ramp's ownership
|
|
|
|
bool addColorRamp(QString name, QgsVectorColorRampV2* colorRamp);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! remove color ramp from style (and delete it)
|
|
|
|
bool removeColorRamp(QString name);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a NEW copy of color ramp
|
|
|
|
QgsVectorColorRampV2* colorRamp(QString name);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a const pointer to a symbol (doesn't create new instance)
|
|
|
|
const QgsVectorColorRampV2* colorRampRef(QString name) const;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return count of color ramps
|
|
|
|
int colorRampCount();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return a list of names of color ramps
|
|
|
|
QStringList colorRampNames();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! load a file into the style
|
|
|
|
bool load(QString filename);
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-17 11:23:36 +00:00
|
|
|
//! save style into a file (will use current filename if empty string is passed)
|
|
|
|
bool save(QString filename = QString());
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
//! return last error from load/save operation
|
|
|
|
QString errorString();
|
2009-11-17 11:23:36 +00:00
|
|
|
|
|
|
|
//! return current file name of the style
|
|
|
|
QString fileName();
|
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsVectorColorRampV2
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsvectorcolorrampv2.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual ~QgsVectorColorRampV2();
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QColor color(double value) const = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QString type() const = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QgsVectorColorRampV2* clone() const = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
virtual QgsStringMap properties() const = 0;
|
2009-12-07 00:36:57 +00:00
|
|
|
|
2009-11-16 10:36:24 +00:00
|
|
|
};
|
2009-12-21 15:13:01 +00:00
|
|
|
|
|
|
|
//////////
|
|
|
|
|
|
|
|
class QgsSymbologyV2Conversion
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgssymbologyv2conversion.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
//! return a symbol in new symbology as close as possible to old symbol
|
|
|
|
//! @note not all properties will be preserved
|
|
|
|
static QgsSymbolV2* symbolV1toV2(const QgsSymbol* s) /Factory/;
|
|
|
|
|
|
|
|
//! return a symbol in old symbology as close as possible to new symbol
|
|
|
|
//! @note not all properties will be preserved
|
|
|
|
static QgsSymbol* symbolV2toV1(QgsSymbolV2* s) /Factory/;
|
|
|
|
|
|
|
|
//! convert layer from old symbology to new symbology
|
|
|
|
//! @note not all properties will be preserved
|
|
|
|
static void rendererV1toV2(QgsVectorLayer* layer);
|
|
|
|
|
|
|
|
//! convert layer from new symbology to old symbology
|
|
|
|
//! @note not all properties will be preserved
|
|
|
|
static void rendererV2toV1(QgsVectorLayer* layer);
|
|
|
|
|
|
|
|
};
|
2010-01-15 17:54:18 +00:00
|
|
|
|
|
|
|
////////////
|
|
|
|
|
|
|
|
class QgsRendererV2Widget /External/;
|
|
|
|
|
|
|
|
class QgsRendererV2AbstractMetadata
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsrendererv2registry.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
QgsRendererV2AbstractMetadata( QString name, QString visibleName, QString iconName = QString() );
|
|
|
|
|
|
|
|
QString name() const;
|
|
|
|
QString visibleName() const;
|
|
|
|
QString iconName() const;
|
|
|
|
|
|
|
|
/** Return new instance of the renderer given the DOM element. Returns NULL on error.
|
|
|
|
* Pure virtual function: must be implemented in derived classes. */
|
|
|
|
virtual QgsFeatureRendererV2* createRenderer( QDomElement& elem ) = 0 /Factory/;
|
|
|
|
/** Return new instance of settings widget for the renderer. Returns NULL on error. */
|
|
|
|
virtual QgsRendererV2Widget* createRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) /Factory/;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class QgsRendererV2Registry
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include <qgsrendererv2registry.h>
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
static QgsRendererV2Registry* instance();
|
|
|
|
|
|
|
|
//! add a renderer to registry. Takes ownership of the metadata object.
|
|
|
|
bool addRenderer( QgsRendererV2AbstractMetadata* metadata /Transfer/ );
|
|
|
|
|
|
|
|
//! remove renderer from registry
|
|
|
|
bool removeRenderer( QString rendererName );
|
|
|
|
|
|
|
|
//! get metadata for particular renderer. Returns NULL if not found in registry.
|
|
|
|
QgsRendererV2AbstractMetadata* rendererMetadata( QString rendererName );
|
|
|
|
|
|
|
|
//! return a list of available renderers
|
|
|
|
QStringList renderersList();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
//! protected constructor
|
|
|
|
QgsRendererV2Registry();
|
|
|
|
~QgsRendererV2Registry();
|
|
|
|
};
|