lint lib/colors.js
This commit is contained in:
parent
052ebaf6d1
commit
6e1d7e6126
|
@ -11,25 +11,29 @@ exports.match = function(r1, g1, b1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
hex = exports.hexToRGB(hex);
|
hex = exports.hexToRGB(hex);
|
||||||
r1 = hex[0], g1 = hex[1], b1 = hex[2];
|
r1 = hex[0];
|
||||||
|
g1 = hex[1];
|
||||||
|
b1 = hex[2];
|
||||||
} else if (Array.isArray(r1)) {
|
} else if (Array.isArray(r1)) {
|
||||||
b1 = r1[2], g1 = r1[1], r1 = r1[0];
|
b1 = r1[2];
|
||||||
|
g1 = r1[1];
|
||||||
|
r1 = r1[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
var hash = (r1 << 16) | (g1 << 8) | b1;
|
var hash = (r1 << 16) | (g1 << 8) | b1;
|
||||||
|
|
||||||
if (exports._cache[hash] != null) {
|
if (exports._cache[hash] !== null) {
|
||||||
return exports._cache[hash];
|
return exports._cache[hash];
|
||||||
}
|
}
|
||||||
|
|
||||||
var ldiff = Infinity
|
var ldiff = Infinity,
|
||||||
, li = -1
|
li = -1,
|
||||||
, i = 0
|
i = 0,
|
||||||
, c
|
c,
|
||||||
, r2
|
r2,
|
||||||
, g2
|
g2,
|
||||||
, b2
|
b2,
|
||||||
, diff;
|
diff;
|
||||||
|
|
||||||
for (; i < exports.vcolors.length; i++) {
|
for (; i < exports.vcolors.length; i++) {
|
||||||
c = exports.vcolors[i];
|
c = exports.vcolors[i];
|
||||||
|
@ -50,12 +54,15 @@ exports.match = function(r1, g1, b1) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return exports._cache[hash] = li;
|
exports._cache[hash] = li;
|
||||||
|
return exports._cache[hash];
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.RGBToHex = function(r, g, b) {
|
exports.RGBToHex = function(r, g, b) {
|
||||||
if (Array.isArray(r)) {
|
if (Array.isArray(r)) {
|
||||||
b = r[2], g = r[1], r = r[0];
|
b = r[2];
|
||||||
|
g = r[1];
|
||||||
|
r = r[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
function hex(n) {
|
function hex(n) {
|
||||||
|
@ -69,16 +76,10 @@ exports.RGBToHex = function(r, g, b) {
|
||||||
|
|
||||||
exports.hexToRGB = function(hex) {
|
exports.hexToRGB = function(hex) {
|
||||||
if (hex.length === 4) {
|
if (hex.length === 4) {
|
||||||
hex = hex[0]
|
hex = hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];
|
||||||
+ hex[1] + hex[1]
|
|
||||||
+ hex[2] + hex[2]
|
|
||||||
+ hex[3] + hex[3];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var col = parseInt(hex.substring(1), 16)
|
var col = parseInt(hex.substring(1), 16), r = (col >> 16) & 0xff, g = (col >> 8) & 0xff, b = col & 0xff;
|
||||||
, r = (col >> 16) & 0xff
|
|
||||||
, g = (col >> 8) & 0xff
|
|
||||||
, b = col & 0xff;
|
|
||||||
|
|
||||||
return [r, g, b];
|
return [r, g, b];
|
||||||
};
|
};
|
||||||
|
@ -90,9 +91,7 @@ exports.hexToRGB = function(hex) {
|
||||||
// [1] http://stackoverflow.com/questions/1633828
|
// [1] http://stackoverflow.com/questions/1633828
|
||||||
|
|
||||||
function colorDistance(r1, g1, b1, r2, g2, b2) {
|
function colorDistance(r1, g1, b1, r2, g2, b2) {
|
||||||
return Math.pow(30 * (r1 - r2), 2)
|
return Math.pow(30 * (r1 - r2), 2) + Math.pow(59 * (g1 - g2), 2) + Math.pow(11 * (b1 - b2), 2);
|
||||||
+ Math.pow(59 * (g1 - g2), 2)
|
|
||||||
+ Math.pow(11 * (b1 - b2), 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This might work well enough for a terminal's colors: treat RGB as XYZ in a
|
// This might work well enough for a terminal's colors: treat RGB as XYZ in a
|
||||||
|
@ -102,7 +101,7 @@ exports.mixColors = function(c1, c2, alpha) {
|
||||||
// if (c2 === 0x1ff) return c1;
|
// if (c2 === 0x1ff) return c1;
|
||||||
if (c1 === 0x1ff) c1 = 0;
|
if (c1 === 0x1ff) c1 = 0;
|
||||||
if (c2 === 0x1ff) c2 = 0;
|
if (c2 === 0x1ff) c2 = 0;
|
||||||
if (alpha == null) alpha = 0.5;
|
if (alpha === null) alpha = 0.5;
|
||||||
|
|
||||||
c1 = exports.vcolors[c1];
|
c1 = exports.vcolors[c1];
|
||||||
var r1 = c1[0];
|
var r1 = c1[0];
|
||||||
|
@ -125,13 +124,13 @@ exports.blend = function blend(attr, attr2, alpha) {
|
||||||
var name, i, c, nc;
|
var name, i, c, nc;
|
||||||
|
|
||||||
var bg = attr & 0x1ff;
|
var bg = attr & 0x1ff;
|
||||||
if (attr2 != null) {
|
if (attr2 !== null) {
|
||||||
var bg2 = attr2 & 0x1ff;
|
var bg2 = attr2 & 0x1ff;
|
||||||
if (bg === 0x1ff) bg = 0;
|
if (bg === 0x1ff) bg = 0;
|
||||||
if (bg2 === 0x1ff) bg2 = 0;
|
if (bg2 === 0x1ff) bg2 = 0;
|
||||||
bg = exports.mixColors(bg, bg2, alpha);
|
bg = exports.mixColors(bg, bg2, alpha);
|
||||||
} else {
|
} else {
|
||||||
if (blend._cache[bg] != null) {
|
if (blend._cache[bg] !== null) {
|
||||||
bg = blend._cache[bg];
|
bg = blend._cache[bg];
|
||||||
// } else if (bg < 8) {
|
// } else if (bg < 8) {
|
||||||
// bg += 8;
|
// bg += 8;
|
||||||
|
@ -159,7 +158,7 @@ exports.blend = function blend(attr, attr2, alpha) {
|
||||||
attr |= bg;
|
attr |= bg;
|
||||||
|
|
||||||
var fg = (attr >> 9) & 0x1ff;
|
var fg = (attr >> 9) & 0x1ff;
|
||||||
if (attr2 != null) {
|
if (attr2 !== null) {
|
||||||
var fg2 = (attr2 >> 9) & 0x1ff;
|
var fg2 = (attr2 >> 9) & 0x1ff;
|
||||||
// 0, 7, 188, 231, 251
|
// 0, 7, 188, 231, 251
|
||||||
if (fg === 0x1ff) {
|
if (fg === 0x1ff) {
|
||||||
|
@ -171,7 +170,7 @@ exports.blend = function blend(attr, attr2, alpha) {
|
||||||
fg = exports.mixColors(fg, fg2, alpha);
|
fg = exports.mixColors(fg, fg2, alpha);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (blend._cache[fg] != null) {
|
if (blend._cache[fg] !== null) {
|
||||||
fg = blend._cache[fg];
|
fg = blend._cache[fg];
|
||||||
// } else if (fg < 8) {
|
// } else if (fg < 8) {
|
||||||
// fg += 8;
|
// fg += 8;
|
||||||
|
@ -242,13 +241,7 @@ exports.xterm = [
|
||||||
// Seed all 256 colors. Assume xterm defaults.
|
// Seed all 256 colors. Assume xterm defaults.
|
||||||
// Ported from the xterm color generation script.
|
// Ported from the xterm color generation script.
|
||||||
exports.colors = (function() {
|
exports.colors = (function() {
|
||||||
var cols = exports.colors = []
|
var cols = exports.colors = [], _cols = exports.vcolors = [], r, g, b, i, l;
|
||||||
, _cols = exports.vcolors = []
|
|
||||||
, r
|
|
||||||
, g
|
|
||||||
, b
|
|
||||||
, i
|
|
||||||
, l;
|
|
||||||
|
|
||||||
function hex(n) {
|
function hex(n) {
|
||||||
n = n.toString(16);
|
n = n.toString(16);
|
||||||
|
@ -293,9 +286,7 @@ exports.colors = (function() {
|
||||||
// Map higher colors to the first 8 colors.
|
// Map higher colors to the first 8 colors.
|
||||||
// This allows translation of high colors to low colors on 8-color terminals.
|
// This allows translation of high colors to low colors on 8-color terminals.
|
||||||
exports.ccolors = (function() {
|
exports.ccolors = (function() {
|
||||||
var _cols = exports.vcolors.slice()
|
var _cols = exports.vcolors.slice(), cols = exports.colors.slice(), out;
|
||||||
, cols = exports.colors.slice()
|
|
||||||
, out;
|
|
||||||
|
|
||||||
exports.vcolors = exports.vcolors.slice(0, 8);
|
exports.vcolors = exports.vcolors.slice(0, 8);
|
||||||
exports.colors = exports.colors.slice(0, 8);
|
exports.colors = exports.colors.slice(0, 8);
|
||||||
|
@ -353,10 +344,9 @@ var colorNames = exports.colorNames = {
|
||||||
|
|
||||||
exports.convert = function(color) {
|
exports.convert = function(color) {
|
||||||
if (typeof color === 'number') {
|
if (typeof color === 'number') {
|
||||||
;
|
|
||||||
} else if (typeof color === 'string') {
|
} else if (typeof color === 'string') {
|
||||||
color = color.replace(/[\- ]/g, '');
|
color = color.replace(/[\- ]/g, '');
|
||||||
if (colorNames[color] != null) {
|
if (colorNames[color] !== null) {
|
||||||
color = colorNames[color];
|
color = colorNames[color];
|
||||||
} else {
|
} else {
|
||||||
color = exports.match(color);
|
color = exports.match(color);
|
||||||
|
|
Loading…
Reference in New Issue