Show
Ignore:
Timestamp:
12/12/07 18:00:42 (9 months ago)
Author:
cneumann
Message:

added: generic interface
changed: factory functions return RefPtr?

The unittests don't pass right now, because of the change
to the factory functions, which leads to containers
being immediately destroyed as they are not assigned to
a RefPtr?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Carsten_PtrWork2/Source/System/Cluster/Window/SortFirst/OSGSortFirstWindow.cpp

    r997 r1032  
    162162{ 
    163163    TileCameraDecoratorPtr deco; 
    164     ViewportPtr serverPort; 
    165     ViewportPtr clientPort; 
     164    ViewportRefPtr serverPort; 
     165    ViewportRefPtr clientPort; 
    166166    UInt32 sv,cv,regionStart; 
    167167    UInt32 vpWidth; 
     
    169169 
    170170    // duplicate viewports 
    171     for(cv=0,sv=0;cv<getPort().size();cv++
     171    for(cv = 0, sv = 0; cv < getPort().size(); ++cv
    172172    { 
    173173        clientPort = getPort()[cv]; 
     
    176176            // create new port 
    177177            //serverPort = StereoBufferViewport::create(); 
    178             serverPort = dynamic_cast<ViewportPtr>(clientPort->shallowCopy()); 
    179             deco=TileCameraDecorator::create(); 
    180  
    181             serverWindow->addPort(serverPort); 
    182             serverPort->setCamera(deco); 
     178            serverPort = boost::dynamic_pointer_cast<Viewport>( 
     179                clientPort->shallowCopy()); 
     180            deco       = TileCameraDecorator::create(); 
     181 
     182            serverWindow->addPort  (serverPort); 
     183            serverPort  ->setCamera(deco      ); 
    183184        } 
    184185        else 
    185186        { 
    186187            serverPort = serverWindow->getPort()[sv]; 
    187             deco=dynamic_cast<TileCameraDecoratorPtr>(serverPort->getCamera()); 
    188             if(serverWindow->getPort()[sv]->getType() !=  
    189               clientPort->getType()) 
     188            deco       = dynamic_cast<TileCameraDecoratorPtr>( 
     189                serverPort->getCamera()); 
     190            if(serverWindow->getPort()[sv]->getType() != clientPort->getType()) 
    190191            { 
    191192                // there is a viewport with the wrong type 
    192                 serverPort = dynamic_cast<ViewportPtr>(clientPort->shallowCopy()); 
     193                serverPort = boost::dynamic_pointer_cast<Viewport>( 
     194                    clientPort->shallowCopy()); 
    193195                serverWindow->replacePort(sv, serverPort);//[sv] = serverPort; 
    194                 serverPort->setCamera(deco); 
     196                serverPort  ->setCamera(deco); 
    195197            } 
    196198            else 
    197199            { 
    198                 deco=dynamic_cast<TileCameraDecoratorPtr>(serverPort->getCamera()); 
     200                deco = dynamic_cast<TileCameraDecoratorPtr>( 
     201                    serverPort->getCamera()); 
    199202            } 
    200203            //serverPort = serverWindow->getPort()[sv]; 
     
    210213            Real32(getRegion()[regionStart+3] + clientPort->getPixelBottom())); 
    211214 
    212         serverPort->setRoot      ( clientPort->getRoot()       ); 
    213         serverPort->setBackground( clientPort->getBackground() ); 
    214  
     215        serverPort->setRoot          (clientPort->getRoot()       ); 
     216        serverPort->setBackground    (clientPort->getBackground() ); 
    215217        serverPort->assignForegrounds(clientPort->getForegrounds()); 
    216  
    217         serverPort->setTravMask  ( clientPort->getTravMask()   ); 
     218        serverPort->setTravMask      (clientPort->getTravMask()   ); 
    218219 
    219220        // calculate tile parameters 
     
    266267    serverWindow->frameInit(); 
    267268    action->setWindow( serverWindow ); 
    268     for(sv=0;sv<serverWindow->getPort().size();++sv) 
    269     { 
    270         ViewportPtr vp=serverWindow->getPort()[sv]; 
     269     
     270    for(sv = 0; sv < serverWindow->getPort().size(); ++sv) 
     271    { 
     272        ViewportPtr vp = serverWindow->getPort()[sv]; 
    271273        vp->render( action ); 
    272274 
     
    299301{ 
    300302    TileCameraDecoratorPtr deco; 
    301     ViewportPtr serverPort; 
    302     ViewportPtr clientPort; 
     303    ViewportRefPtr serverPort; 
     304    ViewportRefPtr clientPort; 
    303305    UInt32 sv,cv,regionStart; 
    304306    UInt32 vpWidth; 
     
    306308 
    307309    // duplicate viewports 
    308     for(cv=0,sv=0;cv<getPort().size();cv++
     310    for(cv = 0, sv = 0; cv < getPort().size(); ++cv
    309311    { 
    310312        clientPort = getPort()[cv]; 
     
    313315            // create new port 
    314316            //serverPort = StereoBufferViewport::create(); 
    315             serverPort = dynamic_cast<ViewportPtr>(clientPort->shallowCopy()); 
    316             deco=TileCameraDecorator::create(); 
     317            serverPort = boost::dynamic_pointer_cast<Viewport>( 
     318                clientPort->shallowCopy()); 
     319            deco       = TileCameraDecorator::create(); 
    317320 
    318321            serverWindow->addPort(serverPort); 
    319             serverPort->setCamera(deco); 
     322            serverPort  ->setCamera(deco); 
    320323        } 
    321324        else 
    322325        { 
    323326            serverPort = serverWindow->getPort()[sv]; 
    324             deco=dynamic_cast<TileCameraDecoratorPtr>(serverPort->getCamera()); 
    325             if(serverWindow->getPort()[sv]->getType() !=  
    326                clientPort->getType()) 
     327            deco       = dynamic_cast<TileCameraDecoratorPtr>( 
     328                serverPort->getCamera()); 
     329                 
     330            if(serverWindow->getPort()[sv]->getType() != clientPort->getType()) 
    327331            { 
    328332                // there is a viewport with the wrong type 
    329                 serverPort = dynamic_cast<ViewportPtr>(clientPort->shallowCopy()); 
     333                serverPort = boost::dynamic_pointer_cast<Viewport>( 
     334                    clientPort->shallowCopy()); 
    330335                serverWindow->replacePort(sv, serverPort);//[sv] = serverPort; 
    331                 serverPort->setCamera(deco); 
     336                serverPort  ->setCamera(deco); 
    332337            } 
    333338            else 
    334339            { 
    335                 deco=dynamic_cast<TileCameraDecoratorPtr>(serverPort->getCamera()); 
     340                deco = dynamic_cast<TileCameraDecoratorPtr>( 
     341                    serverPort->getCamera()); 
    336342            } 
    337343            //serverPort = serverWindow->getPort()[sv]; 
     
    340346 
    341347        // duplicate values 
    342         regionStart=cv * getServers().size() * 4 + id * 4; 
     348        regionStart = cv * getServers().size() * 4 + id * 4; 
    343349        serverPort->setSize(  
    344350            Real32(getRegion()[regionStart+0] + clientPort->getPixelLeft()), 
     
    347353            Real32(getRegion()[regionStart+3] + clientPort->getPixelBottom())); 
    348354 
    349         serverPort->setRoot      ( clientPort->getRoot()       ); 
    350         serverPort->setBackground( clientPort->getBackground() ); 
    351  
     355        serverPort->setRoot          (clientPort->getRoot()       ); 
     356        serverPort->setBackground    (clientPort->getBackground() ); 
    352357        serverPort->assignForegrounds(clientPort->getForegrounds()); 
    353  
    354         serverPort->setTravMask  ( clientPort->getTravMask()   ); 
     358        serverPort->setTravMask      (clientPort->getTravMask()   ); 
    355359 
    356360        // calculate tile parameters 
    357         vpWidth =clientPort->getPixelWidth(); 
    358         vpHeight=clientPort->getPixelHeight(); 
     361        vpWidth = clientPort->getPixelWidth(); 
     362        vpHeight = clientPort->getPixelHeight(); 
    359363 
    360364        deco->setFullWidth ( vpWidth ); 
     
    403407    serverWindow->frameInit(); 
    404408    action->setWindow( serverWindow ); 
    405     for(sv=0;sv<serverWindow->getPort().size();++sv) 
    406     { 
    407         ViewportPtr vp=serverWindow->getPort()[sv]; 
     409     
     410    for(sv = 0; sv < serverWindow->getPort().size(); ++sv) 
     411    { 
     412        ViewportPtr vp = serverWindow->getPort()[sv]; 
    408413        vp->render( action ); 
    409414