color-to-vec4
Version:
:white_square_button: a color (rgb, rgba, hex) to vec4 convertor
35 lines (25 loc) • 880 B
JavaScript
import mapChannel from './mapChannel';
import normalize from './normalize';
export default (function (color) {
var alpha = false;
if (color.startsWith('rgba(')) alpha = true;else if (color.startsWith('rgb(')) alpha = false;
var split = alpha ? 'rgba(' : 'rgb(';
var channels = color.split(split)[1].split(')')[0].split(',');
if (channels.length < 3 || channels.length > 4) {
throw new Error(color + ' is not a valid rgb(a) color');
}
channels = channels.map(function (c) {
return parseFloat(c);
}).map(function (c) {
return normalize(0, 255, c);
});
var _channels = channels,
r = _channels[0],
g = _channels[1],
b = _channels[2],
_channels$ = _channels[3],
a = _channels$ === undefined ? 1 : _channels$;
var aa = normalize(0, 1, a);
var rgb = [r, g, b].map(mapChannel);
return [].concat(rgb, [aa]);
});