You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.5 KiB
67 lines
1.5 KiB
class CDitherTable
|
|
{
|
|
friend class CDitherToRGB8;
|
|
|
|
public:
|
|
CDitherTable();
|
|
~CDitherTable();
|
|
|
|
BOOL Match( ULONG nColors, const RGBQUAD* prgbColors );
|
|
HRESULT SetColors( ULONG nColors, const RGBQUAD* prgbColors );
|
|
|
|
protected:
|
|
HRESULT BuildInverseMap();
|
|
|
|
void inv_cmap( int colors, RGBQUAD *colormap, int bits, ULONG* dist_buf,
|
|
BYTE* rgbmap );
|
|
int redloop();
|
|
int greenloop( int restart );
|
|
int blueloop( int restart );
|
|
void maxfill( ULONG* buffer, long side );
|
|
|
|
public:
|
|
BYTE m_abInverseMap[32768];
|
|
|
|
protected:
|
|
ULONG m_nRefCount;
|
|
ULONG m_nColors;
|
|
RGBQUAD m_argbColors[256];
|
|
ULONG* m_pnDistanceBuffer;
|
|
|
|
// Vars that were global in the original code
|
|
int bcenter, gcenter, rcenter;
|
|
long gdist, rdist, cdist;
|
|
long cbinc, cginc, crinc;
|
|
ULONG* gdp;
|
|
ULONG* rdp;
|
|
ULONG* cdp;
|
|
BYTE* grgbp;
|
|
BYTE* rrgbp;
|
|
BYTE* crgbp;
|
|
int gstride, rstride;
|
|
long x, xsqr, colormax;
|
|
int cindex;
|
|
|
|
// Static locals from the original redloop(). Good coding at its finest.
|
|
long rxx;
|
|
|
|
// Static locals from the original greenloop()
|
|
int greenloop_here;
|
|
int greenloop_min;
|
|
int greenloop_max;
|
|
int greenloop_prevmin;
|
|
int greenloop_prevmax;
|
|
long ginc;
|
|
long gxx;
|
|
long gcdist;
|
|
ULONG* gcdp;
|
|
BYTE* gcrgbp;
|
|
|
|
// Static locals from the original blueloop()
|
|
int blueloop_here;
|
|
int blueloop_min;
|
|
int blueloop_max;
|
|
int blueloop_prevmin;
|
|
int blueloop_prevmax;
|
|
long binc;
|
|
};
|