package com.sc.utils { /** * @author csmith - chris@somethingcolorful.com */ public class Color { /** * @param hex * @return *
Returns a Hex to Decimal as a String
*/ public static function hex2dec( hex:String ) : String { var bytes:Array = []; while( hex.length > 2 ) { var byte:String = hex.substr( -2 ); hex = hex.substr(0, hex.length-2 ); bytes.splice( 0, 0, int("0x"+byte) ); } return bytes.join(" "); } /** * @param d * @return *Returns a String value of a Decimal to Hex
*/ public static function d2h( d:int ) : String { var c:Array = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ]; if( d > 255 ) d = 255; var l:int = d / 16; var r:int = d % 16; return c[l]+c[r]; } /** * @param dec * @return *Returns a Hex from a Decimal
*/ public static function dec2hex( dec:String ) : String { var hex:String = "0x"; var bytes:Array = dec.split(" "); for( var i:int = 0; i < bytes.length; i++ ) hex += d2h( int(bytes[i]) ); return hex; } /** * @param hex - hexidecimal string "#000000" or "0x000000" * @param total - number of colors returned * @param darkest - decimal from 0-1 * @param lightest - decimal from 1-2 * @return - array of hex color strings *Get a random Color that is the same "TINT" as the color you provided.
*/ public static function getRandomPalateOf( hex:String, total:int=10, darkest:Number=0, lightest:Number=2 ) : Array { var palate:Array = new Array(); for(var j:int=0;jReturns a hex color on the opposite side of the colorwheel
*/ public static function getInverseColorOf( hex:String ) : String { var a:Array = hex2dec(hex).split(" "); var s:String = ""; for(var i:int=0;i<3;i++){ s += int(255*(1-(a[i]/255))); if(i<2) s += " "; } return dec2hex(s); } /** * @param hex - hex color string * @param total - total colors * @param weight - offset.. use this from 0-255 to change the weight of the color harmonies * @return - an array of hex color strings that harmonize with the hex color provided * */ public static function getHarmonyColors(hex:String, weight:int = 255) : Array { var rgb:Array = hex2dec(hex).split(" "); var r:String = rgb[0]; var g:String = rgb[1]; var b:String = rgb[2]; var a:Array = new Array(); var w:String = weight.toString(); a.push( dec2hex(r+" "+g+" "+w) ); a.push( dec2hex(r+" "+w+" "+b) ); a.push( dec2hex(w+" "+g+" "+b) ); a.push( dec2hex(r+" "+w+" "+w) ); a.push( dec2hex(w+" "+g+" "+w) ); a.push( dec2hex(w+" "+w+" "+b) ); return a; } /** * @param hex * @param percent * @return *Returns a lighter shade of the hex color provided. From 1-2
*/ public static function getLighterShadeOf( hex:String, percent:Number=1 ) : String { var a:Array = hex2dec(hex).split(" "); var s:String = ""; for(var i:int=0;i<3;i++){ s += Math.min(int(Number(a[i])*percent),255); if(i<2) s += " "; } return dec2hex(s); } /** * @param hex * @param percent * @return *Returns a darker shade of the hex color provided. Percent is 0-1.
*/ public static function getDarkerShadeOf( hex:String, percent:Number=1 ) : String { var a:Array = hex2dec(hex).split(" "); var s:String = ""; for(var i:int=0;i<3;i++){ s += int(Number(a[i])*percent); if(i<2) s += " "; } return dec2hex(s); } /** * @param n * @return *Random number
*/ public static function random(n:Number) : Number { return Math.random() * n; } } }