void Display::discoverLocal( Config* config ) { Node* node = config->findAppNode(); EQASSERT( node ); if( !node ) return; const Pipes& pipes = node->getPipes(); EQASSERT( !pipes.empty( )); if( pipes.empty( )) return; Pipe* pipe = pipes.front(); Window* window = new Window( pipe ); window->setViewport( Viewport( .25f, .2f, .5f, .5f )); window->setName( pipe->getName() + " window" ); window->setIAttribute( Window::IATTR_PLANES_STENCIL, 1 ); Channel* channel = new Channel( window ); channel->setName( pipe->getName() + " channel" ); Observer* observer = new Observer( config ); const PixelViewport& pvp = pipe->getPixelViewport(); Wall wall; if( pvp.isValid( )) wall.resizeHorizontalToAR( float( pvp.w ) / float( pvp.h )); Canvas* canvas = new Canvas( config ); canvas->setWall( wall ); Segment* segment = new Segment( canvas ); segment->setChannel( channel ); Strings names; names.push_back( EQ_SERVER_CONFIG_LAYOUT_2D_DYNAMIC ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_SIMPLE ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_DS ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_STATIC ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_DYNAMIC ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_2D_STATIC ); for( StringsCIter i = names.begin(); i != names.end(); ++i ) { Layout* layout = new Layout( config ); layout->setName( *i ); View* view = new View( layout ); view->setObserver( observer ); view->setWall( wall ); canvas->addLayout( layout ); } config->activateCanvas( canvas ); }
void Display::discoverLocal( Config* config, const uint32_t flags ) { Node* node = config->findAppNode(); LBASSERT( node ); if( !node ) return; const Pipes& pipes = node->getPipes(); LBASSERT( !pipes.empty( )); if( pipes.empty( )) return; Pipe* pipe = pipes.front(); Window* window = new Window( pipe ); window->setViewport( Viewport( .25f, .2f, .5f, .5f )); window->setName( pipe->getName() + " window" ); window->setIAttribute( Window::IATTR_PLANES_STENCIL, 1 ); Channel* channel = new Channel( window ); channel->setName( pipe->getName() + " channel" ); Observer* observer = new Observer( config ); const PixelViewport& pvp = pipe->getPixelViewport(); Wall wall; if( pvp.isValid( )) wall.resizeHorizontalToAR( float( pvp.w ) / float( pvp.h )); Canvas* canvas = new Canvas( config ); canvas->setWall( wall ); Segment* segment = new Segment( canvas ); segment->setChannel( channel ); Strings names; const Nodes& nodes = config->getNodes(); const bool scalability = nodes.size() > 1 || pipes.size() > 1; if( scalability ) names.push_back( EQ_SERVER_CONFIG_LAYOUT_2D_DYNAMIC ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_SIMPLE ); if( scalability ) { names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_DS ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_STATIC ); names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_DYNAMIC ); if( flags & fabric::ConfigParams::FLAG_MULTIPROCESS_DB && nodes.size() > 1 ) { for( NodesCIter i = nodes.begin(); i != nodes.end(); ++i ) { if( (*i)->getPipes().size() > 1 ) { names.push_back( EQ_SERVER_CONFIG_LAYOUT_DB_2D ); break; } } } } for( StringsCIter i = names.begin(); i != names.end(); ++i ) { Layout* layout = new Layout( config ); layout->setName( *i ); View* view = new View( layout ); view->setObserver( observer ); view->setWall( wall ); canvas->addLayout( layout ); } config->activateCanvas( canvas ); }