91 void Read(
int level = 0, CallbackPtr cb =
nullptr,
void *data =
nullptr);
93#ifdef __PGFROISUPPORT__
103 void Read(
PGFRect& rect,
int level = 0, CallbackPtr cb =
nullptr,
void *data =
nullptr);
137 void GetBitmap(
int pitch, UINT8* buff, BYTE bpp,
int channelMap[] =
nullptr, CallbackPtr cb =
nullptr,
void *data =
nullptr)
const;
154 void GetYUV(
int pitch,
DataT* buff, BYTE bpp,
int channelMap[] =
nullptr, CallbackPtr cb =
nullptr,
void *data =
nullptr)
const;
172 void ImportBitmap(
int pitch, UINT8 *buff, BYTE bpp,
int channelMap[] =
nullptr, CallbackPtr cb =
nullptr,
void *data =
nullptr);
189 void ImportYUV(
int pitch,
DataT *buff, BYTE bpp,
int channelMap[] =
nullptr, CallbackPtr cb =
nullptr,
void *data =
nullptr);
204 void Write(
CPGFStream* stream, UINT32* nWrittenBytes =
nullptr, CallbackPtr cb =
nullptr,
void *data =
nullptr);
227#ifdef __PGFROISUPPORT__
243 UINT32
Write(
int level, CallbackPtr cb =
nullptr,
void *data =
nullptr);
282 void SetHeader(
const PGFHeader& header, BYTE flags = 0,
const UINT8* userData = 0, UINT32 userDataLength = 0);
311 void SetColorTable(UINT32 iFirstColor, UINT32 nColors,
const RGBQUAD* prgbColors);
325 void GetColorTable(UINT32 iFirstColor, UINT32 nColors, RGBQUAD* prgbColors)
const;
354 const UINT8*
GetUserData(UINT32& cachedSize, UINT32* pTotalSize =
nullptr)
const;
387 UINT32
ReadEncodedData(
int level, UINT8* target, UINT32 targetLen)
const;
468#ifdef __PGFROISUPPORT__
499 static UINT32
LevelSizeL(UINT32 size,
int level) { ASSERT(level >= 0); UINT32 d = 1 << level;
return (size + d - 1) >> level; }
506 static UINT32
LevelSizeH(UINT32 size,
int level) { ASSERT(level >= 0); UINT32 d = 1 << (level - 1);
return (size + d - 1) >> level; }
539#ifdef __PGFROISUPPORT__
553 void RgbToYuv(
int pitch, UINT8* rgbBuff, BYTE bpp,
int channelMap[], CallbackPtr cb,
void *data);
558#ifdef __PGFROISUPPORT__
564 if (v & 0xFFFFFFF0)
return (v < 0) ? (UINT8)0: (UINT8)15;
else return (UINT8)v;
567 if (v & 0xFFFFFFC0)
return (v < 0) ? (UINT16)0: (UINT16)63;
else return (UINT16)v;
571 if (v & 0xFFFFFF00)
return (v < 0) ? (UINT8)0 : (UINT8)255;
else return (UINT8)v;
574 if (v & 0xFFFF0000)
return (v < 0) ? (UINT16)0: (UINT16)65535;
else return (UINT16)v;
577 return (v < 0) ? 0 : (UINT32)v;
#define PGFROI
supports Regions Of Interest
void(* RefreshCB)(void *p)
#define MaxChannels
maximum number of (color) channels
#define PGF32
32 bit values are used -> allows at maximum 30 input bits, otherwise 16 bit values are used -> allows...
#define PGFVersion
current standard version
bool m_useOMPinDecoder
use Open MP in decoder
UINT32 Clamp31(DataT v) const
UINT32 ChannelHeight(int c=0) const
UINT32 WriteImage(CPGFStream *stream, CallbackPtr cb=nullptr, void *data=nullptr)
CDecoder * m_decoder
PGF decoder.
bool m_useOMPinEncoder
use Open MP in encoder
UINT16 Clamp6(DataT v) const
UINT32 * m_levelLength
length of each level in bytes; first level starts immediately after this array
UINT32 m_height[MaxChannels]
height of each channel at current level
UINT32 m_userDataPolicy
user data (metadata) policy during open
PGFHeader m_header
PGF file header.
PGFRect GetAlignedROI(int c=0) const
virtual ~CPGFImage()
Destructor.
UINT32 WriteHeader(CPGFStream *stream)
void Downsample(int nChannel)
void SetHeader(const PGFHeader &header, BYTE flags=0, const UINT8 *userData=0, UINT32 userDataLength=0)
UINT32 GetMaxValue() const
UINT64 GetUserDataPos() const
int m_currentLevel
transform level of current image
void SetChannel(DataT *channel, int c=0)
void ConfigureEncoder(bool useOMP=true, bool favorSpeedOverSize=false)
UINT32 Width(int level=0) const
void SetColorTable(UINT32 iFirstColor, UINT32 nColors, const RGBQUAD *prgbColors)
static BYTE MaxChannelDepth(BYTE version=PGFVersion)
DataT * m_channel[MaxChannels]
untransformed channels in YUV format
void GetYUV(int pitch, DataT *buff, BYTE bpp, int channelMap[]=nullptr, CallbackPtr cb=nullptr, void *data=nullptr) const
bool IsFullyRead() const
Return true if all levels have been read.
void ImportBitmap(int pitch, UINT8 *buff, BYTE bpp, int channelMap[]=nullptr, CallbackPtr cb=nullptr, void *data=nullptr)
UINT32 ChannelWidth(int c=0) const
void * m_cbArg
refresh callback argument
void ConfigureDecoder(bool useOMP=true, UserdataPolicy policy=UP_CacheAll, UINT32 prefixSize=0)
void Read(int level=0, CallbackPtr cb=nullptr, void *data=nullptr)
UINT32 ReadEncodedHeader(UINT8 *target, UINT32 targetLen) const
void ImportYUV(int pitch, DataT *buff, BYTE bpp, int channelMap[]=nullptr, CallbackPtr cb=nullptr, void *data=nullptr)
UINT32 ReadEncodedData(int level, UINT8 *target, UINT32 targetLen) const
BYTE m_quant
quantization parameter
static BYTE CodecMajorVersion(BYTE version=PGFVersion)
Return major version.
static bool ImportIsSupported(BYTE mode)
BYTE ChannelDepth() const
UINT16 Clamp16(DataT v) const
bool m_favorSpeedOverSize
favor encoding speed over compression ratio
void SetMaxValue(UINT32 maxValue)
void GetBitmap(int pitch, UINT8 *buff, BYTE bpp, int channelMap[]=nullptr, CallbackPtr cb=nullptr, void *data=nullptr) const
BYTE UsedBitsPerChannel() const
PGFRect ComputeLevelROI() const
CEncoder * m_encoder
PGF encoder.
bool IsOpen() const
Returns true if the PGF has been opened for reading.
UINT8 Clamp8(DataT v) const
PGFRect m_roi
region of interest
void RgbToYuv(int pitch, UINT8 *rgbBuff, BYTE bpp, int channelMap[], CallbackPtr cb, void *data)
const PGFHeader * GetHeader() const
void ResetStreamPos(bool startOfData)
void SetROI(PGFRect rect)
ProgressMode m_progressMode
progress mode used in Read and Write; PM_Relative is default mode
UINT32 UpdatePostHeaderSize()
bool m_downsample
chrominance channels are downsampled
static UINT32 LevelSizeH(UINT32 size, int level)
UINT32 Write(int level, CallbackPtr cb=nullptr, void *data=nullptr)
UINT32 GetEncodedLevelLength(int level) const
bool ROIisSupported() const
const UINT8 * GetUserData(UINT32 &cachedSize, UINT32 *pTotalSize=nullptr) const
UINT32 Height(int level=0) const
UINT32 m_width[MaxChannels]
width of each channel at current level
PGFPostHeader m_postHeader
PGF post-header.
DataT * GetChannel(int c=0)
void SetRefreshCallback(RefreshCB callback, void *arg)
void Reconstruct(int level=0)
RefreshCB m_cb
pointer to refresh callback procedure
const RGBQUAD * GetColorTable() const
void Write(CPGFStream *stream, UINT32 *nWrittenBytes=nullptr, CallbackPtr cb=nullptr, void *data=nullptr)
UINT64 m_userDataPos
stream position of user data
UINT32 GetEncodedHeaderLength() const
void Read(PGFRect &rect, int level=0, CallbackPtr cb=nullptr, void *data=nullptr)
void SetProgressMode(ProgressMode pm)
PGFPreHeader m_preHeader
PGF pre-header.
static UINT32 LevelSizeL(UINT32 size, int level)
void Open(CPGFStream *stream)
double m_percent
progress [0..1]
UINT8 Clamp4(DataT v) const
CWaveletTransform * m_wtChannel[MaxChannels]
wavelet transformed color channels
bool m_streamReinitialized
stream has been reinitialized
CPGFImage()
Standard constructor.
Abstract stream base class.
UINT8 version
PGF version.
UINT16 major
major version number