Quantum GIS API Documentation
1.7.4
|
00001 00002 #ifndef QGSSYMBOLLAYERV2REGISTRY_H 00003 #define QGSSYMBOLLAYERV2REGISTRY_H 00004 00005 #include "qgssymbolv2.h" 00006 #include "qgssymbollayerv2.h" 00007 00014 class CORE_EXPORT QgsSymbolLayerV2AbstractMetadata 00015 { 00016 public: 00017 QgsSymbolLayerV2AbstractMetadata( QString name, QString visibleName, QgsSymbolV2::SymbolType type ) 00018 : mName( name ), mVisibleName( visibleName ), mType( type ) {} 00019 00020 QString name() const { return mName; } 00021 QString visibleName() const { return mVisibleName; } 00022 QgsSymbolV2::SymbolType type() const { return mType; } 00023 00025 virtual QgsSymbolLayerV2* createSymbolLayer( const QgsStringMap& map ) = 0; 00027 virtual QgsSymbolLayerV2Widget* createSymbolLayerWidget() { return NULL; } 00028 00029 protected: 00030 QString mName; 00031 QString mVisibleName; 00032 QgsSymbolV2::SymbolType mType; 00033 }; 00034 00035 typedef QgsSymbolLayerV2*( *QgsSymbolLayerV2CreateFunc )( const QgsStringMap& ); 00036 typedef QgsSymbolLayerV2Widget*( *QgsSymbolLayerV2WidgetFunc )(); 00037 00041 class CORE_EXPORT QgsSymbolLayerV2Metadata : public QgsSymbolLayerV2AbstractMetadata 00042 { 00043 public: 00044 QgsSymbolLayerV2Metadata( QString name, QString visibleName, 00045 QgsSymbolV2::SymbolType type, 00046 QgsSymbolLayerV2CreateFunc pfCreate, 00047 QgsSymbolLayerV2WidgetFunc pfWidget = NULL ) 00048 : QgsSymbolLayerV2AbstractMetadata( name, visibleName, type ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {} 00049 00050 QgsSymbolLayerV2CreateFunc createFunction() const { return mCreateFunc; } 00051 QgsSymbolLayerV2WidgetFunc widgetFunction() const { return mWidgetFunc; } 00052 00053 void setWidgetFunction( QgsSymbolLayerV2WidgetFunc f ) { mWidgetFunc = f; } 00054 00055 virtual QgsSymbolLayerV2* createSymbolLayer( const QgsStringMap& map ) { return mCreateFunc ? mCreateFunc( map ) : NULL; } 00056 virtual QgsSymbolLayerV2Widget* createSymbolLayerWidget() { return mWidgetFunc ? mWidgetFunc() : NULL; } 00057 00058 protected: 00059 QgsSymbolLayerV2CreateFunc mCreateFunc; 00060 QgsSymbolLayerV2WidgetFunc mWidgetFunc; 00061 }; 00062 00063 00068 class CORE_EXPORT QgsSymbolLayerV2Registry 00069 { 00070 public: 00071 00073 static QgsSymbolLayerV2Registry* instance(); 00074 00076 QgsSymbolLayerV2AbstractMetadata* symbolLayerMetadata( QString name ) const; 00077 00079 bool addSymbolLayerType( QgsSymbolLayerV2AbstractMetadata* metadata ); 00080 00082 QgsSymbolLayerV2* createSymbolLayer( QString name, const QgsStringMap& properties = QgsStringMap() ) const; 00083 00085 QStringList symbolLayersForType( QgsSymbolV2::SymbolType type ); 00086 00088 static QgsSymbolLayerV2* defaultSymbolLayer( QgsSymbolV2::SymbolType type ); 00089 00090 protected: 00091 QgsSymbolLayerV2Registry(); 00092 ~QgsSymbolLayerV2Registry(); 00093 00094 static QgsSymbolLayerV2Registry* mInstance; 00095 QMap<QString, QgsSymbolLayerV2AbstractMetadata*> mMetadata; 00096 00097 }; 00098 00099 #endif