Files
core/DesktopEditor/raster/Jp2/Image.h
Ilya.Kirillov 765e1fd8ae Изменения для компиляции под linux.
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62542 954022d7-b5bf-4e40-9824-e11837661b57
2016-05-21 00:02:47 +03:00

83 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "Types.h"
#include "Utils.h"
namespace Jpeg2000
{
//-------------------------------------------------------------------------------------------------------------------------------
// Image
//-------------------------------------------------------------------------------------------------------------------------------
Image* Image_CreateEmpty()
{
Image *pImage = (Image*)Malloc(sizeof(Image));
return pImage;
}
void Image_Destroy(Image *pImage)
{
if (pImage)
{
if (pImage->pComponents)
{
for (int nIndex = 0; nIndex < pImage->nCsiz; nIndex++)
{
ImageComponent *pImageComp = &pImage->pComponents[nIndex];
Free(pImageComp->pData);
}
Free(pImage->pComponents);
}
Free(pImage);
}
}
Image* Image_Create(int nComponentsCount, ImageComponentParams *pCompParams, ColorSpace eColorSpace)
{
Image *pImage = NULL;
pImage = (Image*)Malloc(sizeof(Image));
if (pImage)
{
pImage->eColorSpace = eColorSpace;
pImage->nCsiz = nComponentsCount;
// Выделяем память под компоненты
pImage->pComponents = (ImageComponent*)Malloc(pImage->nCsiz * sizeof(ImageComponent));
if (!pImage->pComponents)
{
Image_Destroy(pImage);
return NULL;
}
for (int nCurComponent = 0; nCurComponent < nComponentsCount; nCurComponent++)
{
ImageComponent *pComponent = &pImage->pComponents[nCurComponent];
pComponent->nXRsiz = pCompParams[nCurComponent].nXRsiz;
pComponent->nYRsiz = pCompParams[nCurComponent].nYRsiz;
pComponent->nWidth = pCompParams[nCurComponent].nWidth;
pComponent->nHeight = pCompParams[nCurComponent].nHeight;
pComponent->nXOsiz = pCompParams[nCurComponent].nXoffset;
pComponent->nYOsiz = pCompParams[nCurComponent].nYoffset;
pComponent->nPrecision = pCompParams[nCurComponent].nPrecision;
pComponent->nBPP = pCompParams[nCurComponent].nBPP;
pComponent->nSigned = pCompParams[nCurComponent].nSigned;
pComponent->pData = (int*)Malloc(pComponent->nWidth * pComponent->nHeight * sizeof(int));
if (!pComponent->pData)
{
Image_Destroy(pImage);
return NULL;
}
}
}
else
{
// TO DO: Выдать сообщение об ошибке
}
return pImage;
}
}