Skip to content

Instantly share code, notes, and snippets.

@aethur
Created April 9, 2010 11:55
Show Gist options
  • Select an option

  • Save aethur/361086 to your computer and use it in GitHub Desktop.

Select an option

Save aethur/361086 to your computer and use it in GitHub Desktop.
package {
public class ColorCal {
//HSB(HSV) to RGB function
public static function HSB2RGB(h:int,s:int,b:int):uint {
if (h>=360) {
h=0;
}
var H:Number=h/60,S:Number=s/100;
var lH:int=H;
var F:Number=H-lH,B:Number=b/100;
var P:Number = B*(1 - S),Q:Number = B*(1 - S*F);
var T:Number = B*(1 - S*(1 - F));
var r:int,b:int,g:int;
switch (lH) {
case 0 :
r=B*255;
g=T*255;
b=P*255;
break;
case 1 :
r=Q*255;
g=B*255;
b=P*255;
break;
case 2 :
r=P*255;
g=B*255;
b=T*255;
break;
case 3 :
r=P*255;
g=Q*255;
b=B*255;
break;
case 4 :
r=T*255;
g=P*255;
b=B*255;
break;
case 5 :
r=B*255;
g=P*255;
b=Q*255;
break;
}
return (r<<16)+(g<<8)+b;
}
//RGB to HSV
public static function RGB2HSB(color:uint):Array {
var r:int=color>>16;
var g:int=(color>>8)&0xFF;
var b:int=color&0xFF;
var max:int=Math.max(r,Math.max(g,b));
var min:int=Math.min(r,Math.min(g,b));
var delta:int=(max-min);
var H:int;
if (r==max) {
H=(6+ (g-b)/delta)*60;
} else if (g==max) {
H=(2+ (b-r)/delta)*60;
} else {
H=(4+ (r-g)/delta)*60;
}
if (H>360) H-=360;
var S:int=max>0?(delta*100/max):0;
var B:int=(max*100/255);
return [H,S,B];
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment