Quantum GIS API Documentation  1.8
src/core/symbology-ng/qgsrendererv2registry.cpp
Go to the documentation of this file.
00001 /***************************************************************************
00002     qgsrendererv2registry.cpp
00003     ---------------------
00004     begin                : November 2009
00005     copyright            : (C) 2009 by Martin Dobias
00006     email                : wonder.sk at gmail.com
00007  ***************************************************************************
00008  *                                                                         *
00009  *   This program is free software; you can redistribute it and/or modify  *
00010  *   it under the terms of the GNU General Public License as published by  *
00011  *   the Free Software Foundation; either version 2 of the License, or     *
00012  *   (at your option) any later version.                                   *
00013  *                                                                         *
00014  ***************************************************************************/
00015 #include "qgsrendererv2registry.h"
00016 
00017 // default renderers
00018 #include "qgssinglesymbolrendererv2.h"
00019 #include "qgscategorizedsymbolrendererv2.h"
00020 #include "qgsgraduatedsymbolrendererv2.h"
00021 #include "qgsrulebasedrendererv2.h"
00022 #include "qgspointdisplacementrenderer.h"
00023 
00024 QgsRendererV2Registry* QgsRendererV2Registry::mInstance = NULL;
00025 
00026 QgsRendererV2Registry::QgsRendererV2Registry()
00027 {
00028   // add default renderers
00029   addRenderer( new QgsRendererV2Metadata( "singleSymbol",
00030                                           QObject::tr( "Single Symbol" ),
00031                                           QgsSingleSymbolRendererV2::create,
00032                                           QgsSingleSymbolRendererV2::createFromSld ) );
00033 
00034   addRenderer( new QgsRendererV2Metadata( "categorizedSymbol",
00035                                           QObject::tr( "Categorized" ),
00036                                           QgsCategorizedSymbolRendererV2::create ) );
00037   addRenderer( new QgsRendererV2Metadata( "graduatedSymbol",
00038                                           QObject::tr( "Graduated" ),
00039                                           QgsGraduatedSymbolRendererV2::create ) );
00040 
00041   addRenderer( new QgsRendererV2Metadata( "RuleRenderer",
00042                                           QObject::tr( "Rule-based" ),
00043                                           QgsRuleBasedRendererV2::create,
00044                                           QgsRuleBasedRendererV2::createFromSld ) );
00045 
00046   addRenderer( new QgsRendererV2Metadata( "pointDisplacement",
00047                                           QObject::tr( "Point displacement" ),
00048                                           QgsPointDisplacementRenderer::create ) );
00049 }
00050 
00051 QgsRendererV2Registry::~QgsRendererV2Registry()
00052 {
00053   foreach( QString name, mRenderers.keys() )
00054   {
00055     delete mRenderers[name];
00056   }
00057   mRenderers.clear();
00058 }
00059 
00060 QgsRendererV2Registry* QgsRendererV2Registry::instance()
00061 {
00062   if ( !mInstance )
00063     mInstance = new QgsRendererV2Registry();
00064 
00065   return mInstance;
00066 }
00067 
00068 
00069 bool QgsRendererV2Registry::addRenderer( QgsRendererV2AbstractMetadata* metadata )
00070 {
00071   if ( metadata == NULL || mRenderers.contains( metadata->name() ) )
00072     return false;
00073 
00074   mRenderers[metadata->name()] = metadata;
00075   mRenderersOrder << metadata->name();
00076   return true;
00077 }
00078 
00079 bool QgsRendererV2Registry::removeRenderer( QString rendererName )
00080 {
00081   if ( !mRenderers.contains( rendererName ) )
00082     return false;
00083 
00084   delete mRenderers[rendererName];
00085   mRenderers.remove( rendererName );
00086   mRenderersOrder.removeAll( rendererName );
00087   return true;
00088 }
00089 
00090 QgsRendererV2AbstractMetadata* QgsRendererV2Registry::rendererMetadata( QString rendererName )
00091 {
00092   return mRenderers.value( rendererName );
00093 }
00094 
00095 QStringList QgsRendererV2Registry::renderersList()
00096 {
00097   return mRenderersOrder;
00098 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines