Quantum GIS API Documentation
1.8
|
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 }