HGImgFmt库完善错误码

This commit is contained in:
luoliangyi 2022-11-26 10:42:06 +08:00
parent 3cc60d472a
commit 69ccf8fff9
12 changed files with 280 additions and 193 deletions

View File

@ -15,8 +15,13 @@ HGResult HGAPI HGImgFmt_CheckBmpFile(const HGChar* fileName, HGBool* isBmp)
HGBmpLoadInfo info;
HGResult ret = HGImgFmt_LoadBmpImage(fileName, &info, 0, 0, NULL);
*isBmp = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
return HGBASE_ERR_OK;
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isBmp = HGTRUE;
return ret;
}
static void* bitmap_create(int width, int height, unsigned int state)

View File

@ -400,14 +400,24 @@ HGResult HGAPI HGImgFmt_CheckGifFile(const HGChar* fileName, HGBool* isGif)
return HGBASE_ERR_INVALIDARG;
}
*isGif = HGFALSE;
#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)
if (NULL == gifFile)
{
return HGBASE_ERR_FILEERROR;
}
*isGif = HGTRUE;
DGifCloseFile(gifFile, &err);
}
return HGBASE_ERR_OK;
}
@ -587,7 +597,7 @@ HGResult HGAPI HGImgFmt_RetrieveImageFromGifReader(HGGifReader reader, HGUInt* i
return HGBASE_ERR_INVALIDARG;
}
if (HGBASE_IMGORIGIN_TOP != imgOrigin && HGBASE_IMGORIGIN_BOTTOM != imgOrigin)
if (0 != imgOrigin && HGBASE_IMGORIGIN_TOP != imgOrigin && HGBASE_IMGORIGIN_BOTTOM != imgOrigin)
{
return HGBASE_ERR_INVALIDARG;
}
@ -615,6 +625,11 @@ HGResult HGAPI HGImgFmt_RetrieveImageFromGifReader(HGGifReader reader, HGUInt* i
imgType = HGBASE_IMGTYPE_RGB;
}
if (0 == imgOrigin)
{
imgOrigin = HGBASE_IMGORIGIN_TOP;
}
HGImageInfo gifImageInfo;
gifImageInfo.width = gifReaderImpl->m_gifFile->SWidth;
gifImageInfo.height = gifReaderImpl->m_gifFile->SHeight;
@ -745,11 +760,11 @@ HGResult HGAPI HGImgFmt_LoadGifImage(const HGChar* fileName, HGGifLoadInfo* info
if (NULL != image)
{
HGImgFmt_RetrieveImageFromGifReader(reader, NULL, interval, imgType, imgOrigin, image);
ret = HGImgFmt_RetrieveImageFromGifReader(reader, NULL, interval, imgType, imgOrigin, image);
}
HGImgFmt_CloseGifReader(reader);
return HGBASE_ERR_OK;
return ret;
}
HGResult HGAPI HGImgFmt_OpenGifWriter(const HGChar* fileName, const HGGifSaveInfo* info, HGGifWriter* writer)
@ -963,7 +978,7 @@ HGResult HGAPI HGImgFmt_SaveImageToGifWriter(HGGifWriter writer, HGUInt interval
if (NULL == rasterBits)
{
GifFreeMapObject(colorMap);
return HGIMGFMT_ERR_FAIL;
return HGBASE_ERR_OUTOFMEMORY;
}
if (GifQuantizeBuffer(gifWidth, gifHeight, &mapSize, redBuffer, greenBuffer, blueBuffer,

View File

@ -47,7 +47,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isJpeg = HGFALSE;
HGImgFmt_CheckJpegFile(fileName, &isJpeg);
HGResult ret = HGImgFmt_CheckJpegFile(fileName, &isJpeg);
if (isJpeg)
{
*fmtType = HGIMGFMT_TYPE_JPEG;
@ -55,7 +55,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isBmp = HGFALSE;
HGImgFmt_CheckBmpFile(fileName, &isBmp);
ret = HGImgFmt_CheckBmpFile(fileName, &isBmp);
if (isBmp)
{
*fmtType = HGIMGFMT_TYPE_BMP;
@ -63,7 +63,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isPng = HGFALSE;
HGImgFmt_CheckPngFile(fileName, &isPng);
ret = HGImgFmt_CheckPngFile(fileName, &isPng);
if (isPng)
{
*fmtType = HGIMGFMT_TYPE_PNG;
@ -71,7 +71,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isTiff = HGFALSE;
HGImgFmt_CheckTiffFile(fileName, &isTiff);
ret = HGImgFmt_CheckTiffFile(fileName, &isTiff);
if (isTiff)
{
*fmtType = HGIMGFMT_TYPE_TIFF;
@ -79,7 +79,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isPdf = HGFALSE;
HGImgFmt_CheckPdfFile(fileName, &isPdf);
ret = HGImgFmt_CheckPdfFile(fileName, &isPdf);
if (isPdf)
{
*fmtType = HGIMGFMT_TYPE_PDF;
@ -87,7 +87,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isOfd = HGFALSE;
HGImgFmt_CheckOfdFile(fileName, &isOfd);
ret = HGImgFmt_CheckOfdFile(fileName, &isOfd);
if (isOfd)
{
*fmtType = HGIMGFMT_TYPE_OFD;
@ -95,7 +95,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isGif = HGFALSE;
HGImgFmt_CheckGifFile(fileName, &isGif);
ret = HGImgFmt_CheckGifFile(fileName, &isGif);
if (isGif)
{
*fmtType = HGIMGFMT_TYPE_GIF;
@ -103,14 +103,14 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
}
HGBool isPnm = HGFALSE;
HGImgFmt_CheckPnmFile(fileName, &isPnm);
ret = HGImgFmt_CheckPnmFile(fileName, &isPnm);
if (isPnm)
{
*fmtType = HGIMGFMT_TYPE_PNM;
return HGBASE_ERR_OK;
}
return HGBASE_ERR_FAIL;
return ret;
}
HGResult HGAPI HGImgFmt_GetImgFmtTypeFromFileName(const HGChar* fileName, HGUInt* fmtType)
@ -123,7 +123,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtTypeFromFileName(const HGChar* fileName, HGUInt
const char* p = strrchr(fileName, '.');
if (NULL == p)
{
return HGBASE_ERR_FAIL;
return HGBASE_ERR_INVALIDARG;
}
#if defined(HG_CMP_MSC)
@ -443,7 +443,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
assert(0 == fmtType);
HGJpegLoadInfo jpegInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadJpegImage(fileName, &jpegInfo, imgType, imgOrigin, image))
HGResult ret = HGImgFmt_LoadJpegImage(fileName, &jpegInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -468,7 +469,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGBmpLoadInfo bmpInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadBmpImage(fileName, &bmpInfo, imgType, imgOrigin, image))
ret = HGImgFmt_LoadBmpImage(fileName, &bmpInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -483,7 +485,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGPngLoadInfo pngInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadPngImage(fileName, &pngInfo, imgType, imgOrigin, image))
ret = HGImgFmt_LoadPngImage(fileName, &pngInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -503,7 +506,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGTiffLoadInfo tiffInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadTiffImage(fileName, &tiffInfo, imgType, imgOrigin, image))
ret = HGImgFmt_LoadTiffImage(fileName, &tiffInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -528,7 +532,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGPdfPageInfo pdfInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadPdfImage(fileName, &pdfInfo, imgType, imgOrigin, image))
ret = HGImgFmt_LoadPdfImage(fileName, &pdfInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -543,7 +548,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGOfdPageInfo ofdInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadOfdImage(fileName, &ofdInfo, imgType, imgOrigin, image))
ret = HGImgFmt_LoadOfdImage(fileName, &ofdInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -558,7 +564,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGGifLoadInfo gifInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadGifImage(fileName, &gifInfo, NULL, imgType, imgOrigin, image))
ret = HGImgFmt_LoadGifImage(fileName, &gifInfo, NULL, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -573,7 +580,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
}
HGPnmLoadInfo pnmInfo;
if (HGBASE_ERR_OK == HGImgFmt_LoadPnmImage(fileName, &pnmInfo, imgType, imgOrigin, image))
ret = HGImgFmt_LoadPnmImage(fileName, &pnmInfo, imgType, imgOrigin, image);
if (HGBASE_ERR_OK == ret)
{
if (NULL != info)
{
@ -591,7 +599,7 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
return HGBASE_ERR_OK;
}
return HGBASE_ERR_FAIL;
return ret;
}
HGResult HGAPI HGImgFmt_SaveImage(HGImage image, HGUInt fmtType, const HGImgFmtSaveInfo* info, const HGChar* fileName)
@ -804,7 +812,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
assert(0 == fmtType);
HGBool isJpeg = HGFALSE;
HGImgFmt_CheckJpegFile(fileName, &isJpeg);
HGResult ret = HGImgFmt_CheckJpegFile(fileName, &isJpeg);
if (isJpeg)
{
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
@ -816,7 +824,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
}
HGBool isBmp = HGFALSE;
HGImgFmt_CheckBmpFile(fileName, &isBmp);
ret = HGImgFmt_CheckBmpFile(fileName, &isBmp);
if (isBmp)
{
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
@ -828,7 +836,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
}
HGBool isPng = HGFALSE;
HGImgFmt_CheckPngFile(fileName, &isPng);
ret = HGImgFmt_CheckPngFile(fileName, &isPng);
if (isPng)
{
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
@ -840,7 +848,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
}
HGTiffReader tiffReader = NULL;
HGResult ret = HGImgFmt_OpenTiffReader(fileName, &tiffReader);
ret = HGImgFmt_OpenTiffReader(fileName, &tiffReader);
if (HGBASE_ERR_OK == ret)
{
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
@ -890,7 +898,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
}
HGBool isPnm = HGFALSE;
HGImgFmt_CheckPnmFile(fileName, &isPnm);
ret = HGImgFmt_CheckPnmFile(fileName, &isPnm);
if (isPnm)
{
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
@ -901,7 +909,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
return HGBASE_ERR_OK;
}
return HGBASE_ERR_FAIL;
return ret;
}
HGResult HGAPI HGImgFmt_CloseImageReader(HGImgFmtReader reader)

View File

@ -17,7 +17,7 @@ METHODDEF(void) my_error_exit(j_common_ptr cinfo)
{
my_error_mgr* myerr = (my_error_mgr*)cinfo->err;
(*cinfo->err->output_message)(cinfo);
longjmp(myerr->setjmp_buffer, (int)HGBASE_ERR_FAIL);
longjmp(myerr->setjmp_buffer, (int)HGIMGFMT_ERR_FAIL);
}
HGResult HGAPI HGImgFmt_CheckJpegFile(const HGChar* fileName, HGBool* isJpeg)
@ -29,8 +29,13 @@ HGResult HGAPI HGImgFmt_CheckJpegFile(const HGChar* fileName, HGBool* isJpeg)
HGJpegLoadInfo info;
HGResult ret = HGImgFmt_LoadJpegImage(fileName, &info, 0, 0, NULL);
*isJpeg = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
return HGBASE_ERR_OK;
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isJpeg = HGTRUE;
return ret;
}
HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* info,
@ -129,10 +134,11 @@ HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* in
cinfo.out_color_space = JCS_RGB;
jpeg_start_decompress(&cinfo);
if (HGBASE_ERR_OK != HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
longjmp(jerr.setjmp_buffer, (int)ret);
}
if (1 == cinfo.density_unit)
@ -159,9 +165,10 @@ HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* in
jpeg_finish_decompress(&cinfo);
if (HGBASE_ERR_OK != HGBase_CloneImage(image2, imgType, imgOrigin, image))
ret = HGBase_CloneImage(image2, imgType, imgOrigin, image);
if (HGBASE_ERR_OK != ret)
{
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
longjmp(jerr.setjmp_buffer, (int)ret);
}
}
@ -257,10 +264,11 @@ HGResult HGAPI HGImgFmt_LoadJpegImageFromBuffer(HGBuffer buffer, HGJpegLoadInfo*
cinfo.out_color_space = JCS_RGB;
jpeg_start_decompress(&cinfo);
if (HGBASE_ERR_OK != HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
longjmp(jerr.setjmp_buffer, (int)ret);
}
if (1 == cinfo.density_unit)
@ -287,9 +295,10 @@ HGResult HGAPI HGImgFmt_LoadJpegImageFromBuffer(HGBuffer buffer, HGJpegLoadInfo*
jpeg_finish_decompress(&cinfo);
if (HGBASE_ERR_OK != HGBase_CloneImage(image2, imgType, imgOrigin, image))
ret = HGBase_CloneImage(image2, imgType, imgOrigin, image);
if (HGBASE_ERR_OK != ret)
{
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
longjmp(jerr.setjmp_buffer, (int)ret);
}
}
@ -347,13 +356,15 @@ HGResult HGAPI HGImgFmt_SaveJpegImage(HGImage image, const HGJpegSaveInfo* info,
HGBase_GetImageInfo(image, &imgInfo);
if (HGBASE_IMGTYPE_GRAY == imgInfo.type || HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2))
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
longjmp(jerr.setjmp_buffer, (int)ret);
}
else
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
longjmp(jerr.setjmp_buffer, (int)ret);
}
HGBase_GetImageInfo(image2, &imgInfo);
@ -453,13 +464,15 @@ HGResult HGAPI HGImgFmt_SaveJpegImageToBuffer(HGImage image, const HGJpegSaveInf
HGBase_GetImageInfo(image, &imgInfo);
if (HGBASE_IMGTYPE_GRAY == imgInfo.type || HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2))
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
longjmp(jerr.setjmp_buffer, (int)ret);
}
else
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
longjmp(jerr.setjmp_buffer, (int)ret);
}
HGBase_GetImageInfo(image2, &imgInfo);

View File

@ -8,15 +8,16 @@ HGResult HGAPI HGImgFmt_CheckOfdFile(const HGChar* fileName, HGBool* isOfd)
return HGBASE_ERR_INVALIDARG;
}
*isOfd = HGFALSE;
HGOfdReader reader = NULL;
HGImgFmt_OpenOfdReader(fileName, &reader);
if (NULL != reader)
HGResult ret = HGImgFmt_OpenOfdReader(fileName, &reader);
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isOfd = HGTRUE;
HGImgFmt_CloseOfdReader(reader);
}
return HGBASE_ERR_OK;
return ret;
}
HGResult HGAPI HGImgFmt_OpenOfdReader(const HGChar* fileName, HGOfdReader* reader)

