HGImgProc保存和加载文件增加错误码

This commit is contained in:
luoliangyi 2022-11-25 18:00:33 +08:00
parent e89b26a32b
commit 47777eb6f1
13 changed files with 119 additions and 25 deletions

View File

@ -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__ */

View File

@ -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
}

View File

@ -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;

View File

@ -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>

View File

@ -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;

View File

@ -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];

View File

@ -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;

View File

@ -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)
{

View 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;

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;