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

58 lines
1.1 KiB
C++

#pragma once
#include "Types.h"
#include "Utils.h"
namespace Jpeg2000
{
//-------------------------------------------------------------------------------------------------------------------------------
Raw* Raw_Create()
{
Raw *pRaw = (Raw*)Malloc(sizeof(Raw));
return pRaw;
}
void Raw_Destroy(Raw *pRaw)
{
Free(pRaw);
}
int Raw_BytesCount(Raw *pRaw)
{
return pRaw->pBufferPointer - pRaw->pBufferStart;
}
void Raw_InitDecoder(Raw *pRaw, unsigned char *pBuffer, int nLen)
{
pRaw->pBufferStart = pBuffer;
pRaw->nMaxLen = nLen;
pRaw->nLen = 0;
pRaw->nBuffer = 0;
pRaw->nFreeBitsCount = 0;
}
int Raw_Decode(Raw *pRaw)
{
if (pRaw->nFreeBitsCount == 0)
{
pRaw->nFreeBitsCount = 8;
if (pRaw->nLen == pRaw->nMaxLen)
{
pRaw->nBuffer = 0xff;
}
else
{
if (pRaw->nBuffer == 0xff)
{
pRaw->nFreeBitsCount = 7;
}
pRaw->nBuffer = *(pRaw->pBufferStart + pRaw->nLen);
pRaw->nLen++;
}
}
pRaw->nFreeBitsCount--;
int nResult = (pRaw->nBuffer >> pRaw->nFreeBitsCount) & 0x01;
return nResult;
}
}