View File

@ -41,11 +41,12 @@ HGResult HGOfdReaderImpl::Open(const HGChar* fileName)
}
std::string content;
if (!ReadXml("Doc_0/Document.xml", content))
HGResult ret = ReadXml("Doc_0/Document.xml", content);
if (HGBASE_ERR_OK != ret)
{
zip_close(m_zip);
m_zip = NULL;
return HGBASE_ERR_FAIL;
return ret;
}
tinyxml2::XMLDocument xmlDoc;
@ -78,7 +79,7 @@ HGResult HGOfdReaderImpl::Open(const HGChar* fileName)
}
}
return HGBASE_ERR_OK;
return ret;
}
HGResult HGOfdReaderImpl::Close()
@ -156,9 +157,10 @@ HGResult HGOfdReaderImpl::GetPageInfo(HGUInt page, HGOfdPageInfo* info)
sprintf(name, "Doc_0/%s", m_contentNames[page].c_str());
std::string content;
if (!ReadXml(name, content))
HGResult ret = ReadXml(name, content);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
tinyxml2::XMLDocument xmlDoc;
@ -216,12 +218,13 @@ HGResult HGOfdReaderImpl::GetPageInfo(HGUInt page, HGOfdPageInfo* info)
if (resId.empty())
{
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
if (!ReadXml("Doc_0/DocumentRes.xml", content))
ret = ReadXml("Doc_0/DocumentRes.xml", content);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
std::string imgName;
@ -277,22 +280,23 @@ HGResult HGOfdReaderImpl::GetPageInfo(HGUInt page, HGOfdPageInfo* info)
if (imgName.empty())
{
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
char img_name[128];
sprintf(img_name, "Doc_0/Res/%s", imgName.c_str());
HGJpegLoadInfo jpegInfo;
if (!ReadJpeg(img_name, &jpegInfo, 0, 0, 0, 0, NULL))
HGResult ret = ReadJpeg(img_name, &jpegInfo, 0, 0, 0, 0, NULL);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
info->width = jpegInfo.width;
info->height = jpegInfo.height;
info->bpp = jpegInfo.numComponents * 8;
return HGBASE_ERR_OK;
return ret;
}
HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
@ -317,9 +321,10 @@ HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
sprintf(name, "Doc_0/%s", m_contentNames[page].c_str());
std::string content;
if (!ReadXml(name, content))
HGResult ret = ReadXml(name, content);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
tinyxml2::XMLDocument xmlDoc;
@ -377,12 +382,13 @@ HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
if (resId.empty())
{
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
if (!ReadXml("Doc_0/DocumentRes.xml", content))
ret = ReadXml("Doc_0/DocumentRes.xml", content);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
std::string imgName;
@ -438,20 +444,21 @@ HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
if (imgName.empty())
{
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
char img_name[128];
sprintf(img_name, "Doc_0/Res/%s", imgName.c_str());
if (!ReadJpeg(img_name, NULL, xScale, yScale, imgType, imgOrigin, image))
HGResult ret = ReadJpeg(img_name, NULL, xScale, yScale, imgType, imgOrigin, image);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
return HGBASE_ERR_OK;
return ret;
}
bool HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
HGResult HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
{
struct zip_stat st;
zip_stat_init(&st);
@ -460,20 +467,20 @@ bool HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
zip_int64_t size = st.size;
if (0 == size)
{
return false;
return HGIMGFMT_ERR_FAIL;
}
zip_file* file = zip_fopen(m_zip, name, ZIP_FL_NOCASE);
if (NULL == file)
{
return false;
return HGIMGFMT_ERR_FAIL;
}
char* s = (char*)malloc((size_t)size + 1);
if (NULL == s)
{
zip_fclose(file);
return false;
return HGBASE_ERR_OUTOFMEMORY;
}
zip_int64_t did_read = zip_fread(file, s, size);
@ -481,7 +488,7 @@ bool HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
{
free(s);
zip_fclose(file);
return false;
return HGIMGFMT_ERR_FAIL;
}
s[size] = 0;
@ -489,10 +496,10 @@ bool HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
free(s);
zip_fclose(file);
return true;
return HGBASE_ERR_OK;
}
bool HGOfdReaderImpl::ReadJpeg(const char* name, HGJpegLoadInfo* info, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image)
HGResult HGOfdReaderImpl::ReadJpeg(const char* name, HGJpegLoadInfo* info, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image)
{
struct zip_stat st;
zip_stat_init(&st);
@ -501,20 +508,20 @@ bool HGOfdReaderImpl::ReadJpeg(const char* name, HGJpegLoadInfo* info, HGFloat x
zip_int64_t size = st.size;
if (0 == size)
{
return false;
return HGIMGFMT_ERR_FAIL;
}
zip_file* file = zip_fopen(m_zip, name, ZIP_FL_NOCASE);
if (NULL == file)
{
return false;
return HGIMGFMT_ERR_FAIL;
}
unsigned char* content = (unsigned char*)malloc((size_t)size);
if (NULL == content)
{
zip_fclose(file);
return false;
return HGBASE_ERR_OUTOFMEMORY;
}
zip_int64_t did_read = zip_fread(file, content, size);
@ -522,7 +529,7 @@ bool HGOfdReaderImpl::ReadJpeg(const char* name, HGJpegLoadInfo* info, HGFloat x
{
free(content);
zip_fclose(file);
return false;
return HGIMGFMT_ERR_FAIL;
}
HGBuffer buffer = NULL;
@ -532,7 +539,7 @@ bool HGOfdReaderImpl::ReadJpeg(const char* name, HGJpegLoadInfo* info, HGFloat x
free(content);
zip_fclose(file);
return (HGBASE_ERR_OK == ret);
return ret;
}
@ -566,14 +573,23 @@ HGResult HGOfdImageWriterImpl::Open(const HGChar* fileName)
zip_add_dir(m_zip, "Doc_0/Pages");
zip_add_dir(m_zip, "Doc_0/Res");
if (!AddOfdXml() || !AddPublicResXml())
HGResult ret = AddOfdXml();
if (HGBASE_ERR_OK != ret)
{
zip_close(m_zip);
m_zip = NULL;
return HGBASE_ERR_FAIL;
return ret;
}
return HGBASE_ERR_OK;
ret = AddPublicResXml();
if (HGBASE_ERR_OK != ret)
{
zip_close(m_zip);
m_zip = NULL;
return ret;
}
return ret;
}
HGResult HGOfdImageWriterImpl::Close()
@ -604,9 +620,10 @@ HGResult HGOfdImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
{
HGChar name[128];
sprintf(name, "Doc_0/Res/image_%u.jpg", m_curImgIndex);
if (!AddJpegImageFile(image, info, name))
HGResult ret = AddJpegImageFile(image, info, name);
if (HGBASE_ERR_OK != ret)
{
return HGBASE_ERR_FAIL;
return ret;
}
HGUInt xDpi, yDpi;
@ -635,7 +652,7 @@ HGResult HGOfdImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
return HGBASE_ERR_OK;
}
bool HGOfdImageWriterImpl::AddOfdXml()
HGResult HGOfdImageWriterImpl::AddOfdXml()
{
tinyxml2::XMLDocument xmlDoc;
@ -686,7 +703,7 @@ bool HGOfdImageWriterImpl::AddOfdXml()
return AddXmlFile(xmlDoc, "OFD.xml");
}
bool HGOfdImageWriterImpl::AddDocXml()
HGResult HGOfdImageWriterImpl::AddDocXml()
{
tinyxml2::XMLDocument xmlDoc;
@ -742,7 +759,7 @@ bool HGOfdImageWriterImpl::AddDocXml()
return AddXmlFile(xmlDoc, "Doc_0/Document.xml");
}
bool HGOfdImageWriterImpl::AddDocResXml()
HGResult HGOfdImageWriterImpl::AddDocResXml()
{
tinyxml2::XMLDocument xmlDoc;
@ -773,7 +790,7 @@ bool HGOfdImageWriterImpl::AddDocResXml()
return AddXmlFile(xmlDoc, "Doc_0/DocumentRes.xml");
}
bool HGOfdImageWriterImpl::AddPublicResXml()
HGResult HGOfdImageWriterImpl::AddPublicResXml()
{
tinyxml2::XMLDocument xmlDoc;
@ -788,20 +805,20 @@ bool HGOfdImageWriterImpl::AddPublicResXml()
return AddXmlFile(xmlDoc, "Doc_0/PublicRes.xml");
}
bool HGOfdImageWriterImpl::AddXmlFile(tinyxml2::XMLDocument& xmlDoc, const HGChar* name)
HGResult HGOfdImageWriterImpl::AddXmlFile(tinyxml2::XMLDocument& xmlDoc, const HGChar* name)
{
HGChar tmpName[256];
HGBase_GetTmpFileName(NULL, tmpName, 256);
if (tinyxml2::XML_SUCCESS != xmlDoc.SaveFile(tmpName))
{
return false;
return HGIMGFMT_ERR_FAIL;
}
zip_source_t* s = zip_source_file(m_zip, tmpName, 0, 0);
if (NULL == s)
{
HGBase_DeleteFile(tmpName);
return false;
return HGIMGFMT_ERR_FAIL;
}
zip_int64_t ret = zip_file_add(m_zip, name, s, ZIP_FL_ENC_UTF_8 | ZIP_FL_OVERWRITE);
@ -809,27 +826,28 @@ bool HGOfdImageWriterImpl::AddXmlFile(tinyxml2::XMLDocument& xmlDoc, const HGCha
{
zip_source_free(s);
HGBase_DeleteFile(tmpName);
return false;
return HGIMGFMT_ERR_FAIL;
}
m_tmpFiles.push_back(tmpName);
return true;
return HGBASE_ERR_OK;
}
bool HGOfdImageWriterImpl::AddJpegImageFile(HGImage image, const HGJpegSaveInfo* info, const HGChar* name)
HGResult HGOfdImageWriterImpl::AddJpegImageFile(HGImage image, const HGJpegSaveInfo* info, const HGChar* name)
{
HGChar tmpName[256];
HGBase_GetTmpFileName(NULL, tmpName, 256);
if (HGBASE_ERR_OK != HGImgFmt_SaveJpegImage(image, info, tmpName))
HGResult ret = HGImgFmt_SaveJpegImage(image, info, tmpName);
if (HGBASE_ERR_OK != ret)
{
return false;
return ret;
}
zip_source_t* s = zip_source_file(m_zip, tmpName, 0, 0);
if (NULL == s)
{
HGBase_DeleteFile(tmpName);
return false;
return HGIMGFMT_ERR_FAIL;
}
zip_int64_t ret = zip_file_add(m_zip, name, s, ZIP_FL_OVERWRITE);
@ -837,14 +855,14 @@ bool HGOfdImageWriterImpl::AddJpegImageFile(HGImage image, const HGJpegSaveInfo*
{
zip_source_free(s);
HGBase_DeleteFile(tmpName);
return false;
return HGIMGFMT_ERR_FAIL;
}
m_tmpFiles.push_back(tmpName);
return true;
return HGBASE_ERR_OK;
}
bool HGOfdImageWriterImpl::AddContentXmlFile(HGUInt index, HGFloat physicalWidth, HGFloat physicalHeight)
HGResult HGOfdImageWriterImpl::AddContentXmlFile(HGUInt index, HGFloat physicalWidth, HGFloat physicalHeight)
{
HGChar dir[128];
sprintf(dir, "Doc_0/Pages/Page_%u", index);

View File

@ -25,8 +25,8 @@ public:
HGUInt imgType, HGUInt imgOrigin, HGImage* image);
private:
bool ReadXml(const char *name, std::string &content);
bool ReadJpeg(const char* name, HGJpegLoadInfo *info, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image);
HGResult ReadXml(const char *name, std::string &content);
HGResult ReadJpeg(const char* name, HGJpegLoadInfo *info, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image);
private:
zip* m_zip;
@ -44,13 +44,13 @@ public:
HGResult SaveJpegImage(HGImage image, const HGJpegSaveInfo* info);
private:
bool AddOfdXml();
bool AddDocXml();
bool AddDocResXml();
bool AddPublicResXml();
bool AddXmlFile(tinyxml2::XMLDocument &xmlDoc, const HGChar *name);
bool AddJpegImageFile(HGImage image, const HGJpegSaveInfo* info, const HGChar* name);
bool AddContentXmlFile(HGUInt index, HGFloat physicalWidth, HGFloat physicalHeight);
HGResult AddOfdXml();
HGResult AddDocXml();
HGResult AddDocResXml();
HGResult AddPublicResXml();
HGResult AddXmlFile(tinyxml2::XMLDocument &xmlDoc, const HGChar *name);
HGResult AddJpegImageFile(HGImage image, const HGJpegSaveInfo* info, const HGChar* name);
HGResult AddContentXmlFile(HGUInt index, HGFloat physicalWidth, HGFloat physicalHeight);
private:
zip* m_zip;

View File

@ -8,15 +8,16 @@ HGResult HGAPI HGImgFmt_CheckPdfFile(const HGChar* fileName, HGBool* isPdf)
return HGBASE_ERR_INVALIDARG;
}
*isPdf = HGFALSE;
HGPdfReader reader = NULL;
HGImgFmt_OpenPdfReader(fileName, &reader);
if (NULL != reader)
HGResult ret = HGImgFmt_OpenPdfReader(fileName, &reader);
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isPdf = HGTRUE;
HGImgFmt_ClosePdfReader(reader);
}
return HGBASE_ERR_OK;
return ret;
}
HGResult HGAPI HGImgFmt_OpenPdfReader(const HGChar* fileName, HGPdfReader* reader)

View File

@ -85,10 +85,10 @@ HGResult HGPdfReaderImpl::Open(const HGChar* fileName)
{
HGBase_DestroyDll(m_dll);
m_dll = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
ret = HGBASE_ERR_FAIL;
ret = HGIMGFMT_ERR_FAIL;
fz_try(pContext)
{
fz_register_document_handlers(pContext);
@ -137,7 +137,7 @@ HGResult HGPdfReaderImpl::GetPageCount(HGUInt* count)
return HGBASE_ERR_INVALIDARG;
}
HGResult ret = HGBASE_ERR_FAIL;
HGResult ret = HGIMGFMT_ERR_FAIL;
fz_try(m_pContext)
{
*count = (uint32_t)fz_count_pages(m_pContext, m_pDoc);
@ -163,7 +163,7 @@ HGResult HGPdfReaderImpl::GetPageInfo(HGUInt page, HGPdfPageInfo* info)
return HGBASE_ERR_INVALIDARG;
}
HGResult ret = HGBASE_ERR_FAIL;
HGResult ret = HGIMGFMT_ERR_FAIL;
fz_page* fzpage = NULL;
fz_try(m_pContext)
@ -207,7 +207,7 @@ HGResult HGPdfReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
return HGBASE_ERR_INVALIDARG;
}
HGResult ret = HGBASE_ERR_FAIL;
HGResult ret = HGIMGFMT_ERR_FAIL;
fz_pixmap* pix = NULL;
fz_try(m_pContext)
@ -591,7 +591,7 @@ HGResult HGPdfImageWriterImpl::Open(const HGChar* fileName)
{
HGBase_DestroyDll(m_dll);
m_dll = NULL;
return HGBASE_ERR_OUTOFMEMORY;
return HGIMGFMT_ERR_FAIL;
}
#if defined(HG_CMP_MSC)
@ -627,7 +627,7 @@ HGResult HGPdfImageWriterImpl::Open(const HGChar* fileName)
PDF_delete(p);
HGBase_DestroyDll(m_dll);
m_dll = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
delete[] pUnicode;
@ -689,7 +689,7 @@ HGResult HGPdfImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
PDF_CATCH(m_pPdf)
{
HGBase_DestroyBuffer(buffer);
return HGBASE_ERR_OUTOFMEMORY;
return HGIMGFMT_ERR_FAIL;
}
int img = PDF_load_image(m_pPdf, "auto", "virtual_file", 0, "page 1");

View File

@ -15,8 +15,13 @@ HGResult HGAPI HGImgFmt_CheckPngFile(const HGChar* fileName, HGBool* isPng)
HGPngLoadInfo info;
HGResult ret = HGImgFmt_LoadPngImage(fileName, &info, 0, 0, NULL);
*isPng = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
return HGBASE_ERR_OK;
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isPng = HGTRUE;
return ret;
}
HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info,
@ -84,7 +89,7 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
{
fclose(file);
file = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
png_infop info_ptr = png_create_info_struct(png_ptr);
@ -93,7 +98,7 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
png_destroy_read_struct(&png_ptr, NULL, NULL);
fclose(file);
file = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
uint8_t* buffer = NULL;
@ -150,13 +155,13 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
buffer = (uint8_t*)malloc((uintptr_t)info_ptr->rowbytes * (uintptr_t)info_ptr->height);
if (NULL == buffer)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_OUTOFMEMORY);
}
rowPointers = (uint8_t**)malloc(info_ptr->height * sizeof(png_bytep));
if (NULL == rowPointers)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_OUTOFMEMORY);
}
//#pragma omp parallel for
@ -186,9 +191,10 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
imgOrigin = HGBASE_IMGORIGIN_TOP;
}
if (HGBASE_ERR_OK != HGBase_CreateImage(info_ptr->width, info_ptr->height, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CreateImage(info_ptr->width, info_ptr->height, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)ret);
}
if (PNG_RESOLUTION_METER == info_ptr->phys_unit_type)
@ -276,9 +282,10 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
}
}
if (HGBASE_ERR_OK != HGBase_CloneImage(image2, imgType, imgOrigin, image))
ret = HGBase_CloneImage(image2, imgType, imgOrigin, image);
if (HGBASE_ERR_OK != ret)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)ret);
}
}
@ -318,7 +325,7 @@ HGResult HGAPI HGImgFmt_SavePngImage(HGImage image, const HGPngSaveInfo* info, c
{
fclose(file);
file = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
png_infop info_ptr = png_create_info_struct(png_ptr);
@ -327,7 +334,7 @@ HGResult HGAPI HGImgFmt_SavePngImage(HGImage image, const HGPngSaveInfo* info, c
png_destroy_write_struct(&png_ptr, NULL);
fclose(file);
file = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
uint8_t** rowPointers = NULL;
@ -357,30 +364,34 @@ HGResult HGAPI HGImgFmt_SavePngImage(HGImage image, const HGPngSaveInfo* info, c
HGBase_GetImageInfo(image, &imgInfo);
if (HGBASE_IMGTYPE_BGR == imgInfo.type)
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)ret);
}
}
else if (HGBASE_IMGTYPE_BGRA == imgInfo.type)
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)ret);
}
}
else if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)ret);
}
}
else
{
if (HGBASE_ERR_OK != HGBase_CloneImage(image, imgInfo.type, HGBASE_IMGORIGIN_TOP, &image2))
HGResult ret = HGBase_CloneImage(image, imgInfo.type, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)ret);
}
}
@ -427,7 +438,7 @@ HGResult HGAPI HGImgFmt_SavePngImage(HGImage image, const HGPngSaveInfo* info, c
rowPointers = (uint8_t**)malloc(height * sizeof(png_bytep));
if (NULL == rowPointers)
{
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_OUTOFMEMORY);
}
//#pragma omp parallel for

