Files
DocumentServer-v-9.2.0/core/DesktopEditor/raster/Jp2/Image.h
T
Yajbir Singh f1b860b25c
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

83 lines
2.3 KiB
C++

#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;
}
}