mirror of https://github.com/axmolengine/axmol.git
Merge branch 'master' of https://github.com/natural-law/cocos2d-x into natural-law-master
This commit is contained in:
commit
781ef1b2cb
|
@ -58,6 +58,18 @@ public:
|
||||||
*/
|
*/
|
||||||
static void release();
|
static void release();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Set the ResourcePath,we will find resource in this path
|
||||||
|
@param pszResourcePath The absolute resource path
|
||||||
|
*/
|
||||||
|
static void setResourcePath(const char *pszResourcePath);
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Set the absolute path of the .zip file which contains all resource files
|
||||||
|
@param pszZipPath The absolute path of the .zip file
|
||||||
|
*/
|
||||||
|
static void setResourceZipFile(const char* pszZipPath);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief set the sound ResInfo,it's only used on platform-uphone now
|
@brief set the sound ResInfo,it's only used on platform-uphone now
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..\..\..\PRJ_TG3\Include;..\..\..\PRJ_TG3\Include\MTAPI;..\..\..\PRJ_TG3\Include\TCOM;..\..\..\PRJ_TG3\Common\SoftSupport;..\..\..\PRJ_TG3\Common\ICU\Include;..\include"
|
AdditionalIncludeDirectories="..\..\..\PRJ_TG3\Include;..\..\..\PRJ_TG3\Include\MTAPI;..\..\..\PRJ_TG3\Include\TCOM;..\..\..\PRJ_TG3\Common\SoftSupport;..\..\..\PRJ_TG3\Include\ThirdParty\zlib;..\..\..\PRJ_TG3\Common\ICU\Include;..\include"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;COCOSDENSHION_EXPORTS;_TRANZDA_VM_;_EXPORT_DLL_;_ENABLE_PROFILE_"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;COCOSDENSHION_EXPORTS;_TRANZDA_VM_;_EXPORT_DLL_;_ENABLE_PROFILE_"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
|
@ -61,9 +61,10 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="WS2_32.Lib ..\..\..\PRJ_TG3\Common\SoftSupport\EosConfig.lib ..\..\..\PRJ_TG3\Common\SoftSupport\SoftSupport.lib ..\..\..\PRJ_TG3\Common\SoftSupport\TG3_DLL.lib ..\..\..\PRJ_TG3\LIB\Win32Lib\TSoundPlayer.lib"
|
AdditionalDependencies="WS2_32.Lib ..\..\..\PRJ_TG3\Common\SoftSupport\EosConfig.lib ..\..\..\PRJ_TG3\Common\SoftSupport\SoftSupport.lib ..\..\..\PRJ_TG3\Common\SoftSupport\TG3_DLL.lib ..\..\..\PRJ_TG3\LIB\Win32Lib\TSoundPlayer.lib zlib.lib"
|
||||||
OutputFile="$(OutDir)\libCocosDenshion.dll"
|
OutputFile="$(OutDir)\libCocosDenshion.dll"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
|
AdditionalLibraryDirectories="../../../PRJ_TG3/Common/SoftSupport"
|
||||||
GenerateDebugInformation="true"
|
GenerateDebugInformation="true"
|
||||||
SubSystem="2"
|
SubSystem="2"
|
||||||
TargetMachine="1"
|
TargetMachine="1"
|
||||||
|
@ -179,6 +180,10 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="source"
|
Name="source"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\uphone\FileUtils.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\uphone\FileUtils.h"
|
RelativePath="..\uphone\FileUtils.h"
|
||||||
>
|
>
|
||||||
|
@ -215,6 +220,26 @@
|
||||||
RelativePath="..\uphone\uthash.h"
|
RelativePath="..\uphone\uthash.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<Filter
|
||||||
|
Name="zip_support"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\uphone\zip_support\ioapi.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\uphone\zip_support\ioapi.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\uphone\zip_support\unzip.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\uphone\zip_support\unzip.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
</Filter>
|
</Filter>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\include\Export.h"
|
RelativePath="..\include\Export.h"
|
||||||
|
|
|
@ -13,11 +13,12 @@ include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_Base_DynamicLib.ARM
|
||||||
include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_TOPS_Def.ARM
|
include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_TOPS_Def.ARM
|
||||||
|
|
||||||
DEFINES += -DCCX_UNDER_UPHONE \
|
DEFINES += -DCCX_UNDER_UPHONE \
|
||||||
-D__TG3_PURE_DLL__
|
-D__TG3_PURE_DLL__ \
|
||||||
|
-DUSE_FILE32API
|
||||||
INCLUDE_PATH += -I../ \
|
INCLUDE_PATH += -I../ \
|
||||||
-I../include
|
-I../include
|
||||||
CXX_FLAGS += -fvisibility=default
|
CXX_FLAGS += -fvisibility=default
|
||||||
LIBS += -lTSoundPlayer
|
LIBS += -lTSoundPlayer -lz
|
||||||
|
|
||||||
|
|
||||||
OBJECTS_DIR = ./Debug-ARM
|
OBJECTS_DIR = ./Debug-ARM
|
||||||
|
@ -30,10 +31,13 @@ MKDIR = mkdir -p
|
||||||
first: all
|
first: all
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
|
$(OBJECTS_DIR)/FileUtils.o \
|
||||||
$(OBJECTS_DIR)/ResourceHandle.o \
|
$(OBJECTS_DIR)/ResourceHandle.o \
|
||||||
$(OBJECTS_DIR)/SimpleAudioEngine.o \
|
$(OBJECTS_DIR)/SimpleAudioEngine.o \
|
||||||
$(OBJECTS_DIR)/SoundDataManager.o \
|
$(OBJECTS_DIR)/SoundDataManager.o \
|
||||||
$(OBJECTS_DIR)/SoundPlayer.o
|
$(OBJECTS_DIR)/SoundPlayer.o \
|
||||||
|
$(OBJECTS_DIR)/ioapi.o \
|
||||||
|
$(OBJECTS_DIR)/unzip.o
|
||||||
|
|
||||||
ADD_OBJECTS +=
|
ADD_OBJECTS +=
|
||||||
|
|
||||||
|
@ -52,6 +56,9 @@ clean :
|
||||||
-$(DEL_FILE) $(OBJECTS)
|
-$(DEL_FILE) $(OBJECTS)
|
||||||
-$(DEL_FILE) $(TARGET)
|
-$(DEL_FILE) $(TARGET)
|
||||||
|
|
||||||
|
$(OBJECTS_DIR)/FileUtils.o : ../uphone/FileUtils.cpp
|
||||||
|
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/FileUtils.o ../uphone/FileUtils.cpp
|
||||||
|
|
||||||
$(OBJECTS_DIR)/ResourceHandle.o : ../uphone/ResourceHandle.cpp
|
$(OBJECTS_DIR)/ResourceHandle.o : ../uphone/ResourceHandle.cpp
|
||||||
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/ResourceHandle.o ../uphone/ResourceHandle.cpp
|
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/ResourceHandle.o ../uphone/ResourceHandle.cpp
|
||||||
|
|
||||||
|
@ -64,3 +71,9 @@ $(OBJECTS_DIR)/SoundDataManager.o : ../uphone/SoundDataManager.cpp
|
||||||
$(OBJECTS_DIR)/SoundPlayer.o : ../uphone/SoundPlayer.cpp
|
$(OBJECTS_DIR)/SoundPlayer.o : ../uphone/SoundPlayer.cpp
|
||||||
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/SoundPlayer.o ../uphone/SoundPlayer.cpp
|
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/SoundPlayer.o ../uphone/SoundPlayer.cpp
|
||||||
|
|
||||||
|
$(OBJECTS_DIR)/ioapi.o : ../uphone/zip_support/ioapi.c
|
||||||
|
$(CC) -c $(CC_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/ioapi.o ../uphone/zip_support/ioapi.c
|
||||||
|
|
||||||
|
$(OBJECTS_DIR)/unzip.o : ../uphone/zip_support/unzip.c
|
||||||
|
$(CC) -c $(CC_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/unzip.o ../uphone/zip_support/unzip.c
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,8 @@ include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_Base_StaticLib.ARM
|
||||||
include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_TOPS_Def.ARM
|
include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_TOPS_Def.ARM
|
||||||
|
|
||||||
DEFINES += -DCCX_UNDER_UPHONE \
|
DEFINES += -DCCX_UNDER_UPHONE \
|
||||||
-D__TG3_PURE_DLL__
|
-D__TG3_PURE_DLL__ \
|
||||||
|
-DUSE_FILE32API
|
||||||
INCLUDE_PATH += -I../ \
|
INCLUDE_PATH += -I../ \
|
||||||
-I../include
|
-I../include
|
||||||
|
|
||||||
|
@ -27,10 +28,13 @@ MKDIR = mkdir -p
|
||||||
first: all
|
first: all
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
|
$(OBJECTS_DIR)/FileUtils.o \
|
||||||
$(OBJECTS_DIR)/ResourceHandle.o \
|
$(OBJECTS_DIR)/ResourceHandle.o \
|
||||||
$(OBJECTS_DIR)/SimpleAudioEngine.o \
|
$(OBJECTS_DIR)/SimpleAudioEngine.o \
|
||||||
$(OBJECTS_DIR)/SoundDataManager.o \
|
$(OBJECTS_DIR)/SoundDataManager.o \
|
||||||
$(OBJECTS_DIR)/SoundPlayer.o
|
$(OBJECTS_DIR)/SoundPlayer.o \
|
||||||
|
$(OBJECTS_DIR)/ioapi.o \
|
||||||
|
$(OBJECTS_DIR)/unzip.o
|
||||||
|
|
||||||
ADD_OBJECTS +=
|
ADD_OBJECTS +=
|
||||||
|
|
||||||
|
@ -49,6 +53,9 @@ clean :
|
||||||
-$(DEL_FILE) $(OBJECTS)
|
-$(DEL_FILE) $(OBJECTS)
|
||||||
-$(DEL_FILE) $(TARGET)
|
-$(DEL_FILE) $(TARGET)
|
||||||
|
|
||||||
|
$(OBJECTS_DIR)/FileUtils.o : ../uphone/FileUtils.cpp
|
||||||
|
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/FileUtils.o ../uphone/FileUtils.cpp
|
||||||
|
|
||||||
$(OBJECTS_DIR)/ResourceHandle.o : ../uphone/ResourceHandle.cpp
|
$(OBJECTS_DIR)/ResourceHandle.o : ../uphone/ResourceHandle.cpp
|
||||||
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/ResourceHandle.o ../uphone/ResourceHandle.cpp
|
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/ResourceHandle.o ../uphone/ResourceHandle.cpp
|
||||||
|
|
||||||
|
@ -61,3 +68,8 @@ $(OBJECTS_DIR)/SoundDataManager.o : ../uphone/SoundDataManager.cpp
|
||||||
$(OBJECTS_DIR)/SoundPlayer.o : ../uphone/SoundPlayer.cpp
|
$(OBJECTS_DIR)/SoundPlayer.o : ../uphone/SoundPlayer.cpp
|
||||||
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/SoundPlayer.o ../uphone/SoundPlayer.cpp
|
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/SoundPlayer.o ../uphone/SoundPlayer.cpp
|
||||||
|
|
||||||
|
$(OBJECTS_DIR)/ioapi.o : ../uphone/zip_support/ioapi.c
|
||||||
|
$(CC) -c $(CC_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/ioapi.o ../uphone/zip_support/ioapi.c
|
||||||
|
|
||||||
|
$(OBJECTS_DIR)/unzip.o : ../uphone/zip_support/unzip.c
|
||||||
|
$(CC) -c $(CC_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/unzip.o ../uphone/zip_support/unzip.c
|
||||||
|
|
|
@ -31,6 +31,7 @@ INCLUDE_TMK3=$(TO_PROJECT_ROOT)/MakeInclude/TG3_LIB_Arm.TMK3 ;TOPS
|
||||||
;C、C++预定义宏,可以使用多个DEFINES串,也可以使用DEFINES1、DEFINES2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
;C、C++预定义宏,可以使用多个DEFINES串,也可以使用DEFINES1、DEFINES2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
||||||
DEFINES=-DCCX_UNDER_UPHONE ;是uphone环境下的makefile
|
DEFINES=-DCCX_UNDER_UPHONE ;是uphone环境下的makefile
|
||||||
DEFINES=-D__TG3_PURE_DLL__ ;生成的是纯动态库(意思是:不是TOPS应用,但可以是TCOM组件)
|
DEFINES=-D__TG3_PURE_DLL__ ;生成的是纯动态库(意思是:不是TOPS应用,但可以是TCOM组件)
|
||||||
|
DEFINES=-DUSE_FILE32API
|
||||||
|
|
||||||
;包含路径,可以使用多个INCLUDE_PATH串,也可以使用INCLUDE_PATH1、INCLUDE_PATH2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
;包含路径,可以使用多个INCLUDE_PATH串,也可以使用INCLUDE_PATH1、INCLUDE_PATH2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
||||||
INCLUDE_PATH=-I./include ;应用额外的包含路径。注意:ITOPS自己的所有路径都会自动包含,故此这里仅仅包含应用自己特有的路径即可
|
INCLUDE_PATH=-I./include ;应用额外的包含路径。注意:ITOPS自己的所有路径都会自动包含,故此这里仅仅包含应用自己特有的路径即可
|
||||||
|
@ -49,4 +50,4 @@ INCLUDEFILE=
|
||||||
;只能对.c、.cpp文件进行排除
|
;只能对.c、.cpp文件进行排除
|
||||||
;如果要排除本目录的文件也要加入"./"
|
;如果要排除本目录的文件也要加入"./"
|
||||||
;可以使用多个EXCLUDEFILE串,也可以使用EXCLUDEFILE1、EXCLUDEFILE2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
;可以使用多个EXCLUDEFILE串,也可以使用EXCLUDEFILE1、EXCLUDEFILE2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
||||||
EXCLUDEFILE=
|
EXCLUDEFILE=./win32
|
||||||
|
|
|
@ -0,0 +1,210 @@
|
||||||
|
#include "FileUtils.h"
|
||||||
|
#include "zip_support/unzip.h"
|
||||||
|
#include <string>
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
|
#define BREAK_IF(cond) if (cond) break;
|
||||||
|
|
||||||
|
static char s_ResourcePath[MAX_PATH] = {0};
|
||||||
|
static char s_ZipFilePath[MAX_PATH] = {0};
|
||||||
|
|
||||||
|
unsigned char* getFileDataFromZip(const char* pszZipFilePath, const char* pszFileName, unsigned long * pSize);
|
||||||
|
void fullPathFromRelativePath(const char *pszRelativePath, char* fullPath);
|
||||||
|
|
||||||
|
bool FileUtils::isFileExisted(const char* pFilePath)
|
||||||
|
{
|
||||||
|
bool bRet = false;
|
||||||
|
|
||||||
|
if (strlen(s_ZipFilePath) != 0)
|
||||||
|
{
|
||||||
|
// if have set the zip file path,find the resource in the zip file
|
||||||
|
unzFile pZipFile = unzOpen(s_ZipFilePath);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
BREAK_IF(!pZipFile);
|
||||||
|
|
||||||
|
Int32 nPos = unzLocateFile(pZipFile, pFilePath, 1);
|
||||||
|
BREAK_IF(nPos != UNZ_OK);
|
||||||
|
|
||||||
|
bRet = true;
|
||||||
|
unzClose(pZipFile);
|
||||||
|
} while (0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char fullPath[MAX_PATH];
|
||||||
|
fullPathFromRelativePath(pFilePath, fullPath);
|
||||||
|
|
||||||
|
if (strlen(fullPath) > 0)
|
||||||
|
{
|
||||||
|
TUChar FilePath[MAX_PATH] = {0};
|
||||||
|
TUString::StrGBToUnicode(FilePath, (const Char *) fullPath);
|
||||||
|
|
||||||
|
// find in the hardware
|
||||||
|
if (EOS_IsFileExist(FilePath))
|
||||||
|
{
|
||||||
|
bRet = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return bRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileUtils::setResourcePath(const char *pszResourcePath)
|
||||||
|
{
|
||||||
|
assert(pszResourcePath);
|
||||||
|
strcpy(s_ResourcePath, pszResourcePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileUtils::setResourceZipFile(const char* pszZipPath)
|
||||||
|
{
|
||||||
|
// if the zip file not exist,use message box to warn developer
|
||||||
|
TUChar pszTmp[MAX_PATH] = {0};
|
||||||
|
TUString::StrGBToUnicode(pszTmp, (const Char*) pszZipPath);
|
||||||
|
Boolean bExist = EOS_IsFileExist(pszTmp);
|
||||||
|
if (!bExist)
|
||||||
|
{
|
||||||
|
std::string strErr = "zip file ";
|
||||||
|
strErr += pszZipPath;
|
||||||
|
strErr += " not exist!";
|
||||||
|
TUChar szText[MAX_PATH] = { 0 };
|
||||||
|
TUString::StrUtf8ToStrUnicode(szText,(Char*)strErr.c_str());
|
||||||
|
TApplication::GetCurrentApplication()->MessageBox(szText,NULL,WMB_OK);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef _TRANZDA_VM_
|
||||||
|
char *pszDriver = "";
|
||||||
|
#else
|
||||||
|
char *pszDriver = "D:/Work7";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// record the zip file path
|
||||||
|
strcpy(s_ZipFilePath, pszDriver);
|
||||||
|
strcat(s_ZipFilePath, pszZipPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char* FileUtils::getFileData(const char* pszFileName, const char* pszMode, unsigned long * pSize)
|
||||||
|
{
|
||||||
|
unsigned char * pBuffer = NULL;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (strlen(s_ZipFilePath) != 0)
|
||||||
|
{
|
||||||
|
// if specify the zip file,load from it first
|
||||||
|
pBuffer = getFileDataFromZip(s_ZipFilePath, pszFileName, pSize);
|
||||||
|
BREAK_IF(pBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// read the file from hardware
|
||||||
|
char fullPath[MAX_PATH] = {0};
|
||||||
|
fullPathFromRelativePath(pszFileName, fullPath);
|
||||||
|
|
||||||
|
BREAK_IF(strlen(fullPath) <= 0);
|
||||||
|
FILE *fp = fopen(fullPath, pszMode);
|
||||||
|
BREAK_IF(!fp);
|
||||||
|
|
||||||
|
fseek(fp,0,SEEK_END);
|
||||||
|
*pSize = ftell(fp);
|
||||||
|
fseek(fp,0,SEEK_SET);
|
||||||
|
pBuffer = new unsigned char[*pSize];
|
||||||
|
fread(pBuffer,sizeof(unsigned char), *pSize,fp);
|
||||||
|
fclose(fp);
|
||||||
|
} while (0);
|
||||||
|
|
||||||
|
return pBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char* getFileDataFromZip(const char* pszZipFilePath, const char* pszFileName, unsigned long * pSize)
|
||||||
|
{
|
||||||
|
unsigned char * pBuffer = NULL;
|
||||||
|
unzFile pFile = NULL;
|
||||||
|
*pSize = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
BREAK_IF(!pszZipFilePath || !pszFileName);
|
||||||
|
BREAK_IF(strlen(pszZipFilePath) == 0);
|
||||||
|
|
||||||
|
pFile = unzOpen(pszZipFilePath);
|
||||||
|
BREAK_IF(!pFile);
|
||||||
|
|
||||||
|
int nRet = unzLocateFile(pFile, pszFileName, 1);
|
||||||
|
BREAK_IF(UNZ_OK != nRet);
|
||||||
|
|
||||||
|
char szFilePathA[260];
|
||||||
|
unz_file_info FileInfo;
|
||||||
|
nRet = unzGetCurrentFileInfo(pFile, &FileInfo, szFilePathA, sizeof(szFilePathA), NULL, 0, NULL, 0);
|
||||||
|
BREAK_IF(UNZ_OK != nRet);
|
||||||
|
|
||||||
|
nRet = unzOpenCurrentFile(pFile);
|
||||||
|
BREAK_IF(UNZ_OK != nRet);
|
||||||
|
|
||||||
|
pBuffer = new unsigned char[FileInfo.uncompressed_size];
|
||||||
|
int nSize = unzReadCurrentFile(pFile, pBuffer, FileInfo.uncompressed_size);
|
||||||
|
assert(nSize == 0 || nSize == FileInfo.uncompressed_size);
|
||||||
|
|
||||||
|
*pSize = FileInfo.uncompressed_size;
|
||||||
|
unzCloseCurrentFile(pFile);
|
||||||
|
} while (0);
|
||||||
|
|
||||||
|
if (pFile)
|
||||||
|
{
|
||||||
|
unzClose(pFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fullPathFromRelativePath(const char *pszRelativePath, char* fullPath)
|
||||||
|
{
|
||||||
|
// if have set the zip file path,return the relative path of zip file
|
||||||
|
if (strlen(s_ZipFilePath) != 0)
|
||||||
|
{
|
||||||
|
if (strlen(pszRelativePath) < MAX_PATH)
|
||||||
|
{
|
||||||
|
strcpy(fullPath, pszRelativePath);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the user data path and append relative path to it
|
||||||
|
if (strlen(s_ResourcePath) == 0)
|
||||||
|
{
|
||||||
|
const TUChar *pszTmp = EOS_GetSpecialPath(EOS_FILE_SPECIAL_PATH_USER_DATA);
|
||||||
|
TUString::StrUnicodeToStrUtf8((Char*) s_ResourcePath, pszTmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef _TRANZDA_VM_
|
||||||
|
char *pszDriver = "";
|
||||||
|
#else
|
||||||
|
char *pszDriver = "D:/Work7";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::string pRet;
|
||||||
|
if ((strlen(pszRelativePath) > 1 && pszRelativePath[1] == ':'))
|
||||||
|
{
|
||||||
|
pRet = pszRelativePath;
|
||||||
|
}
|
||||||
|
else if (strlen(pszRelativePath) > 0 && pszRelativePath[0] == '/')
|
||||||
|
{
|
||||||
|
pRet = pszDriver;
|
||||||
|
pRet += pszRelativePath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pRet = pszDriver;
|
||||||
|
pRet += s_ResourcePath;
|
||||||
|
pRet += pszRelativePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen(pRet.c_str()) < MAX_PATH &&
|
||||||
|
strlen(pRet.c_str()) > 0)
|
||||||
|
{
|
||||||
|
strcpy(fullPath, pRet.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
|
@ -15,15 +15,29 @@ public:
|
||||||
@param pFilePath The absolute path of file.
|
@param pFilePath The absolute path of file.
|
||||||
@return If existed return true,or return false
|
@return If existed return true,or return false
|
||||||
*/
|
*/
|
||||||
static bool isFileExisted(const char* pFilePath)
|
static bool isFileExisted(const char* pFilePath);
|
||||||
{
|
|
||||||
TUChar fileName[MAX_PATH] = {0};
|
|
||||||
TUString::StrGBToUnicode(fileName, (const Char*)pFilePath);
|
|
||||||
|
|
||||||
Boolean bExisted = EOS_IsFileExist(fileName);
|
/**
|
||||||
|
@brief Set the ResourcePath,we will find resource in this path
|
||||||
|
@param pszResourcePath The absolute resource path
|
||||||
|
*/
|
||||||
|
static void setResourcePath(const char *pszResourcePath);
|
||||||
|
|
||||||
return bExisted ? true : false;
|
/**
|
||||||
}
|
@brief Set the absolute path of the .zip file which contains all resource files
|
||||||
|
@param pszZipPath The absolute path of the .zip file
|
||||||
|
*/
|
||||||
|
static void setResourceZipFile(const char* pszZipPath);
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Get resource file data
|
||||||
|
@param[in] pszFileName The resource file name which contain the path
|
||||||
|
@param[in] pszMode The read mode of the file
|
||||||
|
@param[out] pSize If get the file data succeed the it will be the data size,or it will be 0
|
||||||
|
@return if success,the pointer of data will be returned,or NULL is returned
|
||||||
|
@warning If you get the file data succeed,you must delete it after used.
|
||||||
|
*/
|
||||||
|
static unsigned char* getFileData(const char* pszFileName, const char* pszMode, unsigned long * pSize);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "SoundPlayer.h"
|
#include "SoundPlayer.h"
|
||||||
#include "SoundDataManager.h"
|
#include "SoundDataManager.h"
|
||||||
#include "TSoundPlayer.h"
|
#include "TSoundPlayer.h"
|
||||||
|
#include "FileUtils.h"
|
||||||
|
|
||||||
#define BREAK_IF(cond) if (cond) break;
|
#define BREAK_IF(cond) if (cond) break;
|
||||||
|
|
||||||
|
@ -77,6 +78,16 @@ void SimpleAudioEngine::release()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SimpleAudioEngine::setResourcePath(const char *pszResourcePath)
|
||||||
|
{
|
||||||
|
FileUtils::setResourcePath(pszResourcePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimpleAudioEngine::setResourceZipFile(const char* pszZipPath)
|
||||||
|
{
|
||||||
|
FileUtils::setResourceZipFile(pszZipPath);
|
||||||
|
}
|
||||||
|
|
||||||
void SimpleAudioEngine::playBackgroundMusic(const char* pszFilePath, bool bLoop)
|
void SimpleAudioEngine::playBackgroundMusic(const char* pszFilePath, bool bLoop)
|
||||||
{
|
{
|
||||||
int nTimes = 1;
|
int nTimes = 1;
|
||||||
|
|
|
@ -180,18 +180,10 @@ int SoundDataManager::loadFromFile(const char* pFilePath)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate the buffer size we needed
|
|
||||||
SoundPlayer TempPlayer;
|
|
||||||
int nBufferSize = TempPlayer.GetFileBufferSize(pFilePath);
|
|
||||||
// can not calculate the size,load failed
|
|
||||||
BREAK_IF(nBufferSize < 0);
|
|
||||||
|
|
||||||
// load the file data
|
// load the file data
|
||||||
unsigned char* buffer = NULL;
|
unsigned long nBufferSize = 0;
|
||||||
buffer = new unsigned char[nBufferSize];
|
unsigned char* buffer = FileUtils::getFileData(pFilePath, "rb", &nBufferSize);
|
||||||
BREAK_IF(!buffer);
|
BREAK_IF(!buffer || nBufferSize <= 0);
|
||||||
int nSize = TempPlayer.DecodeFile(buffer, nBufferSize, pFilePath);
|
|
||||||
BREAK_IF(nSize < 0);
|
|
||||||
|
|
||||||
// record the id
|
// record the id
|
||||||
nSoundID = nID;
|
nSoundID = nID;
|
||||||
|
@ -201,7 +193,7 @@ int SoundDataManager::loadFromFile(const char* pFilePath)
|
||||||
pElement->nSoundID = nSoundID;
|
pElement->nSoundID = nSoundID;
|
||||||
pElement->pDataBuffer = buffer;
|
pElement->pDataBuffer = buffer;
|
||||||
pElement->nDataSize = nBufferSize;
|
pElement->nDataSize = nBufferSize;
|
||||||
pElement->FileName = "";
|
pElement->FileName = pFilePath;
|
||||||
pElement->nPlayerSoundID = -1;
|
pElement->nPlayerSoundID = -1;
|
||||||
HASH_ADD_INT(m_pEffects, nSoundID, pElement);
|
HASH_ADD_INT(m_pEffects, nSoundID, pElement);
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
|
@ -0,0 +1,235 @@
|
||||||
|
/* ioapi.h -- IO base function header for compress/uncompress .zip
|
||||||
|
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||||
|
|
||||||
|
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||||
|
|
||||||
|
Modifications for Zip64 support
|
||||||
|
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||||
|
|
||||||
|
For more info read MiniZip_info.txt
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if (defined(_WIN32))
|
||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "ioapi.h"
|
||||||
|
|
||||||
|
voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
|
||||||
|
{
|
||||||
|
if (pfilefunc->zfile_func64.zopen64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
|
||||||
|
{
|
||||||
|
if (pfilefunc->zfile_func64.zseek64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uLong offsetTruncated = (uLong)offset;
|
||||||
|
if (offsetTruncated != offset)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
|
||||||
|
{
|
||||||
|
if (pfilefunc->zfile_func64.zseek64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
|
||||||
|
if ((tell_uLong) == ((uLong)-1))
|
||||||
|
return (ZPOS64_T)-1;
|
||||||
|
else
|
||||||
|
return tell_uLong;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
|
||||||
|
{
|
||||||
|
p_filefunc64_32->zfile_func64.zopen64_file = NULL;
|
||||||
|
p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
|
||||||
|
p_filefunc64_32->zfile_func64.ztell64_file = NULL;
|
||||||
|
p_filefunc64_32->zfile_func64.zseek64_file = NULL;
|
||||||
|
p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
|
||||||
|
p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
|
||||||
|
p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
|
||||||
|
p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
|
||||||
|
static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
|
||||||
|
static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
|
||||||
|
static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
|
||||||
|
static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
|
||||||
|
static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
|
||||||
|
static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
|
||||||
|
{
|
||||||
|
FILE* file = NULL;
|
||||||
|
const char* mode_fopen = NULL;
|
||||||
|
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
|
||||||
|
mode_fopen = "rb";
|
||||||
|
else
|
||||||
|
if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
|
||||||
|
mode_fopen = "r+b";
|
||||||
|
else
|
||||||
|
if (mode & ZLIB_FILEFUNC_MODE_CREATE)
|
||||||
|
mode_fopen = "wb";
|
||||||
|
|
||||||
|
if ((filename!=NULL) && (mode_fopen != NULL))
|
||||||
|
file = fopen(filename, mode_fopen);
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
|
||||||
|
{
|
||||||
|
FILE* file = NULL;
|
||||||
|
const char* mode_fopen = NULL;
|
||||||
|
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
|
||||||
|
mode_fopen = "rb";
|
||||||
|
else
|
||||||
|
if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
|
||||||
|
mode_fopen = "r+b";
|
||||||
|
else
|
||||||
|
if (mode & ZLIB_FILEFUNC_MODE_CREATE)
|
||||||
|
mode_fopen = "wb";
|
||||||
|
|
||||||
|
if ((filename!=NULL) && (mode_fopen != NULL))
|
||||||
|
file = fopen64((const char*)filename, mode_fopen);
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
|
||||||
|
{
|
||||||
|
uLong ret;
|
||||||
|
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
|
||||||
|
{
|
||||||
|
uLong ret;
|
||||||
|
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
long ret;
|
||||||
|
ret = ftell((FILE *)stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
ZPOS64_T ret;
|
||||||
|
ret = ftello64((FILE *)stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin)
|
||||||
|
{
|
||||||
|
int fseek_origin=0;
|
||||||
|
long ret;
|
||||||
|
switch (origin)
|
||||||
|
{
|
||||||
|
case ZLIB_FILEFUNC_SEEK_CUR :
|
||||||
|
fseek_origin = SEEK_CUR;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_END :
|
||||||
|
fseek_origin = SEEK_END;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_SET :
|
||||||
|
fseek_origin = SEEK_SET;
|
||||||
|
break;
|
||||||
|
default: return -1;
|
||||||
|
}
|
||||||
|
ret = 0;
|
||||||
|
if (fseek((FILE *)stream, offset, fseek_origin) != 0)
|
||||||
|
ret = -1;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
|
||||||
|
{
|
||||||
|
int fseek_origin=0;
|
||||||
|
long ret;
|
||||||
|
switch (origin)
|
||||||
|
{
|
||||||
|
case ZLIB_FILEFUNC_SEEK_CUR :
|
||||||
|
fseek_origin = SEEK_CUR;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_END :
|
||||||
|
fseek_origin = SEEK_END;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_SET :
|
||||||
|
fseek_origin = SEEK_SET;
|
||||||
|
break;
|
||||||
|
default: return -1;
|
||||||
|
}
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
|
||||||
|
ret = -1;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
ret = fclose((FILE *)stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
ret = ferror((FILE *)stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_fopen_filefunc (pzlib_filefunc_def)
|
||||||
|
zlib_filefunc_def* pzlib_filefunc_def;
|
||||||
|
{
|
||||||
|
pzlib_filefunc_def->zopen_file = fopen_file_func;
|
||||||
|
pzlib_filefunc_def->zread_file = fread_file_func;
|
||||||
|
pzlib_filefunc_def->zwrite_file = fwrite_file_func;
|
||||||
|
pzlib_filefunc_def->ztell_file = ftell_file_func;
|
||||||
|
pzlib_filefunc_def->zseek_file = fseek_file_func;
|
||||||
|
pzlib_filefunc_def->zclose_file = fclose_file_func;
|
||||||
|
pzlib_filefunc_def->zerror_file = ferror_file_func;
|
||||||
|
pzlib_filefunc_def->opaque = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
|
||||||
|
{
|
||||||
|
pzlib_filefunc_def->zopen64_file = fopen64_file_func;
|
||||||
|
pzlib_filefunc_def->zread_file = fread_file_func;
|
||||||
|
pzlib_filefunc_def->zwrite_file = fwrite_file_func;
|
||||||
|
pzlib_filefunc_def->ztell64_file = ftell64_file_func;
|
||||||
|
pzlib_filefunc_def->zseek64_file = fseek64_file_func;
|
||||||
|
pzlib_filefunc_def->zclose_file = fclose_file_func;
|
||||||
|
pzlib_filefunc_def->zerror_file = ferror_file_func;
|
||||||
|
pzlib_filefunc_def->opaque = NULL;
|
||||||
|
}
|
|
@ -0,0 +1,200 @@
|
||||||
|
/* ioapi.h -- IO base function header for compress/uncompress .zip
|
||||||
|
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||||
|
|
||||||
|
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||||
|
|
||||||
|
Modifications for Zip64 support
|
||||||
|
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||||
|
|
||||||
|
For more info read MiniZip_info.txt
|
||||||
|
|
||||||
|
Changes
|
||||||
|
|
||||||
|
Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this)
|
||||||
|
Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux.
|
||||||
|
More if/def section may be needed to support other platforms
|
||||||
|
Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows.
|
||||||
|
(but you should use iowin32.c for windows instead)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ZLIBIOAPI64_H
|
||||||
|
#define _ZLIBIOAPI64_H
|
||||||
|
|
||||||
|
#if (!defined(_WIN32)) && (!defined(WIN32))
|
||||||
|
|
||||||
|
// Linux needs this to support file operation on files larger then 4+GB
|
||||||
|
// But might need better if/def to select just the platforms that needs them.
|
||||||
|
|
||||||
|
#ifndef __USE_FILE_OFFSET64
|
||||||
|
#define __USE_FILE_OFFSET64
|
||||||
|
#endif
|
||||||
|
#ifndef __USE_LARGEFILE64
|
||||||
|
#define __USE_LARGEFILE64
|
||||||
|
#endif
|
||||||
|
#ifndef _LARGEFILE64_SOURCE
|
||||||
|
#define _LARGEFILE64_SOURCE
|
||||||
|
#endif
|
||||||
|
#ifndef _FILE_OFFSET_BIT
|
||||||
|
#define _FILE_OFFSET_BIT 64
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "zlib.h"
|
||||||
|
|
||||||
|
#if defined(USE_FILE32API)
|
||||||
|
#define fopen64 fopen
|
||||||
|
#define ftello64 ftell
|
||||||
|
#define fseeko64 fseek
|
||||||
|
#else
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define fopen64 fopen
|
||||||
|
#if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
|
||||||
|
#define ftello64 _ftelli64
|
||||||
|
#define fseeko64 _fseeki64
|
||||||
|
#else // old MSC
|
||||||
|
#define ftello64 ftell
|
||||||
|
#define fseeko64 fseek
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
#ifndef ZPOS64_T
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define ZPOS64_T fpos_t
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
#define ZPOS64_T uint64_t
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_MINIZIP64_CONF_H
|
||||||
|
#include "mz64conf.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* a type choosen by DEFINE */
|
||||||
|
#ifdef HAVE_64BIT_INT_CUSTOM
|
||||||
|
typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T;
|
||||||
|
#else
|
||||||
|
#ifdef HAS_STDINT_H
|
||||||
|
#include "stdint.h"
|
||||||
|
typedef uint64_t ZPOS64_T;
|
||||||
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
||||||
|
typedef unsigned __int64 ZPOS64_T;
|
||||||
|
#else
|
||||||
|
typedef unsigned long long int ZPOS64_T;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define ZLIB_FILEFUNC_SEEK_CUR (1)
|
||||||
|
#define ZLIB_FILEFUNC_SEEK_END (2)
|
||||||
|
#define ZLIB_FILEFUNC_SEEK_SET (0)
|
||||||
|
|
||||||
|
#define ZLIB_FILEFUNC_MODE_READ (1)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_WRITE (2)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3)
|
||||||
|
|
||||||
|
#define ZLIB_FILEFUNC_MODE_EXISTING (4)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_CREATE (8)
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ZCALLBACK
|
||||||
|
#if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
|
||||||
|
#define ZCALLBACK CALLBACK
|
||||||
|
#else
|
||||||
|
#define ZCALLBACK
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode));
|
||||||
|
typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size));
|
||||||
|
typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
|
||||||
|
typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream));
|
||||||
|
typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
|
||||||
|
|
||||||
|
typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream));
|
||||||
|
typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin));
|
||||||
|
|
||||||
|
|
||||||
|
/* here is the "old" 32 bits structure structure */
|
||||||
|
typedef struct zlib_filefunc_def_s
|
||||||
|
{
|
||||||
|
open_file_func zopen_file;
|
||||||
|
read_file_func zread_file;
|
||||||
|
write_file_func zwrite_file;
|
||||||
|
tell_file_func ztell_file;
|
||||||
|
seek_file_func zseek_file;
|
||||||
|
close_file_func zclose_file;
|
||||||
|
testerror_file_func zerror_file;
|
||||||
|
voidpf opaque;
|
||||||
|
} zlib_filefunc_def;
|
||||||
|
|
||||||
|
typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream));
|
||||||
|
typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
|
||||||
|
typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode));
|
||||||
|
|
||||||
|
typedef struct zlib_filefunc64_def_s
|
||||||
|
{
|
||||||
|
open64_file_func zopen64_file;
|
||||||
|
read_file_func zread_file;
|
||||||
|
write_file_func zwrite_file;
|
||||||
|
tell64_file_func ztell64_file;
|
||||||
|
seek64_file_func zseek64_file;
|
||||||
|
close_file_func zclose_file;
|
||||||
|
testerror_file_func zerror_file;
|
||||||
|
voidpf opaque;
|
||||||
|
} zlib_filefunc64_def;
|
||||||
|
|
||||||
|
void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
|
||||||
|
void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
|
||||||
|
|
||||||
|
/* now internal definition, only for zip.c and unzip.h */
|
||||||
|
typedef struct zlib_filefunc64_32_def_s
|
||||||
|
{
|
||||||
|
zlib_filefunc64_def zfile_func64;
|
||||||
|
open_file_func zopen32_file;
|
||||||
|
tell_file_func ztell32_file;
|
||||||
|
seek_file_func zseek32_file;
|
||||||
|
} zlib_filefunc64_32_def;
|
||||||
|
|
||||||
|
|
||||||
|
#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
|
||||||
|
#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
|
||||||
|
//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))
|
||||||
|
//#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))
|
||||||
|
#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream))
|
||||||
|
#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream))
|
||||||
|
|
||||||
|
voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode));
|
||||||
|
long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin));
|
||||||
|
ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream));
|
||||||
|
|
||||||
|
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
|
||||||
|
|
||||||
|
#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode)))
|
||||||
|
#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream)))
|
||||||
|
#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode)))
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,437 @@
|
||||||
|
/* unzip.h -- IO for uncompress .zip files using zlib
|
||||||
|
Version 1.1, February 14h, 2010
|
||||||
|
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||||
|
|
||||||
|
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||||
|
|
||||||
|
Modifications of Unzip for Zip64
|
||||||
|
Copyright (C) 2007-2008 Even Rouault
|
||||||
|
|
||||||
|
Modifications for Zip64 support on both zip and unzip
|
||||||
|
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||||
|
|
||||||
|
For more info read MiniZip_info.txt
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Condition of use and distribution are the same than zlib :
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software
|
||||||
|
in a product, an acknowledgment in the product documentation would be
|
||||||
|
appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Changes
|
||||||
|
|
||||||
|
See header of unzip64.c
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _unz64_H
|
||||||
|
#define _unz64_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _ZLIB_H
|
||||||
|
#include "zlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _ZLIBIOAPI_H
|
||||||
|
#include "ioapi.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_BZIP2
|
||||||
|
#include "bzlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define Z_BZIP2ED 12
|
||||||
|
|
||||||
|
#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
|
||||||
|
/* like the STRICT of WIN32, we define a pointer that cannot be converted
|
||||||
|
from (void*) without cast */
|
||||||
|
typedef struct TagunzFile__ { int unused; } unzFile__;
|
||||||
|
typedef unzFile__ *unzFile;
|
||||||
|
#else
|
||||||
|
typedef voidp unzFile;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define UNZ_OK (0)
|
||||||
|
#define UNZ_END_OF_LIST_OF_FILE (-100)
|
||||||
|
#define UNZ_ERRNO (Z_ERRNO)
|
||||||
|
#define UNZ_EOF (0)
|
||||||
|
#define UNZ_PARAMERROR (-102)
|
||||||
|
#define UNZ_BADZIPFILE (-103)
|
||||||
|
#define UNZ_INTERNALERROR (-104)
|
||||||
|
#define UNZ_CRCERROR (-105)
|
||||||
|
|
||||||
|
/* tm_unz contain date/time info */
|
||||||
|
typedef struct tm_unz_s
|
||||||
|
{
|
||||||
|
uInt tm_sec; /* seconds after the minute - [0,59] */
|
||||||
|
uInt tm_min; /* minutes after the hour - [0,59] */
|
||||||
|
uInt tm_hour; /* hours since midnight - [0,23] */
|
||||||
|
uInt tm_mday; /* day of the month - [1,31] */
|
||||||
|
uInt tm_mon; /* months since January - [0,11] */
|
||||||
|
uInt tm_year; /* years - [1980..2044] */
|
||||||
|
} tm_unz;
|
||||||
|
|
||||||
|
/* unz_global_info structure contain global data about the ZIPfile
|
||||||
|
These data comes from the end of central dir */
|
||||||
|
typedef struct unz_global_info64_s
|
||||||
|
{
|
||||||
|
ZPOS64_T number_entry; /* total number of entries in
|
||||||
|
the central dir on this disk */
|
||||||
|
uLong size_comment; /* size of the global comment of the zipfile */
|
||||||
|
} unz_global_info64;
|
||||||
|
|
||||||
|
typedef struct unz_global_info_s
|
||||||
|
{
|
||||||
|
uLong number_entry; /* total number of entries in
|
||||||
|
the central dir on this disk */
|
||||||
|
uLong size_comment; /* size of the global comment of the zipfile */
|
||||||
|
} unz_global_info;
|
||||||
|
|
||||||
|
/* unz_file_info contain information about a file in the zipfile */
|
||||||
|
typedef struct unz_file_info64_s
|
||||||
|
{
|
||||||
|
uLong version; /* version made by 2 bytes */
|
||||||
|
uLong version_needed; /* version needed to extract 2 bytes */
|
||||||
|
uLong flag; /* general purpose bit flag 2 bytes */
|
||||||
|
uLong compression_method; /* compression method 2 bytes */
|
||||||
|
uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
|
||||||
|
uLong crc; /* crc-32 4 bytes */
|
||||||
|
ZPOS64_T compressed_size; /* compressed size 8 bytes */
|
||||||
|
ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */
|
||||||
|
uLong size_filename; /* filename length 2 bytes */
|
||||||
|
uLong size_file_extra; /* extra field length 2 bytes */
|
||||||
|
uLong size_file_comment; /* file comment length 2 bytes */
|
||||||
|
|
||||||
|
uLong disk_num_start; /* disk number start 2 bytes */
|
||||||
|
uLong internal_fa; /* internal file attributes 2 bytes */
|
||||||
|
uLong external_fa; /* external file attributes 4 bytes */
|
||||||
|
|
||||||
|
tm_unz tmu_date;
|
||||||
|
} unz_file_info64;
|
||||||
|
|
||||||
|
typedef struct unz_file_info_s
|
||||||
|
{
|
||||||
|
uLong version; /* version made by 2 bytes */
|
||||||
|
uLong version_needed; /* version needed to extract 2 bytes */
|
||||||
|
uLong flag; /* general purpose bit flag 2 bytes */
|
||||||
|
uLong compression_method; /* compression method 2 bytes */
|
||||||
|
uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
|
||||||
|
uLong crc; /* crc-32 4 bytes */
|
||||||
|
uLong compressed_size; /* compressed size 4 bytes */
|
||||||
|
uLong uncompressed_size; /* uncompressed size 4 bytes */
|
||||||
|
uLong size_filename; /* filename length 2 bytes */
|
||||||
|
uLong size_file_extra; /* extra field length 2 bytes */
|
||||||
|
uLong size_file_comment; /* file comment length 2 bytes */
|
||||||
|
|
||||||
|
uLong disk_num_start; /* disk number start 2 bytes */
|
||||||
|
uLong internal_fa; /* internal file attributes 2 bytes */
|
||||||
|
uLong external_fa; /* external file attributes 4 bytes */
|
||||||
|
|
||||||
|
tm_unz tmu_date;
|
||||||
|
} unz_file_info;
|
||||||
|
|
||||||
|
extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
|
||||||
|
const char* fileName2,
|
||||||
|
int iCaseSensitivity));
|
||||||
|
/*
|
||||||
|
Compare two filename (fileName1,fileName2).
|
||||||
|
If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
|
||||||
|
If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
|
||||||
|
or strcasecmp)
|
||||||
|
If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
|
||||||
|
(like 1 on Unix, 2 on Windows)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
extern unzFile ZEXPORT unzOpen OF((const char *path));
|
||||||
|
extern unzFile ZEXPORT unzOpen64 OF((const void *path));
|
||||||
|
/*
|
||||||
|
Open a Zip file. path contain the full pathname (by example,
|
||||||
|
on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
|
||||||
|
"zlib/zlib113.zip".
|
||||||
|
If the zipfile cannot be opened (file don't exist or in not valid), the
|
||||||
|
return value is NULL.
|
||||||
|
Else, the return value is a unzFile Handle, usable with other function
|
||||||
|
of this unzip package.
|
||||||
|
the "64" function take a const void* pointer, because the path is just the
|
||||||
|
value passed to the open64_file_func callback.
|
||||||
|
Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path
|
||||||
|
is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char*
|
||||||
|
does not describe the reality
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
extern unzFile ZEXPORT unzOpen2 OF((const char *path,
|
||||||
|
zlib_filefunc_def* pzlib_filefunc_def));
|
||||||
|
/*
|
||||||
|
Open a Zip file, like unzOpen, but provide a set of file low level API
|
||||||
|
for read/write the zip file (see ioapi.h)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
|
||||||
|
zlib_filefunc64_def* pzlib_filefunc_def));
|
||||||
|
/*
|
||||||
|
Open a Zip file, like unz64Open, but provide a set of file low level API
|
||||||
|
for read/write the zip file (see ioapi.h)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzClose OF((unzFile file));
|
||||||
|
/*
|
||||||
|
Close a ZipFile opened with unzipOpen.
|
||||||
|
If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
|
||||||
|
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
|
||||||
|
return UNZ_OK if there is no problem. */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
|
||||||
|
unz_global_info *pglobal_info));
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
|
||||||
|
unz_global_info64 *pglobal_info));
|
||||||
|
/*
|
||||||
|
Write info about the ZipFile in the *pglobal_info structure.
|
||||||
|
No preparation of the structure is needed
|
||||||
|
return UNZ_OK if there is no problem. */
|
||||||
|
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
|
||||||
|
char *szComment,
|
||||||
|
uLong uSizeBuf));
|
||||||
|
/*
|
||||||
|
Get the global comment string of the ZipFile, in the szComment buffer.
|
||||||
|
uSizeBuf is the size of the szComment buffer.
|
||||||
|
return the number of byte copied or an error code <0
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/* Unzip package allow you browse the directory of the zipfile */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
|
||||||
|
/*
|
||||||
|
Set the current file of the zipfile to the first file.
|
||||||
|
return UNZ_OK if there is no problem
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToNextFile OF((unzFile file));
|
||||||
|
/*
|
||||||
|
Set the current file of the zipfile to the next file.
|
||||||
|
return UNZ_OK if there is no problem
|
||||||
|
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzLocateFile OF((unzFile file,
|
||||||
|
const char *szFileName,
|
||||||
|
int iCaseSensitivity));
|
||||||
|
/*
|
||||||
|
Try locate the file szFileName in the zipfile.
|
||||||
|
For the iCaseSensitivity signification, see unzStringFileNameCompare
|
||||||
|
|
||||||
|
return value :
|
||||||
|
UNZ_OK if the file is found. It becomes the current file.
|
||||||
|
UNZ_END_OF_LIST_OF_FILE if the file is not found
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* ****************************************** */
|
||||||
|
/* Ryan supplied functions */
|
||||||
|
/* unz_file_info contain information about a file in the zipfile */
|
||||||
|
typedef struct unz_file_pos_s
|
||||||
|
{
|
||||||
|
uLong pos_in_zip_directory; /* offset in zip file directory */
|
||||||
|
uLong num_of_file; /* # of file */
|
||||||
|
} unz_file_pos;
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetFilePos(
|
||||||
|
unzFile file,
|
||||||
|
unz_file_pos* file_pos);
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToFilePos(
|
||||||
|
unzFile file,
|
||||||
|
unz_file_pos* file_pos);
|
||||||
|
|
||||||
|
typedef struct unz64_file_pos_s
|
||||||
|
{
|
||||||
|
ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */
|
||||||
|
ZPOS64_T num_of_file; /* # of file */
|
||||||
|
} unz64_file_pos;
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetFilePos64(
|
||||||
|
unzFile file,
|
||||||
|
unz64_file_pos* file_pos);
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToFilePos64(
|
||||||
|
unzFile file,
|
||||||
|
const unz64_file_pos* file_pos);
|
||||||
|
|
||||||
|
/* ****************************************** */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
|
||||||
|
unz_file_info64 *pfile_info,
|
||||||
|
char *szFileName,
|
||||||
|
uLong fileNameBufferSize,
|
||||||
|
void *extraField,
|
||||||
|
uLong extraFieldBufferSize,
|
||||||
|
char *szComment,
|
||||||
|
uLong commentBufferSize));
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
|
||||||
|
unz_file_info *pfile_info,
|
||||||
|
char *szFileName,
|
||||||
|
uLong fileNameBufferSize,
|
||||||
|
void *extraField,
|
||||||
|
uLong extraFieldBufferSize,
|
||||||
|
char *szComment,
|
||||||
|
uLong commentBufferSize));
|
||||||
|
/*
|
||||||
|
Get Info about the current file
|
||||||
|
if pfile_info!=NULL, the *pfile_info structure will contain somes info about
|
||||||
|
the current file
|
||||||
|
if szFileName!=NULL, the filemane string will be copied in szFileName
|
||||||
|
(fileNameBufferSize is the size of the buffer)
|
||||||
|
if extraField!=NULL, the extra field information will be copied in extraField
|
||||||
|
(extraFieldBufferSize is the size of the buffer).
|
||||||
|
This is the Central-header version of the extra field
|
||||||
|
if szComment!=NULL, the comment string of the file will be copied in szComment
|
||||||
|
(commentBufferSize is the size of the buffer)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/** Addition for GDAL : START */
|
||||||
|
|
||||||
|
extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
|
||||||
|
|
||||||
|
/** Addition for GDAL : END */
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/* for reading the content of the current zipfile, you can open it, read data
|
||||||
|
from it, and close it (you can close it before reading all the file)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
|
||||||
|
/*
|
||||||
|
Open for reading data the current file in the zipfile.
|
||||||
|
If there is no error, the return value is UNZ_OK.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
|
||||||
|
const char* password));
|
||||||
|
/*
|
||||||
|
Open for reading data the current file in the zipfile.
|
||||||
|
password is a crypting password
|
||||||
|
If there is no error, the return value is UNZ_OK.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
|
||||||
|
int* method,
|
||||||
|
int* level,
|
||||||
|
int raw));
|
||||||
|
/*
|
||||||
|
Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
|
||||||
|
if raw==1
|
||||||
|
*method will receive method of compression, *level will receive level of
|
||||||
|
compression
|
||||||
|
note : you can set level parameter as NULL (if you did not want known level,
|
||||||
|
but you CANNOT set method parameter as NULL
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
|
||||||
|
int* method,
|
||||||
|
int* level,
|
||||||
|
int raw,
|
||||||
|
const char* password));
|
||||||
|
/*
|
||||||
|
Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
|
||||||
|
if raw==1
|
||||||
|
*method will receive method of compression, *level will receive level of
|
||||||
|
compression
|
||||||
|
note : you can set level parameter as NULL (if you did not want known level,
|
||||||
|
but you CANNOT set method parameter as NULL
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
|
||||||
|
/*
|
||||||
|
Close the file in zip opened with unzOpenCurrentFile
|
||||||
|
Return UNZ_CRCERROR if all the file was read but the CRC is not good
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
|
||||||
|
voidp buf,
|
||||||
|
unsigned len));
|
||||||
|
/*
|
||||||
|
Read bytes from the current file (opened by unzOpenCurrentFile)
|
||||||
|
buf contain buffer where data must be copied
|
||||||
|
len the size of buf.
|
||||||
|
|
||||||
|
return the number of byte copied if somes bytes are copied
|
||||||
|
return 0 if the end of file was reached
|
||||||
|
return <0 with error code if there is an error
|
||||||
|
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern z_off_t ZEXPORT unztell OF((unzFile file));
|
||||||
|
|
||||||
|
extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
|
||||||
|
/*
|
||||||
|
Give the current position in uncompressed data
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzeof OF((unzFile file));
|
||||||
|
/*
|
||||||
|
return 1 if the end of file was reached, 0 elsewhere
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
|
||||||
|
voidp buf,
|
||||||
|
unsigned len));
|
||||||
|
/*
|
||||||
|
Read extra field from the current file (opened by unzOpenCurrentFile)
|
||||||
|
This is the local-header version of the extra field (sometimes, there is
|
||||||
|
more info in the local-header version than in the central-header)
|
||||||
|
|
||||||
|
if buf==NULL, it return the size of the local extra field
|
||||||
|
|
||||||
|
if buf!=NULL, len is the size of the buffer, the extra header is copied in
|
||||||
|
buf.
|
||||||
|
the return value is the number of bytes copied in buf, or (if <0)
|
||||||
|
the error code
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
|
/* Get the current file offset */
|
||||||
|
extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file);
|
||||||
|
extern uLong ZEXPORT unzGetOffset (unzFile file);
|
||||||
|
|
||||||
|
/* Set the current file offset */
|
||||||
|
extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos);
|
||||||
|
extern int ZEXPORT unzSetOffset (unzFile file, uLong pos);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _unz64_H */
|
|
@ -40,6 +40,15 @@ void SimpleAudioEngine::release()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SimpleAudioEngine::setResourcePath(const char *pszResourcePath)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimpleAudioEngine::setResourceZipFile(const char* pszZipPath)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// BackgroundMusic
|
// BackgroundMusic
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -15,7 +15,7 @@ include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_TOPS_Def.ARM
|
||||||
DEFINES += -DUNDER_UPHONE
|
DEFINES += -DUNDER_UPHONE
|
||||||
INCLUDE_PATH += -I. -I./Res \
|
INCLUDE_PATH += -I. -I./Res \
|
||||||
-I../CocosDenshion/include
|
-I../CocosDenshion/include
|
||||||
LIBS += -lCocosDenshionStatic -lTSoundPlayer
|
LIBS += -lCocosDenshionStatic -lTSoundPlayer -lz
|
||||||
|
|
||||||
OBJECTS_DIR = ./Debug-ARM
|
OBJECTS_DIR = ./Debug-ARM
|
||||||
DESTDIR = $(TO_PROJECT_ROOT)/$(BIN_OUTPUT_DIR)
|
DESTDIR = $(TO_PROJECT_ROOT)/$(BIN_OUTPUT_DIR)
|
||||||
|
|
|
@ -44,8 +44,13 @@ Boolean TMainForm::EventHandler(TApplication * pApp, EventType * pEvent)
|
||||||
{
|
{
|
||||||
case EVENT_WinInit:
|
case EVENT_WinInit:
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
SimpleAudioEngine::sharedEngine()->setResourceEntry(&TestAudioEngineResourceEntry);
|
SimpleAudioEngine::sharedEngine()->setResourceEntry(&TestAudioEngineResourceEntry);
|
||||||
SimpleAudioEngine::sharedEngine()->setSoundResInfo(SoundResInfo, sizeof(SoundResInfo) / sizeof(T_SoundResInfo));
|
SimpleAudioEngine::sharedEngine()->setSoundResInfo(SoundResInfo, sizeof(SoundResInfo) / sizeof(T_SoundResInfo));
|
||||||
|
#else
|
||||||
|
SimpleAudioEngine::setResourcePath("/NEWPLUS/TDA_DATA/Data/APPS/TestAudioEngine/");
|
||||||
|
SimpleAudioEngine::setResourceZipFile("/NEWPLUS/TDA_DATA/Data/APPS/TestAudioEngine/TestAudioEngine.zip");
|
||||||
|
#endif
|
||||||
bHandled = TRUE;
|
bHandled = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -37,7 +37,7 @@ DEFINES=-DUNDER_UPHONE ;
|
||||||
INCLUDE_PATH=-I../CocosDenshion/include ;应用额外的包含路径。注意:ITOPS自己的所有路径都会自动包含,故此这里仅仅包含应用自己特有的路径即可
|
INCLUDE_PATH=-I../CocosDenshion/include ;应用额外的包含路径。注意:ITOPS自己的所有路径都会自动包含,故此这里仅仅包含应用自己特有的路径即可
|
||||||
|
|
||||||
;连接的库文件,可以使用多个LIBS串,也可以使用LIBS1、LIBS2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
;连接的库文件,可以使用多个LIBS串,也可以使用LIBS1、LIBS2等方式,MakeFile中依据出现顺序(不是数字大小)排列
|
||||||
LIBS=-lCocosDenshion -lTSoundPlayer ;应用额外的连接库。注意:ITOPS自己的所需库自动包含,而且库包含路径也已经包含,故此这里仅仅包含应用自己特有的库的名字即可
|
LIBS=-lCocosDenshionStatic -lTSoundPlayer -lz ;应用额外的连接库。注意:ITOPS自己的所需库自动包含,而且库包含路径也已经包含,故此这里仅仅包含应用自己特有的库的名字即可
|
||||||
|
|
||||||
;强制包含文件的名字,不能使用通配符,一定要使用相对或者绝对路径
|
;强制包含文件的名字,不能使用通配符,一定要使用相对或者绝对路径
|
||||||
;极力要求使用相对路径,多个文件之间使用“|”分隔
|
;极力要求使用相对路径,多个文件之间使用“|”分隔
|
||||||
|
|
Loading…
Reference in New Issue