2 * Copyright (C) 2009 Cedric Pinson <mornifle@plopbyte.net>
4 * This library is open source and may be redistributed and/or modified under
5 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
6 * (at your option) any later version. The full license is in LICENSE file
7 * included with this distribution, and on the openscenegraph.org website.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * OpenSceneGraph Public License for more details.
15#ifndef OSGANIMATION_STATSHANDLER_H
16#define OSGANIMATION_STATSHANDLER_H
18#include <osgAnimation/Timeline>
19#include <osgGA/GUIEventHandler>
20#include <osgViewer/ViewerBase>
21#include <osgViewer/Viewer>
22#include <osgText/Text>
31 osg::ref_ptr<osg::Group> _group;
32 osg::ref_ptr<osg::Geode> _label;
33 osg::ref_ptr<osg::MatrixTransform> _graph;
34 osg::ref_ptr<osgText::Text> _textLabel;
36 void init(osg::Stats* stats, const std::string& name, const osg::Vec3& pos, float width, float heigh, const osg::Vec4& color);
37 void setPosition(const osg::Vec3& pos);
38 void setAlpha(float v);
43/** Event handler for adding on screen stats reporting to Viewers.*/
44 class OSGANIMATION_EXPORT StatsHandler : public osgGA::GUIEventHandler
57 void setKeyEventTogglesOnScreenStats(int key) { _keyEventTogglesOnScreenStats = key; }
58 int getKeyEventTogglesOnScreenStats() const { return _keyEventTogglesOnScreenStats; }
60 void setKeyEventPrintsOutStats(int key) { _keyEventPrintsOutStats = key; }
61 int getKeyEventPrintsOutStats() const { return _keyEventPrintsOutStats; }
63 double getBlockMultiplier() const { return _blockMultiplier; }
67 osg::Camera* getCamera() { return _camera.get(); }
68 const osg::Camera* getCamera() const { return _camera.get(); }
70 virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa);
72 /** Get the keyboard and mouse usage of this manipulator.*/
73 virtual void getUsage(osg::ApplicationUsage& usage) const;
77 void setUpHUDCamera(osgViewer::ViewerBase* viewer);
79 osg::Geometry* createBackgroundRectangle(const osg::Vec3& pos, const float width, const float height, osg::Vec4& color);
81 osg::Geometry* createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks);
83 osg::Geometry* createFrameMarkers(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks);
85 osg::Geometry* createTick(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numTicks);
87 osg::Node* createCameraTimeStats(const std::string& font, osg::Vec3& pos, float startBlocks, bool acquireGPUStats, float characterSize, osg::Stats* viewerStats, osg::Camera* camera);
89 void setUpScene(osgViewer::Viewer* viewer);
91 int _keyEventTogglesOnScreenStats;
92 int _keyEventPrintsOutStats;
97 osg::ref_ptr<osg::Camera> _camera;
99 osg::ref_ptr<osg::Switch> _switch;
100 osg::ref_ptr<osg::Group> _group;
102 unsigned int _frameRateChildNum;
103 unsigned int _numBlocks;
104 double _blockMultiplier;
109// std::map<std::string, StatAction > _actions;