You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.6 KiB
JavaScript

var source;
var dX, dY, dW, dH, sW, sH;
function getVal(p, i) {
if ((p.data[i] == 0x00) && (p.data[i + 1] == 0x00)) return 0;
if ((p.data[i] == 0xFF) && (p.data[i + 1] == 0xFF)) return 1;
if ((p.data[i] == 0x7F) && (p.data[i + 1] == 0x7F)) return 2;
return 3;
}
function getVal_7color(p, i) {
if (
(p.data[i] == 0x00) && (p.data[i + 1] == 0x00) && (p.data[i + 2] == 0x00)
) return 0;
if (
(p.data[i] == 0xFF) && (p.data[i + 1] == 0xFF) && (p.data[i + 2] == 0xFF)
) return 1;
if (
(p.data[i] == 0x00) && (p.data[i + 1] == 0xFF) && (p.data[i + 2] == 0x00)
) return 2;
if (
(p.data[i] == 0x00) && (p.data[i + 1] == 0x00) && (p.data[i + 2] == 0xFF)
) return 3;
if (
(p.data[i] == 0xFF) && (p.data[i + 1] == 0x00) && (p.data[i + 2] == 0x00)
) return 4;
if (
(p.data[i] == 0xFF) && (p.data[i + 1] == 0xFF) && (p.data[i + 2] == 0x00)
) return 5;
if (
(p.data[i] == 0xFF) && (p.data[i + 1] == 0x80) && (p.data[i + 2] == 0x00)
) return 6;
return 7;
}
function setVal(p, i, c) {
p.data[i] = curPal[c][0];
p.data[i + 1] = curPal[c][1];
p.data[i + 2] = curPal[c][2];
p.data[i + 3] = 255;
}
function addVal(c, r, g, b, k) {
return [c[0] + (r * k) / 32, c[1] + (g * k) / 32, c[2] + (b * k) / 32];
}
function getErr(r, g, b, stdCol) {
r -= stdCol[0];
g -= stdCol[1];
b -= stdCol[2];
return r * r + g * g + b * b;
}
function getNear(r, g, b) {
var ind = 0;
var err = getErr(r, g, b, curPal[0]);
for (var i = 1; i < curPal.length; i++) {
var cur = getErr(r, g, b, curPal[i]);
if (cur < err) {
err = cur;
ind = i;
}
}
return ind;
}