mirror of https://github.com/thangisme/notes.git
34 lines
966 B
JavaScript
34 lines
966 B
JavaScript
module.exports = function LAB(color) {
|
|
color.use(require('./XYZ.js'));
|
|
|
|
color.installColorSpace('LAB', ['l', 'a', 'b', 'alpha'], {
|
|
fromRgb: function () {
|
|
return this.xyz().lab();
|
|
},
|
|
|
|
rgb: function () {
|
|
return this.xyz().rgb();
|
|
},
|
|
|
|
xyz: function () {
|
|
// http://www.easyrgb.com/index.php?X=MATH&H=08#text8
|
|
var convert = function (channel) {
|
|
var pow = Math.pow(channel, 3);
|
|
return pow > 0.008856 ?
|
|
pow :
|
|
(channel - 16 / 116) / 7.87;
|
|
},
|
|
y = (this._l + 16) / 116,
|
|
x = this._a / 500 + y,
|
|
z = y - this._b / 200;
|
|
|
|
return new color.XYZ(
|
|
convert(x) * 95.047,
|
|
convert(y) * 100.000,
|
|
convert(z) * 108.883,
|
|
this._alpha
|
|
);
|
|
}
|
|
});
|
|
};
|