Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qgssymbollayerv2registry.h
Go to the documentation of this file.
1 
2 #ifndef QGSSYMBOLLAYERV2REGISTRY_H
3 #define QGSSYMBOLLAYERV2REGISTRY_H
4 
5 #include "qgssymbolv2.h"
6 #include "qgssymbollayerv2.h"
7 
15 {
16  public:
17  QgsSymbolLayerV2AbstractMetadata( QString name, QString visibleName, QgsSymbolV2::SymbolType type )
18  : mName( name ), mVisibleName( visibleName ), mType( type ) {}
19 
20  QString name() const { return mName; }
21  QString visibleName() const { return mVisibleName; }
22  QgsSymbolV2::SymbolType type() const { return mType; }
23 
25  virtual QgsSymbolLayerV2* createSymbolLayer( const QgsStringMap& map ) = 0;
27  virtual QgsSymbolLayerV2Widget* createSymbolLayerWidget() { return NULL; }
28 
29  protected:
30  QString mName;
31  QString mVisibleName;
33 };
34 
35 typedef QgsSymbolLayerV2*( *QgsSymbolLayerV2CreateFunc )( const QgsStringMap& );
36 typedef QgsSymbolLayerV2Widget*( *QgsSymbolLayerV2WidgetFunc )();
37 
42 {
43  public:
44  QgsSymbolLayerV2Metadata( QString name, QString visibleName,
47  QgsSymbolLayerV2WidgetFunc pfWidget = NULL )
48  : QgsSymbolLayerV2AbstractMetadata( name, visibleName, type ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {}
49 
50  QgsSymbolLayerV2CreateFunc createFunction() const { return mCreateFunc; }
51  QgsSymbolLayerV2WidgetFunc widgetFunction() const { return mWidgetFunc; }
52 
53  void setWidgetFunction( QgsSymbolLayerV2WidgetFunc f ) { mWidgetFunc = f; }
54 
55  virtual QgsSymbolLayerV2* createSymbolLayer( const QgsStringMap& map ) { return mCreateFunc ? mCreateFunc( map ) : NULL; }
56  virtual QgsSymbolLayerV2Widget* createSymbolLayerWidget() { return mWidgetFunc ? mWidgetFunc() : NULL; }
57 
58  protected:
61 };
62 
63 
68 class CORE_EXPORT QgsSymbolLayerV2Registry
69 {
70  public:
71 
73  static QgsSymbolLayerV2Registry* instance();
74 
76  QgsSymbolLayerV2AbstractMetadata* symbolLayerMetadata( QString name ) const;
77 
79  bool addSymbolLayerType( QgsSymbolLayerV2AbstractMetadata* metadata );
80 
82  QgsSymbolLayerV2* createSymbolLayer( QString name, const QgsStringMap& properties = QgsStringMap() ) const;
83 
85  QStringList symbolLayersForType( QgsSymbolV2::SymbolType type );
86 
88  static QgsSymbolLayerV2* defaultSymbolLayer( QgsSymbolV2::SymbolType type );
89 
90  protected:
93 
95  QMap<QString, QgsSymbolLayerV2AbstractMetadata*> mMetadata;
96 
97 };
98 
99 #endif