UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

284 lines (267 loc) 7.87 kB
// Class: starling.utils.Color var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function Std() {return require("./../../Std");} function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} function _$UInt_UInt_$Impl_$() {return require("./../../_UInt/UInt_Impl_");} // Constructor var Color = function(){} // Meta Color.__name__ = "starling.utils.Color"; Color.__isInterface__ = false; Color.prototype = { }; Color.prototype.__class__ = Color.prototype.constructor = $hxClasses["starling.utils.Color"] = Color; // Init // Statics Color.getAlpha = function(color) { return color >>> 24 & 255; } Color.getRed = function(color) { return color >>> 16 & 255; } Color.getGreen = function(color) { return color >>> 8 & 255; } Color.getBlue = function(color) { return color & 255; } Color.setAlpha = function(color,alpha) { return color & 16777215 | (alpha & 255) << 24; } Color.setRed = function(color,red) { return color & -16711681 | (red & 255) << 16; } Color.setGreen = function(color,green) { return color & -65281 | (green & 255) << 8; } Color.setBlue = function(color,blue) { return color & -256 | blue & 255; } Color.rgb = function(red,green,blue) { return red << 16 | green << 8 | blue; } Color.argb = function(alpha,red,green,blue) { return alpha << 24 | red << 16 | green << 8 | blue; } Color.hsv = function(hue,saturation,value) { var r = 0; var g = 0; var b = 0; var i = Math.floor(hue * 6); var f = hue * 6 - i; var p = value * (1 - saturation); var q = value * (1 - f * saturation); var t = value * (1 - (1 - f) * saturation); switch((Std().default).int(i % 6)) { case 0: r = value; g = t; b = p; break; case 1: r = q; g = value; b = p; break; case 2: r = p; g = value; b = t; break; case 3: r = p; g = q; b = value; break; case 4: r = t; g = p; b = value; break; case 5: r = value; g = p; b = q; break; } return Color.rgb(Math.ceil(r * 255),Math.ceil(g * 255),Math.ceil(b * 255)); } Color.hsl = function(hue,saturation,lightness) { var r = 0; var g = 0; var b = 0; var c = (1.0 - Math.abs(2.0 * lightness - 1.0)) * saturation; var h2 = hue * 6.0; var x = c * (1.0 - Math.abs(h2 % 2 - 1.0)); var m = lightness - c / 2.0; switch((Std().default).int(h2 % 6)) { case 0: r = c + m; g = x + m; b = m; break; case 1: r = x + m; g = c + m; b = m; break; case 2: r = m; g = c + m; b = x + m; break; case 3: r = m; g = x + m; b = c + m; break; case 4: r = x + m; g = m; b = c + m; break; case 5: r = c + m; g = m; b = x + m; break; } return Color.rgb(Math.ceil(r * 255),Math.ceil(g * 255),Math.ceil(b * 255)); } Color.rgbToHsv = function(rgb,hsv) { if(hsv == null) { hsv = (openfl__$Vector_Vector_$Impl_$().default)._new(3,true); } var r = Color.getRed(rgb) / 255.0; var g = Color.getGreen(rgb) / 255.0; var b = Color.getBlue(rgb) / 255.0; var t = Math.max(r,g); var cMax = Math.max(t,b); t = Math.min(r,g); var cMin = Math.min(t,b); var delta = cMax - cMin; if(delta == 0) { (openfl__$Vector_Vector_$Impl_$().default).set(hsv,0,0); } else if(cMax == r) { (openfl__$Vector_Vector_$Impl_$().default).set(hsv,0,(g - b) / delta % 6 / 6.0); } else if(cMax == g) { (openfl__$Vector_Vector_$Impl_$().default).set(hsv,0,((b - r) / delta + 2) / 6.0); } else if(cMax == b) { (openfl__$Vector_Vector_$Impl_$().default).set(hsv,0,((r - g) / delta + 4) / 6.0); } while(hsv[0] < 0.0) { var _g = hsv; (openfl__$Vector_Vector_$Impl_$().default).set(_g,0,_g[0] + 1.0); } while(hsv[0] >= 1.0) { var _g1 = hsv; (openfl__$Vector_Vector_$Impl_$().default).set(_g1,0,_g1[0] - 1.0); } (openfl__$Vector_Vector_$Impl_$().default).set(hsv,2,cMax); (openfl__$Vector_Vector_$Impl_$().default).set(hsv,1,cMax == 0 ? 0 : delta / cMax); return hsv; } Color.rgbToHsl = function(rgb,hsl) { if(hsl == null) { hsl = (openfl__$Vector_Vector_$Impl_$().default)._new(3,true); } var r = Color.getRed(rgb) / 255.0; var g = Color.getGreen(rgb) / 255.0; var b = Color.getBlue(rgb) / 255.0; var t = Math.max(r,g); var cMax = Math.max(t,b); t = Math.min(r,g); var cMin = Math.min(t,b); var delta = cMax - cMin; if(delta == 0) { (openfl__$Vector_Vector_$Impl_$().default).set(hsl,0,0); } else if(cMax == r) { (openfl__$Vector_Vector_$Impl_$().default).set(hsl,0,(g - b) / delta % 6 / 6.0); } else if(cMax == g) { (openfl__$Vector_Vector_$Impl_$().default).set(hsl,0,((b - r) / delta + 2) / 6.0); } else if(cMax == b) { (openfl__$Vector_Vector_$Impl_$().default).set(hsl,0,((r - g) / delta + 4) / 6.0); } while(hsl[0] < 0.0) { var _g = hsl; (openfl__$Vector_Vector_$Impl_$().default).set(_g,0,_g[0] + 1.0); } while(hsl[0] >= 1.0) { var _g1 = hsl; (openfl__$Vector_Vector_$Impl_$().default).set(_g1,0,_g1[0] - 1.0); } (openfl__$Vector_Vector_$Impl_$().default).set(hsl,2,(cMax + cMin) * 0.5); (openfl__$Vector_Vector_$Impl_$().default).set(hsl,1,delta == 0 ? 0 : delta / (1.0 - Math.abs(2.0 * hsl[2] - 1.0))); return hsl; } Color.toVector = function(color,out) { if(out == null) { out = (openfl__$Vector_Vector_$Impl_$().default)._new(4,true); } (openfl__$Vector_Vector_$Impl_$().default).set(out,0,(_$UInt_UInt_$Impl_$().default).toFloat(color >>> 16 & 255) / 255.0); (openfl__$Vector_Vector_$Impl_$().default).set(out,1,(_$UInt_UInt_$Impl_$().default).toFloat(color >>> 8 & 255) / 255.0); (openfl__$Vector_Vector_$Impl_$().default).set(out,2,(_$UInt_UInt_$Impl_$().default).toFloat(color & 255) / 255.0); (openfl__$Vector_Vector_$Impl_$().default).set(out,3,(_$UInt_UInt_$Impl_$().default).toFloat(color >>> 24 & 255) / 255.0); return out; } Color.multiply = function(color,factor) { if(factor == 0.0) { return 0; } var alpha = (Std().default).int((_$UInt_UInt_$Impl_$().default).toFloat(color >>> 24 & 255) * factor); var red = (Std().default).int((_$UInt_UInt_$Impl_$().default).toFloat(color >>> 16 & 255) * factor); var green = (Std().default).int((_$UInt_UInt_$Impl_$().default).toFloat(color >>> 8 & 255) * factor); var blue = (Std().default).int((_$UInt_UInt_$Impl_$().default).toFloat(color & 255) * factor); if((_$UInt_UInt_$Impl_$().default).gt(alpha,255)) { alpha = 255; } if((_$UInt_UInt_$Impl_$().default).gt(red,255)) { red = 255; } if((_$UInt_UInt_$Impl_$().default).gt(green,255)) { green = 255; } if((_$UInt_UInt_$Impl_$().default).gt(blue,255)) { blue = 255; } return Color.argb(alpha,red,green,blue); } Color.interpolate = function(startColor,endColor,ratio) { var startA = startColor >>> 24 & 255; var startR = startColor >>> 16 & 255; var startG = startColor >>> 8 & 255; var startB = startColor & 255; var endA = endColor >>> 24 & 255; var endR = endColor >>> 16 & 255; var endG = endColor >>> 8 & 255; var endB = endColor & 255; var newA = (Std().default).int(startA + (endA - startA) * ratio); var newR = (Std().default).int(startR + (endR - startR) * ratio); var newG = (Std().default).int(startG + (endG - startG) * ratio); var newB = (Std().default).int(startB + (endB - startB) * ratio); return newA << 24 | newR << 16 | newG << 8 | newB; } Color.WHITE = 16777215 Color.SILVER = 12632256 Color.GRAY = 8421504 Color.BLACK = 0 Color.RED = 16711680 Color.MAROON = 8388608 Color.YELLOW = 16776960 Color.OLIVE = 8421376 Color.LIME = 65280 Color.GREEN = 32768 Color.AQUA = 65535 Color.TEAL = 32896 Color.BLUE = 255 Color.NAVY = 128 Color.FUCHSIA = 16711935 Color.PURPLE = 8388736 // Export exports.default = Color;