Quantum GIS API Documentation
1.7.4
|
00001 #ifndef QGSRENDERERV2REGISTRY_H 00002 #define QGSRENDERERV2REGISTRY_H 00003 00004 #include <QIcon> 00005 #include <QMap> 00006 #include <QStringList> 00007 00008 class QgsFeatureRendererV2; 00009 class QDomElement; 00010 class QgsVectorLayer; 00011 class QgsStyleV2; 00012 class QgsRendererV2Widget; 00013 00020 class CORE_EXPORT QgsRendererV2AbstractMetadata 00021 { 00022 public: 00023 QgsRendererV2AbstractMetadata( QString name, QString visibleName, QIcon icon = QIcon() ) 00024 : mName( name ), mVisibleName( visibleName ), mIcon( icon ) {} 00025 00026 QString name() const { return mName; } 00027 QString visibleName() const { return mVisibleName; } 00028 00029 QIcon icon() const { return mIcon; } 00030 void setIcon( const QIcon& icon ) { mIcon = icon; } 00031 00034 virtual QgsFeatureRendererV2* createRenderer( QDomElement& elem ) = 0; 00036 virtual QgsRendererV2Widget* createRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) 00037 { return NULL; } 00038 00039 protected: 00041 QString mName; 00043 QString mVisibleName; 00045 QIcon mIcon; 00046 }; 00047 00048 00049 typedef QgsFeatureRendererV2*( *QgsRendererV2CreateFunc )( QDomElement& ); 00050 typedef QgsRendererV2Widget*( *QgsRendererV2WidgetFunc )( QgsVectorLayer*, QgsStyleV2*, QgsFeatureRendererV2* ); 00051 00055 class CORE_EXPORT QgsRendererV2Metadata : public QgsRendererV2AbstractMetadata 00056 { 00057 public: 00058 00060 QgsRendererV2Metadata( QString name, 00061 QString visibleName, 00062 QgsRendererV2CreateFunc pfCreate, 00063 QIcon icon = QIcon(), 00064 QgsRendererV2WidgetFunc pfWidget = NULL ) 00065 : QgsRendererV2AbstractMetadata( name, visibleName, icon ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {} 00066 00067 virtual QgsFeatureRendererV2* createRenderer( QDomElement& elem ) { return mCreateFunc ? mCreateFunc( elem ) : NULL; } 00068 virtual QgsRendererV2Widget* createRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) 00069 { return mWidgetFunc ? mWidgetFunc( layer, style, renderer ) : NULL; } 00070 00071 QgsRendererV2CreateFunc createFunction() const { return mCreateFunc; } 00072 QgsRendererV2WidgetFunc widgetFunction() const { return mWidgetFunc; } 00073 00074 void setWidgetFunction( QgsRendererV2WidgetFunc f ) { mWidgetFunc = f; } 00075 00076 protected: 00078 QgsRendererV2CreateFunc mCreateFunc; 00080 QgsRendererV2WidgetFunc mWidgetFunc; 00081 }; 00082 00088 class CORE_EXPORT QgsRendererV2Registry 00089 { 00090 public: 00091 00092 static QgsRendererV2Registry* instance(); 00093 00095 bool addRenderer( QgsRendererV2AbstractMetadata* metadata ); 00096 00098 bool removeRenderer( QString rendererName ); 00099 00101 QgsRendererV2AbstractMetadata* rendererMetadata( QString rendererName ); 00102 00104 QStringList renderersList(); 00105 00106 protected: 00108 QgsRendererV2Registry(); 00109 ~QgsRendererV2Registry(); 00110 00111 static QgsRendererV2Registry* mInstance; 00112 00113 QMap<QString, QgsRendererV2AbstractMetadata*> mRenderers; 00114 00116 QStringList mRenderersOrder; 00117 }; 00118 00119 #endif // QGSRENDERERV2REGISTRY_H