You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
53 lines
1.3 KiB
var utils = require('../utils') |
|
, nodes = require('../nodes'); |
|
|
|
/** |
|
* Convert the given `color` to an `HSLA` node, |
|
* or h,s,l,a component values. |
|
* |
|
* Examples: |
|
* |
|
* hsla(10deg, 50%, 30%, 0.5) |
|
* // => HSLA |
|
* |
|
* hsla(#ffcc00) |
|
* // => HSLA |
|
* |
|
* @param {RGBA|HSLA|Unit} hue |
|
* @param {Unit} saturation |
|
* @param {Unit} lightness |
|
* @param {Unit} alpha |
|
* @return {HSLA} |
|
* @api public |
|
*/ |
|
|
|
module.exports = function hsla(hue, saturation, lightness, alpha){ |
|
switch (arguments.length) { |
|
case 1: |
|
utils.assertColor(hue); |
|
return hue.hsla; |
|
case 2: |
|
utils.assertColor(hue); |
|
var color = hue.hsla; |
|
utils.assertType(saturation, 'unit', 'alpha'); |
|
var alpha = saturation.clone(); |
|
if ('%' == alpha.type) alpha.val /= 100; |
|
return new nodes.HSLA( |
|
color.h |
|
, color.s |
|
, color.l |
|
, alpha.val); |
|
default: |
|
utils.assertType(hue, 'unit', 'hue'); |
|
utils.assertType(saturation, 'unit', 'saturation'); |
|
utils.assertType(lightness, 'unit', 'lightness'); |
|
utils.assertType(alpha, 'unit', 'alpha'); |
|
var alpha = alpha.clone(); |
|
if (alpha && '%' == alpha.type) alpha.val /= 100; |
|
return new nodes.HSLA( |
|
hue.val |
|
, saturation.val |
|
, lightness.val |
|
, alpha.val); |
|
} |
|
};
|
|
|