summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js')
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js162
1 files changed, 162 insertions, 0 deletions
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js
new file mode 100644
index 0000000000..3a8406f029
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js
@@ -0,0 +1,162 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.ColorUtil");
+
+qx.Class.rgb2hsb = function(vRed, vGreen, vBlue)
+{
+ var vHue, vSaturation, vBrightness;
+
+ vRed = parseFloat(vRed);
+ vGreen = parseFloat(vGreen);
+ vBlue = parseFloat(vBlue);
+
+ var cmax = (vRed > vGreen) ? vRed : vGreen;
+ if (vBlue > cmax) {
+ cmax = vBlue;
+ }
+
+ var cmin = (vRed < vGreen) ? vRed : vGreen;
+ if (vBlue < cmin) {
+ cmin = vBlue;
+ }
+
+ vBrightness = cmax / 255.0;
+
+ if (cmax != 0)
+ {
+ vSaturation = (cmax - cmin) / cmax;
+ }
+ else
+ {
+ vSaturation = 0;
+ }
+
+ if (vSaturation == 0)
+ {
+ vHue = 0;
+ }
+ else
+ {
+ var redc = (cmax - vRed) / (cmax - cmin);
+ var greenc = (cmax - vGreen) / (cmax - cmin);
+ var bluec = (cmax - vBlue) / (cmax - cmin);
+
+ if (vRed == cmax)
+ {
+ vHue = bluec - greenc;
+ }
+ else if (vGreen == cmax)
+ {
+ vHue = 2.0 + redc - bluec;
+ }
+ else
+ {
+ vHue = 4.0 + greenc - redc;
+ }
+
+ vHue = vHue / 6.0;
+ if (vHue < 0) vHue = vHue + 1.0;
+ }
+
+ return {
+ hue : Math.round(vHue * 360),
+ saturation : Math.round(vSaturation * 100),
+ brightness : Math.round(vBrightness * 100)
+ }
+}
+
+qx.Class.hsb2rgb = function(vHue, vSaturation, vBrightness)
+{
+ var i, f, p, q, t, vReturn;
+
+ vHue = parseFloat(vHue/360);
+ vSaturation = parseFloat(vSaturation/100);
+ vBrightness = parseFloat(vBrightness/100);
+
+ if(vHue >= 1.0) vHue %= 1.0;
+ if(vSaturation > 1.0) vSaturation = 1.0;
+ if(vBrightness > 1.0) vBrightness = 1.0;
+
+ var tov = Math.floor(255 * vBrightness);
+
+ var vReturn = {};
+
+ if(vSaturation == 0.0)
+ {
+ vReturn.red = vReturn.green = vReturn.blue = tov;
+ }
+ else
+ {
+ vHue *= 6.0;
+
+ i = Math.floor(vHue);
+
+ f = vHue - i;
+
+ p = Math.floor(tov * (1.0 - vSaturation));
+ q = Math.floor(tov * (1.0 - (vSaturation * f)));
+ t = Math.floor(tov * (1.0 - (vSaturation * (1.0 - f))));
+
+ switch(i)
+ {
+ case 0:
+ vReturn.red = tov;
+ vReturn.green = t;
+ vReturn.blue = p;
+ break;
+
+ case 1:
+ vReturn.red = q;
+ vReturn.green = tov;
+ vReturn.blue = p;
+ break;
+
+ case 2:
+ vReturn.red = p;
+ vReturn.green = tov;
+ vReturn.blue = t;
+ break;
+
+ case 3:
+ vReturn.red = p;
+ vReturn.green = q;
+ vReturn.blue = tov;
+ break;
+
+ case 4:
+ vReturn.red = t;
+ vReturn.green = p;
+ vReturn.blue = tov;
+ break;
+
+ case 5:
+ vReturn.red = tov;
+ vReturn.green = p;
+ vReturn.blue = q;
+ break;
+ }
+ }
+
+ return vReturn;
+}