/*===========================================================================*\ * * * OpenFlipper * * Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen * * www.openflipper.org * * * *--------------------------------------------------------------------------- * * This file is part of OpenFlipper. * * * * OpenFlipper is free software: you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation, either version 3 of * * the License, or (at your option) any later version with the * * following exceptions: * * * * If other files instantiate templates or use macros * * or inline functions from this file, or you compile this file and * * link it with other files to produce an executable, this file does * * not by itself cause the resulting executable to be covered by the * * GNU Lesser General Public License. This exception does not however * * invalidate any other reasons why the executable file might be * * covered by the GNU Lesser General Public License. * * * * OpenFlipper is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU LesserGeneral Public * * License along with OpenFlipper. If not, * * see . * * * \*===========================================================================*/ /*===========================================================================*\ * * * $Revision$ * * $LastChangedBy$ * * $Date$ * * * \*===========================================================================*/ #ifndef RENDERERINFO_HH #define RENDERERINFO_HH #include #include #include #include #include #include /** Type defining a currently loaded Renderer */ class RendererInfo{ public : RendererInfo(); RendererInfo(RenderInterface* _plugin,QString _name); /// Pointer to the loaded plugin (Already casted when loading it) RenderInterface* plugin; /// Name of the plugin ( requested from the plugin on load) QString name; /// Supported DrawModes ACG::SceneGraph::DrawModes::DrawMode modes; }; class RenderManager { public: RenderManager(); /** \brief Check if a renderer with the given name exists * * @param _name Name of the renderer * @return exists or not */ bool rendererExists(QString _name); /**\brief Get a new renderer Instance * * @param _name Name of the new renderer * * @return Pointer to renderer. If it exists, the existing one is returned! */ RendererInfo* newRenderer(QString _name); /** \brief get renderer with the given name * * @param _name Name of the renderer * @return pointer or 0 if it does not exist */ RendererInfo* getRenderer(QString _name); /** \brief count renderers for a DrawMode (excluding the default renderer) * * Checks in the list of renderers how many support the given draw mode combination. * The combination is checked as one complete block. * * @param _mode The mode that should be checked. * */ int countRenderers(ACG::SceneGraph::DrawModes::DrawMode _mode); /** \brief Get the renderer with the given id * * @param _id Id of the renderer * @return */ RendererInfo* operator[](unsigned int _id); /** \brief number of available renderers * * @return number of available renderers */ unsigned int available(); /** \brief set the active renderer * * @param _id viewer id * @param _active id of the renderer */ void setActive(unsigned int _active, unsigned int _id); /** \brief set the active renderer * * @param _id viewer id * @param _active name of the renderer */ void setActive(QString _active, unsigned int _id); /** \brief Get the current active renderer * * @param _id viewer id * @return Renderer */ RendererInfo* active(unsigned int _id); /** \brief Get the id of the active renderer * * @param _id viewer id * @return renderer id */ unsigned int activeId(unsigned int _id); private: /// Vector holding all available renderers std::vector availableRenderers_; /// The currently active renderer ids std::vector activeRenderers_; }; /// Get an instance of the render manager RenderManager& renderManager(); //=================================================================================== // Post processor Manager //=================================================================================== /** Type defining a currently loaded Post processor */ class PostProcessorInfo{ public : PostProcessorInfo(); PostProcessorInfo(PostProcessorInterface* _plugin, QString _name); /// Pointer to the loaded plugin (Already casted when loading it) PostProcessorInterface* plugin; /// Name of the plugin ( requested from the plugin on load) QString name; }; class PostProcessorManager { public: PostProcessorManager(); /** \brief Check if a post processor with the given name exists * * @param _name Name of the post processor * @return exists or not */ bool postProcessorExists(QString _name); /**\brief Get a new post processor Instance * * @param _name Name of the new post processor * * @return Pointer to post processor. If it exists, the existing one is returned! */ PostProcessorInfo* newPostProcessor(QString _name); /** \brief get post processor with the given name * * @param _name Name of the post processor * @return pointer or 0 if it does not exist */ PostProcessorInfo* getPostProcessor(QString _name); /** \brief Get the post processor with the given id * * @param _id Id of the post processor * @return */ PostProcessorInfo* operator[](unsigned int _id); /** \brief number of available post processor * * @return number of available post processor */ unsigned int available(); /** \brief set the active post processor for viewer * * @param _id viewer id * @param _active id of the post processor */ void setActive(unsigned int _active, unsigned int _id); /** \brief set the active post processor for viewer * * @param _id viewer id * @param _active name of the post processor */ void setActive(QString _active, unsigned int _id); /** \brief Get the current active post processor for viewer * * @param _id ViewerId * @return post processor */ PostProcessorInfo* active(unsigned int _id); /** \brief Get the id of the active post processor for viewer * * @param _id ViewerId * @return post processor id */ unsigned int activeId(unsigned int _id); private: /// Vector holding all available post processors std::vector availablePostProcessors_; /// The currently active post processor id std::vector activePostProcessors_; }; /// Get an instance of the Post Processor manager PostProcessorManager& postProcessorManager(); #endif //RENDERERINFO_HH