mapbox-gl
Version:
A WebGL interactive maps library
47 lines (33 loc) • 1.07 kB
JavaScript
;
var parseCSSColor = require('csscolorparser').parseCSSColor;
var util = require('../util/util');
var colorCache = {};
function parseColor(input) {
if (colorCache[input]) {
return colorCache[input];
// RGBA array
} else if (Array.isArray(input)) {
return input;
// GL function
} else if (input && input.stops) {
return util.extend({}, input, {
stops: input.stops.map(parseFunctionStopColor)
});
// Color string
} else if (typeof input === 'string') {
var parsedColor = parseCSSColor(input);
if (!parsedColor) { throw new Error('Invalid color ' + input); }
var output = colorDowngrade(parsedColor);
colorCache[input] = output;
return output;
} else {
throw new Error('Invalid color ' + input);
}
}
function parseFunctionStopColor(stop) {
return [stop[0], parseColor(stop[1])];
}
function colorDowngrade(color) {
return [color[0] / 255, color[1] / 255, color[2] / 255, color[3] / 1];
}
module.exports = parseColor;