Compare commits
No commits in common. "f9f6209309335433ab9e5ea85525fc3ba6a64b98" and "f1535d3290f19840745321b672fdc0eb05051dcf" have entirely different histories.
f9f6209309
...
f1535d3290
|
@ -221,7 +221,6 @@ SOURCES += \
|
||||||
../../../modules/imgfmt/HGPng.cpp \
|
../../../modules/imgfmt/HGPng.cpp \
|
||||||
../../../modules/imgfmt/HGPnm.cpp \
|
../../../modules/imgfmt/HGPnm.cpp \
|
||||||
../../../modules/imgfmt/HGTiff.cpp \
|
../../../modules/imgfmt/HGTiff.cpp \
|
||||||
../../../modules/imgfmt/dllmain.cpp \
|
|
||||||
../../../utility/HGString.cpp
|
../../../utility/HGString.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
|
|
@ -3089,7 +3089,6 @@ static HGResult CopyImageWithBinary(HGImageImpl *srcImageImpl, HGImageImpl *dest
|
||||||
pDestEx[(destImageImpl->m_left + j) * 4] = (0 == value) ? 0 : 255;
|
pDestEx[(destImageImpl->m_left + j) * 4] = (0 == value) ? 0 : 255;
|
||||||
pDestEx[(destImageImpl->m_left + j) * 4 + 1] = (0 == value) ? 0 : 255;
|
pDestEx[(destImageImpl->m_left + j) * 4 + 1] = (0 == value) ? 0 : 255;
|
||||||
pDestEx[(destImageImpl->m_left + j) * 4 + 2] = (0 == value) ? 0 : 255;
|
pDestEx[(destImageImpl->m_left + j) * 4 + 2] = (0 == value) ? 0 : 255;
|
||||||
pDestEx[(destImageImpl->m_left + j) * 4 + 3] = 255;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3284,8 +3283,6 @@ HGResult HGAPI HGBase_CopyImage(HGImage image, HGImage destImage)
|
||||||
while (pEx < pExEnd)
|
while (pEx < pExEnd)
|
||||||
{
|
{
|
||||||
pDestEx[0] = pDestEx[1] = pDestEx[2] = *pEx;
|
pDestEx[0] = pDestEx[1] = pDestEx[2] = *pEx;
|
||||||
if (HGBASE_IMGTYPE_RGBA == destType || HGBASE_IMGTYPE_BGRA == destType)
|
|
||||||
pDestEx[3] = 255;
|
|
||||||
++pEx;
|
++pEx;
|
||||||
pDestEx += destChannels;
|
pDestEx += destChannels;
|
||||||
}
|
}
|
||||||
|
@ -3351,8 +3348,6 @@ HGResult HGAPI HGBase_CopyImage(HGImage image, HGImage destImage)
|
||||||
pDestEx[0] = pEx[0];
|
pDestEx[0] = pEx[0];
|
||||||
pDestEx[1] = pEx[1];
|
pDestEx[1] = pEx[1];
|
||||||
pDestEx[2] = pEx[2];
|
pDestEx[2] = pEx[2];
|
||||||
if (HGBASE_IMGTYPE_RGBA == destType || HGBASE_IMGTYPE_BGRA == destType)
|
|
||||||
pDestEx[3] = 255;
|
|
||||||
|
|
||||||
pEx += channels;
|
pEx += channels;
|
||||||
pDestEx += destChannels;
|
pDestEx += destChannels;
|
||||||
|
@ -3382,13 +3377,6 @@ HGResult HGAPI HGBase_CopyImage(HGImage image, HGImage destImage)
|
||||||
pDestEx[2] = pEx[0];
|
pDestEx[2] = pEx[0];
|
||||||
pDestEx[1] = pEx[1];
|
pDestEx[1] = pEx[1];
|
||||||
pDestEx[0] = pEx[2];
|
pDestEx[0] = pEx[2];
|
||||||
if (HGBASE_IMGTYPE_RGBA == destType || HGBASE_IMGTYPE_BGRA == destType)
|
|
||||||
{
|
|
||||||
if (HGBASE_IMGTYPE_RGBA == type || HGBASE_IMGTYPE_BGRA == type)
|
|
||||||
pDestEx[3] = pEx[3];
|
|
||||||
else
|
|
||||||
pDestEx[3] = 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
pEx += channels;
|
pEx += channels;
|
||||||
pDestEx += destChannels;
|
pDestEx += destChannels;
|
||||||
|
|
|
@ -21,7 +21,12 @@ static HGResult FBITMAPToHGImage(FIBITMAP *dib, HGUInt imgType, HGUInt imgOrigin
|
||||||
assert(NULL != dib);
|
assert(NULL != dib);
|
||||||
assert(NULL != image);
|
assert(NULL != image);
|
||||||
|
|
||||||
|
BYTE *data = FreeImage_GetBits(dib);
|
||||||
|
HGUInt width = FreeImage_GetWidth(dib);
|
||||||
|
HGUInt height = FreeImage_GetHeight(dib);
|
||||||
HGUInt bpp = FreeImage_GetBPP(dib);
|
HGUInt bpp = FreeImage_GetBPP(dib);
|
||||||
|
HGUInt pitch = FreeImage_GetPitch(dib);
|
||||||
|
|
||||||
if (0 == imgType)
|
if (0 == imgType)
|
||||||
{
|
{
|
||||||
imgType = HGBASE_IMGTYPE_RGB;
|
imgType = HGBASE_IMGTYPE_RGB;
|
||||||
|
@ -39,10 +44,10 @@ static HGResult FBITMAPToHGImage(FIBITMAP *dib, HGUInt imgType, HGUInt imgOrigin
|
||||||
}
|
}
|
||||||
|
|
||||||
HGImageInfo imgInfo;
|
HGImageInfo imgInfo;
|
||||||
imgInfo.width = FreeImage_GetWidth(dib);
|
imgInfo.width = width;
|
||||||
imgInfo.height = FreeImage_GetHeight(dib);
|
imgInfo.height = height;
|
||||||
imgInfo.type = 0;
|
imgInfo.type = 0;
|
||||||
imgInfo.widthStep = FreeImage_GetPitch(dib);
|
imgInfo.widthStep = pitch;
|
||||||
imgInfo.origin = HGBASE_IMGORIGIN_BOTTOM;
|
imgInfo.origin = HGBASE_IMGORIGIN_BOTTOM;
|
||||||
|
|
||||||
if (1 == bpp)
|
if (1 == bpp)
|
||||||
|
@ -56,7 +61,7 @@ static HGResult FBITMAPToHGImage(FIBITMAP *dib, HGUInt imgType, HGUInt imgOrigin
|
||||||
|
|
||||||
if (0 != imgInfo.type)
|
if (0 != imgInfo.type)
|
||||||
{
|
{
|
||||||
HGResult ret = HGBase_CreateImageFromData(FreeImage_GetBits(dib), &imgInfo, NULL, imgType, imgOrigin, image);
|
HGResult ret = HGBase_CreateImageFromData(data, &imgInfo, NULL, imgType, imgOrigin, image);
|
||||||
if (HGBASE_ERR_OK == ret)
|
if (HGBASE_ERR_OK == ret)
|
||||||
{
|
{
|
||||||
HGBase_SetImageDpi(*image, (HGUInt)((double)FreeImage_GetDotsPerMeterX(dib) / 39.3700787 + 0.5),
|
HGBase_SetImageDpi(*image, (HGUInt)((double)FreeImage_GetDotsPerMeterX(dib) / 39.3700787 + 0.5),
|
||||||
|
@ -72,14 +77,17 @@ static HGResult FBITMAPToHGImage(FIBITMAP *dib, HGUInt imgType, HGUInt imgOrigin
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGImageInfo imgInfo2;
|
data = FreeImage_GetBits(dib2);
|
||||||
imgInfo2.width = FreeImage_GetWidth(dib2);
|
width = FreeImage_GetWidth(dib2);
|
||||||
imgInfo2.height = FreeImage_GetHeight(dib2);
|
height = FreeImage_GetHeight(dib2);
|
||||||
imgInfo2.type = HGBASE_IMGTYPE_BGRA;
|
pitch = FreeImage_GetPitch(dib2);
|
||||||
imgInfo2.widthStep = FreeImage_GetPitch(dib2);
|
|
||||||
imgInfo2.origin = HGBASE_IMGORIGIN_BOTTOM;
|
|
||||||
|
|
||||||
HGResult ret = HGBase_CreateImageFromData(FreeImage_GetBits(dib2), &imgInfo2, NULL, imgType, imgOrigin, image);
|
imgInfo.width = width;
|
||||||
|
imgInfo.height = height;
|
||||||
|
imgInfo.type = HGBASE_IMGTYPE_BGRA;
|
||||||
|
imgInfo.widthStep = pitch;
|
||||||
|
imgInfo.origin = HGBASE_IMGORIGIN_BOTTOM;
|
||||||
|
HGResult ret = HGBase_CreateImageFromData(data, &imgInfo, NULL, imgType, imgOrigin, image);
|
||||||
if (HGBASE_ERR_OK == ret)
|
if (HGBASE_ERR_OK == ret)
|
||||||
{
|
{
|
||||||
HGBase_SetImageDpi(*image, (HGUInt)((double)FreeImage_GetDotsPerMeterX(dib2) / 39.3700787 + 0.5),
|
HGBase_SetImageDpi(*image, (HGUInt)((double)FreeImage_GetDotsPerMeterX(dib2) / 39.3700787 + 0.5),
|
||||||
|
@ -90,29 +98,19 @@ static HGResult FBITMAPToHGImage(FIBITMAP *dib, HGUInt imgType, HGUInt imgOrigin
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HGResult HGImageToFIBITMAP(HGImage image, FREE_IMAGE_FORMAT fif, FIBITMAP **dib)
|
static HGResult HGImageToFIBITMAP(HGImage image, FIBITMAP **dib)
|
||||||
{
|
{
|
||||||
assert(NULL != image);
|
assert(NULL != image);
|
||||||
assert(NULL != dib);
|
assert(NULL != dib);
|
||||||
|
|
||||||
HGImage image2 = image;
|
HGImage image2 = NULL;
|
||||||
|
|
||||||
HGImageInfo imgInfo;
|
HGImageInfo imgInfo;
|
||||||
HGBase_GetImageInfo(image2, &imgInfo);
|
HGBase_GetImageInfo(image, &imgInfo);
|
||||||
|
if (HGBASE_IMGTYPE_RGB == imgInfo.type || HGBASE_IMGTYPE_RGBA == imgInfo.type)
|
||||||
if ((HGBASE_IMGTYPE_RGB == imgInfo.type) || (HGBASE_IMGTYPE_RGBA == imgInfo.type)
|
|
||||||
|| (HGBASE_IMGTYPE_BINARY == imgInfo.type && FIF_TARGA == fif))
|
|
||||||
{
|
{
|
||||||
HGUInt type = HGBASE_IMGTYPE_BGR;
|
HGResult ret = HGBase_CloneImage(image, (HGBASE_IMGTYPE_RGB == imgInfo.type ? HGBASE_IMGTYPE_BGR : HGBASE_IMGTYPE_BGRA),
|
||||||
if (HGBASE_IMGTYPE_RGBA == imgInfo.type)
|
imgInfo.origin, &image2);
|
||||||
type = HGBASE_IMGTYPE_BGRA;
|
|
||||||
else if (HGBASE_IMGTYPE_BINARY == imgInfo.type && FIF_TARGA == fif)
|
|
||||||
type = HGBASE_IMGTYPE_GRAY;
|
|
||||||
|
|
||||||
HGImageRoi imageRoi;
|
|
||||||
HGBase_GetImageROI(image, &imageRoi);
|
|
||||||
HGBase_ResetImageROI(image);
|
|
||||||
HGResult ret = HGBase_CloneImage(image, type, imgInfo.origin, &image2);
|
|
||||||
HGBase_SetImageROI(image, &imageRoi);
|
|
||||||
if (HGBASE_ERR_OK != ret)
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -120,6 +118,10 @@ static HGResult HGImageToFIBITMAP(HGImage image, FREE_IMAGE_FORMAT fif, FIBITMAP
|
||||||
|
|
||||||
HGBase_GetImageInfo(image2, &imgInfo);
|
HGBase_GetImageInfo(image2, &imgInfo);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
image2 = image;
|
||||||
|
}
|
||||||
|
|
||||||
HGByte *data = NULL;
|
HGByte *data = NULL;
|
||||||
HGBase_GetImageData(image2, &data);
|
HGBase_GetImageData(image2, &data);
|
||||||
|
@ -136,7 +138,7 @@ static HGResult HGImageToFIBITMAP(HGImage image, FREE_IMAGE_FORMAT fif, FIBITMAP
|
||||||
else
|
else
|
||||||
assert(HGBASE_IMGTYPE_BINARY == imgInfo.type);
|
assert(HGBASE_IMGTYPE_BINARY == imgInfo.type);
|
||||||
|
|
||||||
*dib = FreeImage_ConvertFromRawBitsEx(TRUE, data, FIT_BITMAP, imgInfo.width, imgInfo.height, imgInfo.widthStep,
|
*dib = FreeImage_ConvertFromRawBits(data, imgInfo.width, imgInfo.height, imgInfo.widthStep,
|
||||||
bpp, 0, 0, 0, (HGBASE_IMGORIGIN_TOP == imgInfo.origin));
|
bpp, 0, 0, 0, (HGBASE_IMGORIGIN_TOP == imgInfo.origin));
|
||||||
if (NULL != *dib)
|
if (NULL != *dib)
|
||||||
{
|
{
|
||||||
|
@ -251,7 +253,7 @@ static HGResult SaveFIImage(HGImage image, const HGImgFmtSaveInfo* info, const H
|
||||||
}
|
}
|
||||||
|
|
||||||
FIBITMAP *dib = NULL;
|
FIBITMAP *dib = NULL;
|
||||||
HGResult ret = HGImageToFIBITMAP(image, fif, &dib);
|
HGResult ret = HGImageToFIBITMAP(image, &dib);
|
||||||
if (HGBASE_ERR_OK != ret)
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
#include "../base/HGDef.h"
|
|
||||||
#if defined(HG_CMP_MSC)
|
|
||||||
#include "FreeImage.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
|
|
||||||
{
|
|
||||||
switch (ul_reason_for_call)
|
|
||||||
{
|
|
||||||
case DLL_PROCESS_ATTACH:
|
|
||||||
FreeImage_Initialise();
|
|
||||||
break;
|
|
||||||
case DLL_THREAD_ATTACH:
|
|
||||||
break;
|
|
||||||
case DLL_THREAD_DETACH:
|
|
||||||
break;
|
|
||||||
case DLL_PROCESS_DETACH:
|
|
||||||
FreeImage_DeInitialise();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
void __attribute__((constructor)) global_load(void);
|
|
||||||
void __attribute__((destructor)) global_unload(void);
|
|
||||||
|
|
||||||
void global_load(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void global_unload(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue