1 #include <osgGA/Widget> 2 #include <osg/ValueObject> 3 #include <osgDB/ObjectWrapper> 4 #include <osgDB/InputStream> 5 #include <osgDB/OutputStream> 6 7 8 struct CreateGraphics : public osgDB::MethodObject 9 { runCreateGraphics10 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const 11 { 12 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 13 widget->createGraphics(); 14 return true; 15 } 16 }; 17 18 struct CreateGraphicsImplementation : public osgDB::MethodObject 19 { runCreateGraphicsImplementation20 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const 21 { 22 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 23 widget->createGraphicsImplementation(); 24 return true; 25 } 26 }; 27 28 struct Enter : public osgDB::MethodObject 29 { runEnter30 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const 31 { 32 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 33 widget->enter(); 34 return true; 35 } 36 }; 37 38 struct EnterImplementation : public osgDB::MethodObject 39 { runEnterImplementation40 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const 41 { 42 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 43 widget->enterImplementation(); 44 return true; 45 } 46 }; 47 48 struct Leave : public osgDB::MethodObject 49 { runLeave50 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const 51 { 52 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 53 widget->leave(); 54 return true; 55 } 56 }; 57 58 struct LeaveImplementation : public osgDB::MethodObject 59 { runLeaveImplementation60 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const 61 { 62 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 63 widget->leaveImplementation(); 64 return true; 65 } 66 }; 67 68 69 struct Traverse : public osgDB::MethodObject 70 { runTraverse71 virtual bool run(void* objectPtr, osg::Parameters& inputParameters, osg::Parameters&) const 72 { 73 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 74 osg::NodeVisitor* nv = (inputParameters.size()>=1) ? dynamic_cast<osg::NodeVisitor*>(inputParameters[0].get()) : 0; 75 if (!nv) return false; 76 widget->traverse(*nv); 77 return true; 78 } 79 }; 80 81 struct TraverseImplementation : public osgDB::MethodObject 82 { runTraverseImplementation83 virtual bool run(void* objectPtr, osg::Parameters& inputParameters, osg::Parameters&) const 84 { 85 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 86 osg::NodeVisitor* nv = (inputParameters.size()>=1) ? dynamic_cast<osg::NodeVisitor*>(inputParameters[0].get()) : 0; 87 if (!nv) return false; 88 widget->traverseImplementation(*nv); 89 return true; 90 } 91 }; 92 93 struct Handle : public osgDB::MethodObject 94 { runHandle95 virtual bool run(void* objectPtr, osg::Parameters& inputParameters, osg::Parameters&) const 96 { 97 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 98 osgGA::EventVisitor* ev = (inputParameters.size()>=1) ? dynamic_cast<osgGA::EventVisitor*>(inputParameters[0].get()) : 0; 99 osgGA::Event* event = (inputParameters.size()>=2) ? dynamic_cast<osgGA::Event*>(inputParameters[1].get()) : 0; 100 if (!widget || !ev || !event) return false; 101 widget->handle(ev, event); 102 return true; 103 } 104 }; 105 106 struct HandleImplementation : public osgDB::MethodObject 107 { runHandleImplementation108 virtual bool run(void* objectPtr, osg::Parameters& inputParameters, osg::Parameters&) const 109 { 110 osgGA::Widget* widget = reinterpret_cast<osgGA::Widget*>(objectPtr); 111 osgGA::EventVisitor* ev = (inputParameters.size()>=1) ? dynamic_cast<osgGA::EventVisitor*>(inputParameters[0].get()) : 0; 112 osgGA::Event* event = (inputParameters.size()>=2) ? dynamic_cast<osgGA::Event*>(inputParameters[1].get()) : 0; 113 if (!widget || !ev || !event) return false; 114 widget->handleImplementation(ev, event); 115 return true; 116 } 117 }; 118 119 120 REGISTER_OBJECT_WRAPPER( Widget, 121 new osgGA::Widget, 122 osgGA::Widget, 123 "osg::Object osg::Node osg::Group osgGA::Widget" ) 124 { 125 BEGIN_ENUM_SERIALIZER( FocusBehaviour, FOCUS_FOLLOWS_POINTER ); 126 ADD_ENUM_VALUE( CLICK_TO_FOCUS ); 127 ADD_ENUM_VALUE( FOCUS_FOLLOWS_POINTER ); 128 ADD_ENUM_VALUE( EVENT_DRIVEN_FOCUS_DISABLED ); 129 END_ENUM_SERIALIZER(); 130 131 ADD_BOOL_SERIALIZER(HasEventFocus, false); 132 133 ADD_BOUNDINGBOXF_SERIALIZER(Extents, osg::BoundingBoxf()); 134 135 ADD_METHOD_OBJECT( "createGraphics", CreateGraphics ); 136 ADD_METHOD_OBJECT( "createGraphicsImplementation", CreateGraphicsImplementation ); 137 138 ADD_METHOD_OBJECT( "enter", Enter ); 139 ADD_METHOD_OBJECT( "enterImplementation", EnterImplementation ); 140 141 ADD_METHOD_OBJECT( "leave", Leave ); 142 ADD_METHOD_OBJECT( "leaveImplementation", LeaveImplementation ); 143 144 ADD_METHOD_OBJECT( "traverse", Traverse ); 145 ADD_METHOD_OBJECT( "traverseImplementation", TraverseImplementation ); 146 147 ADD_METHOD_OBJECT( "handle", Handle ); 148 ADD_METHOD_OBJECT( "handleImplementation", HandleImplementation ); 149 150 } 151