summaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
authorFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-06-25 16:42:25 +1200
committerFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-06-25 16:42:25 +1200
commit3953b0496e101e0ecd80672af45abbd63cf3fd1f (patch)
treea63e9531c0c0964e300e775fa43bf545f6175c10 /public
parentb12ce0d15654fbb73d531dc862121f77f9858217 (diff)
downloadmanaportal-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')
-rw-r--r--public/js/mp/dye.js30
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 || {});