View File

@ -46,8 +46,13 @@ HGResult HGAPI HGImgFmt_CheckPnmFile(const HGChar* fileName, HGBool* isPnm)
HGPnmLoadInfo info;
HGResult ret = HGImgFmt_LoadPnmImage(fileName, &info, 0, 0, NULL);
*isPnm = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
return HGBASE_ERR_OK;
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isPnm = HGTRUE;
return ret;
}
HGResult HGAPI HGImgFmt_GetPnmTypeFromFileName(const HGChar* fileName, HGUInt* pnmType)
@ -60,7 +65,7 @@ HGResult HGAPI HGImgFmt_GetPnmTypeFromFileName(const HGChar* fileName, HGUInt* p
const char* p = strrchr(fileName, '.');
if (NULL == p)
{
return HGBASE_ERR_FAIL;
return HGBASE_ERR_INVALIDARG;
}
#if defined(HG_CMP_MSC)
@ -119,7 +124,7 @@ static HGResult PnmLoadInfo(FILE* file, HGUInt pnmType, HGUInt *width, HGUInt *h
HGByte c = 0;
if (1 != fread(&c, 1, 1, file))
{
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
if (c == '#' || c == '\n' || c == '\r' || c == '\t' || c == ' ')
@ -132,21 +137,21 @@ static HGResult PnmLoadInfo(FILE* file, HGUInt pnmType, HGUInt *width, HGUInt *h
{
*width = MyAtoi(buf);
if (*width == 0)
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
getWidth = true;
}
else if (!getHeight)
{
*height = MyAtoi(buf);
if (*height == 0)
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
getHeight = true;
}
else if (!getMaxColor)
{
*maxColor = MyAtoi(buf);
if (*maxColor == 0)
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
getMaxColor = true;
}
@ -159,7 +164,7 @@ static HGResult PnmLoadInfo(FILE* file, HGUInt pnmType, HGUInt *width, HGUInt *h
{
if (1 != fread(&c, 1, 1, file))
{
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
}
}
@ -171,7 +176,7 @@ static HGResult PnmLoadInfo(FILE* file, HGUInt pnmType, HGUInt *width, HGUInt *h
}
else
{
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
if (pnmType != HGIMGFMT_PNMTYPE_BINARY_ASCII && pnmType != HGIMGFMT_PNMTYPE_BINARY_BINARY)
@ -205,7 +210,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
if (pnmType != HGIMGFMT_PNMTYPE_BINARY_ASCII && pnmType != HGIMGFMT_PNMTYPE_BINARY_BINARY)
{
if (maxColor != 255)
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
else
{
@ -267,7 +272,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
if (lineSize != fread(data + i * imgInfo.widthStep, 1, lineSize, file))
{
HGBase_DestroyImage(image2);
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
}
@ -313,7 +318,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
if (pixel < 0 || pixel > maxColor)
{
HGBase_DestroyImage(image2);
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
if (pnmType == HGIMGFMT_PNMTYPE_BINARY_ASCII)
@ -344,7 +349,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
else
{
HGBase_DestroyImage(image2);
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
}
else if (c == '#')
@ -364,7 +369,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
if (!getChar)
{
HGBase_DestroyImage(image2);
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
}
}
@ -377,7 +382,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
else
{
HGBase_DestroyImage(image2);
return HGBASE_ERR_INVALIDDATA;
return HGBASE_ERR_FILEERROR;
}
if (p == data + height * imgInfo.widthStep)

View File

@ -10,15 +10,16 @@ HGResult HGAPI HGImgFmt_CheckTiffFile(const HGChar* fileName, HGBool* isTiff)
return HGBASE_ERR_INVALIDARG;
}
*isTiff = HGFALSE;
HGTiffReader reader = NULL;
HGImgFmt_OpenTiffReader(fileName, &reader);
if (NULL != reader)
HGResult ret = HGImgFmt_OpenTiffReader(fileName, &reader);
if (HGBASE_ERR_OK != ret)
{
return ret;
}
*isTiff = HGTRUE;
HGImgFmt_CloseTiffReader(reader);
}
return HGBASE_ERR_OK;
return ret;
}
HGResult HGAPI HGImgFmt_OpenTiffReader(const HGChar* fileName, HGTiffReader* reader)
@ -104,7 +105,7 @@ HGResult HGAPI HGImgFmt_LoadImageFromTiffReader(HGTiffReader reader, HGUInt inde
TIFF* tif = (TIFF*)reader;
if (0 == TIFFSetDirectory(tif, index))
{
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
uint32 width;
@ -142,14 +143,14 @@ HGResult HGAPI HGImgFmt_LoadImageFromTiffReader(HGTiffReader reader, HGUInt inde
uint32* buffer = (uint32*)malloc(width * height * sizeof(uint32));
if (NULL == buffer)
{
return HGBASE_ERR_FAIL;
return HGBASE_ERR_OUTOFMEMORY;
}
if (0 == TIFFReadRGBAImageOriented(tif, width, height, buffer, ORIENTATION_TOPLEFT))
{
free(buffer);
buffer = NULL;
return HGBASE_ERR_FAIL;
return HGIMGFMT_ERR_FAIL;
}
if (0 == imgType)
@ -284,21 +285,30 @@ HGResult HGAPI HGImgFmt_SaveImageToTiffWriter(HGTiffWriter writer, HGImage image
HGBase_GetImageInfo(image, &imgInfo);
if (HGBASE_IMGTYPE_BGR == imgInfo.type)
{
HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
HGBase_SetImageROI(image, &roi);
return ret;
}
}
else if (HGBASE_IMGTYPE_BGRA == imgInfo.type)
{
HGBase_CloneImage(image, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2);
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
HGBase_SetImageROI(image, &roi);
return ret;
}
}
else
{
HGBase_CloneImage(image, imgInfo.type, HGBASE_IMGORIGIN_TOP, &image2);
}
if (NULL == image2)
HGResult ret = HGBase_CloneImage(image, imgInfo.type, HGBASE_IMGORIGIN_TOP, &image2);
if (HGBASE_ERR_OK != ret)
{
HGBase_SetImageROI(image, &roi);
return HGBASE_ERR_FAIL;
return ret;
}
}
HGBase_GetImageInfo(image2, &imgInfo);