ppm格式库调整,考虑文件大小不规范的情况
This commit is contained in:
parent
ec756ddc0f
commit
045ad3fb72
|
@ -74,3 +74,7 @@ HGImgFmt_OpenOfdImageWriter
|
|||
HGImgFmt_CloseOfdImageWriter
|
||||
HGImgFmt_SaveJpegImageToOfdImageWriter
|
||||
HGImgFmt_SaveOfdJpegImage
|
||||
|
||||
HGImgFmt_CheckPnmFile
|
||||
HGImgFmt_LoadPnmImage
|
||||
HGImgFmt_SavePnmImage
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
<ClCompile Include="..\..\..\modules\imgfmt\HGPdf.cpp" />
|
||||
<ClCompile Include="..\..\..\modules\imgfmt\HGPdfImpl.cpp" />
|
||||
<ClCompile Include="..\..\..\modules\imgfmt\HGPng.cpp" />
|
||||
<ClCompile Include="..\..\..\modules\imgfmt\HGPnm.cpp" />
|
||||
<ClCompile Include="..\..\..\modules\imgfmt\HGTiff.cpp" />
|
||||
<ClCompile Include="..\..\..\utility\HGString.cpp" />
|
||||
</ItemGroup>
|
||||
|
@ -61,6 +62,7 @@
|
|||
<ClInclude Include="..\..\..\modules\imgfmt\HGPdf.h" />
|
||||
<ClInclude Include="..\..\..\modules\imgfmt\HGPdfImpl.hpp" />
|
||||
<ClInclude Include="..\..\..\modules\imgfmt\HGPng.h" />
|
||||
<ClInclude Include="..\..\..\modules\imgfmt\HGPnm.h" />
|
||||
<ClInclude Include="..\..\..\modules\imgfmt\HGTiff.h" />
|
||||
<ClInclude Include="..\..\..\utility\HGString.h" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "imgfmt/HGGif.h"
|
||||
#include "imgfmt/HGPdf.h"
|
||||
#include "imgfmt/HGOfd.h"
|
||||
#include "imgfmt/HGPnm.h"
|
||||
#include "imgfmt/HGImgFmt.h"
|
||||
#include "imgproc/HGImgProc.h"
|
||||
#include "imgproc/HGOCR.h"
|
||||
|
|
|
@ -71,7 +71,7 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
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;
|
||||
}
|
||||
|
@ -194,6 +194,11 @@ HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info
|
|||
}
|
||||
}
|
||||
|
||||
if (imgOrigin == 0)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
HGImageInfo bmpImageInfo;
|
||||
bmpImageInfo.width = bmp.width;
|
||||
bmpImageInfo.height = bmp.height;
|
||||
|
|
|
@ -648,7 +648,7 @@ HGResult HGAPI HGImgFmt_LoadImageFromGifReader(HGGifReader reader, HGUInt index,
|
|||
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;
|
||||
}
|
||||
|
@ -664,6 +664,11 @@ HGResult HGAPI HGImgFmt_LoadImageFromGifReader(HGGifReader reader, HGUInt index,
|
|||
imgType = HGBASE_IMGTYPE_RGB;
|
||||
}
|
||||
|
||||
if (imgOrigin == 0)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
if (index < gifReaderImpl->m_curIndex)
|
||||
{
|
||||
gifReaderImpl->m_curIndex = 0xFFFFFFFF;
|
||||
|
|
|
@ -57,7 +57,7 @@ HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* in
|
|||
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;
|
||||
}
|
||||
|
@ -112,6 +112,11 @@ HGResult HGAPI HGImgFmt_LoadJpegImage(const HGChar* fileName, HGJpegLoadInfo* in
|
|||
imgType = HGBASE_IMGTYPE_GRAY;
|
||||
}
|
||||
|
||||
if (0 == imgOrigin)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
cinfo.out_color_space = JCS_RGB;
|
||||
jpeg_start_decompress(&cinfo);
|
||||
|
||||
|
@ -183,7 +188,7 @@ HGResult HGAPI HGImgFmt_LoadJpegImageFromBuffer(HGBuffer buffer, HGJpegLoadInfo*
|
|||
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;
|
||||
}
|
||||
|
@ -235,6 +240,11 @@ HGResult HGAPI HGImgFmt_LoadJpegImageFromBuffer(HGBuffer buffer, HGJpegLoadInfo*
|
|||
imgType = HGBASE_IMGTYPE_GRAY;
|
||||
}
|
||||
|
||||
if (0 == imgOrigin)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
cinfo.out_color_space = JCS_RGB;
|
||||
jpeg_start_decompress(&cinfo);
|
||||
|
||||
|
|
|
@ -293,7 +293,7 @@ HGResult HGOfdReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
|||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (HGBASE_IMGORIGIN_TOP != imgOrigin && HGBASE_IMGORIGIN_BOTTOM != imgOrigin)
|
||||
if (0 != imgOrigin && HGBASE_IMGORIGIN_TOP != imgOrigin && HGBASE_IMGORIGIN_BOTTOM != imgOrigin)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
|
|
@ -185,7 +185,7 @@ HGResult HGPdfReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
|||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (HGBASE_IMGORIGIN_TOP != imgOrigin && HGBASE_IMGORIGIN_BOTTOM != imgOrigin)
|
||||
if (0 != imgOrigin && HGBASE_IMGORIGIN_TOP != imgOrigin && HGBASE_IMGORIGIN_BOTTOM != imgOrigin)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
@ -210,6 +210,9 @@ HGResult HGPdfReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
|
|||
if (0 == imgType)
|
||||
imgType = HGBASE_IMGTYPE_RGB;
|
||||
|
||||
if (imgOrigin == 0)
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
|
||||
HGImage image2 = NULL;
|
||||
HGImageInfo imgInfo = { (uint32_t)width, (uint32_t)height, HGBASE_IMGTYPE_RGB, (uint32_t)pix->stride, HGBASE_IMGORIGIN_TOP };
|
||||
if (HGBASE_ERR_OK == HGBase_CreateImageWithData(pix->samples, &imgInfo, &image2))
|
||||
|
|
|
@ -42,7 +42,7 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
|
|||
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;
|
||||
}
|
||||
|
@ -171,6 +171,11 @@ HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info
|
|||
}
|
||||
}
|
||||
|
||||
if (imgOrigin == 0)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
if (HGBASE_ERR_OK != HGBase_CreateImage(info_ptr->width, info_ptr->height, HGBASE_IMGTYPE_RGBA, HGBASE_IMGORIGIN_TOP, &image2))
|
||||
{
|
||||
longjmp(png_jmpbuf(png_ptr), (int)HGBASE_ERR_FAIL);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "HGPnm.h"
|
||||
#include "HGPnm.h"
|
||||
#include "../base/HGInc.h"
|
||||
#include <vector>
|
||||
|
||||
HGResult HGAPI HGImgFmt_CheckPnmFile(const HGChar* fileName, HGBool* isPnm)
|
||||
{
|
||||
|
@ -14,149 +15,146 @@ HGResult HGAPI HGImgFmt_CheckPnmFile(const HGChar* fileName, HGBool* isPnm)
|
|||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
static HGResult bnm_load_P6(FILE &file, HGPnmLoadInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image)
|
||||
static HGResult BnmLoadP6Info(FILE* file, HGUInt *width, HGUInt *height, HGUInt *maxColor)
|
||||
{
|
||||
HGChar c;
|
||||
HGInt rgbMaxColor, width, height;
|
||||
assert(NULL != file && NULL != width && NULL != height && NULL != maxColor);
|
||||
|
||||
c = getc(&file);
|
||||
while (c == '#')
|
||||
{
|
||||
while (getc(&file) != '\n');
|
||||
c = getc(&file);
|
||||
}
|
||||
ungetc(c, &file);
|
||||
bool getWidth = false;
|
||||
bool getHeight = false;
|
||||
bool getMaxColor = false;
|
||||
std::vector<char> buf;
|
||||
|
||||
while (c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
||||
while (1)
|
||||
{
|
||||
c = fgetc(&file);
|
||||
while (c == '#')
|
||||
HGByte c = 0;
|
||||
if (1 != fread(&c, 1, 1, file))
|
||||
{
|
||||
while (getc(&file) != '\n');
|
||||
c = getc(&file);
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
}
|
||||
|
||||
}
|
||||
ungetc(c, &file);
|
||||
|
||||
fscanf(&file, "%d", &width);
|
||||
|
||||
c = getc(&file);
|
||||
while (c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
||||
{
|
||||
c = fgetc(&file);
|
||||
while (c == '#')
|
||||
if (c == '#' || c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
||||
{
|
||||
while (getc(&file) != '\n');
|
||||
c = getc(&file);
|
||||
if (!buf.empty())
|
||||
{
|
||||
buf.push_back(0);
|
||||
|
||||
if (!getWidth)
|
||||
{
|
||||
*width = atoi(&buf[0]);
|
||||
if (*width == 0)
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
getWidth = true;
|
||||
}
|
||||
else if (!getHeight)
|
||||
{
|
||||
*height = atoi(&buf[0]);
|
||||
if (*height == 0)
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
getHeight = true;
|
||||
}
|
||||
else if (!getMaxColor)
|
||||
{
|
||||
*maxColor = atoi(&buf[0]);
|
||||
if (*maxColor == 0)
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
getMaxColor = true;
|
||||
}
|
||||
|
||||
buf.clear();
|
||||
}
|
||||
|
||||
if (c == '#')
|
||||
{
|
||||
while (c != '\n')
|
||||
{
|
||||
if (1 != fread(&c, 1, 1, file))
|
||||
{
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (c >= '0' && c <= '9')
|
||||
{
|
||||
buf.push_back(c);
|
||||
}
|
||||
else
|
||||
{
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
}
|
||||
|
||||
if (getMaxColor)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
ungetc(c, &file);
|
||||
fscanf(&file, "%d", &height);
|
||||
|
||||
if (width <= 0 || height <= 0)
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
static HGResult BnmLoadP6Image(FILE* file, HGPnmLoadInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image)
|
||||
{
|
||||
HGUInt width, height, maxColor;
|
||||
HGResult ret = BnmLoadP6Info(file , &width, &height, &maxColor);
|
||||
if (HGBASE_ERR_OK != ret || 255 != maxColor)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
return ret;
|
||||
}
|
||||
|
||||
c = getc(&file);
|
||||
while (c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
||||
{
|
||||
c = fgetc(&file);
|
||||
while (c == '#')
|
||||
{
|
||||
while (getc(&file) != '\n');
|
||||
c = getc(&file);
|
||||
}
|
||||
}
|
||||
ungetc(c, &file);
|
||||
|
||||
fscanf(&file, "%d", &rgbMaxColor);
|
||||
|
||||
if (rgbMaxColor <= 0)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
c = fgetc(&file);
|
||||
while (c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
||||
{
|
||||
c = fgetc(&file);
|
||||
while (c == '#')
|
||||
{
|
||||
while (getc(&file) != '\n');
|
||||
c = getc(&file);
|
||||
}
|
||||
}
|
||||
ungetc(c, &file);
|
||||
|
||||
_fseeki64(&file, 0, SEEK_CUR);
|
||||
uint64_t headerSize = _ftelli64(&file);
|
||||
|
||||
_fseeki64(&file, 0, SEEK_END);
|
||||
uint64_t totalSize = _ftelli64(&file);
|
||||
|
||||
if (0 == headerSize || 0 == totalSize)
|
||||
{
|
||||
fclose(&file);
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
size_t dataSize = (size_t)totalSize - (size_t)headerSize;
|
||||
uint8_t* buffer = (uint8_t*)malloc(dataSize);
|
||||
if (NULL == buffer)
|
||||
{
|
||||
fclose(&file);
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
_fseeki64(&file, headerSize, SEEK_SET);
|
||||
size_t readSize = fread(buffer, 1, dataSize, &file);
|
||||
if (readSize != dataSize || dataSize != (size_t)width * (size_t)height * 3)
|
||||
{
|
||||
free(buffer);
|
||||
buffer = NULL;
|
||||
fclose(&file);
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
HGImage image2 = NULL;
|
||||
|
||||
if (info != NULL)
|
||||
if (NULL != info)
|
||||
{
|
||||
info->width = width;
|
||||
info->height = height;
|
||||
info->type = HGIMGFMT_PNMTYPE_RGB_BINRAY;
|
||||
}
|
||||
|
||||
if (image != NULL)
|
||||
if (NULL != image)
|
||||
{
|
||||
if (imgType == 0)
|
||||
{
|
||||
imgType = HGBASE_IMGTYPE_RGB;
|
||||
|
||||
}
|
||||
|
||||
HGBase_CreateImage(width, height, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
|
||||
if (imgOrigin == 0)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
HGImage image2 = NULL;
|
||||
ret = HGBase_CreateImage(width, height, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &image2);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint8_t* data;
|
||||
HGBase_GetImageData(image2, &data);
|
||||
HGImageInfo imgInfo;
|
||||
HGBase_GetImageInfo(image2, &imgInfo);
|
||||
|
||||
memcpy(data, buffer, dataSize);
|
||||
|
||||
if(HGBASE_ERR_OK != HGBase_CloneImage(image2, imgType, imgOrigin, image))
|
||||
HGByte* buf = new HGByte[width * 3];
|
||||
for (HGUInt i = 0; i < height; ++i)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
if (width * 3 != fread(buf, 1, width * 3, file))
|
||||
{
|
||||
delete[] buf;
|
||||
HGBase_DestroyImage(image2);
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
}
|
||||
|
||||
memcpy(data + i * imgInfo.widthStep, buf, width * 3);
|
||||
}
|
||||
delete[] buf;
|
||||
|
||||
ret = HGBase_CloneImage(image2, imgType, imgOrigin, image);
|
||||
HGBase_DestroyImage(image2);
|
||||
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
HGBase_DestroyImage(image2);
|
||||
image2 = NULL;
|
||||
free(buffer);
|
||||
buffer = NULL;
|
||||
fclose(&file);
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
|
@ -184,7 +182,7 @@ HGResult HGAPI HGImgFmt_LoadPnmImage(const HGChar* fileName, HGPnmLoadInfo* info
|
|||
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;
|
||||
}
|
||||
|
@ -196,42 +194,20 @@ HGResult HGAPI HGImgFmt_LoadPnmImage(const HGChar* fileName, HGPnmLoadInfo* info
|
|||
return HGBASE_ERR_ACCESSDENIED;
|
||||
}
|
||||
|
||||
HGChar header[1024] = {0};
|
||||
HGChar c = NULL;
|
||||
|
||||
c = getc(file);
|
||||
while (c == '#')
|
||||
{
|
||||
while (getc(file) != '\n');
|
||||
c = getc(file);
|
||||
}
|
||||
|
||||
while (c == '\n' || c == '\r' || c == '\t' || c == ' ')
|
||||
{
|
||||
c = getc(file);
|
||||
while (c == '#')
|
||||
{
|
||||
while (getc(file) != '\n');
|
||||
c = getc(file);
|
||||
}
|
||||
}
|
||||
if (c != 'P')
|
||||
HGByte magicKey[2] = {0};
|
||||
if (2 != fread(magicKey, 1, 2, file))
|
||||
{
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
}
|
||||
else
|
||||
{
|
||||
c = getc(file);
|
||||
if (c < '1' || c > '6')
|
||||
{
|
||||
return HGBASE_ERR_INVALIDDATA;
|
||||
}
|
||||
|
||||
if (c == '6')
|
||||
{
|
||||
bnm_load_P6(*file, info, imgType, imgOrigin, image);
|
||||
}
|
||||
HGResult ret = HGBASE_ERR_INVALIDDATA;
|
||||
if (magicKey[0] == 'P' && magicKey[1] == '6')
|
||||
{
|
||||
ret = BnmLoadP6Image(file, info, imgType, imgOrigin, image);
|
||||
}
|
||||
|
||||
fclose(file);
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGAPI HGImgFmt_SavePnmImage(HGImage image, const HGPnmSaveInfo* info, const HGChar* fileName)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __HGPnm_H__
|
||||
#define __HGPnm_H__
|
||||
#ifndef __HGPNM_H__
|
||||
#define __HGPNM_H__
|
||||
|
||||
#include "../base/HGDef.h"
|
||||
#include "../base/HGBaseErr.h"
|
||||
|
@ -38,4 +38,4 @@ HGEXPORT HGResult HGAPI HGImgFmt_LoadPnmImage(const HGChar* fileName, HGPnmLoadI
|
|||
|
||||
HGEXPORT HGResult HGAPI HGImgFmt_SavePnmImage(HGImage image, const HGPnmSaveInfo* info, const HGChar* fileName);
|
||||
|
||||
#endif // __HGPnm_H__
|
||||
#endif // __HGPNM_H__
|
||||
|
|
|
@ -85,7 +85,7 @@ HGResult HGAPI HGImgFmt_LoadImageFromTiffReader(HGTiffReader reader, HGUInt inde
|
|||
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;
|
||||
}
|
||||
|
@ -158,6 +158,11 @@ HGResult HGAPI HGImgFmt_LoadImageFromTiffReader(HGTiffReader reader, HGUInt inde
|
|||
}
|
||||
}
|
||||
|
||||
if (imgOrigin == 0)
|
||||
{
|
||||
imgOrigin = HGBASE_IMGORIGIN_TOP;
|
||||
}
|
||||
|
||||
HGImageInfo tiffImageInfo;
|
||||
tiffImageInfo.width = width;
|
||||
tiffImageInfo.height = height;
|
||||
|
|
Loading…
Reference in New Issue