00001 #ifndef D3DOCNODE_H
00002 #define D3DOCNODE_H
00003
00004 #include <FileIO/FIDocScene.h>
00005 #include <WinBasis/WBUtility.h>
00006 #include <WinDx/D3D/WXD3D.h>
00007 #include <dxfile.h>
00008
00009 namespace Spr {;
00010
00011 class SPR_DLL D3DocNode:public FIDocNodeBase, public UTTreeNode<D3DocNode>{
00012 protected:
00013 UTString typeName;
00014 mutable UTString name;
00015 public:
00016 typedef UTTreeNode<D3DocNode> Tree;
00017
00018 std::vector<char> data;
00019
00020
00021 WXINTF(DirectXFileData) xfileLoad;
00022 WXINTF(DirectXFileData) xfileSave;
00023 WXINTF(DirectXFileDataReference) xfileRef;
00024 WXINTF(DirectXFileBinary) xfileBin;
00025
00026
00027 virtual FIDocNodeBase* GetParent();
00028 virtual int NChildren() const;
00029 virtual FIDocNodeBase* Child(int i);
00030 virtual void AddChild(FIDocNodeBase*);
00031 virtual void SetParent(FIDocNodeBase*);
00032 virtual void ClearChildren();
00033 virtual FIDocNodeBase* FindChild(UTString type);
00034
00035 virtual void SetType(UTString t);
00036
00037
00038 virtual void AddDataImp(const void* data, size_t sz, FIString key, FIString type);
00039 virtual void AddNode(FIDocNodeBase* node, FIString key);
00040 virtual FIDocNodeBase* SetNewNode(FIString id, FIString type);
00041 virtual FIIterator FirstAttr() const ;
00042 virtual FIIterator LastAttr() const ;
00043 virtual FIIterator FindAttr(FIString key, size_t pos=0) const;
00044 virtual bool IsLast(const FIIterator& it) const ;
00045
00046
00047
00048
00049 D3DocNode(IDirectXFileData* x, IDirectXFileDataReference* xRef):xfileLoad(x), xfileRef(xRef){
00050 if (xfileRef) typeName = "REF";
00051 }
00052 D3DocNode(IDirectXFileBinary* x):xfileBin(x), typeName("Binary"){}
00053
00054 D3DocNode(FIString t):typeName(t){}
00055
00056
00057 virtual const GUID* GetId();
00058
00059 virtual UTString GetName() const;
00060
00061
00062 virtual const GUID* GetTypeId();
00063
00064 UTString GetType() const{ return typeName; }
00065
00066 virtual FITypeDesc* GetTypeDesc();
00067
00068 void SetName(UTString n);
00069 };
00070
00071
00072 class SPR_DLL D3SaveScene:public FISaveScene{
00073 public:
00074 virtual UTRef<FIDocNodeBase> CreateDocNodeImp(UTString type){
00075 return new D3DocNode(type);
00076 }
00077 };
00078 void RegisterD3DLoader(FILoadScene* l);
00079 void RegisterD3DSaver(FISaveScene* l);
00080
00081
00082 }
00083
00084 #endif