52 #include <OpenFlipper/common/RendererInfo.hh> 58 return renderManager_;
62 return postProcessorManager_;
65 RendererInfo::RendererInfo():
80 RenderManager::RenderManager()
82 availableRenderers_.clear();
83 availableRenderers_.push_back(
RendererInfo(0,
"Default internal renderer"));
85 activeRenderers_.clear();
90 for (
unsigned int i = 0 ; i < availableRenderers_.size() ; ++i)
91 if ( availableRenderers_[i].name == _name)
100 for (
unsigned int i = 0 ; i < availableRenderers_.size() ; ++i)
101 if ( availableRenderers_[i].name == _name)
102 return &availableRenderers_[i];
105 availableRenderers_[availableRenderers_.size()-1].
name = _name;
107 return &availableRenderers_[availableRenderers_.size()-1];
112 for (
unsigned int i = 0 ; i < availableRenderers_.size() ; ++i)
113 if ( availableRenderers_[i].name == _name)
114 return &availableRenderers_[i];
121 for (
unsigned int i = 0 ; i < availableRenderers_.size() ; ++i)
122 if ( availableRenderers_[i].name == _name)
133 for (
unsigned int i = 1 ; i < availableRenderers_.size() ; ++i)
134 if ( (availableRenderers_[i].modes & _mode) )
142 if ( _id >= availableRenderers_.size())
145 return &availableRenderers_[_id];
150 return availableRenderers_.size();
157 std::cerr <<
"RenderManager::setActive illegal viewer id: " << _id << std::endl;
162 if ( _id >= (
int)activeRenderers_.size() )
163 activeRenderers_.resize(_id +1 );
165 if ( _active < availableRenderers_.size() )
166 activeRenderers_[_id] = _active;
168 std::cerr <<
"Out of range error when setting active renderer" << std::endl;
174 std::cerr <<
"RenderManager::setActive illegal viewer id: " << _id << std::endl;
179 if ( _id >= (
int)activeRenderers_.size() ) {
180 activeRenderers_.resize(_id +1 );
184 for (
unsigned int i = 0 ; i < availableRenderers_.size() ; ++i)
185 if ( availableRenderers_[i].name == _active) {
186 activeRenderers_[_id] = i;
198 if ( _id >= (
int)activeRenderers_.size() )
199 activeRenderers_.resize(_id +1 );
201 return &availableRenderers_[activeRenderers_[_id]];
211 if ( _id >= (
int)activeRenderers_.size() )
212 activeRenderers_.resize(_id +1 );
214 return activeRenderers_[_id];
226 PostProcessorInfo::PostProcessorInfo():
234 PostProcessorManager::PostProcessorManager()
236 availablePostProcessors_.clear();
237 availablePostProcessors_.push_back(
PostProcessorInfo(0,
"Default internal post processor"));
239 activePostProcessors_.clear();
245 for (
unsigned int i = 0 ; i < availablePostProcessors_.size() ; ++i)
246 if ( availablePostProcessors_[i].name == _name)
255 for (
unsigned int i = 0 ; i < availablePostProcessors_.size() ; ++i)
256 if ( availablePostProcessors_[i].name == _name)
257 return &availablePostProcessors_[i];
260 availablePostProcessors_[availablePostProcessors_.size()-1].
name = _name;
262 return &availablePostProcessors_[availablePostProcessors_.size()-1];
267 for (
unsigned int i = 0 ; i < availablePostProcessors_.size() ; ++i)
268 if ( availablePostProcessors_[i].name == _name)
269 return &availablePostProcessors_[i];
276 if ( _id >= availablePostProcessors_.size())
279 return &availablePostProcessors_[_id];
284 return availablePostProcessors_.size();
290 if ( _viewerId < 0 ) {
291 std::cerr <<
"PostProcessorManager::setActive illegal viewer id: " << _viewerId << std::endl;
296 if ( _viewerId >= (
int)activePostProcessors_.size() )
297 activePostProcessors_.resize(_viewerId +1 );
300 activePostProcessors_[_viewerId].clear();
301 activePostProcessors_[_viewerId].push_back(_active);
308 std::cerr <<
"PostProcessorManager::setActive illegal viewer id: " << _id << std::endl;
313 if ( _id >= (
int)activePostProcessors_.size() )
314 activePostProcessors_.resize(_id +1 );
316 for (
unsigned int i = 0 ; i < availablePostProcessors_.size() ; ++i)
317 if ( availablePostProcessors_[i].name == _active) {
320 activePostProcessors_[_id].clear();
321 activePostProcessors_[_id].push_back(i);
333 if ( _id >= (
int)activePostProcessors_.size() )
334 activePostProcessors_.resize(_id +1 );
336 if ( (
int)activePostProcessors_[_id].size() <= _chainIdx)
339 return &availablePostProcessors_[activePostProcessors_[_id][_chainIdx]];
349 if ( _id >= (
int)activePostProcessors_.size() )
350 activePostProcessors_.resize(_id +1 );
352 if ( (
int)activePostProcessors_[_id].size() <= _chainIdx)
355 return activePostProcessors_[_id][_chainIdx];
365 if ( _id >= (
int)activePostProcessors_.size() )
366 activePostProcessors_.resize(_id +1 );
368 return (
int)activePostProcessors_[_id].size();
374 if ( _viewerId < 0 ) {
375 std::cerr <<
"PostProcessorManager::append illegal viewer id: " << _viewerId << std::endl;
380 if ( _viewerId >= (
int)activePostProcessors_.size() )
381 activePostProcessors_.resize(_viewerId +1 );
383 if ( _active < availablePostProcessors_.size() )
384 activePostProcessors_[_viewerId].push_back(_active);
386 std::cerr <<
"Out of range error when setting active post processor" << std::endl;
394 std::cerr <<
"PostProcessorManager::append illegal viewer id: " << _id << std::endl;
399 if ( _id >= (
int)activePostProcessors_.size() )
400 activePostProcessors_.resize(_id +1 );
402 for (
unsigned int i = 0 ; i < availablePostProcessors_.size() ; ++i)
403 if ( availablePostProcessors_[i].name == _active) {
404 activePostProcessors_[_id].push_back(i);
413 if ( _viewerId < 0 ) {
414 std::cerr <<
"PostProcessorManager::insert illegal viewer id: " << _viewerId << std::endl;
419 if ( _viewerId >= (
int)activePostProcessors_.size() )
420 activePostProcessors_.resize(_viewerId +1 );
422 if ( _active < availablePostProcessors_.size() )
423 activePostProcessors_[_viewerId].insert(activePostProcessors_[_viewerId].begin() + _chainIdx, _active);
425 std::cerr <<
"Out of range error when setting active post processor" << std::endl;
433 std::cerr <<
"PostProcessorManager::insert illegal viewer id: " << _id << std::endl;
438 if ( _id >= (
int)activePostProcessors_.size() )
439 activePostProcessors_.resize(_id +1 );
441 for (
unsigned int i = 0 ; i < availablePostProcessors_.size() ; ++i)
442 if ( availablePostProcessors_[i].name == _active) {
443 activePostProcessors_[_id].insert(activePostProcessors_[_id].begin() + _chainIdx, i);
455 if ( _id >= (
int)activePostProcessors_.size() )
456 activePostProcessors_.resize(_id +1 );
458 if ( (
int)activePostProcessors_[_id].size() <= _chainIdx)
461 activePostProcessors_[_id].erase(activePostProcessors_[_id].begin() + _chainIdx);
unsigned int activeId(int _id)
Get the id of the active renderer.
RendererInfo * active(int _id)
Get the current active renderer.
RendererInfo * operator[](unsigned int _id)
Get the renderer with the given id.
PostProcessorInfo * getPostProcessor(QString _name)
get post processor with the given name
PostProcessorInfo * operator[](unsigned int _id)
Get the post processor with the given id.
void insert(unsigned int _active, int _chainIdx, int _viewerId)
Insert the active post processor to the chain for viewer.
PostProcessorInfo * active(int _id, int _chainIdx=0)
Get the current active post processor for viewer at chain index.
unsigned int available()
number of available post processor
RendererInfo * newRenderer(QString _name)
Get a new renderer Instance.
int numActive(int _id)
Get the number of active post processors for viewer.
unsigned int available()
number of available renderers
Interface to add global image post processor functions from within plugins.
unsigned int activeId(int _id, int _chainIdx=0)
Get the id of the active post processor for viewer at chain index.
bool postProcessorExists(QString _name)
Check if a post processor with the given name exists.
RendererInfo * getRenderer(QString _name)
get renderer with the given name
Interface to add additional rendering functions from within plugins.
bool rendererExists(QString _name)
Check if a renderer with the given name exists.
PostProcessorInfo * newPostProcessor(QString _name)
Get a new post processor Instance.
QString name
Name of the plugin ( requested from the plugin on load)
int getRendererId(QString _name)
get renderer id with the given name
int countRenderers(ACG::SceneGraph::DrawModes::DrawMode _mode)
count renderers for a DrawMode (excluding the default renderer)
void append(unsigned int _active, int _viewerId)
Append the active post processor to the chain for viewer.
void setActive(unsigned int _active, int _id)
set the active renderer
void setActive(unsigned int _active, int _viewerId)
set the active post processor for viewer
void remove(int _id, int _chainIdx)
Remove a post processor at the specified chain index.
QString name
Name of the plugin ( requested from the plugin on load)