Changeset 14043

Show
Ignore:
Timestamp:
09/19/14 12:35:23 (11 days ago)
Author:
robert
Message:

Moved widgets from VolumeEditorWidget? to TransferFunctionWidget?, and widget utilities into WidgetUtils?.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgPlugins/cfg/ReaderWriterCFG.cpp

    r13041 r14043  
    103103    osg::ref_ptr<osgViewer::View> _view = new osgViewer::View; 
    104104 
    105     for (int i = 0; i < (int)config->getNumberOfCameras(); i++) 
    106     { 
    107         cm = config->getCamera(i); 
     105    if (config->getNumberOfCameras()==1) 
     106    { 
     107        cm = config->getCamera(0); 
    108108        rs = cm->getRenderSurface(); 
    109         if (rs->getDrawableType() != osgProducer::RenderSurface::DrawableType_Window) 
    110             continue; 
     109        if (rs->getDrawableType() != osgProducer::RenderSurface::DrawableType_Window) return 0; 
    111110 
    112111        osg::ref_ptr<const osg::GraphicsContext::Traits> traits; 
     
    141140            OSG_INFO<<"  GraphicsWindow has been created successfully."<<std::endl; 
    142141 
    143             osg::ref_ptr<osg::Camera> camera = new osg::Camera; 
     142            osg::ref_ptr<osg::Camera> camera = _view->getCamera(); 
     143 
    144144            camera->setGraphicsContext(gc.get()); 
    145  
    146145 
    147146            int x,y; 
     
    154153            camera->setDrawBuffer(buffer); 
    155154            camera->setReadBuffer(buffer); 
    156  
    157             osg::Matrix projection(cm->getProjectionMatrix()); 
    158  
    159             osg::Matrix offset = osg::Matrix::identity(); 
    160             cm->setViewByMatrix(offset); 
    161             osg::Matrix view = osg::Matrix(cm->getPositionAndAttitudeMatrix()); 
    162  
    163             // setup projection from parent 
    164             osg::Matrix offsetProjection = osg::Matrix::inverse(_view->getCamera()->getProjectionMatrix()) * projection; 
    165             _view->addSlave(camera.get(), offsetProjection, view); 
     155            camera->setProjectionMatrix(osg::Matrixd(cm->getProjectionMatrix())); 
     156            camera->setViewMatrix(osg::Matrixd(cm->getPositionAndAttitudeMatrix())); 
    166157 
    167158            #if 0 
     
    180171 
    181172    } 
     173    else 
     174    { 
     175        for (int i = 0; i < (int)config->getNumberOfCameras(); i++) 
     176        { 
     177            cm = config->getCamera(i); 
     178            rs = cm->getRenderSurface(); 
     179            if (rs->getDrawableType() != osgProducer::RenderSurface::DrawableType_Window) 
     180                continue; 
     181 
     182            osg::ref_ptr<const osg::GraphicsContext::Traits> traits; 
     183            osg::ref_ptr<osg::GraphicsContext> gc; 
     184            if (surfaces.find(rs) != surfaces.end()) 
     185            { 
     186                gc = surfaces[rs]; 
     187                traits = gc.valid() ? gc->getTraits() : 0; 
     188            } 
     189            else 
     190            { 
     191                osg::GraphicsContext::Traits* newtraits = buildTrait(*rs); 
     192 
     193    #if 0 
     194                osg::GraphicsContext::ScreenIdentifier si; 
     195                si.readDISPLAY(); 
     196 
     197                if (si.displayNum>=0) newtraits->displayNum = si.displayNum; 
     198                if (si.screenNum>=0) newtraits->screenNum = si.screenNum; 
     199    #endif 
     200 
     201                gc = osg::GraphicsContext::createGraphicsContext(newtraits); 
     202 
     203                surfaces[rs] = gc.get(); 
     204                traits = gc.valid() ? gc->getTraits() : 0; 
     205            } 
     206 
     207            // std::cout << rs->getWindowName() << " " << rs->getWindowOriginX() << " " << rs->getWindowOriginY() << " " << rs->getWindowWidth() << " " << rs->getWindowHeight() << std::endl; 
     208 
     209            if (gc.valid()) 
     210            { 
     211                OSG_INFO<<"  GraphicsWindow has been created successfully."<<std::endl; 
     212 
     213                osg::ref_ptr<osg::Camera> camera = new osg::Camera; 
     214                camera->setGraphicsContext(gc.get()); 
     215 
     216 
     217                int x,y; 
     218                unsigned int width,height; 
     219                cm->applyLens(); 
     220                cm->getProjectionRectangle(x, y, width, height); 
     221                camera->setViewport(new osg::Viewport(x, y, width, height)); 
     222 
     223                GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT; 
     224                camera->setDrawBuffer(buffer); 
     225                camera->setReadBuffer(buffer); 
     226 
     227                osg::Matrix projection(cm->getProjectionMatrix()); 
     228 
     229                osg::Matrix offset = osg::Matrix::identity(); 
     230                cm->setViewByMatrix(offset); 
     231                osg::Matrix view = osg::Matrix(cm->getPositionAndAttitudeMatrix()); 
     232 
     233                // setup projection from parent 
     234                osg::Matrix offsetProjection = osg::Matrix::inverse(_view->getCamera()->getProjectionMatrix()) * projection; 
     235                _view->addSlave(camera.get(), offsetProjection, view); 
     236 
     237                #if 0 
     238                std::cout << "Matrix Projection " << projection << std::endl; 
     239                std::cout << "Matrix Projection master " << _view->getCamera()->getProjectionMatrix() << std::endl; 
     240                // will work only if it's a post multyply in the producer camera 
     241                std::cout << "Matrix View " << view << std::endl; 
     242                std::cout << _view->getCamera()->getProjectionMatrix() * offsetProjection << std::endl; 
     243                #endif 
     244            } 
     245            else 
     246            { 
     247                OSG_INFO<<"  GraphicsWindow has not been created successfully."<<std::endl; 
     248                return 0; 
     249            } 
     250        } 
     251    } 
    182252 
    183253    // std::cout << "done" << std::endl;