// Copyright (C) 2002-2003 Gideon May (gideon@computer.org) // // Permission to copy, use, sell and distribute this software is granted // provided this copyright notice appears in all copies. // Permission to modify the code and to distribute modified code is granted // provided this copyright notice appears in all copies, and a notice // that the code was modified is included with the copyright notice. // // This software is provided "as is" without express or implied warranty, // and with no claim as to its suitability for any purpose. #include #include #include #include #include #include #include #include #include #include #include "held_ptr.hpp" using namespace boost::python; namespace { } // namespace namespace PyOSGUtil { void init_RenderBin() { class_, bases > renderbin("RenderBin", no_init); scope renderbin_scope(renderbin); class_("RenderLeafList") .def("size", &osgUtil::RenderBin::RenderLeafList::size) ; class_("RenderBinList") .def("size", &osgUtil::RenderBin::RenderBinList::size) ; renderbin .def(init()) .def("createRenderBin", &osgUtil::RenderBin::createRenderBin, return_value_policy()) .staticmethod("createRenderBin") .def("getRenderBinPrototype", &osgUtil::RenderBin::getRenderBinPrototype, return_value_policy()) .staticmethod("getRenderBinPrototype") .def("addRenderBinPrototype", &osgUtil::RenderBin::addRenderBinPrototype) .staticmethod("addRenderBinPrototype") .def("removeRenderBinPrototype", &osgUtil::RenderBin::removeRenderBinPrototype) .staticmethod("removeRenderBinPrototype") .def("reset", &osgUtil::RenderBin::reset) .def("getParent", (osgUtil::RenderBin* (osgUtil::RenderBin::*)()) &osgUtil::RenderBin::getParent, return_value_policy()) .def("getStage", (osgUtil::RenderStage* (osgUtil::RenderBin::*)()) &osgUtil::RenderBin::getStage, return_value_policy()) .def("getRenderBinList", (osgUtil::RenderBin::RenderBinList& (osgUtil::RenderBin::*)()) &osgUtil::RenderBin::getRenderBinList, return_internal_reference<>()) .def("getRenderLeafList", (osgUtil::RenderBin::RenderLeafList& (osgUtil::RenderBin::*)()) &osgUtil::RenderBin::getRenderLeafList, return_internal_reference<>()) .def("find_or_insert", &osgUtil::RenderBin::find_or_insert, return_internal_reference<>()) .def("sort", &osgUtil::RenderBin::sort) .def("sortImplementation", &osgUtil::RenderBin::sortImplementation) .def("setSortMode", &osgUtil::RenderBin:: setSortMode) .def("getSortMode", &osgUtil::RenderBin:: getSortMode) .def("sortByState", &osgUtil::RenderBin:: sortByState) .def("sortFrontToBack", &osgUtil::RenderBin:: sortFrontToBack) .def("sortBackToFront", &osgUtil::RenderBin:: sortBackToFront) .def("setSortCallback", &osgUtil::RenderBin:: setSortCallback) //.def("getSortCallback", &osgUtil::RenderBin:: getSortCallback) .def("draw", &osgUtil::RenderBin:: draw) .def("drawImplementation", &osgUtil::RenderBin:: drawImplementation) .def("setDrawCallback", &osgUtil::RenderBin:: setDrawCallback) //.def("getDrawCallback", &osgUtil::RenderBin:: getDrawCallback) .def("getStats", &osgUtil::RenderBin:: getStats) .def("getPrims", (void (osgUtil::RenderBin::*)(osgUtil::Statistics *))&osgUtil::RenderBin:: getPrims) .def("getPrims", (bool (osgUtil::RenderBin::*)(osgUtil::Statistics *, int))&osgUtil::RenderBin:: getPrims) ; # define OSG_ENUM_MODE(VALUE) \ (mode.value(#VALUE, osgUtil::RenderBin::VALUE), \ renderbin.def(#VALUE, object(osgUtil::RenderBin::VALUE))) enum_ mode("SortMode"); OSG_ENUM_MODE( SORT_BY_STATE); OSG_ENUM_MODE( SORT_FRONT_TO_BACK); OSG_ENUM_MODE( SORT_BACK_TO_FRONT); // TODO: Implement me #if 0 struct SortCallback : public osg::Referenced { virtual void sortImplementation(RenderBin*) = 0; }; struct DrawCallback : public osg::Referenced { virtual void drawImplementation(RenderBin* bin,osg::State& state,RenderLeaf*& previous) = 0; }; #endif } }