29 #ifndef PGF_PGFIMAGE_H
30 #define PGF_PGFIMAGE_H
36 enum ProgressMode { PM_Relative, PM_Absolute };
101 void Read(
int level = 0, CallbackPtr cb = NULL,
void *data = NULL) THROW_;
103 #ifdef __PGFROISUPPORT__
104 void Read(
PGFRect& rect,
int level = 0, CallbackPtr cb = NULL,
void *data = NULL) THROW_;
147 void GetBitmap(
int pitch, UINT8* buff, BYTE bpp,
int channelMap[] = NULL, CallbackPtr cb = NULL,
void *data = NULL) const THROW_;
164 void GetYUV(
int pitch, DataT* buff, BYTE bpp,
int channelMap[] = NULL, CallbackPtr cb = NULL,
void *data = NULL) const THROW_;
182 void ImportBitmap(
int pitch, UINT8 *buff, BYTE bpp,
int channelMap[] = NULL, CallbackPtr cb = NULL,
void *data = NULL) THROW_;
199 void ImportYUV(
int pitch, DataT *buff, BYTE bpp,
int channelMap[] = NULL, CallbackPtr cb = NULL,
void *data = NULL) THROW_;
214 void Write(
CPGFStream* stream, UINT32* nWrittenBytes = NULL, CallbackPtr cb = NULL,
void *data = NULL) THROW_;
237 #ifdef __PGFROISUPPORT__
238 UINT32
Write(
int level, CallbackPtr cb = NULL,
void *data = NULL) THROW_;
286 void SetHeader(
const PGFHeader& header, BYTE flags = 0, UINT8* userData = 0, UINT32 userDataLength = 0) THROW_;
315 void SetColorTable(UINT32 iFirstColor, UINT32 nColors,
const RGBQUAD* prgbColors) THROW_;
329 void GetColorTable(UINT32 iFirstColor, UINT32 nColors, RGBQUAD* prgbColors)
const THROW_;
390 UINT32
ReadEncodedData(
int level, UINT8* target, UINT32 targetLen)
const THROW_;
491 static UINT32
LevelWidth(UINT32 width,
int level) { ASSERT(level >= 0); UINT32 w = (width >> level);
return ((w << level) == width) ? w : w + 1; }
498 static UINT32
LevelHeight(UINT32 height,
int level) { ASSERT(level >= 0); UINT32 h = (height >> level);
return ((h << level) == height) ? h : h + 1; }
529 #ifdef __PGFROISUPPORT__
538 ProgressMode m_progressMode;
540 void ComputeLevels();
541 void CompleteHeader();
542 void RgbToYuv(
int pitch, UINT8* rgbBuff, BYTE bpp,
int channelMap[], CallbackPtr cb,
void *data) THROW_;
543 void Downsample(
int nChannel);
544 UINT32 UpdatePostHeaderSize() THROW_;
545 void WriteLevel() THROW_;
547 #ifdef __PGFROISUPPORT__
551 UINT8 Clamp4(DataT v)
const {
552 if (v & 0xFFFFFFF0)
return (v < 0) ? (UINT8)0: (UINT8)15;
else return (UINT8)v;
554 UINT16 Clamp6(DataT v)
const {
555 if (v & 0xFFFFFFC0)
return (v < 0) ? (UINT16)0: (UINT16)63;
else return (UINT16)v;
557 UINT8 Clamp8(DataT v)
const {
559 if (v & 0xFFFFFF00)
return (v < 0) ? (UINT8)0 : (UINT8)255;
else return (UINT8)v;
561 UINT16 Clamp16(DataT v)
const {
562 if (v & 0xFFFF0000)
return (v < 0) ? (UINT16)0: (UINT16)65535;
else return (UINT16)v;
564 UINT32 Clamp31(DataT v)
const {
565 return (v < 0) ? 0 : (UINT32)v;
569 #endif //PGF_PGFIMAGE_H
static bool ImportIsSupported(BYTE mode)
Definition: PGFimage.cpp:1246
PGF decoder.
Definition: Decoder.h:46
void ResetStreamPos() THROW_
Reset stream position to start of PGF pre-header.
Definition: PGFimage.cpp:644
UINT32 Width(int level=0) const
Definition: PGFimage.h:416
void GetBitmap(int pitch, UINT8 *buff, BYTE bpp, int channelMap[]=NULL, CallbackPtr cb=NULL, void *data=NULL) const THROW_
Definition: PGFimage.cpp:1719
virtual void Destroy()
Definition: PGFimage.cpp:105
CWaveletTransform * m_wtChannel[MaxChannels]
wavelet transformed color channels
Definition: PGFimage.h:511
void SetColorTable(UINT32 iFirstColor, UINT32 nColors, const RGBQUAD *prgbColors) THROW_
Definition: PGFimage.cpp:1305
bool m_useOMPinEncoder
use Open MP in encoder
Definition: PGFimage.h:526
UINT32 WriteHeader(CPGFStream *stream) THROW_
Definition: PGFimage.cpp:922
const RGBQUAD * GetColorTable() const
Definition: PGFimage.h:334
CEncoder * m_encoder
PGF encoder.
Definition: PGFimage.h:514
bool IsOpen() const
Returns true if the PGF has been opened and not closed.
Definition: PGFimage.h:87
void ImportBitmap(int pitch, UINT8 *buff, BYTE bpp, int channelMap[]=NULL, CallbackPtr cb=NULL, void *data=NULL) THROW_
Definition: PGFimage.cpp:742
UINT32 GetMaxValue() const
Definition: PGFimage.h:345
void ReadPreview() THROW_
Definition: PGFimage.h:121
void ImportYUV(int pitch, DataT *buff, BYTE bpp, int channelMap[]=NULL, CallbackPtr cb=NULL, void *data=NULL) THROW_
Definition: PGFimage.cpp:2588
DataT * GetChannel(int c=0)
Definition: PGFimage.h:321
static UINT32 LevelHeight(UINT32 height, int level)
Definition: PGFimage.h:498
Abstract stream base class.
Definition: PGFstream.h:39
bool m_downsample
chrominance channels are downsampled
Definition: PGFimage.h:524
void Read(int level=0, CallbackPtr cb=NULL, void *data=NULL) THROW_
Definition: PGFimage.cpp:383
static BYTE CurrentChannelDepth(BYTE version=PGFVersion)
Definition: PGFimage.h:508
PGF encoder.
Definition: Encoder.h:46
virtual ~CPGFImage()
Destructor: Destroy internal data structures.
Definition: PGFimage.cpp:98
BYTE BPP() const
Definition: PGFimage.h:460
bool m_useOMPinDecoder
use Open MP in decoder
Definition: PGFimage.h:527
PGFPreHeader m_preHeader
PGF pre-header.
Definition: PGFimage.h:518
PGFRect m_roi
region of interest
Definition: PGFimage.h:531
const PGFHeader * GetHeader() const
Definition: PGFimage.h:339
BYTE Version() const
Definition: PGFimage.h:476
bool m_favorSpeedOverSize
favor encoding speed over compression ratio
Definition: PGFimage.h:525
void Reconstruct(int level=0) THROW_
Definition: PGFimage.cpp:331
UINT32 ReadEncodedHeader(UINT8 *target, UINT32 targetLen) const THROW_
Definition: PGFimage.cpp:624
#define PGFVersion
current standard version
Definition: PGFtypes.h:69
CDecoder * m_decoder
PGF decoder.
Definition: PGFimage.h:513
UINT32 GetEncodedHeaderLength() const
Definition: PGFimage.cpp:612
PGFHeader m_header
PGF file header.
Definition: PGFimage.h:519
BYTE Channels() const
Definition: PGFimage.h:447
void SetMaxValue(UINT32 maxValue)
Definition: PGFimage.cpp:689
bool m_streamReinitialized
stream has been reinitialized
Definition: PGFimage.h:530
void SetRefreshCallback(RefreshCB callback, void *arg)
Definition: PGFimage.h:307
UINT32 GetEncodedLevelLength(int level) const
Definition: PGFimage.h:370
UINT32 WriteImage(CPGFStream *stream, CallbackPtr cb=NULL, void *data=NULL) THROW_
Definition: PGFimage.cpp:1091
BYTE ChannelDepth() const
Definition: PGFimage.h:409
void ConfigureEncoder(bool useOMP=true, bool favorSpeedOverSize=false)
Definition: PGFimage.h:260
UINT32 m_height[MaxChannels]
height of each channel at current level
Definition: PGFimage.h:517
#define PGFROI
supports Regions Of Interest
Definition: PGFtypes.h:64
BYTE Level() const
Definition: PGFimage.h:430
void Write(CPGFStream *stream, UINT32 *nWrittenBytes=NULL, CallbackPtr cb=NULL, void *data=NULL) THROW_
Definition: PGFimage.cpp:1162
const UINT8 * GetUserData(UINT32 &size) const
Definition: PGFimage.cpp:321
BYTE Quality() const
Definition: PGFimage.h:441
DataT * m_channel[MaxChannels]
untransformed channels in YUV format
Definition: PGFimage.h:512
static BYTE CurrentVersion(BYTE version=PGFVersion)
Return version.
Definition: PGFimage.cpp:719
virtual void Close()
Definition: PGFimage.cpp:122
BYTE UsedBitsPerChannel() const
Definition: PGFimage.cpp:707
#define MaxChannels
maximum number of (color) channels
Definition: PGFtypes.h:58
int m_currentLevel
transform level of current image
Definition: PGFimage.h:522
UINT8 version
PGF version.
Definition: PGFtypes.h:106
bool ROIisSupported() const
Definition: PGFimage.h:465
void ConfigureDecoder(bool useOMP=true, bool skipUserData=false)
Definition: PGFimage.h:266
UINT32 ChannelHeight(int c=0) const
Definition: PGFimage.h:404
PGFPostHeader m_postHeader
PGF post-header.
Definition: PGFimage.h:520
BYTE Levels() const
Definition: PGFimage.h:435
UINT64 m_userDataPos
stream position of user data
Definition: PGFimage.h:521
#define PGF32
32 bit values are used -> allows at maximum 31 bits, otherwise 16 bit values are used -> allows at ma...
Definition: PGFtypes.h:63
void Open(CPGFStream *stream) THROW_
Definition: PGFimage.cpp:131
bool m_skipUserData
skip user data (metadata) during open
Definition: PGFimage.h:528
BYTE Mode() const
Definition: PGFimage.h:454
static UINT32 LevelWidth(UINT32 width, int level)
Definition: PGFimage.h:491
UINT32 * m_levelLength
length of each level in bytes; first level starts immediately after this array
Definition: PGFimage.h:515
void SetChannel(DataT *channel, int c=0)
Definition: PGFimage.h:276
PGF main class.
Definition: PGFimage.h:57
BYTE m_quant
quantization parameter
Definition: PGFimage.h:523
UINT64 GetUserDataPos() const
Definition: PGFimage.h:350
UINT32 ReadEncodedData(int level, UINT8 *target, UINT32 targetLen) const THROW_
Definition: PGFimage.cpp:658
void GetYUV(int pitch, DataT *buff, BYTE bpp, int channelMap[]=NULL, CallbackPtr cb=NULL, void *data=NULL) const THROW_
Definition: PGFimage.cpp:2477
UINT32 ChannelWidth(int c=0) const
Definition: PGFimage.h:397
void SetProgressMode(ProgressMode pm)
Definition: PGFimage.h:300
UINT32 m_width[MaxChannels]
width of each channel at current level
Definition: PGFimage.h:516
void SetHeader(const PGFHeader &header, BYTE flags=0, UINT8 *userData=0, UINT32 userDataLength=0) THROW_
Definition: PGFimage.cpp:843
UINT32 Height(int level=0) const
Definition: PGFimage.h:423
CPGFImage()
Standard constructor: It is used to create a PGF instance for opening and reading.
Definition: PGFimage.cpp:55
Rectangle.
Definition: PGFtypes.h:194