HGImgFmt库完善错误码
This commit is contained in:
parent
3cc60d472a
commit
69ccf8fff9
|
@ -15,8 +15,13 @@ HGResult HGAPI HGImgFmt_CheckBmpFile(const HGChar* fileName, HGBool* isBmp)
|
||||||
|
|
||||||
HGBmpLoadInfo info;
|
HGBmpLoadInfo info;
|
||||||
HGResult ret = HGImgFmt_LoadBmpImage(fileName, &info, 0, 0, NULL);
|
HGResult ret = HGImgFmt_LoadBmpImage(fileName, &info, 0, 0, NULL);
|
||||||
*isBmp = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
|
if (HGBASE_ERR_OK != ret)
|
||||||
return HGBASE_ERR_OK;
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*isBmp = HGTRUE;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* bitmap_create(int width, int height, unsigned int state)
|
static void* bitmap_create(int width, int height, unsigned int state)
|
||||||
|
|
|
@ -400,14 +400,24 @@ HGResult HGAPI HGImgFmt_CheckGifFile(const HGChar* fileName, HGBool* isGif)
|
||||||
return HGBASE_ERR_INVALIDARG;
|
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;
|
int err;
|
||||||
GifFileType* gifFile = DGifOpenFileName(fileName, &err);
|
GifFileType* gifFile = DGifOpenFileName(fileName, &err);
|
||||||
if (NULL != gifFile)
|
if (NULL == gifFile)
|
||||||
{
|
{
|
||||||
*isGif = HGTRUE;
|
return HGBASE_ERR_FILEERROR;
|
||||||
DGifCloseFile(gifFile, &err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*isGif = HGTRUE;
|
||||||
|
DGifCloseFile(gifFile, &err);
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -587,7 +597,7 @@ HGResult HGAPI HGImgFmt_RetrieveImageFromGifReader(HGGifReader reader, HGUInt* i
|
||||||
return HGBASE_ERR_INVALIDARG;
|
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;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
@ -615,6 +625,11 @@ HGResult HGAPI HGImgFmt_RetrieveImageFromGifReader(HGGifReader reader, HGUInt* i
|
||||||
imgType = HGBASE_IMGTYPE_RGB;
|
imgType = HGBASE_IMGTYPE_RGB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (0 == imgOrigin)
|
||||||
|
{
|
||||||
|
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||||
|
}
|
||||||
|
|
||||||
HGImageInfo gifImageInfo;
|
HGImageInfo gifImageInfo;
|
||||||
gifImageInfo.width = gifReaderImpl->m_gifFile->SWidth;
|
gifImageInfo.width = gifReaderImpl->m_gifFile->SWidth;
|
||||||
gifImageInfo.height = gifReaderImpl->m_gifFile->SHeight;
|
gifImageInfo.height = gifReaderImpl->m_gifFile->SHeight;
|
||||||
|
@ -745,11 +760,11 @@ HGResult HGAPI HGImgFmt_LoadGifImage(const HGChar* fileName, HGGifLoadInfo* info
|
||||||
|
|
||||||
if (NULL != image)
|
if (NULL != image)
|
||||||
{
|
{
|
||||||
HGImgFmt_RetrieveImageFromGifReader(reader, NULL, interval, imgType, imgOrigin, image);
|
ret = HGImgFmt_RetrieveImageFromGifReader(reader, NULL, interval, imgType, imgOrigin, image);
|
||||||
}
|
}
|
||||||
|
|
||||||
HGImgFmt_CloseGifReader(reader);
|
HGImgFmt_CloseGifReader(reader);
|
||||||
return HGBASE_ERR_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_OpenGifWriter(const HGChar* fileName, const HGGifSaveInfo* info, HGGifWriter* writer)
|
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)
|
if (NULL == rasterBits)
|
||||||
{
|
{
|
||||||
GifFreeMapObject(colorMap);
|
GifFreeMapObject(colorMap);
|
||||||
return HGIMGFMT_ERR_FAIL;
|
return HGBASE_ERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GifQuantizeBuffer(gifWidth, gifHeight, &mapSize, redBuffer, greenBuffer, blueBuffer,
|
if (GifQuantizeBuffer(gifWidth, gifHeight, &mapSize, redBuffer, greenBuffer, blueBuffer,
|
||||||
|
|
|
@ -47,7 +47,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isJpeg = HGFALSE;
|
HGBool isJpeg = HGFALSE;
|
||||||
HGImgFmt_CheckJpegFile(fileName, &isJpeg);
|
HGResult ret = HGImgFmt_CheckJpegFile(fileName, &isJpeg);
|
||||||
if (isJpeg)
|
if (isJpeg)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_JPEG;
|
*fmtType = HGIMGFMT_TYPE_JPEG;
|
||||||
|
@ -55,7 +55,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isBmp = HGFALSE;
|
HGBool isBmp = HGFALSE;
|
||||||
HGImgFmt_CheckBmpFile(fileName, &isBmp);
|
ret = HGImgFmt_CheckBmpFile(fileName, &isBmp);
|
||||||
if (isBmp)
|
if (isBmp)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_BMP;
|
*fmtType = HGIMGFMT_TYPE_BMP;
|
||||||
|
@ -63,7 +63,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isPng = HGFALSE;
|
HGBool isPng = HGFALSE;
|
||||||
HGImgFmt_CheckPngFile(fileName, &isPng);
|
ret = HGImgFmt_CheckPngFile(fileName, &isPng);
|
||||||
if (isPng)
|
if (isPng)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_PNG;
|
*fmtType = HGIMGFMT_TYPE_PNG;
|
||||||
|
@ -71,7 +71,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isTiff = HGFALSE;
|
HGBool isTiff = HGFALSE;
|
||||||
HGImgFmt_CheckTiffFile(fileName, &isTiff);
|
ret = HGImgFmt_CheckTiffFile(fileName, &isTiff);
|
||||||
if (isTiff)
|
if (isTiff)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_TIFF;
|
*fmtType = HGIMGFMT_TYPE_TIFF;
|
||||||
|
@ -79,7 +79,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isPdf = HGFALSE;
|
HGBool isPdf = HGFALSE;
|
||||||
HGImgFmt_CheckPdfFile(fileName, &isPdf);
|
ret = HGImgFmt_CheckPdfFile(fileName, &isPdf);
|
||||||
if (isPdf)
|
if (isPdf)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_PDF;
|
*fmtType = HGIMGFMT_TYPE_PDF;
|
||||||
|
@ -87,7 +87,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isOfd = HGFALSE;
|
HGBool isOfd = HGFALSE;
|
||||||
HGImgFmt_CheckOfdFile(fileName, &isOfd);
|
ret = HGImgFmt_CheckOfdFile(fileName, &isOfd);
|
||||||
if (isOfd)
|
if (isOfd)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_OFD;
|
*fmtType = HGIMGFMT_TYPE_OFD;
|
||||||
|
@ -95,7 +95,7 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isGif = HGFALSE;
|
HGBool isGif = HGFALSE;
|
||||||
HGImgFmt_CheckGifFile(fileName, &isGif);
|
ret = HGImgFmt_CheckGifFile(fileName, &isGif);
|
||||||
if (isGif)
|
if (isGif)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_GIF;
|
*fmtType = HGIMGFMT_TYPE_GIF;
|
||||||
|
@ -103,14 +103,14 @@ HGResult HGAPI HGImgFmt_GetImgFmtType(const HGChar* fileName, HGUInt* fmtType)
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isPnm = HGFALSE;
|
HGBool isPnm = HGFALSE;
|
||||||
HGImgFmt_CheckPnmFile(fileName, &isPnm);
|
ret = HGImgFmt_CheckPnmFile(fileName, &isPnm);
|
||||||
if (isPnm)
|
if (isPnm)
|
||||||
{
|
{
|
||||||
*fmtType = HGIMGFMT_TYPE_PNM;
|
*fmtType = HGIMGFMT_TYPE_PNM;
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HGBASE_ERR_FAIL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_GetImgFmtTypeFromFileName(const HGChar* fileName, HGUInt* fmtType)
|
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, '.');
|
const char* p = strrchr(fileName, '.');
|
||||||
if (NULL == p)
|
if (NULL == p)
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
@ -443,7 +443,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
assert(0 == fmtType);
|
assert(0 == fmtType);
|
||||||
|
|
||||||
HGJpegLoadInfo jpegInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -468,7 +469,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBmpLoadInfo bmpInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -483,7 +485,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGPngLoadInfo pngInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -503,7 +506,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGTiffLoadInfo tiffInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -528,7 +532,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGPdfPageInfo pdfInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -543,7 +548,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGOfdPageInfo ofdInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -558,7 +564,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGGifLoadInfo gifInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -573,7 +580,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
}
|
}
|
||||||
|
|
||||||
HGPnmLoadInfo pnmInfo;
|
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)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
|
@ -591,7 +599,7 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HGBASE_ERR_FAIL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_SaveImage(HGImage image, HGUInt fmtType, const HGImgFmtSaveInfo* info, const HGChar* fileName)
|
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);
|
assert(0 == fmtType);
|
||||||
|
|
||||||
HGBool isJpeg = HGFALSE;
|
HGBool isJpeg = HGFALSE;
|
||||||
HGImgFmt_CheckJpegFile(fileName, &isJpeg);
|
HGResult ret = HGImgFmt_CheckJpegFile(fileName, &isJpeg);
|
||||||
if (isJpeg)
|
if (isJpeg)
|
||||||
{
|
{
|
||||||
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
||||||
|
@ -816,7 +824,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isBmp = HGFALSE;
|
HGBool isBmp = HGFALSE;
|
||||||
HGImgFmt_CheckBmpFile(fileName, &isBmp);
|
ret = HGImgFmt_CheckBmpFile(fileName, &isBmp);
|
||||||
if (isBmp)
|
if (isBmp)
|
||||||
{
|
{
|
||||||
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
||||||
|
@ -828,7 +836,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isPng = HGFALSE;
|
HGBool isPng = HGFALSE;
|
||||||
HGImgFmt_CheckPngFile(fileName, &isPng);
|
ret = HGImgFmt_CheckPngFile(fileName, &isPng);
|
||||||
if (isPng)
|
if (isPng)
|
||||||
{
|
{
|
||||||
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
||||||
|
@ -840,7 +848,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
|
||||||
}
|
}
|
||||||
|
|
||||||
HGTiffReader tiffReader = NULL;
|
HGTiffReader tiffReader = NULL;
|
||||||
HGResult ret = HGImgFmt_OpenTiffReader(fileName, &tiffReader);
|
ret = HGImgFmt_OpenTiffReader(fileName, &tiffReader);
|
||||||
if (HGBASE_ERR_OK == ret)
|
if (HGBASE_ERR_OK == ret)
|
||||||
{
|
{
|
||||||
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
||||||
|
@ -890,7 +898,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBool isPnm = HGFALSE;
|
HGBool isPnm = HGFALSE;
|
||||||
HGImgFmt_CheckPnmFile(fileName, &isPnm);
|
ret = HGImgFmt_CheckPnmFile(fileName, &isPnm);
|
||||||
if (isPnm)
|
if (isPnm)
|
||||||
{
|
{
|
||||||
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
HGImgFmtReaderImpl* imgFmtReaderImpl = new HGImgFmtReaderImpl;
|
||||||
|
@ -901,7 +909,7 @@ HGResult HGAPI HGImgFmt_OpenImageReader(const HGChar* fileName, HGUInt fmtType,
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HGBASE_ERR_FAIL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_CloseImageReader(HGImgFmtReader reader)
|
HGResult HGAPI HGImgFmt_CloseImageReader(HGImgFmtReader reader)
|
||||||
|
|
|
@ -17,7 +17,7 @@ METHODDEF(void) my_error_exit(j_common_ptr cinfo)
|
||||||
{
|
{
|
||||||
my_error_mgr* myerr = (my_error_mgr*)cinfo->err;
|
my_error_mgr* myerr = (my_error_mgr*)cinfo->err;
|
||||||
(*cinfo->err->output_message)(cinfo);
|
(*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)
|
HGResult HGAPI HGImgFmt_CheckJpegFile(const HGChar* fileName, HGBool* isJpeg)
|
||||||
|
@ -29,8 +29,13 @@ HGResult HGAPI HGImgFmt_CheckJpegFile(const HGChar* fileName, HGBool* isJpeg)
|
||||||
|
|
||||||
HGJpegLoadInfo info;
|
HGJpegLoadInfo info;
|
||||||
HGResult ret = HGImgFmt_LoadJpegImage(fileName, &info, 0, 0, NULL);
|
HGResult ret = HGImgFmt_LoadJpegImage(fileName, &info, 0, 0, NULL);
|
||||||
*isJpeg = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
|
if (HGBASE_ERR_OK != ret)
|
||||||
return HGBASE_ERR_OK;
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*isJpeg = HGTRUE;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* info,
|
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;
|
cinfo.out_color_space = JCS_RGB;
|
||||||
jpeg_start_decompress(&cinfo);
|
jpeg_start_decompress(&cinfo);
|
||||||
|
|
||||||
if (HGBASE_ERR_OK != HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
|
HGResult ret = HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
|
||||||
HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
|
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)
|
if (1 == cinfo.density_unit)
|
||||||
|
@ -159,9 +165,10 @@ HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* in
|
||||||
|
|
||||||
jpeg_finish_decompress(&cinfo);
|
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;
|
cinfo.out_color_space = JCS_RGB;
|
||||||
jpeg_start_decompress(&cinfo);
|
jpeg_start_decompress(&cinfo);
|
||||||
|
|
||||||
if (HGBASE_ERR_OK != HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
|
HGResult ret = HGBase_CreateImage(cinfo.output_width, cinfo.output_height,
|
||||||
HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2))
|
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)
|
if (1 == cinfo.density_unit)
|
||||||
|
@ -287,9 +295,10 @@ HGResult HGAPI HGImgFmt_LoadJpegImageFromBuffer(HGBuffer buffer, HGJpegLoadInfo*
|
||||||
|
|
||||||
jpeg_finish_decompress(&cinfo);
|
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);
|
HGBase_GetImageInfo(image, &imgInfo);
|
||||||
if (HGBASE_IMGTYPE_GRAY == imgInfo.type || HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
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))
|
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2);
|
||||||
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
longjmp(jerr.setjmp_buffer, (int)ret);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
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);
|
||||||
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
longjmp(jerr.setjmp_buffer, (int)ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBase_GetImageInfo(image2, &imgInfo);
|
HGBase_GetImageInfo(image2, &imgInfo);
|
||||||
|
@ -453,13 +464,15 @@ HGResult HGAPI HGImgFmt_SaveJpegImageToBuffer(HGImage image, const HGJpegSaveInf
|
||||||
HGBase_GetImageInfo(image, &imgInfo);
|
HGBase_GetImageInfo(image, &imgInfo);
|
||||||
if (HGBASE_IMGTYPE_GRAY == imgInfo.type || HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
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))
|
HGResult ret = HGBase_CloneImage(image, HGBASE_IMGTYPE_GRAY, HGBASE_IMGORIGIN_TOP, &image2);
|
||||||
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
longjmp(jerr.setjmp_buffer, (int)ret);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
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);
|
||||||
longjmp(jerr.setjmp_buffer, (int)HGBASE_ERR_FAIL);
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
longjmp(jerr.setjmp_buffer, (int)ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBase_GetImageInfo(image2, &imgInfo);
|
HGBase_GetImageInfo(image2, &imgInfo);
|
||||||
|
|
|
@ -8,15 +8,16 @@ HGResult HGAPI HGImgFmt_CheckOfdFile(const HGChar* fileName, HGBool* isOfd)
|
||||||
return HGBASE_ERR_INVALIDARG;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
*isOfd = HGFALSE;
|
|
||||||
HGOfdReader reader = NULL;
|
HGOfdReader reader = NULL;
|
||||||
HGImgFmt_OpenOfdReader(fileName, &reader);
|
HGResult ret = HGImgFmt_OpenOfdReader(fileName, &reader);
|
||||||
if (NULL != reader)
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
*isOfd = HGTRUE;
|
return ret;
|
||||||
HGImgFmt_CloseOfdReader(reader);
|
|
||||||
}
|
}
|
||||||
return HGBASE_ERR_OK;
|
|
||||||
|
*isOfd = HGTRUE;
|
||||||
|
HGImgFmt_CloseOfdReader(reader);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_OpenOfdReader(const HGChar* fileName, HGOfdReader* reader)
|
HGResult HGAPI HGImgFmt_OpenOfdReader(const HGChar* fileName, HGOfdReader* reader)
|
||||||
|
|
|
@ -41,11 +41,12 @@ HGResult HGOfdReaderImpl::Open(const HGChar* fileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string content;
|
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);
|
zip_close(m_zip);
|
||||||
m_zip = NULL;
|
m_zip = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
tinyxml2::XMLDocument xmlDoc;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
@ -78,7 +79,7 @@ HGResult HGOfdReaderImpl::Open(const HGChar* fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return HGBASE_ERR_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGOfdReaderImpl::Close()
|
HGResult HGOfdReaderImpl::Close()
|
||||||
|
@ -156,9 +157,10 @@ HGResult HGOfdReaderImpl::GetPageInfo(HGUInt page, HGOfdPageInfo* info)
|
||||||
sprintf(name, "Doc_0/%s", m_contentNames[page].c_str());
|
sprintf(name, "Doc_0/%s", m_contentNames[page].c_str());
|
||||||
|
|
||||||
std::string content;
|
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;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
@ -216,12 +218,13 @@ HGResult HGOfdReaderImpl::GetPageInfo(HGUInt page, HGOfdPageInfo* info)
|
||||||
|
|
||||||
if (resId.empty())
|
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;
|
std::string imgName;
|
||||||
|
@ -277,22 +280,23 @@ HGResult HGOfdReaderImpl::GetPageInfo(HGUInt page, HGOfdPageInfo* info)
|
||||||
|
|
||||||
if (imgName.empty())
|
if (imgName.empty())
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char img_name[128];
|
char img_name[128];
|
||||||
sprintf(img_name, "Doc_0/Res/%s", imgName.c_str());
|
sprintf(img_name, "Doc_0/Res/%s", imgName.c_str());
|
||||||
|
|
||||||
HGJpegLoadInfo jpegInfo;
|
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->width = jpegInfo.width;
|
||||||
info->height = jpegInfo.height;
|
info->height = jpegInfo.height;
|
||||||
info->bpp = jpegInfo.numComponents * 8;
|
info->bpp = jpegInfo.numComponents * 8;
|
||||||
return HGBASE_ERR_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
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());
|
sprintf(name, "Doc_0/%s", m_contentNames[page].c_str());
|
||||||
|
|
||||||
std::string content;
|
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;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
@ -377,12 +382,13 @@ HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
||||||
|
|
||||||
if (resId.empty())
|
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;
|
std::string imgName;
|
||||||
|
@ -438,20 +444,21 @@ HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
||||||
|
|
||||||
if (imgName.empty())
|
if (imgName.empty())
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char img_name[128];
|
char img_name[128];
|
||||||
sprintf(img_name, "Doc_0/Res/%s", imgName.c_str());
|
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;
|
struct zip_stat st;
|
||||||
zip_stat_init(&st);
|
zip_stat_init(&st);
|
||||||
|
@ -460,20 +467,20 @@ bool HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
|
||||||
zip_int64_t size = st.size;
|
zip_int64_t size = st.size;
|
||||||
if (0 == size)
|
if (0 == size)
|
||||||
{
|
{
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
zip_file* file = zip_fopen(m_zip, name, ZIP_FL_NOCASE);
|
zip_file* file = zip_fopen(m_zip, name, ZIP_FL_NOCASE);
|
||||||
if (NULL == file)
|
if (NULL == file)
|
||||||
{
|
{
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* s = (char*)malloc((size_t)size + 1);
|
char* s = (char*)malloc((size_t)size + 1);
|
||||||
if (NULL == s)
|
if (NULL == s)
|
||||||
{
|
{
|
||||||
zip_fclose(file);
|
zip_fclose(file);
|
||||||
return false;
|
return HGBASE_ERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
zip_int64_t did_read = zip_fread(file, s, size);
|
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);
|
free(s);
|
||||||
zip_fclose(file);
|
zip_fclose(file);
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
s[size] = 0;
|
s[size] = 0;
|
||||||
|
@ -489,10 +496,10 @@ bool HGOfdReaderImpl::ReadXml(const char* name, std::string& content)
|
||||||
|
|
||||||
free(s);
|
free(s);
|
||||||
zip_fclose(file);
|
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;
|
struct zip_stat st;
|
||||||
zip_stat_init(&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;
|
zip_int64_t size = st.size;
|
||||||
if (0 == size)
|
if (0 == size)
|
||||||
{
|
{
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
zip_file* file = zip_fopen(m_zip, name, ZIP_FL_NOCASE);
|
zip_file* file = zip_fopen(m_zip, name, ZIP_FL_NOCASE);
|
||||||
if (NULL == file)
|
if (NULL == file)
|
||||||
{
|
{
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char* content = (unsigned char*)malloc((size_t)size);
|
unsigned char* content = (unsigned char*)malloc((size_t)size);
|
||||||
if (NULL == content)
|
if (NULL == content)
|
||||||
{
|
{
|
||||||
zip_fclose(file);
|
zip_fclose(file);
|
||||||
return false;
|
return HGBASE_ERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
zip_int64_t did_read = zip_fread(file, content, size);
|
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);
|
free(content);
|
||||||
zip_fclose(file);
|
zip_fclose(file);
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBuffer buffer = NULL;
|
HGBuffer buffer = NULL;
|
||||||
|
@ -532,7 +539,7 @@ bool HGOfdReaderImpl::ReadJpeg(const char* name, HGJpegLoadInfo* info, HGFloat x
|
||||||
|
|
||||||
free(content);
|
free(content);
|
||||||
zip_fclose(file);
|
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/Pages");
|
||||||
zip_add_dir(m_zip, "Doc_0/Res");
|
zip_add_dir(m_zip, "Doc_0/Res");
|
||||||
|
|
||||||
if (!AddOfdXml() || !AddPublicResXml())
|
HGResult ret = AddOfdXml();
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
zip_close(m_zip);
|
zip_close(m_zip);
|
||||||
m_zip = NULL;
|
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()
|
HGResult HGOfdImageWriterImpl::Close()
|
||||||
|
@ -604,9 +620,10 @@ HGResult HGOfdImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
|
||||||
{
|
{
|
||||||
HGChar name[128];
|
HGChar name[128];
|
||||||
sprintf(name, "Doc_0/Res/image_%u.jpg", m_curImgIndex);
|
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;
|
HGUInt xDpi, yDpi;
|
||||||
|
@ -635,7 +652,7 @@ HGResult HGOfdImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HGOfdImageWriterImpl::AddOfdXml()
|
HGResult HGOfdImageWriterImpl::AddOfdXml()
|
||||||
{
|
{
|
||||||
tinyxml2::XMLDocument xmlDoc;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
|
||||||
|
@ -686,7 +703,7 @@ bool HGOfdImageWriterImpl::AddOfdXml()
|
||||||
return AddXmlFile(xmlDoc, "OFD.xml");
|
return AddXmlFile(xmlDoc, "OFD.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HGOfdImageWriterImpl::AddDocXml()
|
HGResult HGOfdImageWriterImpl::AddDocXml()
|
||||||
{
|
{
|
||||||
tinyxml2::XMLDocument xmlDoc;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
|
||||||
|
@ -742,7 +759,7 @@ bool HGOfdImageWriterImpl::AddDocXml()
|
||||||
return AddXmlFile(xmlDoc, "Doc_0/Document.xml");
|
return AddXmlFile(xmlDoc, "Doc_0/Document.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HGOfdImageWriterImpl::AddDocResXml()
|
HGResult HGOfdImageWriterImpl::AddDocResXml()
|
||||||
{
|
{
|
||||||
tinyxml2::XMLDocument xmlDoc;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
|
||||||
|
@ -773,7 +790,7 @@ bool HGOfdImageWriterImpl::AddDocResXml()
|
||||||
return AddXmlFile(xmlDoc, "Doc_0/DocumentRes.xml");
|
return AddXmlFile(xmlDoc, "Doc_0/DocumentRes.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HGOfdImageWriterImpl::AddPublicResXml()
|
HGResult HGOfdImageWriterImpl::AddPublicResXml()
|
||||||
{
|
{
|
||||||
tinyxml2::XMLDocument xmlDoc;
|
tinyxml2::XMLDocument xmlDoc;
|
||||||
|
|
||||||
|
@ -788,20 +805,20 @@ bool HGOfdImageWriterImpl::AddPublicResXml()
|
||||||
return AddXmlFile(xmlDoc, "Doc_0/PublicRes.xml");
|
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];
|
HGChar tmpName[256];
|
||||||
HGBase_GetTmpFileName(NULL, tmpName, 256);
|
HGBase_GetTmpFileName(NULL, tmpName, 256);
|
||||||
if (tinyxml2::XML_SUCCESS != xmlDoc.SaveFile(tmpName))
|
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);
|
zip_source_t* s = zip_source_file(m_zip, tmpName, 0, 0);
|
||||||
if (NULL == s)
|
if (NULL == s)
|
||||||
{
|
{
|
||||||
HGBase_DeleteFile(tmpName);
|
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);
|
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);
|
zip_source_free(s);
|
||||||
HGBase_DeleteFile(tmpName);
|
HGBase_DeleteFile(tmpName);
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_tmpFiles.push_back(tmpName);
|
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];
|
HGChar tmpName[256];
|
||||||
HGBase_GetTmpFileName(NULL, 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);
|
zip_source_t* s = zip_source_file(m_zip, tmpName, 0, 0);
|
||||||
if (NULL == s)
|
if (NULL == s)
|
||||||
{
|
{
|
||||||
HGBase_DeleteFile(tmpName);
|
HGBase_DeleteFile(tmpName);
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
zip_int64_t ret = zip_file_add(m_zip, name, s, ZIP_FL_OVERWRITE);
|
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);
|
zip_source_free(s);
|
||||||
HGBase_DeleteFile(tmpName);
|
HGBase_DeleteFile(tmpName);
|
||||||
return false;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_tmpFiles.push_back(tmpName);
|
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];
|
HGChar dir[128];
|
||||||
sprintf(dir, "Doc_0/Pages/Page_%u", index);
|
sprintf(dir, "Doc_0/Pages/Page_%u", index);
|
||||||
|
|
|
@ -25,8 +25,8 @@ public:
|
||||||
HGUInt imgType, HGUInt imgOrigin, HGImage* image);
|
HGUInt imgType, HGUInt imgOrigin, HGImage* image);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool ReadXml(const char *name, std::string &content);
|
HGResult 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 ReadJpeg(const char* name, HGJpegLoadInfo *info, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
zip* m_zip;
|
zip* m_zip;
|
||||||
|
@ -44,13 +44,13 @@ public:
|
||||||
HGResult SaveJpegImage(HGImage image, const HGJpegSaveInfo* info);
|
HGResult SaveJpegImage(HGImage image, const HGJpegSaveInfo* info);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool AddOfdXml();
|
HGResult AddOfdXml();
|
||||||
bool AddDocXml();
|
HGResult AddDocXml();
|
||||||
bool AddDocResXml();
|
HGResult AddDocResXml();
|
||||||
bool AddPublicResXml();
|
HGResult AddPublicResXml();
|
||||||
bool AddXmlFile(tinyxml2::XMLDocument &xmlDoc, const HGChar *name);
|
HGResult AddXmlFile(tinyxml2::XMLDocument &xmlDoc, const HGChar *name);
|
||||||
bool AddJpegImageFile(HGImage image, const HGJpegSaveInfo* info, const HGChar* name);
|
HGResult AddJpegImageFile(HGImage image, const HGJpegSaveInfo* info, const HGChar* name);
|
||||||
bool AddContentXmlFile(HGUInt index, HGFloat physicalWidth, HGFloat physicalHeight);
|
HGResult AddContentXmlFile(HGUInt index, HGFloat physicalWidth, HGFloat physicalHeight);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
zip* m_zip;
|
zip* m_zip;
|
||||||
|
|
|
@ -8,15 +8,16 @@ HGResult HGAPI HGImgFmt_CheckPdfFile(const HGChar* fileName, HGBool* isPdf)
|
||||||
return HGBASE_ERR_INVALIDARG;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
*isPdf = HGFALSE;
|
|
||||||
HGPdfReader reader = NULL;
|
HGPdfReader reader = NULL;
|
||||||
HGImgFmt_OpenPdfReader(fileName, &reader);
|
HGResult ret = HGImgFmt_OpenPdfReader(fileName, &reader);
|
||||||
if (NULL != reader)
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
*isPdf = HGTRUE;
|
return ret;
|
||||||
HGImgFmt_ClosePdfReader(reader);
|
|
||||||
}
|
}
|
||||||
return HGBASE_ERR_OK;
|
|
||||||
|
*isPdf = HGTRUE;
|
||||||
|
HGImgFmt_ClosePdfReader(reader);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_OpenPdfReader(const HGChar* fileName, HGPdfReader* reader)
|
HGResult HGAPI HGImgFmt_OpenPdfReader(const HGChar* fileName, HGPdfReader* reader)
|
||||||
|
|
|
@ -85,10 +85,10 @@ HGResult HGPdfReaderImpl::Open(const HGChar* fileName)
|
||||||
{
|
{
|
||||||
HGBase_DestroyDll(m_dll);
|
HGBase_DestroyDll(m_dll);
|
||||||
m_dll = NULL;
|
m_dll = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = HGBASE_ERR_FAIL;
|
ret = HGIMGFMT_ERR_FAIL;
|
||||||
fz_try(pContext)
|
fz_try(pContext)
|
||||||
{
|
{
|
||||||
fz_register_document_handlers(pContext);
|
fz_register_document_handlers(pContext);
|
||||||
|
@ -137,7 +137,7 @@ HGResult HGPdfReaderImpl::GetPageCount(HGUInt* count)
|
||||||
return HGBASE_ERR_INVALIDARG;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
HGResult ret = HGIMGFMT_ERR_FAIL;
|
||||||
fz_try(m_pContext)
|
fz_try(m_pContext)
|
||||||
{
|
{
|
||||||
*count = (uint32_t)fz_count_pages(m_pContext, m_pDoc);
|
*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;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
HGResult ret = HGIMGFMT_ERR_FAIL;
|
||||||
fz_page* fzpage = NULL;
|
fz_page* fzpage = NULL;
|
||||||
|
|
||||||
fz_try(m_pContext)
|
fz_try(m_pContext)
|
||||||
|
@ -207,7 +207,7 @@ HGResult HGPdfReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
||||||
return HGBASE_ERR_INVALIDARG;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
HGResult ret = HGIMGFMT_ERR_FAIL;
|
||||||
fz_pixmap* pix = NULL;
|
fz_pixmap* pix = NULL;
|
||||||
|
|
||||||
fz_try(m_pContext)
|
fz_try(m_pContext)
|
||||||
|
@ -591,7 +591,7 @@ HGResult HGPdfImageWriterImpl::Open(const HGChar* fileName)
|
||||||
{
|
{
|
||||||
HGBase_DestroyDll(m_dll);
|
HGBase_DestroyDll(m_dll);
|
||||||
m_dll = NULL;
|
m_dll = NULL;
|
||||||
return HGBASE_ERR_OUTOFMEMORY;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
@ -627,7 +627,7 @@ HGResult HGPdfImageWriterImpl::Open(const HGChar* fileName)
|
||||||
PDF_delete(p);
|
PDF_delete(p);
|
||||||
HGBase_DestroyDll(m_dll);
|
HGBase_DestroyDll(m_dll);
|
||||||
m_dll = NULL;
|
m_dll = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] pUnicode;
|
delete[] pUnicode;
|
||||||
|
@ -689,7 +689,7 @@ HGResult HGPdfImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
|
||||||
PDF_CATCH(m_pPdf)
|
PDF_CATCH(m_pPdf)
|
||||||
{
|
{
|
||||||
HGBase_DestroyBuffer(buffer);
|
HGBase_DestroyBuffer(buffer);
|
||||||
return HGBASE_ERR_OUTOFMEMORY;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int img = PDF_load_image(m_pPdf, "auto", "virtual_file", 0, "page 1");
|
int img = PDF_load_image(m_pPdf, "auto", "virtual_file", 0, "page 1");
|
||||||
|
|
|
@ -15,8 +15,13 @@ HGResult HGAPI HGImgFmt_CheckPngFile(const HGChar* fileName, HGBool* isPng)
|
||||||
|
|
||||||
HGPngLoadInfo info;
|
HGPngLoadInfo info;
|
||||||
HGResult ret = HGImgFmt_LoadPngImage(fileName, &info, 0, 0, NULL);
|
HGResult ret = HGImgFmt_LoadPngImage(fileName, &info, 0, 0, NULL);
|
||||||
*isPng = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
|
if (HGBASE_ERR_OK != ret)
|
||||||
return HGBASE_ERR_OK;
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*isPng = HGTRUE;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info,
|
HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info,
|
||||||
|
@ -84,7 +89,7 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
|
||||||
{
|
{
|
||||||
fclose(file);
|
fclose(file);
|
||||||
file = NULL;
|
file = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
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);
|
png_destroy_read_struct(&png_ptr, NULL, NULL);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
file = NULL;
|
file = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* buffer = NULL;
|
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);
|
buffer = (uint8_t*)malloc((uintptr_t)info_ptr->rowbytes * (uintptr_t)info_ptr->height);
|
||||||
if (NULL == buffer)
|
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));
|
rowPointers = (uint8_t**)malloc(info_ptr->height * sizeof(png_bytep));
|
||||||
if (NULL == rowPointers)
|
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
|
//#pragma omp parallel for
|
||||||
|
@ -186,9 +191,10 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
|
||||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
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)
|
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);
|
fclose(file);
|
||||||
file = NULL;
|
file = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
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);
|
png_destroy_write_struct(&png_ptr, NULL);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
file = NULL;
|
file = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t** rowPointers = NULL;
|
uint8_t** rowPointers = NULL;
|
||||||
|
@ -357,30 +364,34 @@ HGResult HGAPI HGImgFmt_SavePngImage(HGImage image, const HGPngSaveInfo* info, c
|
||||||
HGBase_GetImageInfo(image, &imgInfo);
|
HGBase_GetImageInfo(image, &imgInfo);
|
||||||
if (HGBASE_IMGTYPE_BGR == imgInfo.type)
|
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)
|
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)
|
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
|
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));
|
rowPointers = (uint8_t**)malloc(height * sizeof(png_bytep));
|
||||||
if (NULL == rowPointers)
|
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
|
//#pragma omp parallel for
|
||||||
|
|
|
@ -46,8 +46,13 @@ HGResult HGAPI HGImgFmt_CheckPnmFile(const HGChar* fileName, HGBool* isPnm)
|
||||||
|
|
||||||
HGPnmLoadInfo info;
|
HGPnmLoadInfo info;
|
||||||
HGResult ret = HGImgFmt_LoadPnmImage(fileName, &info, 0, 0, NULL);
|
HGResult ret = HGImgFmt_LoadPnmImage(fileName, &info, 0, 0, NULL);
|
||||||
*isPnm = (HGBASE_ERR_OK == ret ? HGTRUE : HGFALSE);
|
if (HGBASE_ERR_OK != ret)
|
||||||
return HGBASE_ERR_OK;
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*isPnm = HGTRUE;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_GetPnmTypeFromFileName(const HGChar* fileName, HGUInt* pnmType)
|
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, '.');
|
const char* p = strrchr(fileName, '.');
|
||||||
if (NULL == p)
|
if (NULL == p)
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
@ -119,7 +124,7 @@ static HGResult PnmLoadInfo(FILE* file, HGUInt pnmType, HGUInt *width, HGUInt *h
|
||||||
HGByte c = 0;
|
HGByte c = 0;
|
||||||
if (1 != fread(&c, 1, 1, file))
|
if (1 != fread(&c, 1, 1, file))
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c == '#' || c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
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);
|
*width = MyAtoi(buf);
|
||||||
if (*width == 0)
|
if (*width == 0)
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
getWidth = true;
|
getWidth = true;
|
||||||
}
|
}
|
||||||
else if (!getHeight)
|
else if (!getHeight)
|
||||||
{
|
{
|
||||||
*height = MyAtoi(buf);
|
*height = MyAtoi(buf);
|
||||||
if (*height == 0)
|
if (*height == 0)
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
getHeight = true;
|
getHeight = true;
|
||||||
}
|
}
|
||||||
else if (!getMaxColor)
|
else if (!getMaxColor)
|
||||||
{
|
{
|
||||||
*maxColor = MyAtoi(buf);
|
*maxColor = MyAtoi(buf);
|
||||||
if (*maxColor == 0)
|
if (*maxColor == 0)
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
getMaxColor = true;
|
getMaxColor = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +164,7 @@ static HGResult PnmLoadInfo(FILE* file, HGUInt pnmType, HGUInt *width, HGUInt *h
|
||||||
{
|
{
|
||||||
if (1 != fread(&c, 1, 1, file))
|
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
|
else
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pnmType != HGIMGFMT_PNMTYPE_BINARY_ASCII && pnmType != HGIMGFMT_PNMTYPE_BINARY_BINARY)
|
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 (pnmType != HGIMGFMT_PNMTYPE_BINARY_ASCII && pnmType != HGIMGFMT_PNMTYPE_BINARY_BINARY)
|
||||||
{
|
{
|
||||||
if (maxColor != 255)
|
if (maxColor != 255)
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
}
|
}
|
||||||
else
|
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))
|
if (lineSize != fread(data + i * imgInfo.widthStep, 1, lineSize, file))
|
||||||
{
|
{
|
||||||
HGBase_DestroyImage(image2);
|
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)
|
if (pixel < 0 || pixel > maxColor)
|
||||||
{
|
{
|
||||||
HGBase_DestroyImage(image2);
|
HGBase_DestroyImage(image2);
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pnmType == HGIMGFMT_PNMTYPE_BINARY_ASCII)
|
if (pnmType == HGIMGFMT_PNMTYPE_BINARY_ASCII)
|
||||||
|
@ -344,7 +349,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HGBase_DestroyImage(image2);
|
HGBase_DestroyImage(image2);
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (c == '#')
|
else if (c == '#')
|
||||||
|
@ -364,7 +369,7 @@ static HGResult PnmLoadImage(FILE* file, HGUInt pnmType, HGPnmLoadInfo* info, HG
|
||||||
if (!getChar)
|
if (!getChar)
|
||||||
{
|
{
|
||||||
HGBase_DestroyImage(image2);
|
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
|
else
|
||||||
{
|
{
|
||||||
HGBase_DestroyImage(image2);
|
HGBase_DestroyImage(image2);
|
||||||
return HGBASE_ERR_INVALIDDATA;
|
return HGBASE_ERR_FILEERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p == data + height * imgInfo.widthStep)
|
if (p == data + height * imgInfo.widthStep)
|
||||||
|
|
|
@ -10,15 +10,16 @@ HGResult HGAPI HGImgFmt_CheckTiffFile(const HGChar* fileName, HGBool* isTiff)
|
||||||
return HGBASE_ERR_INVALIDARG;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
*isTiff = HGFALSE;
|
|
||||||
HGTiffReader reader = NULL;
|
HGTiffReader reader = NULL;
|
||||||
HGImgFmt_OpenTiffReader(fileName, &reader);
|
HGResult ret = HGImgFmt_OpenTiffReader(fileName, &reader);
|
||||||
if (NULL != reader)
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
*isTiff = HGTRUE;
|
return ret;
|
||||||
HGImgFmt_CloseTiffReader(reader);
|
|
||||||
}
|
}
|
||||||
return HGBASE_ERR_OK;
|
|
||||||
|
*isTiff = HGTRUE;
|
||||||
|
HGImgFmt_CloseTiffReader(reader);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGImgFmt_OpenTiffReader(const HGChar* fileName, HGTiffReader* reader)
|
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;
|
TIFF* tif = (TIFF*)reader;
|
||||||
if (0 == TIFFSetDirectory(tif, index))
|
if (0 == TIFFSetDirectory(tif, index))
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 width;
|
uint32 width;
|
||||||
|
@ -142,14 +143,14 @@ HGResult HGAPI HGImgFmt_LoadImageFromTiffReader(HGTiffReader reader, HGUInt inde
|
||||||
uint32* buffer = (uint32*)malloc(width * height * sizeof(uint32));
|
uint32* buffer = (uint32*)malloc(width * height * sizeof(uint32));
|
||||||
if (NULL == buffer)
|
if (NULL == buffer)
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 == TIFFReadRGBAImageOriented(tif, width, height, buffer, ORIENTATION_TOPLEFT))
|
if (0 == TIFFReadRGBAImageOriented(tif, width, height, buffer, ORIENTATION_TOPLEFT))
|
||||||
{
|
{
|
||||||
free(buffer);
|
free(buffer);
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
return HGBASE_ERR_FAIL;
|
return HGIMGFMT_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 == imgType)
|
if (0 == imgType)
|
||||||
|
@ -284,21 +285,30 @@ HGResult HGAPI HGImgFmt_SaveImageToTiffWriter(HGTiffWriter writer, HGImage image
|
||||||
HGBase_GetImageInfo(image, &imgInfo);
|
HGBase_GetImageInfo(image, &imgInfo);
|
||||||
if (HGBASE_IMGTYPE_BGR == imgInfo.type)
|
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)
|
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
|
else
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
{
|
||||||
if (NULL == image2)
|
HGBase_SetImageROI(image, &roi);
|
||||||
{
|
return ret;
|
||||||
HGBase_SetImageROI(image, &roi);
|
}
|
||||||
return HGBASE_ERR_FAIL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBase_GetImageInfo(image2, &imgInfo);
|
HGBase_GetImageInfo(image2, &imgInfo);
|
||||||
|
|
Loading…
Reference in New Issue