diff --git a/applications/osgviewer/osgviewer.cpp b/applications/osgviewer/osgviewer.cpp index c5968fdb4..1c25ad1cc 100644 --- a/applications/osgviewer/osgviewer.cpp +++ b/applications/osgviewer/osgviewer.cpp @@ -17,8 +17,6 @@ #include #include -#include -#include #include #include diff --git a/examples/osgdistortion/osgdistortion.cpp b/examples/osgdistortion/osgdistortion.cpp index e8e343088..fa53511ce 100644 --- a/examples/osgdistortion/osgdistortion.cpp +++ b/examples/osgdistortion/osgdistortion.cpp @@ -28,8 +28,7 @@ #include #include -#include -#include +#include using namespace osg; diff --git a/examples/osgsimulation/osgsimulation.cpp b/examples/osgsimulation/osgsimulation.cpp index d3dc27325..13d4f96ca 100644 --- a/examples/osgsimulation/osgsimulation.cpp +++ b/examples/osgsimulation/osgsimulation.cpp @@ -17,8 +17,6 @@ #endif // WIN32 #include -#include -#include #include #include diff --git a/examples/osgstaticviewer/osgstaticviewer.cpp b/examples/osgstaticviewer/osgstaticviewer.cpp index aef67f64c..3b64cf9b8 100644 --- a/examples/osgstaticviewer/osgstaticviewer.cpp +++ b/examples/osgstaticviewer/osgstaticviewer.cpp @@ -17,8 +17,6 @@ #include #include -#include -#include #include #include diff --git a/include/osgViewer/HelpHandler b/include/osgViewer/HelpHandler deleted file mode 100644 index 1aba3a94f..000000000 --- a/include/osgViewer/HelpHandler +++ /dev/null @@ -1,66 +0,0 @@ -/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield - * - * This library is open source and may be redistributed and/or modified under - * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or - * (at your option) any later version. The full license is in LICENSE file - * included with this distribution, and on the openscenegraph.org website. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * OpenSceneGraph Public License for more details. -*/ - -#ifndef OSGVIEWER_HELPHANDLER -#define OSGVIEWER_HELPHANDLER 1 - -#include - -#include - -namespace osgViewer { - -class OSGVIEWER_EXPORT HelpHandler : public osgGA::GUIEventHandler -{ - public: - - HelpHandler(osg::ApplicationUsage* au=0); - - void setApplicationUsage(osg::ApplicationUsage* au) { _applicationUsage = au; } - osg::ApplicationUsage* getApplicationUsage() { return _applicationUsage.get(); } - const osg::ApplicationUsage* getApplicationUsage() const { return _applicationUsage.get(); } - - void setKeyEventTogglesOnScreenHelp(int key) { _keyEventTogglesOnScreenHelp = key; } - int getKeyEventTogglesOnScreenHelp() const { return _keyEventTogglesOnScreenHelp; } - - void reset(); - - osg::Camera* getCamera() { return _camera.get(); } - const osg::Camera* getCamera() const { return _camera.get(); } - - bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); - - /** Get the keyboard and mouse usage of this manipulator.*/ - virtual void getUsage(osg::ApplicationUsage& usage) const; - - protected: - - void setUpHUDCamera(osgViewer::Viewer* viewer); - - void setUpScene(osgViewer::Viewer* viewer); - - osg::ref_ptr _applicationUsage; - - int _keyEventTogglesOnScreenHelp; - - bool _helpEnabled; - - bool _initialized; - osg::ref_ptr _camera; - osg::ref_ptr _switch; - -}; - -} - -#endif diff --git a/include/osgViewer/StatsHandler b/include/osgViewer/StatsHandler deleted file mode 100644 index 4b1d0231b..000000000 --- a/include/osgViewer/StatsHandler +++ /dev/null @@ -1,95 +0,0 @@ -/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield - * - * This library is open source and may be redistributed and/or modified under - * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or - * (at your option) any later version. The full license is in LICENSE file - * included with this distribution, and on the openscenegraph.org website. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * OpenSceneGraph Public License for more details. -*/ - -#ifndef OSGVIEWER_STATSHANDLER -#define OSGVIEWER_STATSHANDLER 1 - -#include -#include -#include - -namespace osgViewer { - -class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler -{ - public: - - StatsHandler(); - - enum StatsType - { - NO_STATS = 0, - FRAME_RATE = 1, - VIEWER_STATS = 2, - SCENE_STATS = 3, - LAST = 4 - }; - - void setKeyEventTogglesOnScreenStats(int key) { _keyEventTogglesOnScreenStats = key; } - int getKeyEventTogglesOnScreenStats() const { return _keyEventTogglesOnScreenStats; } - - void setKeyEventPrintsOutStats(int key) { _keyEventPrintsOutStats = key; } - int getKeyEventPrintsOutStats() const { return _keyEventPrintsOutStats; } - - double getBlockMultiplier() const { return _blockMultiplier; } - - void reset(); - - osg::Camera* getCamera() { return _camera.get(); } - const osg::Camera* getCamera() const { return _camera.get(); } - - virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); - - /** Get the keyboard and mouse usage of this manipulator.*/ - virtual void getUsage(osg::ApplicationUsage& usage) const; - - protected: - - void setUpHUDCamera(osgViewer::Viewer* viewer); - - osg::Geometry* createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks); - - osg::Geometry* createFrameMarkers(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks); - - osg::Geometry* createTick(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numTicks); - - osg::Node* createCameraStats(const std::string& font, osg::Vec3& pos, float startBlocks, bool aquireGPUStats, float characterSize, osg::Stats* viewerStats, osg::Camera* camera); - - void setUpScene(osgViewer::Viewer* viewer); - - void updateThreadingModelText(); - - int _keyEventTogglesOnScreenStats; - int _keyEventPrintsOutStats; - - int _statsType; - - bool _initialized; - osg::ref_ptr _camera; - - osg::ref_ptr _switch; - - osgViewer::Viewer::ThreadingModel _threadingModel; - osg::ref_ptr _threadingModelText; - - unsigned int _frameRateChildNum; - unsigned int _viewerChildNum; - unsigned int _sceneChildNum; - unsigned int _numBlocks; - double _blockMultiplier; - -}; - -} - -#endif diff --git a/include/osgViewer/ViewerEventHandlers b/include/osgViewer/ViewerEventHandlers index 81d6493f4..a17c8f737 100644 --- a/include/osgViewer/ViewerEventHandlers +++ b/include/osgViewer/ViewerEventHandlers @@ -11,18 +11,132 @@ * OpenSceneGraph Public License for more details. */ -#ifndef OSGVIEWER_VIEWEREVENTHANDLER -#define OSGVIEWER_VIEWEREVENTHANDLER 1 +#ifndef OSGVIEWER_VIEWEREVENTHANDLERS +#define OSGVIEWER_VIEWEREVENTHANDLERS 1 #include +#include #include + #include +#include namespace osgViewer { -/** -Handler allowing to change the screen resolution (in windowed mode) and toggle between fullscreen and windowed mode. -*/ +/** Event handler for adding on screen help to Viewers.*/ +class OSGVIEWER_EXPORT HelpHandler : public osgGA::GUIEventHandler +{ + public: + + HelpHandler(osg::ApplicationUsage* au=0); + + void setApplicationUsage(osg::ApplicationUsage* au) { _applicationUsage = au; } + osg::ApplicationUsage* getApplicationUsage() { return _applicationUsage.get(); } + const osg::ApplicationUsage* getApplicationUsage() const { return _applicationUsage.get(); } + + void setKeyEventTogglesOnScreenHelp(int key) { _keyEventTogglesOnScreenHelp = key; } + int getKeyEventTogglesOnScreenHelp() const { return _keyEventTogglesOnScreenHelp; } + + void reset(); + + osg::Camera* getCamera() { return _camera.get(); } + const osg::Camera* getCamera() const { return _camera.get(); } + + bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); + + /** Get the keyboard and mouse usage of this manipulator.*/ + virtual void getUsage(osg::ApplicationUsage& usage) const; + + protected: + + void setUpHUDCamera(osgViewer::Viewer* viewer); + + void setUpScene(osgViewer::Viewer* viewer); + + osg::ref_ptr _applicationUsage; + + int _keyEventTogglesOnScreenHelp; + + bool _helpEnabled; + + bool _initialized; + osg::ref_ptr _camera; + osg::ref_ptr _switch; + +}; + +/** Event handler for adding on screen stats reporting to Viewers.*/ +class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler +{ + public: + + StatsHandler(); + + enum StatsType + { + NO_STATS = 0, + FRAME_RATE = 1, + VIEWER_STATS = 2, + SCENE_STATS = 3, + LAST = 4 + }; + + void setKeyEventTogglesOnScreenStats(int key) { _keyEventTogglesOnScreenStats = key; } + int getKeyEventTogglesOnScreenStats() const { return _keyEventTogglesOnScreenStats; } + + void setKeyEventPrintsOutStats(int key) { _keyEventPrintsOutStats = key; } + int getKeyEventPrintsOutStats() const { return _keyEventPrintsOutStats; } + + double getBlockMultiplier() const { return _blockMultiplier; } + + void reset(); + + osg::Camera* getCamera() { return _camera.get(); } + const osg::Camera* getCamera() const { return _camera.get(); } + + virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); + + /** Get the keyboard and mouse usage of this manipulator.*/ + virtual void getUsage(osg::ApplicationUsage& usage) const; + + protected: + + void setUpHUDCamera(osgViewer::Viewer* viewer); + + osg::Geometry* createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks); + + osg::Geometry* createFrameMarkers(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks); + + osg::Geometry* createTick(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numTicks); + + osg::Node* createCameraStats(const std::string& font, osg::Vec3& pos, float startBlocks, bool aquireGPUStats, float characterSize, osg::Stats* viewerStats, osg::Camera* camera); + + void setUpScene(osgViewer::Viewer* viewer); + + void updateThreadingModelText(); + + int _keyEventTogglesOnScreenStats; + int _keyEventPrintsOutStats; + + int _statsType; + + bool _initialized; + osg::ref_ptr _camera; + + osg::ref_ptr _switch; + + osgViewer::Viewer::ThreadingModel _threadingModel; + osg::ref_ptr _threadingModelText; + + unsigned int _frameRateChildNum; + unsigned int _viewerChildNum; + unsigned int _sceneChildNum; + unsigned int _numBlocks; + double _blockMultiplier; + +}; + +/** Event handler allowing to change the screen resolution (in windowed mode) and toggle between fullscreen and windowed mode. */ class OSGVIEWER_EXPORT WindowSizeHandler : public osgGA::GUIEventHandler { public: @@ -65,9 +179,7 @@ protected: int _currentResolutionIndex; }; -/** -Handler allowing to change the viewer threading model -*/ +/** Event handler allowing to change the viewer threading model */ class OSGVIEWER_EXPORT ThreadingHandler : public osgGA::GUIEventHandler { public: @@ -104,7 +216,7 @@ protected: }; /** -Handler allowing the user to record the animation "path" of a camera. In it's current +Event handler allowing the user to record the animation "path" of a camera. In it's current implementation, this handler cannot guarantee the final view matrix is correct; it is conceivable that the matrix may be one frame off. Eh--not a big deal! :) TODO: Find the good filename. diff --git a/src/osgViewer/CMakeLists.txt b/src/osgViewer/CMakeLists.txt index 5330b4041..4b23661a1 100644 --- a/src/osgViewer/CMakeLists.txt +++ b/src/osgViewer/CMakeLists.txt @@ -12,10 +12,7 @@ SET(LIB_PUBLIC_HEADERS ${HEADER_PATH}/CompositeViewer ${HEADER_PATH}/Export ${HEADER_PATH}/GraphicsWindow - ${HEADER_PATH}/HelpHandler ${HEADER_PATH}/Scene - ${HEADER_PATH}/SimpleViewer - ${HEADER_PATH}/StatsHandler ${HEADER_PATH}/Version ${HEADER_PATH}/View ${HEADER_PATH}/Viewer @@ -25,7 +22,6 @@ SET(LIB_PUBLIC_HEADERS SET(LIB_COMMON_FILES CompositeViewer.cpp Scene.cpp - SimpleViewer.cpp StatsHandler.cpp HelpHandler.cpp Version.cpp