diff options
Diffstat (limited to 'libs/cocos2d/Support/ZipUtils.h')
| -rwxr-xr-x | libs/cocos2d/Support/ZipUtils.h | 91 |
1 files changed, 91 insertions, 0 deletions
| diff --git a/libs/cocos2d/Support/ZipUtils.h b/libs/cocos2d/Support/ZipUtils.h new file mode 100755 index 0000000..363f911 --- /dev/null +++ b/libs/cocos2d/Support/ZipUtils.h | |||
| @@ -0,0 +1,91 @@ | |||
| 1 | /* cocos2d for iPhone | ||
| 2 | * | ||
| 3 | * http://www.cocos2d-iphone.org | ||
| 4 | * | ||
| 5 | * | ||
| 6 | * inflateMemory_ based on zlib example code | ||
| 7 | * http://www.zlib.net | ||
| 8 | * | ||
| 9 | * Some ideas were taken from: | ||
| 10 | * http://themanaworld.org/ | ||
| 11 | * from the mapreader.cpp file | ||
| 12 | * | ||
| 13 | */ | ||
| 14 | |||
| 15 | #ifndef __CC_ZIP_UTILS_H | ||
| 16 | #define __CC_ZIP_UTILS_H | ||
| 17 | |||
| 18 | #import <stdint.h> | ||
| 19 | |||
| 20 | #ifdef __cplusplus | ||
| 21 | extern "C" { | ||
| 22 | #endif | ||
| 23 | |||
| 24 | /* XXX: pragma pack ??? */ | ||
| 25 | /** @struct CCZHeader | ||
| 26 | */ | ||
| 27 | struct CCZHeader { | ||
| 28 | uint8_t sig[4]; // signature. Should be 'CCZ!' 4 bytes | ||
| 29 | uint16_t compression_type; // should 0 | ||
| 30 | uint16_t version; // should be 2 (although version type==1 is also supported) | ||
| 31 | uint32_t reserved; // Reserverd for users. | ||
| 32 | uint32_t len; // size of the uncompressed file | ||
| 33 | }; | ||
| 34 | |||
| 35 | enum { | ||
| 36 | CCZ_COMPRESSION_ZLIB, // zlib format. | ||
| 37 | CCZ_COMPRESSION_BZIP2, // bzip2 format (not supported yet) | ||
| 38 | CCZ_COMPRESSION_GZIP, // gzip format (not supported yet) | ||
| 39 | CCZ_COMPRESSION_NONE, // plain (not supported yet) | ||
| 40 | }; | ||
| 41 | |||
| 42 | /** @file | ||
| 43 | * Zip helper functions | ||
| 44 | */ | ||
| 45 | |||
| 46 | /** | ||
| 47 | * Inflates either zlib or gzip deflated memory. The inflated memory is | ||
| 48 | * expected to be freed by the caller. | ||
| 49 | * | ||
| 50 | * It will allocate 256k for the destination buffer. If it is not enought it will multiply the previous buffer size per 2, until there is enough memory. | ||
| 51 | * @returns the length of the deflated buffer | ||
| 52 | * | ||
| 53 | @since v0.8.1 | ||
| 54 | */ | ||
| 55 | int ccInflateMemory(unsigned char *in, unsigned int inLength, unsigned char **out); | ||
| 56 | |||
| 57 | /** | ||
| 58 | * Inflates either zlib or gzip deflated memory. The inflated memory is | ||
| 59 | * expected to be freed by the caller. | ||
| 60 | * | ||
| 61 | * outLenghtHint is assumed to be the needed room to allocate the inflated buffer. | ||
| 62 | * | ||
| 63 | * @returns the length of the deflated buffer | ||
| 64 | * | ||
| 65 | @since v1.0.0 | ||
| 66 | */ | ||
| 67 | int ccInflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outLenghtHint ); | ||
| 68 | |||
| 69 | |||
| 70 | /** inflates a GZip file into memory | ||
| 71 | * | ||
| 72 | * @returns the length of the deflated buffer | ||
| 73 | * | ||
| 74 | * @since v0.99.5 | ||
| 75 | */ | ||
| 76 | int ccInflateGZipFile(const char *filename, unsigned char **out); | ||
| 77 | |||
| 78 | /** inflates a CCZ file into memory | ||
| 79 | * | ||
| 80 | * @returns the length of the deflated buffer | ||
| 81 | * | ||
| 82 | * @since v0.99.5 | ||
| 83 | */ | ||
| 84 | int ccInflateCCZFile(const char *filename, unsigned char **out); | ||
| 85 | |||
| 86 | |||
| 87 | #ifdef __cplusplus | ||
| 88 | } | ||
| 89 | #endif | ||
| 90 | |||
| 91 | #endif // __CC_ZIP_UTILS_H | ||
