00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SGREADERWRITERXMLOPTIONS_HXX
00019 #define SGREADERWRITERXMLOPTIONS_HXX 1
00020
00021 #include <osgDB/ReaderWriter>
00022 #include <simgear/scene/model/modellib.hxx>
00023 #include <simgear/props/props.hxx>
00024
00025 class SGPropertyNode;
00026
00027 namespace simgear
00028 {
00029 class SGModelData;
00030
00031 class SGReaderWriterXMLOptions : public osgDB::ReaderWriter::Options
00032 {
00033 public:
00034 typedef osg::Node *(*panel_func)(SGPropertyNode *);
00035
00036 SGReaderWriterXMLOptions():
00037 osgDB::ReaderWriter::Options(),
00038 _prop_root(0),
00039 _load_panel(0),
00040 _model_data(0) {}
00041
00042 SGReaderWriterXMLOptions(const std::string& str):
00043 osgDB::ReaderWriter::Options(str),
00044 _prop_root(0),
00045 _load_panel(0),
00046 _model_data(0) {}
00047
00048 SGReaderWriterXMLOptions(const SGReaderWriterXMLOptions& options,
00049 const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):
00050 osgDB::ReaderWriter::Options(options, copyop),
00051 _prop_root(options._prop_root),
00052 _load_panel(options._load_panel),
00053 _model_data(options._model_data) {}
00054
00055 SGReaderWriterXMLOptions(const osgDB::ReaderWriter::Options& options,
00056 const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):
00057 osgDB::ReaderWriter::Options(options, copyop),
00058 _prop_root(0),
00059 _load_panel(0),
00060 _model_data(0) {}
00061
00062 SGPropertyNode *getPropRoot() const {
00063 return _prop_root;
00064 }
00065 panel_func getLoadPanel() const {
00066 return _load_panel;
00067 }
00068 SGModelData *getModelData() const {
00069 return _model_data.get();
00070 }
00071
00072 void setPropRoot(SGPropertyNode *p) {
00073 _prop_root=p;
00074 }
00075 void setLoadPanel(panel_func pf) {
00076 _load_panel=pf;
00077 }
00078 void setModelData(SGModelData *d) {
00079 _model_data=d;
00080 }
00081
00082 protected:
00083 virtual ~SGReaderWriterXMLOptions() {}
00084
00085 SGPropertyNode_ptr _prop_root;
00086 osg::Node *(*_load_panel)(SGPropertyNode *);
00087 osg::ref_ptr<SGModelData> _model_data;
00088 };
00089
00090 }
00091 #endif