root/branches/Carsten_PtrWork2/Tools/osgBench/python_wrapper.cpp

Revision 446, 5.5 kB (checked in by dirk, 2 years ago)

Added RenderAction? RednerTraversal? comparison.
Added Window access

Line 
1 #include <boost/python.hpp>
2
3 #include <OpenSG/OSGConfig.h>
4 #include <OpenSG/OSGBaseFunctions.h>
5
6 #include <OpenSG/OSGGraphOp.h>
7 #include <OpenSG/OSGGraphOpFactory.h>
8 #include <OpenSG/OSGGraphOpSeq.h>
9
10 #include "Nodes.h"
11 #include "TestWindow.h"
12 #include "Test.h"
13
14
15 void doExit()
16 {
17     OSG::osgExit();
18 }
19
20
21 OSG::GraphOp* createGraphOp(const char* name)
22 {
23     return OSG::GraphOpFactory::the().create(name);
24 }
25
26 OSG::GraphOpSeq* createGraphOpSeq(const char* ops)
27 {
28     OSG::GraphOpSeq *seq = new OSG::GraphOpSeq;
29    
30     seq->setGraphOps(ops);
31    
32     return seq;
33 }
34
35
36 void traverse(OSG::GraphOp& g, NodeBase& b)
37 {
38     OSG::NodePtr p = b.getNode();
39     g.traverse(p);
40 }
41
42 void traverseSeq(OSG::GraphOpSeq& g, NodeBase& b)
43 {
44     OSG::NodePtr p = b.getNode();
45     g.run(p);
46 }
47
48
49 BOOST_PYTHON_MODULE(osgbench)
50 {
51     using namespace boost::python;
52
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)
60        ;
61    
62     class_<Group, bases<NodeBase> >("Group")
63         .def("addChild", &Group::addChild)
64         .def("subChild", &Group::subChild)
65         ;
66    
67     class_<Transform, bases<Group> >("Transform")
68         .def("setTranslation", &Transform::setTranslation)
69         ;
70    
71     class_<Geometry, bases<NodeBase> >("Geometry")
72         .def("translate", &Geometry::translate)
73         .def("scale", &Geometry::scale)
74         .def("setDlistCache", &Geometry::setDlistCache)
75         ;
76    
77     class_<NodeIterator>("NodeIterator")
78         .def("next", &NodeIterator::next)
79         .def("__iter__", &NodeIterator::__iter__)
80         ;
81    
82     class_<TypedNodeIterator<Geometry> >("GeometryNodeIterator")
83         .def("next", &TypedNodeIterator<Geometry>::next)
84         .def("__iter__", &TypedNodeIterator<Geometry>::__iter__)
85         ;
86    
87     class_<TypedNodeIterator<Transform> >("TransformNodeIterator")
88         .def("next", &TypedNodeIterator<Transform>::next)
89         .def("__iter__", &TypedNodeIterator<Transform>::__iter__)
90         ;
91    
92     class_<Image>("Image")
93         .def("write", &Image::write)
94         .def("clone", &Image::clone)
95         .def("diff", &Image::diff)
96         ;
97    
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);   
106
107
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;
113    
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)
129       ;
130    
131    
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;
138                      
139     class_<Test>("Test")
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)
162       ;
163
164     class_<OSG::GraphOp, boost::noncopyable>("GraphOp", no_init)
165         .def("traverse", &traverse)
166         ;
167
168     class_<OSG::GraphOpSeq, boost::noncopyable>("GraphOpSeq", no_init)
169         .def("traverseSeq", &traverseSeq)
170         ;
171
172     def("createGraphOp", &createGraphOp,
173         return_value_policy<manage_new_object>());
174
175     def("createGraphOpSeq", &createGraphOpSeq,
176         return_value_policy<manage_new_object>());
177    
178     // Module Initialization
179     
180     OSG::osgInit(0, NULL);
181    
182     Py_AtExit(doExit);
183 }
Note: See TracBrowser for help on using the browser.