phaser
Version:
A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers.
79 lines (67 loc) • 1.84 kB
JavaScript
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2018 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
var GetColor = require('./GetColor');
/**
* Converts an HSV (hue, saturation and value) color value to RGB.
* Conversion formula from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes HSV values are contained in the set [0, 1].
* Based on code by Michael Jackson (https://github.com/mjijackson)
*
* @function Phaser.Display.Color.HSVToRGB
* @since 3.0.0
*
* @param {number} h - The hue, in the range 0 - 1.
* @param {number} s - The saturation, in the range 0 - 1.
* @param {number} v - The value, in the range 0 - 1.
*
* @return {ColorObject} An object with the red, green and blue values set in the r, g and b properties.
*/
var HSVToRGB = function (h, s, v)
{
if (s === undefined) { s = 1; }
if (v === undefined) { v = 1; }
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = Math.floor((v * (1 - s)) * 255);
var q = Math.floor((v * (1 - f * s)) * 255);
var t = Math.floor((v * (1 - (1 - f) * s)) * 255);
v = Math.floor(v *= 255);
var output = { r: v, g: v, b: v, color: 0 };
var r = i % 6;
if (r === 0)
{
output.g = t;
output.b = p;
}
else if (r === 1)
{
output.r = q;
output.b = p;
}
else if (r === 2)
{
output.r = p;
output.b = t;
}
else if (r === 3)
{
output.r = p;
output.g = q;
}
else if (r === 4)
{
output.r = t;
output.g = p;
}
else if (r === 5)
{
output.g = p;
output.b = q;
}
output.color = GetColor(output.r, output.g, output.b);
return output;
};
module.exports = HSVToRGB;