1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #if !defined(QUANTIZER_H_)
- #define QUANTIZER_H_
- struct NODE
- {
- BOOL bIsLeaf;
- long nPixelCount;
- long nRedSum;
- long nGreenSum;
- long nBlueSum;
- UINT nColorIndex;
- NODE *pChild[8];
- NODE *pNext;
- };
- class CQuantizer
- {
- public:
- CQuantizer(UINT nMaxColors, UINT nColorBits);
- ~CQuantizer();
-
- BOOL ProcessImage (HANDLE hImage);
-
- UINT GetColorCount ();
- void SetColorTable (RGBQUAD* prgb);
- BOOL GetColorIndex(BYTE r,BYTE g,BYTE b,UINT *pColorIndex);
- protected:
-
- void AddColor (NODE** ppNode, BYTE r, BYTE g, BYTE b,
- UINT nColorBits, UINT nLevel, UINT* pLeafCount, NODE** pReducibleNodes);
-
- void* CreateNode (UINT nLevel, UINT nColorBits, UINT* pLeafCount,
- NODE** pReducibleNodes);
-
- void ReduceTree (UINT nColorBits, UINT* pLeafCount,
- NODE** pReducibleNodes);
- void DeleteTree (NODE** ppNode);
- void GetPaletteColors (NODE* pTree, RGBQUAD* prgb, UINT* pIndex);
- BOOL FindColorIndex(NODE *pNode,BYTE r,BYTE g,BYTE b,int nLevel,UINT *pColorIndex);
- BYTE GetPixelIndex(long x, long y, int nbit, long effwdt, BYTE *pimage);
- int m_nColorBits;
- UINT m_nLeafCount;
- int m_nMaxColors;
- NODE *m_pTree;
- NODE *m_pReducibleNodes[9];
- };
- class CRGBQuantizer: public CQuantizer
- {
- public:
- CRGBQuantizer(UINT nMaxColors, UINT nColorBits);
- BOOL ProcessImageRGB (BYTE *pRGBData,UINT nWidth,UINT nHeight);
- };
- class CBitmapQuantizer: public CQuantizer
- {
- public:
- CBitmapQuantizer(UINT nMaxColors, UINT nColorBits);
- BOOL ProcessImageBitmap (HBITMAP hBmp);
- };
- #endif
|