Commit 6bb38bbd authored by lm's avatar lm

Removed support for very outdated Qt3, relying only on Qt4.0 now

parent bccbbb70
...@@ -19,22 +19,13 @@ ...@@ -19,22 +19,13 @@
#include "QOSGWidget.h" #include "QOSGWidget.h"
QOSGWidget::QOSGWidget( QWidget * parent, const char * name, WindowFlags f, bool overrideTraits): QOSGWidget::QOSGWidget( QWidget * parent, const char * name, WindowFlags f, bool overrideTraits):
#if USE_QT4
QWidget(parent, f), _overrideTraits (overrideTraits) QWidget(parent, f), _overrideTraits (overrideTraits)
#else
QWidget(parent, name, f), _overrideTraits (overrideTraits)
#endif
{ {
createContext(); createContext();
#if USE_QT4
setAttribute(Qt::WA_PaintOnScreen); setAttribute(Qt::WA_PaintOnScreen);
setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_NoSystemBackground);
setFocusPolicy(Qt::ClickFocus); setFocusPolicy(Qt::ClickFocus);
#else
setBackgroundMode(Qt::NoBackground);
#endif
} }
void QOSGWidget::createContext() void QOSGWidget::createContext()
...@@ -106,9 +97,7 @@ void QOSGWidget::destroyEvent(bool destroyWindow, bool destroySubWindows) ...@@ -106,9 +97,7 @@ void QOSGWidget::destroyEvent(bool destroyWindow, bool destroySubWindows)
void QOSGWidget::closeEvent( QCloseEvent * event ) void QOSGWidget::closeEvent( QCloseEvent * event )
{ {
#ifndef USE_QT4
event->accept(); event->accept();
#endif
_gw->getEventQueue()->closeWindow(); _gw->getEventQueue()->closeWindow();
} }
...@@ -123,20 +112,12 @@ void QOSGWidget::resizeEvent( QResizeEvent * event ) ...@@ -123,20 +112,12 @@ void QOSGWidget::resizeEvent( QResizeEvent * event )
void QOSGWidget::keyPressEvent( QKeyEvent* event ) void QOSGWidget::keyPressEvent( QKeyEvent* event )
{ {
#if USE_QT4
_gw->getEventQueue()->keyPress( (osgGA::GUIEventAdapter::KeySymbol) *(event->text().toAscii().data() ) ); _gw->getEventQueue()->keyPress( (osgGA::GUIEventAdapter::KeySymbol) *(event->text().toAscii().data() ) );
#else
_gw->getEventQueue()->keyPress( (osgGA::GUIEventAdapter::KeySymbol) event->ascii() );
#endif
} }
void QOSGWidget::keyReleaseEvent( QKeyEvent* event ) void QOSGWidget::keyReleaseEvent( QKeyEvent* event )
{ {
#if USE_QT4
int c = *event->text().toAscii().data(); int c = *event->text().toAscii().data();
#else
int c = event->ascii();
#endif
_gw->getEventQueue()->keyRelease( (osgGA::GUIEventAdapter::KeySymbol) (c) ); _gw->getEventQueue()->keyRelease( (osgGA::GUIEventAdapter::KeySymbol) (c) );
} }
...@@ -229,8 +210,6 @@ void CompositeViewerQOSG::RemoveView() ...@@ -229,8 +210,6 @@ void CompositeViewerQOSG::RemoveView()
Tile(); Tile();
} }
#if USE_QT4
// we use this wrapper for CompositeViewer ONLY because of the timer // we use this wrapper for CompositeViewer ONLY because of the timer
// NOTE: this is a workaround because we're not using QT's moc precompiler here. // NOTE: this is a workaround because we're not using QT's moc precompiler here.
// //
...@@ -259,7 +238,6 @@ class QViewerTimer : public QWidget ...@@ -259,7 +238,6 @@ class QViewerTimer : public QWidget
QTimer _timer; QTimer _timer;
}; };
#endif
void setupHandlers(osgViewer::View * viewer) void setupHandlers(osgViewer::View * viewer)
{ {
......
...@@ -19,31 +19,17 @@ ...@@ -19,31 +19,17 @@
#include <osg/Config> #include <osg/Config>
#if defined(_MSC_VER) && defined(OSG_DISABLE_MSVC_WARNINGS) #if defined(_MSC_VER) && defined(OSG_DISABLE_MSVC_WARNINGS)
// disable warning "'QtConcurrent::BlockSizeManager' : assignment operator could not be generated" // disable warning "'QtConcurrent::BlockSizeManager' : assignment operator could not be generated"
#pragma warning( disable : 4512 ) #pragma warning( disable : 4512 )
#endif
#if QT_VERSION >= 400
#include <QtCore/QString>
#include <QtCore/QTimer>
#include <QtGui/QKeyEvent>
#include <QtGui/QApplication>
#include <QtGui/QtGui>
#include <QtGui/QWidget>
using Qt::WindowFlags;
#else
class QWidget;
#include <qtimer.h>
#include <qgl.h>
#include <qapplication.h>
#define WindowFlags WFlags
#endif #endif
#include <QtCore/QString>
#include <QtCore/QTimer>
#include <QtGui/QKeyEvent>
#include <QtGui/QApplication>
#include <QtGui/QtGui>
#include <QtGui/QWidget>
using Qt::WindowFlags;
#include <osgViewer/Viewer> #include <osgViewer/Viewer>
#include <osgViewer/CompositeViewer> #include <osgViewer/CompositeViewer>
...@@ -85,119 +71,119 @@ typedef osgViewer::GraphicsWindowX11::WindowData WindowData; ...@@ -85,119 +71,119 @@ typedef osgViewer::GraphicsWindowX11::WindowData WindowData;
class QOSGWidget : public QWidget class QOSGWidget : public QWidget
{ {
public: public:
QOSGWidget( QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, bool overrideTraits = false); QOSGWidget( QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, bool overrideTraits = false);
virtual ~QOSGWidget() {} virtual ~QOSGWidget() {}
osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); } osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); }
const osgViewer::GraphicsWindow* getGraphicsWindow() const { return _gw.get(); } const osgViewer::GraphicsWindow* getGraphicsWindow() const { return _gw.get(); }
protected: protected:
void init(); void init();
void createContext(); void createContext();
// The GraphincsWindowWin32 implementation already takes care of message handling. // The GraphincsWindowWin32 implementation already takes care of message handling.
// We don't want to relay these on Windows, it will just cause duplicate messages // We don't want to relay these on Windows, it will just cause duplicate messages
// with further problems downstream (i.e. not being able to throw the trackball // with further problems downstream (i.e. not being able to throw the trackball
#ifndef WIN32 #ifndef WIN32
virtual void mouseDoubleClickEvent ( QMouseEvent * event ); virtual void mouseDoubleClickEvent ( QMouseEvent * event );
virtual void closeEvent( QCloseEvent * event ); virtual void closeEvent( QCloseEvent * event );
virtual void destroyEvent( bool destroyWindow = true, bool destroySubWindows = true); virtual void destroyEvent( bool destroyWindow = true, bool destroySubWindows = true);
virtual void resizeEvent( QResizeEvent * event ); virtual void resizeEvent( QResizeEvent * event );
virtual void keyPressEvent( QKeyEvent* event ); virtual void keyPressEvent( QKeyEvent* event );
virtual void keyReleaseEvent( QKeyEvent* event ); virtual void keyReleaseEvent( QKeyEvent* event );
virtual void mousePressEvent( QMouseEvent* event ); virtual void mousePressEvent( QMouseEvent* event );
virtual void mouseReleaseEvent( QMouseEvent* event ); virtual void mouseReleaseEvent( QMouseEvent* event );
virtual void mouseMoveEvent( QMouseEvent* event ); virtual void mouseMoveEvent( QMouseEvent* event );
#endif #endif
osg::ref_ptr<osgViewer::GraphicsWindow> _gw; osg::ref_ptr<osgViewer::GraphicsWindow> _gw;
bool _overrideTraits; bool _overrideTraits;
}; };
class ViewerQOSG : public osgViewer::Viewer, public QOSGWidget class ViewerQOSG : public osgViewer::Viewer, public QOSGWidget
{ {
public: public:
ViewerQOSG(QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, int fps = 20): ViewerQOSG(QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, int fps = 20):
QOSGWidget( parent, name, f ) QOSGWidget( parent, name, f )
{ {
setThreadingModel(osgViewer::Viewer::SingleThreaded); setThreadingModel(osgViewer::Viewer::SingleThreaded);
connect(&_timer, SIGNAL(timeout()), this, SLOT(update())); connect(&_timer, SIGNAL(timeout()), this, SLOT(update()));
_timer.start(1000.0f/fps); _timer.start(1000.0f/fps);
} }
void updateCamera() void updateCamera()
{ {
getCamera()->setViewport(new osg::Viewport(0,0,width(),height())); getCamera()->setViewport(new osg::Viewport(0,0,width(),height()));
getCamera()->setProjectionMatrixAsPerspective(30.0f, 1.0f , static_cast<double>(width())/static_cast<double>(height()), 10000.0f); getCamera()->setProjectionMatrixAsPerspective(30.0f, 1.0f , static_cast<double>(width())/static_cast<double>(height()), 10000.0f);
getCamera()->setGraphicsContext(getGraphicsWindow()); getCamera()->setGraphicsContext(getGraphicsWindow());
} }
virtual void paintEvent( QPaintEvent * event ) { frame(); } virtual void paintEvent( QPaintEvent * event ) { frame(); }
protected: protected:
QTimer _timer; QTimer _timer;
}; };
class CompositeViewerQOSG : public osgViewer::CompositeViewer, public QOSGWidget class CompositeViewerQOSG : public osgViewer::CompositeViewer, public QOSGWidget
{ {
public: public:
CompositeViewerQOSG(QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, int fps = 20) CompositeViewerQOSG(QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, int fps = 20)
: QOSGWidget( parent, name, f ) : QOSGWidget( parent, name, f )
{ {
setThreadingModel(osgViewer::CompositeViewer::SingleThreaded); setThreadingModel(osgViewer::CompositeViewer::SingleThreaded);
connect(&_timer, SIGNAL(timeout()), this, SLOT(repaint())); connect(&_timer, SIGNAL(timeout()), this, SLOT(repaint()));
// The composite viewer needs at least one view to work // The composite viewer needs at least one view to work
// Create a dummy view with a zero sized viewport and no // Create a dummy view with a zero sized viewport and no
// scene to keep the viewer alive. // scene to keep the viewer alive.
osgViewer::View * pView = new osgViewer::View; osgViewer::View * pView = new osgViewer::View;
pView->getCamera()->setGraphicsContext( getGraphicsWindow() ); pView->getCamera()->setGraphicsContext( getGraphicsWindow() );
pView->getCamera()->setViewport( 0, 0, 0, 0 ); pView->getCamera()->setViewport( 0, 0, 0, 0 );
addView( pView ); addView( pView );
// Clear the viewer of removed views // Clear the viewer of removed views
getGraphicsWindow()->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); getGraphicsWindow()->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
getGraphicsWindow()->setClearColor( osg::Vec4( 0.08, 0.08, 0.5, 1.0 ) ); getGraphicsWindow()->setClearColor( osg::Vec4( 0.08, 0.08, 0.5, 1.0 ) );
// The app would hang on exit when using start(1). Behaves better with 10 // The app would hang on exit when using start(1). Behaves better with 10
// like the non-composite viewer. Was this just a typo? // like the non-composite viewer. Was this just a typo?
_timer.start(1000.0f/fps); _timer.start(1000.0f/fps);
} }
virtual void paintEvent( QPaintEvent * event ) { frame(); } virtual void paintEvent( QPaintEvent * event ) { frame(); }
void keyPressEvent( QKeyEvent* event ) void keyPressEvent( QKeyEvent* event )
{
if ( event->text() == "a" )
{ {
if ( event->text() == "a" )
{
AddView( _scene.get() ); AddView( _scene.get() );
} }
if ( event->text() == "r" ) if ( event->text() == "r" )
{ {
RemoveView(); RemoveView();
}
QOSGWidget::keyPressEvent( event );
} }
QOSGWidget::keyPressEvent( event );
}
void AddView( osg::Node * scene ); void AddView( osg::Node * scene );
void RemoveView(); void RemoveView();
void Tile(); void Tile();
osg::ref_ptr< osg::Node > _scene; osg::ref_ptr< osg::Node > _scene;
protected: protected:
QTimer _timer; QTimer _timer;
}; };
void setupHandlers(osgViewer::View * viewer); void setupHandlers(osgViewer::View * viewer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment