Improved some more.

Why were the components or'ed with 5 ?

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13096 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stefano Ceccherini
2005-06-13 14:42:06 +00:00
parent 4dfe5b819b
commit 44bb301774
+3 -12
View File
@@ -148,18 +148,13 @@ color_distance(uint8 red1, uint8 green1, uint8 blue1,
// distance according to psycho-visual tests
int rmean = ((int)red1 + (int)red2) / 2;
#if 0
return (((512 + rmean) * rd * rd) >> 8)
+ 4 * gd * gd
+ (((767 - rmean) * bd * bd) >> 8);
#endif
return (2 + rmean / 256) * rd * rd
+ 4 * gd * gd
+ (2 + (255 - rmean) / 256) * bd * bd;
}
static unsigned
static uint8
FindClosestColor(const rgb_color &color, const rgb_color *palette)
{
// TODO: This isn't working 100% correctly.
@@ -173,7 +168,7 @@ FindClosestColor(const rgb_color &color, const rgb_color *palette)
unsigned distance = color_distance(color.red, color.green, color.blue,
c.red, c.green, c.blue);
if (distance < closestDistance) {
closestIndex = i;
closestIndex = (uint8)i;
closestDistance = distance;
}
}
@@ -212,9 +207,6 @@ FillColorMap(const rgb_color *palette, color_map *map)
rgbColor.red = (color & 0x7c00) >> 7;
rgbColor.green = (color & 0x3e0) >> 2;
rgbColor.blue = (color & 0x1f) << 3;
rgbColor.red |= rgbColor.red >> 5;
rgbColor.green |= rgbColor.green >> 5;
rgbColor.blue |= rgbColor.blue >> 5;
map->index_map[color] = FindClosestColor(rgbColor, palette);
}
@@ -222,8 +214,7 @@ FillColorMap(const rgb_color *palette, color_map *map)
// init inversion map
for (int32 index = 0; index < 256; index++) {
rgb_color inverted = InvertColor(map->color_list[index]);
uint8 closestIndex = FindClosestColor(inverted, palette);
map->inversion_map[index] = closestIndex;
map->inversion_map[index] = FindClosestColor(inverted, palette);
}
}