aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2/vga13h.cpp
diff options
context:
space:
mode:
authoruruk2014-07-29 13:25:13 +0200
committeruruk2014-07-29 13:25:13 +0200
commitcee669e76325dd9f6dca12262faf61cbe0392828 (patch)
tree75703b083c14f8a7c2dd8506407de6f17bc5ffe5 /engines/cge2/vga13h.cpp
parent95854c3a5743564aa2ef3e7c1d8ef21156ae7f2e (diff)
downloadscummvm-rg350-cee669e76325dd9f6dca12262faf61cbe0392828.tar.gz
scummvm-rg350-cee669e76325dd9f6dca12262faf61cbe0392828.tar.bz2
scummvm-rg350-cee669e76325dd9f6dca12262faf61cbe0392828.zip
CGE2: Implement setAutoColors().
Add a redefinition of closest() to do so.
Diffstat (limited to 'engines/cge2/vga13h.cpp')
-rw-r--r--engines/cge2/vga13h.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/engines/cge2/vga13h.cpp b/engines/cge2/vga13h.cpp
index 1cd2c95468..62b070dcac 100644
--- a/engines/cge2/vga13h.cpp
+++ b/engines/cge2/vga13h.cpp
@@ -913,6 +913,28 @@ uint8 Vga::closest(Dac *pal, const uint8 colR, const uint8 colG, const uint8 col
#undef f
}
+uint8 Vga::closest(Dac *pal, Dac x) {
+ int exp = (sizeof(long) * 8 - 1);
+ long D = (1 << exp) - 1; // Maximume value of long.
+ long R = x._r;
+ long G = x._g;
+ long B = x._b;
+ int idx;
+ for (int n = 0; n < 256; n++) {
+ long dR = R - pal[n]._r;
+ long dG = G - pal[n]._g;
+ long dB = B - pal[n]._b,
+ d = dR * dR + dG * dG + dB * dB;
+ if (d < D) {
+ idx = n;
+ D = d;
+ if (!d)
+ break;
+ }
+ }
+ return idx;
+}
+
uint8 *Vga::glass(Dac *pal, const uint8 colR, const uint8 colG, const uint8 colB) {
uint8 *x = (uint8 *)malloc(256);
if (x) {