jpeg.h

00001 #pragma once
00002 
00003 class CJpegEncoder
00004 {
00005         static const int ColorComponents = 3;
00006 
00007         int m_w, m_h;
00008         BYTE* m_p;
00009 
00010         unsigned int m_bbuff, m_bwidth;
00011         bool PutBit(int b, int n);
00012         void Flush();
00013         int GetBitWidth(short q);
00014 
00015         void WriteSOI();
00016         void WriteDQT();
00017         void WriteSOF0();
00018         void WriteDHT();
00019         void WriteSOS();
00020         void WriteEOI();
00021 
00022 protected:
00023         virtual bool PutByte(BYTE b) = 0;
00024         virtual bool PutBytes(const void* pData, int len) = 0;
00025         virtual bool Encode(const BYTE* dib);
00026 
00027 public:
00028         CJpegEncoder();
00029 };
00030 
00031 class CJpegEncoderFile : public CJpegEncoder
00032 {
00033         CString m_fn;
00034         FILE* m_file;
00035 
00036 protected:
00037         bool PutByte(BYTE b);
00038         bool PutBytes(const void* pData, int len);
00039 
00040 public:
00041         CJpegEncoderFile(LPCTSTR fn);
00042 
00043         bool Encode(const BYTE* dib);
00044 };
00045 
00046 class CJpegEncoderMem : public CJpegEncoder
00047 {
00048         CArray<BYTE>* m_pdata;
00049 
00050 protected:
00051         bool PutByte(BYTE b);
00052         bool PutBytes(const void* pData, int len);
00053 
00054 public:
00055         CJpegEncoderMem();
00056 
00057         bool Encode(const BYTE* dib, CArray<BYTE>& data);
00058 };
00059 

Generated on Tue Dec 13 14:46:51 2005 for guliverkli by  doxygen 1.4.5