home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
graphics
/
utilities
/
gifmachine_458
/
sources
/
rgbdiff.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-02-15
|
876b
|
37 lines
/* Note: this colour comparison routine was snitched from HamSharp.
This has the side effect of allowing one to compare colour errors gotten
with GIFMachine to those gotten with (S)HamSharp.
*/
#include "GIFMachine.h"
static UBYTE Diff[16][16];
static UBYTE Intensity[16][16][16];
extern struct Library *MathIeeeDoubBasBase;
void InitDiff(void)
{
register int i;
register int j;
register int r;
register int g;
register int b;
for (i = 0; i < 16; i++)
for (j = 0; j < 16; j++)
Diff[i][j] = (i - j) * (i - j);
for (r = 0; r < 16; r++)
for (g = 0; g < 16; g++)
for (b = 0; b < 16; b++)
Intensity[r][g][b] = (int)(.299 * r + .587 * g + .114 * b);
}
ULONG RGBdiff(UBYTE r1, UBYTE g1, UBYTE b1, UBYTE r2, UBYTE g2, UBYTE b2)
{
return (ULONG)(Diff[Intensity[r1][g1][b1]][Intensity[r2][g2][b2]] +
Diff[r1][r2] + Diff[g1][g2] + Diff[b1][b2]);
}