// This file may be redistributed and modified only under the terms of // the GNU General Public License (See COPYING for details). // Copyright (C) 2005 Alistair Riddoch #include #include #include #include #include namespace Mercator { iShaderFactory::iShaderFactory() { } iShaderFactory::~iShaderFactory() { } ShaderFactories * ShaderFactories::m_instance = 0; ShaderFactories::ShaderFactories() { m_factories["grass"] = new ShaderFactory; m_factories["depth"] = new ShaderFactory; m_factories["fill"] = new ShaderFactory; m_factories["high"] = new ShaderFactory; m_factories["low"] = new ShaderFactory; m_factories["band"] = new ShaderFactory; } ShaderFactories::~ShaderFactories() { } ShaderFactories & ShaderFactories::instance() { if (m_instance == 0) { m_instance = new ShaderFactories(); } return *m_instance; } void ShaderFactories::del() { if (m_instance != 0) { delete m_instance; } } Shader * ShaderFactories::newShader(const std::string & type, const Shader::Parameters & params) const { FactoryMap::const_iterator I = m_factories.find(type); if (I == m_factories.end()) { return 0; } assert(I->second != 0); return I->second->newShader(params); } } // namespace Mercator