UNPKG

c0lor

Version:
74 lines (60 loc) 1.28 kB
var Lab, N, O, e, e3, f, fDeriv, fInv, foo, labCsPrototype, pow, xyz; O = require("ut1l/create/object"); xyz = require("../XYZ"); Lab = require("../Lab"); pow = Math.pow; N = 4 / 29; e3 = 216 / 24389; foo = 841 / 108; e = 6 / 29; f = function(w) { if (w > e3) { return pow(w, 1 / 3); } else { return foo * w + N; } }; fInv = function(w) { if (w > e) { return pow(w, 3); } else { return (w - N) / foo; } }; fDeriv = function(w) { if (w > e3) { return 1 / (3 * (pow(w, 2 / 3))); } else { return foo; } }; labCsPrototype = { Lab: function(XYZ, T) { var l; if (T == null) { T = Lab(); } l = f(XYZ.Y / this.white.Y); T.L = 116 * l - 16; T.a = 500 * ((f(XYZ.X / this.white.X)) - l); T.b = 200 * (l - (f(XYZ.Z / this.white.Z))); return T; }, XYZ: function(Lab, T) { var fy; if (T == null) { T = xyz(); } fy = (Lab.L + 16) / 116; T.X = (fInv(fy + Lab.a / 500)) * this.white.X; T.Y = (fInv(fy)) * this.white.Y; T.Z = (fInv(fy - Lab.b / 200)) * this.white.Z; return T; }, LabderivL: function(Y) { return 116 * (fDeriv(Y / this.white.Y)) / this.white.Y; } }; module.exports = O((function(white) { this.white = white; }), labCsPrototype);