00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <wx/stopwatch.h>
00013 #include "iordf.h"
00014 #include "rdfparser.h"
00015 #include "rdfwriter.h"
00016
00017 using namespace VRUT;
00018
00019
00020 IORdfModule::IORdfModule(const MODULE_ID & _id, const wxString & _name, EventHandler * msgSink)
00021 : IOModule(_id, _name, 0, msgSink)
00022 {
00023 }
00024
00025 IORdfModule::~IORdfModule()
00026 {
00027 }
00028
00029 wxString IORdfModule::GetDesc() const
00030 {
00031 return wxT("Import and export RDF files (Adams)");
00032 }
00033
00034 wxString IORdfModule::GetSupportedExts() const
00035 {
00036 return wxT("RDF");
00037 }
00038
00039 void IORdfModule::processEvent(wxCommandEvent & evt)
00040 {
00041 IOModule::processEvent(evt);
00042 }
00043
00044 bool IORdfModule::ImportScene(const wxString & fname, SCENE_ID _sceneID, const wxString & rootUid)
00045 {
00046 wxStopWatch sw;
00047 bool ret = false;
00048 wxInputStream * is = GetInputStream(fname);
00049 if (is)
00050 {
00051 RDFParser rdfParser(is, _sceneID, fname, this);
00052 ret = rdfParser.Parse(rootUid);
00053 delete is;
00054 }
00055 LOG(wxString::Format(wxT("<IORdfModule>Scene parsed in %.3f secs, ID %i"), 0.001f * sw.Time(), _sceneID));
00056 wxCommandEvent ev = Event::GET_EVT_IO_SCENE_IMPORT_DONE(_sceneID);
00057 PostToKernel(ev);
00058 return ret;
00059 }
00060
00061 bool IORdfModule::ExportScene(const wxString & fname, const Scene * scene)
00062 {
00063 wxOutputStream * sceneStream = new wxFileOutputStream(fname);
00064 if (sceneStream && sceneStream->IsOk())
00065 {
00066 wxBufferedOutputStream *sceneStream2=new wxBufferedOutputStream(*sceneStream);
00067 RDFWriter rdfWriter(sceneStream2, scene);
00068 rdfWriter.Write();
00069 sceneStream2->Sync();
00070 SAFE_DELETE(sceneStream);
00071 return true;
00072 }
00073 SAFE_DELETE(sceneStream);
00074 return false;
00075 }