00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PROJECTSERIALIZER_H
00021 #define PROJECTSERIALIZER_H
00022
00023 #include "src/domain/animation/scene.h"
00024 #include "src/presentation/frontends/frontend.h"
00025
00026 #include <libxml/tree.h>
00027
00028
00036 class ProjectSerializer
00037 {
00038 public:
00039 ProjectSerializer();
00040 ~ProjectSerializer();
00041
00047 const vector<Scene*> open(const char *filename);
00048
00057 bool save(const char *filename, const vector<Scene*>& scenes, Frontend *frontend);
00058
00063 const char* getProjectFile();
00064
00070 const char* getProjectPath();
00071
00077 const char* getImagePath();
00078
00082 void cleanup();
00083
00084 private:
00085 xmlDocPtr doc;
00086 xmlDtdPtr dtd;
00087 xmlNodePtr rootNode;
00088 xmlNodePtr scenes;
00089 xmlNodePtr images;
00090 xmlNodePtr sounds;
00091
00092 static const char imageDirectory[];
00093 static const char soundDirectory[];
00094 char *projectPath;
00095 char *projectFile;
00096 char *imagePath;
00097 char *soundPath;
00098 char *xmlFile;
00099 char *prevProPath;
00100 char *prevImgPath;
00101 char *prevXmlFile;
00102
00103 void setAttributes(const vector<Scene*>& scenes, Frontend *frontend);
00104 void getAttributes(xmlNodePtr node, vector<Scene*>& scenes);
00105 bool saveDOMToFile(xmlDocPtr doc);
00106 void setProjectPaths(const char *unpacked, bool isSave);
00107 bool setProjectFile(const char *filename);
00108 void cleanupPrev();
00109 void storeOldPaths();
00110 };
00111
00112 #endif