HGImgProc保存和加载文件增加错误码
This commit is contained in:
parent
e89b26a32b
commit
47777eb6f1
|
@ -28,4 +28,13 @@
|
|||
/* 超时 */
|
||||
#define HGBASE_ERR_TIMEOUT 0x00000008L
|
||||
|
||||
/* 文件不存在 */
|
||||
#define HGBASE_ERR_FILENOTEXIST 0x00000009L
|
||||
|
||||
/* 加载动态库失败 */
|
||||
#define HGBASE_ERR_LOADLIBRARY 0x0000000AL
|
||||
|
||||
/* 文件错误 */
|
||||
#define HGBASE_ERR_FILEERROR 0x0000000BL
|
||||
|
||||
#endif /* __HGBASEERR_H__ */
|
|
@ -35,7 +35,7 @@ HGResult HGAPI HGBase_RegisterCrashFunc(HGCrashFunc func, HGPointer param)
|
|||
SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);
|
||||
return HGBASE_ERR_OK;
|
||||
#else
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_NOTIMPL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ HGResult HGAPI HGBase_MakeCrashFile(const HGChar* filePath)
|
|||
HANDLE hFile = CreateFileA(filePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (INVALID_HANDLE_VALUE == hFile)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_ACCESSDENIED;
|
||||
}
|
||||
|
||||
MINIDUMP_EXCEPTION_INFORMATION mdei;
|
||||
|
@ -61,6 +61,6 @@ HGResult HGAPI HGBase_MakeCrashFile(const HGChar* filePath)
|
|||
CloseHandle(hFile);
|
||||
return HGBASE_ERR_OK;
|
||||
#else
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_NOTIMPL;
|
||||
#endif
|
||||
}
|
|
@ -44,14 +44,14 @@ HGResult HGAPI HGBase_CreateDll(const HGChar* fileName, HGDll* dll)
|
|||
if (NULL == hDll)
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGBase_CreateDll: dlopen fail, %s dlerror=%s", fileName, dlerror());
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_LOADLIBRARY;
|
||||
}
|
||||
#else
|
||||
HMODULE hDll = LoadLibraryExA((const char *)fileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if (NULL == hDll)
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGBase_CreateDll: LoadLibraryExA fail, %s GetLastError=%u", fileName, GetLastError());
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_LOADLIBRARY;
|
||||
}
|
||||
#endif
|
||||
HGDllImpl* dllImpl = new HGDllImpl;
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#if defined(HG_CMP_MSC)
|
||||
#include <windows.h>
|
||||
#include <WinSock2.h>
|
||||
#include <io.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
|
|
|
@ -185,6 +185,14 @@ static HGResult IniReadValue(const char* section, const char* key, char* val, co
|
|||
typedef std::vector<std::pair<std::string, KeyList> > SectionList;
|
||||
|
||||
SectionList sectList;
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(file, 0))
|
||||
#else
|
||||
if (0 != access(file, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
FILE* fp = fopen(file, "r");
|
||||
if (fp != NULL)
|
||||
|
@ -255,7 +263,7 @@ static HGResult IniReadValue(const char* section, const char* key, char* val, co
|
|||
else
|
||||
{
|
||||
strcpy(val, def);
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_ACCESSDENIED;
|
||||
}
|
||||
|
||||
bool bGetVal = false;
|
||||
|
|
|
@ -78,6 +78,15 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
FILE* file = fopen(fileName, "rb");
|
||||
if (NULL == file)
|
||||
{
|
||||
|
@ -95,7 +104,7 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
{
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
uint8_t* buffer = (uint8_t*)malloc((size_t)size);
|
||||
|
@ -103,7 +112,7 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
{
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
|
@ -132,7 +141,7 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
buffer = NULL;
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (NULL != info)
|
||||
|
@ -154,7 +163,7 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
buffer = NULL;
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (0 == imgType)
|
||||
|
@ -307,7 +316,7 @@ HGResult HGAPI HGImgFmt_SaveBmpImage(HGImage image, const HGBmpSaveInfo* info, c
|
|||
{
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
uint8_t fh[14];
|
||||
|
|
|
@ -418,18 +418,27 @@ HGResult HGAPI HGImgFmt_OpenGifReader(const HGChar* fileName, HGGifLoadInfo* inf
|
|||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
int err;
|
||||
GifFileType* gifFile = DGifOpenFileName(fileName, &err);
|
||||
if (NULL == gifFile)
|
||||
{
|
||||
return HGBASE_ERR_ACCESSDENIED;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
DGifSlurp(gifFile);
|
||||
if (gifFile->ImageCount <= 0)
|
||||
{
|
||||
DGifCloseFile(gifFile, &err);
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
uint8_t* screenBuffer = (uint8_t*)malloc(gifFile->SWidth * gifFile->SHeight);
|
||||
|
@ -498,7 +507,7 @@ static HGResult LoadGifImage(HGGifReaderImpl* gifReaderImpl)
|
|||
GraphicsControlBlock gcb;
|
||||
if (DGifExtensionToGCB(ep->ByteCount, ep->Bytes, &gcb) == GIF_ERROR)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
transColor = gcb.TransparentColor;
|
||||
|
@ -533,7 +542,7 @@ static HGResult LoadGifImage(HGGifReaderImpl* gifReaderImpl)
|
|||
ColorMapObject* colorMap = (image->ImageDesc.ColorMap ? image->ImageDesc.ColorMap : gifReaderImpl->m_gifFile->SColorMap);
|
||||
if (colorMap == NULL)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
for (int h = image->ImageDesc.Top; h < image->ImageDesc.Top + image->ImageDesc.Height; ++h)
|
||||
|
@ -947,14 +956,14 @@ HGResult HGAPI HGImgFmt_SaveImageToGifWriter(HGGifWriter writer, HGUInt interval
|
|||
ColorMapObject* colorMap = GifMakeMapObject(mapSize, NULL);
|
||||
if (NULL == colorMap)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
GifByteType* rasterBits = (GifPixelType*)malloc(sizeof(GifPixelType) * gifWidth * gifHeight);
|
||||
if (NULL == rasterBits)
|
||||
{
|
||||
GifFreeMapObject(colorMap);
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (GifQuantizeBuffer(gifWidth, gifHeight, &mapSize, redBuffer, greenBuffer, blueBuffer,
|
||||
|
@ -962,7 +971,7 @@ HGResult HGAPI HGImgFmt_SaveImageToGifWriter(HGGifWriter writer, HGUInt interval
|
|||
{
|
||||
free(rasterBits);
|
||||
GifFreeMapObject(colorMap);
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
SavedImage* gifImage = GifMakeSavedImage(gifFile, NULL);
|
||||
|
@ -970,7 +979,7 @@ HGResult HGAPI HGImgFmt_SaveImageToGifWriter(HGGifWriter writer, HGUInt interval
|
|||
{
|
||||
free(rasterBits);
|
||||
GifFreeMapObject(colorMap);
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGIMGFMT_ERR_FAIL;
|
||||
}
|
||||
|
||||
gifImage->ImageDesc.Left = 0;
|
||||
|
|
|
@ -63,6 +63,15 @@ HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* in
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
FILE* file = fopen(fileName, "rb");
|
||||
if (NULL == file)
|
||||
{
|
||||
|
|
|
@ -24,11 +24,20 @@ HGResult HGOfdReaderImpl::Open(const HGChar* fileName)
|
|||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
int error = 0;
|
||||
m_zip = zip_open(StdStringToUtf8(fileName).c_str(), 0, &error);
|
||||
if (NULL == m_zip)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
std::string content;
|
||||
|
|
|
@ -30,6 +30,15 @@ HGResult HGPdfReaderImpl::Open(const HGChar* fileName)
|
|||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
HGBool isPdfFile = HGFALSE;
|
||||
FILE* file = fopen(fileName, "r");
|
||||
if (NULL != file)
|
||||
|
@ -43,10 +52,14 @@ HGResult HGPdfReaderImpl::Open(const HGChar* fileName)
|
|||
|
||||
fclose(file);
|
||||
}
|
||||
else
|
||||
{
|
||||
return HGBASE_ERR_ACCESSDENIED;
|
||||
}
|
||||
|
||||
if (!isPdfFile)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
assert(NULL == m_dll);
|
||||
|
|
|
@ -49,6 +49,15 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
FILE* file = fopen(fileName, "rb");
|
||||
if (NULL == file)
|
||||
{
|
||||
|
@ -67,7 +76,7 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
|
|||
{
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
return HGBASE_ERR_FAIL;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||
|
|
|
@ -435,6 +435,15 @@ HGResult HGAPI HGImgFmt_LoadPnmImage(const HGChar* fileName, HGPnmLoadInfo* info
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
FILE* file = fopen(fileName, "rb");
|
||||
if (NULL == file)
|
||||
{
|
||||
|
@ -445,7 +454,7 @@ HGResult HGAPI HGImgFmt_LoadPnmImage(const HGChar* fileName, HGPnmLoadInfo* info
|
|||
if (2 != fread(magicKey, 1, 2, file))
|
||||
{
|
||||
fclose(file);
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
HGUInt pnmType = 0;
|
||||
|
@ -477,7 +486,7 @@ HGResult HGAPI HGImgFmt_LoadPnmImage(const HGChar* fileName, HGPnmLoadInfo* info
|
|||
if (0 == pnmType)
|
||||
{
|
||||
fclose(file);
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
HGResult ret = PnmLoadImage(file, pnmType, info, imgType, imgOrigin, image);
|
||||
|
|
|
@ -28,10 +28,19 @@ HGResult HGAPI HGImgFmt_OpenTiffReader(const HGChar* fileName, HGTiffReader* rea
|
|||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
if (0 != _access(fileName, 0))
|
||||
#else
|
||||
if (0 != access(fileName, 0))
|
||||
#endif
|
||||
{
|
||||
return HGBASE_ERR_FILENOTEXIST;
|
||||
}
|
||||
|
||||
TIFF* tif = TIFFOpen(fileName, "r");
|
||||
if (NULL == tif)
|
||||
{
|
||||
return HGBASE_ERR_ACCESSDENIED;
|
||||
return HGBASE_ERR_FILEERROR;
|
||||
}
|
||||
|
||||
*reader = (HGTiffReader)tif;
|
||||
|
|
Loading…
Reference in New Issue