00001 /* 00002 MX library. 00003 00004 http://lostsidedead.com/svn 00005 00006 00007 libmx written by jared bruni, it is wrappers around SDL 00008 and other api's to provide a set of classes and functions 00009 to produce multi media applications, using object oriented 00010 techniques. 00011 00012 (C) 2008 LostSideDead 00013 */ 00014 00015 00016 00017 /* mximg - v1 www.lostsidedead.com via GPL */ 00018 00019 #ifndef _MX_IMG_H_ 00020 #define _MX_IMG_H_ 00021 00022 #include<iostream> 00023 #include<iomanip> 00024 #include<cstdlib> 00025 #include<cstring> 00026 #include<fstream> 00027 #include<vector> 00028 #include<zlib.h> 00029 00030 00031 namespace mx 00032 { 00033 00034 00038 class mximg_Item { 00039 public: 00041 mximg_Item(); 00043 unsigned int compressed_length, data_length, name_length, offset; 00045 char name[255]; 00047 std::string fullname; 00048 }; 00049 00050 00052 class mximg_Writer { 00053 mximg_Writer(const mximg_Writer &); 00054 mximg_Writer& operator=(const mximg_Writer &); 00055 public: 00057 mximg_Writer(); 00063 bool addItem(const char *item); 00068 bool addItem(const mximg_Item &item); 00074 bool writeItems(const char *filen); 00079 bool concatItems(const char *filen); 00080 protected: 00082 std::vector<mximg_Item> items_; 00087 bool writeData(std::fstream &f); 00088 }; 00089 00090 00095 class mximg_Reader { 00096 mximg_Reader(const mximg_Reader &); 00097 mximg_Reader& operator=(const mximg_Reader &); 00098 public: 00100 mximg_Reader(); 00105 bool openArchive(const char *filen); 00106 00113 void *accessBytes(const char *fname, size_t &length); 00118 void listItems(std::ostream &stream); 00125 void extractItem(const char *path, const char *fname); 00131 void extractAll(const char *path); 00136 void closeArchive(); 00137 protected: 00139 std::vector<mximg_Item> items_; 00141 std::string file_name; 00142 }; 00143 } 00144 00145 00146 00147 00148 00149 00150 00151 00152 00153 00154 00155 00156 00157 00158 #endif 00159 00160
1.5.8