color-to-vec4
Version:
:white_square_button: a color (rgb, rgba, hex) to vec4 convertor
48 lines (31 loc) • 1.22 kB
JavaScript
;
exports.__esModule = true;
var _mapChannel = require('./mapChannel');
var _mapChannel2 = _interopRequireDefault(_mapChannel);
var _normalize = require('./normalize');
var _normalize2 = _interopRequireDefault(_normalize);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.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 (0, _normalize2.default)(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 = (0, _normalize2.default)(0, 1, a);
var rgb = [r, g, b].map(_mapChannel2.default);
return [].concat(rgb, [aa]);
};
module.exports = exports['default'];