1 /*
2 * Copyright (c) 2011-2021, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33 #include <dart/dart.hpp>
34 #include <dart/gui/osg/osg.hpp>
35 #include <pybind11/eigen.h>
36 #include <pybind11/pybind11.h>
37
38 PYBIND11_DECLARE_HOLDER_TYPE(T, ::osg::ref_ptr<T>, true);
39
40 namespace py = pybind11;
41
42 namespace dart {
43 namespace python {
44
ImGuiHandler(py::module & m)45 void ImGuiHandler(py::module& m)
46 {
47 ::pybind11::class_<
48 dart::gui::osg::ImGuiHandler,
49 osg::ref_ptr<dart::gui::osg::ImGuiHandler> >(m, "ImGuiHandler")
50 .def(::pybind11::init<>())
51 .def(
52 "newFrame",
53 +[](dart::gui::osg::ImGuiHandler* self, osg::RenderInfo& renderInfo) {
54 self->newFrame(renderInfo);
55 },
56 ::pybind11::arg("renderInfo"))
57 .def(
58 "render",
59 +[](dart::gui::osg::ImGuiHandler* self, osg::RenderInfo& renderInfo) {
60 self->render(renderInfo);
61 },
62 ::pybind11::arg("renderInfo"))
63 .def(
64 "setCameraCallbacks",
65 +[](dart::gui::osg::ImGuiHandler* self, osg::Camera* camera) {
66 self->setCameraCallbacks(camera);
67 },
68 ::pybind11::arg("camera"))
69 .def(
70 "hasWidget",
71 +[](const dart::gui::osg::ImGuiHandler* self,
72 const std::shared_ptr<dart::gui::osg::ImGuiWidget>& widget)
73 -> bool { return self->hasWidget(widget); },
74 ::pybind11::arg("widget"))
75 .def(
76 "addWidget",
77 +[](dart::gui::osg::ImGuiHandler* self,
78 const std::shared_ptr<dart::gui::osg::ImGuiWidget>& widget) {
79 self->addWidget(widget);
80 },
81 ::pybind11::arg("widget"))
82 .def(
83 "addWidget",
84 +[](dart::gui::osg::ImGuiHandler* self,
85 const std::shared_ptr<dart::gui::osg::ImGuiWidget>& widget,
86 bool visible) { self->addWidget(widget, visible); },
87 ::pybind11::arg("widget"),
88 ::pybind11::arg("visible"))
89 .def(
90 "removeWidget",
91 +[](dart::gui::osg::ImGuiHandler* self,
92 const std::shared_ptr<dart::gui::osg::ImGuiWidget>& widget) {
93 self->removeWidget(widget);
94 },
95 ::pybind11::arg("widget"))
96 .def(
97 "removeAllWidget",
98 +[](dart::gui::osg::ImGuiHandler* self) { self->removeAllWidget(); })
99 .def(
100 "handle",
101 +[](dart::gui::osg::ImGuiHandler* self,
102 const osgGA::GUIEventAdapter& eventAdapter,
103 osgGA::GUIActionAdapter& actionAdapter,
104 osg::Object* object,
105 osg::NodeVisitor* nodeVisitor) -> bool {
106 return self->handle(
107 eventAdapter, actionAdapter, object, nodeVisitor);
108 },
109 ::pybind11::arg("eventAdapter"),
110 ::pybind11::arg("actionAdapter"),
111 ::pybind11::arg("object"),
112 ::pybind11::arg("nodeVisitor"));
113 }
114
115 } // namespace python
116 } // namespace dart
117