Quantum GIS API Documentation  1.7.4
src/core/symbology-ng/qgsrendererv2registry.cpp
Go to the documentation of this file.
00001 #include "qgsrendererv2registry.h"
00002 
00003 // default renderers
00004 #include "qgssinglesymbolrendererv2.h"
00005 #include "qgscategorizedsymbolrendererv2.h"
00006 #include "qgsgraduatedsymbolrendererv2.h"
00007 #include "qgsrulebasedrendererv2.h"
00008 
00009 QgsRendererV2Registry* QgsRendererV2Registry::mInstance = NULL;
00010 
00011 QgsRendererV2Registry::QgsRendererV2Registry()
00012 {
00013   // add default renderers
00014   addRenderer( new QgsRendererV2Metadata( "singleSymbol",
00015                                           QObject::tr( "Single Symbol" ),
00016                                           QgsSingleSymbolRendererV2::create ) );
00017   addRenderer( new QgsRendererV2Metadata( "categorizedSymbol",
00018                                           QObject::tr( "Categorized" ),
00019                                           QgsCategorizedSymbolRendererV2::create ) );
00020   addRenderer( new QgsRendererV2Metadata( "graduatedSymbol",
00021                                           QObject::tr( "Graduated" ),
00022                                           QgsGraduatedSymbolRendererV2::create ) );
00023 
00024   addRenderer( new QgsRendererV2Metadata( "RuleRenderer",
00025                                           QObject::tr( "Rule-based" ),
00026                                           QgsRuleBasedRendererV2::create ) );
00027 }
00028 
00029 QgsRendererV2Registry::~QgsRendererV2Registry()
00030 {
00031   foreach( QString name, mRenderers.keys() )
00032   {
00033     delete mRenderers[name];
00034   }
00035   mRenderers.clear();
00036 }
00037 
00038 QgsRendererV2Registry* QgsRendererV2Registry::instance()
00039 {
00040   if ( !mInstance )
00041     mInstance = new QgsRendererV2Registry();
00042 
00043   return mInstance;
00044 }
00045 
00046 
00047 bool QgsRendererV2Registry::addRenderer( QgsRendererV2AbstractMetadata* metadata )
00048 {
00049   if ( metadata == NULL || mRenderers.contains( metadata->name() ) )
00050     return false;
00051 
00052   mRenderers[metadata->name()] = metadata;
00053   mRenderersOrder << metadata->name();
00054   return true;
00055 }
00056 
00057 bool QgsRendererV2Registry::removeRenderer( QString rendererName )
00058 {
00059   if ( !mRenderers.contains( rendererName ) )
00060     return false;
00061 
00062   delete mRenderers[rendererName];
00063   mRenderers.remove( rendererName );
00064   mRenderersOrder.removeAll( rendererName );
00065   return true;
00066 }
00067 
00068 QgsRendererV2AbstractMetadata* QgsRendererV2Registry::rendererMetadata( QString rendererName )
00069 {
00070   return mRenderers.value( rendererName );
00071 }
00072 
00073 QStringList QgsRendererV2Registry::renderersList()
00074 {
00075   return mRenderersOrder;
00076 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines