1 #include <boost/python.hpp>
3 #include <OpenSG/OSGConfig.h>
4 #include <OpenSG/OSGBaseFunctions.h>
6 #include <OpenSG/OSGGraphOp.h>
7 #include <OpenSG/OSGGraphOpFactory.h>
8 #include <OpenSG/OSGGraphOpSeq.h>
11 #include "TestWindow.h"
21 OSG::GraphOp
* createGraphOp(const char* name
)
23 return OSG::GraphOpFactory::the().create(name
);
26 OSG::GraphOpSeq
* createGraphOpSeq(const char* ops
)
28 OSG::GraphOpSeq
*seq
= new OSG::GraphOpSeq
;
30 seq
->setGraphOps(ops
);
36 void traverse(OSG::GraphOp
& g
, NodeBase
& b
)
38 OSG::NodePtr p
= b
.getNode();
42 void traverseSeq(OSG::GraphOpSeq
& g
, NodeBase
& b
)
44 OSG::NodePtr p
= b
.getNode();
49 BOOST_PYTHON_MODULE(osgbench
)
51 using namespace boost::python
;
53 class_
<NodeBase
>("NodeBase")
54 .def("dump", &NodeBase::dump
)
55 .def("save", &NodeBase::save
)
56 .def("iter", &NodeBase::iter
)
57 .def("geometries", &NodeBase::geometries
)
58 .def("transforms", &NodeBase::transforms
)
59 .def("clone", &NodeBase::clone
)
62 class_
<Group
, bases
<NodeBase
> >("Group")
63 .def("addChild", &Group::addChild
)
64 .def("subChild", &Group::subChild
)
67 class_
<Transform
, bases
<Group
> >("Transform")
68 .def("setTranslation", &Transform::setTranslation
)
71 class_
<Geometry
, bases
<NodeBase
> >("Geometry")
72 .def("translate", &Geometry::translate
)
73 .def("scale", &Geometry::scale
)
74 .def("setDlistCache", &Geometry::setDlistCache
)
77 class_
<NodeIterator
>("NodeIterator")
78 .def("next", &NodeIterator::next
)
79 .def("__iter__", &NodeIterator::__iter__
)
82 class_
<TypedNodeIterator
<Geometry
> >("GeometryNodeIterator")
83 .def("next", &TypedNodeIterator
<Geometry
>::next
)
84 .def("__iter__", &TypedNodeIterator
<Geometry
>::__iter__
)
87 class_
<TypedNodeIterator
<Transform
> >("TransformNodeIterator")
88 .def("next", &TypedNodeIterator
<Transform
>::next
)
89 .def("__iter__", &TypedNodeIterator
<Transform
>::__iter__
)
92 class_
<Image
>("Image")
93 .def("write", &Image::write
)
94 .def("clone", &Image::clone
)
95 .def("diff", &Image::diff
)
98 def("makeBox", &makeBox
);
99 def("makeTorus", &makeTorus
);
100 def("makeSphere", &makeSphere
);
101 def("makePlane", &makePlane
);
102 def("makeShared", &makeShared
);
103 def("addRef", &addRef
);
104 def("subRef", &subRef
);
105 def("loadScene", &loadScene
);
108 void (TestWindow::*twSetScene
)(NodeBase
&) = &TestWindow::setScene
;
109 void (TestWindow::*twSetCamera
)(OSG::Real32
,OSG::Real32
,OSG::Real32
,
110 OSG::Real32
,OSG::Real32
,OSG::Real32
,
111 OSG::Real32
,OSG::Real32
,OSG::Real32
) =
112 &TestWindow::setCamera
;
114 class_
<TestWindow
>("TestWindow")
115 .def("setSize", &TestWindow::setSize
)
116 .def("setFullscreen", &TestWindow::setFullscreen
)
117 .def("setViewport", &TestWindow::setViewport
)
118 .def("getWidth", &TestWindow::getWidth
)
119 .def("getHeight", &TestWindow::getHeight
)
120 .def("getScene", &TestWindow::getScene
)
121 .def("setScene", twSetScene
)
122 .def("setCamera", twSetCamera
)
123 .def("open", &TestWindow::open
)
124 .def("close", &TestWindow::close
)
125 .def("redraw", &TestWindow::redraw
)
126 .def("setNearFar", &TestWindow::setNearFar
)
127 .def("setFov", &TestWindow::setFov
)
128 .def("showAll", &TestWindow::showAll
)
132 void (Test::*tSetScene
)(NodeBase
&) = &Test::setScene
;
133 void (Test::*taddFAU
)
134 (OSG::Real32 fromx
, OSG::Real32 fromy
, OSG::Real32 fromz
,
135 OSG::Real32 atx
, OSG::Real32 aty
, OSG::Real32 atz
,
136 OSG::Real32 upx
, OSG::Real32 upy
, OSG::Real32 upz
)
137 = &Test::addFromAtUp
;
140 .def("setScene", tSetScene
)
141 .def("setWindow", &Test::setWindow
)
142 .def("setHeadlight", &Test::setHeadlight
)
143 .def("setNearFar", &Test::setNearFar
)
144 .def("clear", &Test::clear
)
145 .def("setNFrames", &Test::setNFrames
)
146 .def("setMinTime", &Test::setMinTime
)
147 .def("addFromAtUp", taddFAU
)
148 .def("addFromOri", &Test::addFromOri
)
149 .def("makeOrbit", &Test::makeOrbit
)
150 .def("makePirouette", &Test::makePirouette
)
151 .def("addFov", &Test::addFov
)
152 .def("setStatistics", &Test::setStatistics
)
153 .def("run", &Test::run
)
154 .def("snapshot", &Test::snapshot
)
155 .def("getFPS", &Test::getFPS
)
156 .def("getTime", &Test::getTime
)
157 .def("getNRenderedFrames", &Test::getNRenderedFrames
)
158 .def("getStatValue", &Test::getStatValue
)
159 .def("setVerbose", &Test::setVerbose
)
160 .def("setIgnoreGeometry", &Test::setIgnoreGeometry
)
161 .def("useRenderTraversal", &Test::useRenderTraversal
)
164 class_
<OSG::GraphOp
, boost::noncopyable
>("GraphOp", no_init
)
165 .def("traverse", &traverse
)
168 class_
<OSG::GraphOpSeq
, boost::noncopyable
>("GraphOpSeq", no_init
)
169 .def("traverseSeq", &traverseSeq
)
172 def("createGraphOp", &createGraphOp
,
173 return_value_policy
<manage_new_object
>());
175 def("createGraphOpSeq", &createGraphOpSeq
,
176 return_value_policy
<manage_new_object
>());
178 // Module Initialization
180 OSG::osgInit(0, NULL
);