DART  6.6.2
ImGuiHandler.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2018, The DART development contributors
3  * All rights reserved.
4  *
5  * The list of contributors can be found at:
6  * https://github.com/dartsim/dart/blob/master/LICENSE
7  *
8  * This file is provided under the following "BSD-style" License:
9  * Redistribution and use in source and binary forms, with or
10  * without modification, are permitted provided that the following
11  * conditions are met:
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/or other materials provided
17  * with the distribution.
18  * * This code incorporates portions of Open Dynamics Engine
19  * (Copyright (c) 2001-2004, Russell L. Smith. All rights
20  * reserved.) and portions of FCL (Copyright (c) 2011, Willow
21  * Garage, Inc. All rights reserved.), which were released under
22  * the same BSD license as below
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
25  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
26  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
27  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
29  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
32  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
33  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
35  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36  * POSSIBILITY OF SUCH DAMAGE.
37  */
38 
39 #ifndef DART_GUI_OSG_IMGUIHANDLER_HPP_
40 #define DART_GUI_OSG_IMGUIHANDLER_HPP_
41 
42 #include <array>
43 #include <memory>
44 #include <vector>
45 
46 #include <osg/GraphicsContext>
47 #include <osgGA/GUIActionAdapter>
48 #include <osgGA/GUIEventAdapter>
49 #include <osgGA/GUIEventHandler>
50 
51 namespace dart {
52 namespace gui {
53 namespace osg {
54 
55 class ImGuiWidget;
56 
57 class ImGuiHandler : public osgGA::GUIEventHandler
58 {
59 public:
61  ImGuiHandler();
62 
63  void init();
64 
65  void newFrame(::osg::RenderInfo& renderInfo);
66 
67  void render(::osg::RenderInfo& renderInfo);
68 
69  void setCameraCallbacks(::osg::Camera* camera);
70 
71  //----------------------------------------------------------------------------
73  //----------------------------------------------------------------------------
74 
76  bool hasWidget(const std::shared_ptr<ImGuiWidget>& widget) const;
77 
79  void addWidget(const std::shared_ptr<ImGuiWidget>& widget,
80  bool visible = true);
81 
83  void removeWidget(const std::shared_ptr<ImGuiWidget>& widget);
84 
86  void removeAllWidget();
87 
89 
90  // Documentation inherited.
91  bool handle(const osgGA::GUIEventAdapter& eventAdapter,
92  osgGA::GUIActionAdapter& actionAdapter,
93  ::osg::Object* object,
94  ::osg::NodeVisitor* nodeVisitor) override;
95 
96 protected:
97  double mTime;
98 
100  std::array<bool, 3> mMousePressed;
101 
102  float mMouseWheel;
103 
104  GLuint mFontTexture;
105 
106  std::vector<std::shared_ptr<ImGuiWidget>> mWidgets;
107 };
108 
109 } // namespace osg
110 } // namespace gui
111 } // namespace dart
112 
113 #endif // DART_GUI_OSG_IMGUIHANDLER_HPP_
Definition: ImGuiHandler.hpp:58
bool handle(const osgGA::GUIEventAdapter &eventAdapter, osgGA::GUIActionAdapter &actionAdapter, ::osg::Object *object, ::osg::NodeVisitor *nodeVisitor) override
Definition: ImGuiHandler.cpp:276
void render(::osg::RenderInfo &renderInfo)
Definition: ImGuiHandler.cpp:385
void init()
Definition: ImGuiHandler.cpp:182
ImGuiHandler()
Constructor.
Definition: ImGuiHandler.cpp:172
GLuint mFontTexture
Definition: ImGuiHandler.hpp:104
void setCameraCallbacks(::osg::Camera *camera)
Definition: ImGuiHandler.cpp:220
double mTime
Definition: ImGuiHandler.hpp:97
void addWidget(const std::shared_ptr< ImGuiWidget > &widget, bool visible=true)
Adds given Widget to this Viewer.
Definition: ImGuiHandler.cpp:239
void removeAllWidget()
Removes all the widgets in this Viewer.
Definition: ImGuiHandler.cpp:270
bool hasWidget(const std::shared_ptr< ImGuiWidget > &widget) const
Returns true if this Viewer contains given widget.
Definition: ImGuiHandler.cpp:233
std::array< bool, 3 > mMousePressed
Mouse buttons: left, right, middle.
Definition: ImGuiHandler.hpp:100
float mMouseWheel
Definition: ImGuiHandler.hpp:102
void removeWidget(const std::shared_ptr< ImGuiWidget > &widget)
Removes given Widget from this Viewer.
Definition: ImGuiHandler.cpp:255
std::vector< std::shared_ptr< ImGuiWidget > > mWidgets
Definition: ImGuiHandler.hpp:106
void newFrame(::osg::RenderInfo &renderInfo)
Definition: ImGuiHandler.cpp:357
Definition: BulletCollisionDetector.cpp:63