Show
Ignore:
Timestamp:
06/02/07 17:31:21 (7 years ago)
Author:
robert
Message:

Added osgViewer::GraphicsWindowEmbedded? and ported GLUT, SDL and WX examples across from SimpleViewer? to Viewer.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgviewerWX/osgviewerWX.cpp

    r6813 r6815  
    1111 
    1212#include "osgviewerWX.h" 
     13 
     14 
     15#include <osgViewer/StatsHandler> 
    1316#include <osgGA/TrackballManipulator> 
    1417#include <osgDB/ReadFile> 
     
    2528    // create osg canvas 
    2629    //    - initialize 
    27     SimpleViewerWX *viewerWindow = new SimpleViewerWX(frame, wxID_ANY, wxDefaultPosition, 
    28         wxSize(200, 200), wxSUNKEN_BORDER); 
     30     
     31 
     32    int width = 800; 
     33    int height = 600; 
     34 
     35    GraphicsWindowWX* gw = new GraphicsWindowWX(frame, wxID_ANY, wxDefaultPosition, 
     36                                                wxSize(width, height), wxSUNKEN_BORDER); 
     37     
     38     
     39    osgViewer::Viewer *viewer = new osgViewer::Viewer; 
     40    viewer->getCamera()->setGraphicsContext(gw); 
     41    viewer->getCamera()->setViewport(0,0,width,height); 
     42    viewer->addEventHandler(new osgViewer::StatsHandler); 
     43    viewer->setThreadingModel(osgViewer::Viewer::SingleThreaded); 
    2944         
    3045    // load the scene. 
     
    3449        return false; 
    3550    } 
    36     viewerWindow->setSceneData(loadedModel.get()); 
    37     viewerWindow->setCameraManipulator(new osgGA::TrackballManipulator); 
    38  
    39     frame->SetSimpleViewer(viewerWindow); 
     51     
     52    viewer->setSceneData(loadedModel.get()); 
     53    viewer->setCameraManipulator(new osgGA::TrackballManipulator); 
     54 
     55    frame->SetViewer(viewer); 
    4056 
    4157    /* Show the frame */ 
     
    5672    : wxFrame(frame, wxID_ANY, title, pos, size, style) 
    5773{ 
    58     _viewerWindow = NULL; 
    59 } 
    60  
    61 void MainFrame::SetSimpleViewer(SimpleViewerWX *viewer) 
    62 { 
    63     _viewerWindow = viewer; 
     74} 
     75 
     76void MainFrame::SetViewer(osgViewer::Viewer *viewer) 
     77{ 
     78    _viewer = viewer; 
    6479} 
    6580 
    6681void MainFrame::OnIdle(wxIdleEvent &event) 
    6782{ 
    68     _viewerWindow->render(); 
     83    _viewer->frame(); 
     84     
    6985    event.RequestMore(); 
    7086} 
     
    85101    // default cursor to standard 
    86102    _oldCursor = *wxSTANDARD_CURSOR; 
     103     
     104    _traits = new GraphicsContext::Traits; 
     105    _traits->x = pos.x; 
     106    _traits->y = pos.y; 
     107    _traits->width = size.x; 
     108    _traits->height = size.y; 
     109 
     110    init(); 
     111     
     112} 
     113 
     114void GraphicsWindowWX::init() 
     115{ 
     116    if (valid()) 
     117    { 
     118        setState( new osg::State ); 
     119        getState()->setGraphicsContext(this); 
     120 
     121        if (_traits.valid() && _traits->sharedContext) 
     122        { 
     123            getState()->setContextID( _traits->sharedContext->getState()->getContextID() ); 
     124            incrementContextIDUsageCount( getState()->getContextID() );    
     125        } 
     126        else 
     127        { 
     128            getState()->setContextID( osg::GraphicsContext::createNewContextID() ); 
     129        } 
     130    } 
    87131} 
    88132 
     
    108152    // update the window dimensions, in case the window has been resized. 
    109153    getEventQueue()->windowResize(0, 0, width, height); 
     154    resized(0,0,width,height); 
    110155} 
    111156 
     
    117162void GraphicsWindowWX::OnKeyDown(wxKeyEvent &event) 
    118163{ 
     164#if 1 
     165    int key = event.GetUnicodeKey(); 
     166#else 
    119167    int key = event.GetKeyCode(); 
    120     getEventQueue()->keyPress(key); 
     168#endif 
     169    getEventQueue()->keyPress(key);     
    121170 
    122171    // propagate event 
     
    126175void GraphicsWindowWX::OnKeyUp(wxKeyEvent &event) 
    127176{ 
     177#if 1 
     178    int key = event.GetUnicodeKey(); 
     179#else 
    128180    int key = event.GetKeyCode(); 
     181#endif 
    129182    getEventQueue()->keyRelease(key);     
    130183