diff options
author | Freeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace> | 2013-06-25 16:42:25 +1200 |
---|---|---|
committer | Freeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace> | 2013-06-25 16:42:25 +1200 |
commit | 3953b0496e101e0ecd80672af45abbd63cf3fd1f (patch) | |
tree | a63e9531c0c0964e300e775fa43bf545f6175c10 /public/js/mp/dye.js | |
parent | b12ce0d15654fbb73d531dc862121f77f9858217 (diff) | |
download | manaportal-3953b0496e101e0ecd80672af45abbd63cf3fd1f.tar.gz manaportal-3953b0496e101e0ecd80672af45abbd63cf3fd1f.tar.bz2 manaportal-3953b0496e101e0ecd80672af45abbd63cf3fd1f.tar.xz manaportal-3953b0496e101e0ecd80672af45abbd63cf3fd1f.zip |
Add Jaxad's dye channel detection
Set up tests
Diffstat (limited to 'public/js/mp/dye.js')
-rw-r--r-- | public/js/mp/dye.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/public/js/mp/dye.js b/public/js/mp/dye.js new file mode 100644 index 0000000..d4c016b --- /dev/null +++ b/public/js/mp/dye.js @@ -0,0 +1,30 @@ +"use strict"; +var mp = function(mp) { + mp.dye = { + getChannel: getChannel + }; + var channel = [null, "R", "G", "Y", "B", "M", "C", "W"]; + function getChannel(color) { + var r = color[0], g = color[1], b = color[2], + max = Math.max(r, g, b); + + if (max == 0) { + // Black + return { channel: null, intensity: 0 }; + } + + var min = Math.min(r, g, b), intensity = r + g + b; + + var idx; + + if (min != max && (min != 0 || (intensity != max && intensity != 2 * max))) { + // Not pure + idx = 0; + } else { + idx = (r != 0) | ((g != 0) << 1) | ((b != 0) << 2); + } + + return { channel: channel[idx], intensity: max }; + } + return mp; +}(mp || {}); |