#ifndef YSPNG_IS_INCLUDED #define YSPNG_IS_INCLUDED /* { */ #ifndef YSRESULT_IS_DEFINED #define YSERR 0 #define YSOK 1 #endif #ifndef YSBOOL_IS_DEFINED #define YSBOOL_IS_DEFINED #define YSFALSE 0 #define YSTRUE 1 #endif class YsPngHuffmanTree { public: YsPngHuffmanTree(); ~YsPngHuffmanTree(); YsPngHuffmanTree *zero,*one; unsigned int dat; unsigned int weight,depth; static int leakTracker; static void DeleteHuffmanTree(YsPngHuffmanTree *node); }; class YsPngUncompressor { public: class YsGenericPngDecoder *output; inline unsigned int GetNextBit(const unsigned char dat[],unsigned &bytePtr,unsigned &bitPtr) { unsigned a; a=dat[bytePtr]&bitPtr; bitPtr<<=1; if(bitPtr>=256) { bitPtr=1; bytePtr++; } return (a!=0 ? 1 : 0); } inline unsigned int GetNextMultiBit(const unsigned char dat[],unsigned &bytePtr,unsigned &bitPtr,unsigned n) { unsigned value,mask,i; value=0; mask=1; for(i=0; i