/*
	RGB to HSV 変換関数
						おこめ

	col:24bitGRB
	ret h:(0,1535) s,v:(0,255)

	参考:Ｏｈ！ＦＭ　1989.9  特集
		 爆走!!  趣味のＣ言語ライブラリ
		 Part 6		あれやこれやの
				 	ＭＩＳＣライブラリ	歩野零一
*/

void RGBtoHSV( int col, int *hh, int *ss, int *vv )
{
	int r,g,b,rr,gg,bb, x,h,s,v,t ;
/*	32k colors	*/
/*	r = (col >> 2) & 0xf8;
	g = (col >> 7) & 0xf8;
	b = (col << 3) & 0xf8;	*/
/*	full color	*/
	r = (col >>  8) & 0xff;
	g = (col >> 16) & 0xff;
	b =  col        & 0xff;

	v = _max( r, g, b );
	x = _min( r, g, b );
	t = v - x ;
	if ( v != 0 )
		s = t *255 /v ;
	else
		s = 0 ;
	if ( t != 0 )	{
		rr = ( v - r ) *255 /t ;
		gg = ( v - g ) *255 /t ;
		bb = ( v - b ) *255 /t ;
	} else {
		rr = gg = bb = 0 ;
	}

	if ( r == v )
	{
		if ( b == x )
			h = 256 - gg ;
		else
			h = 1280 + bb ;
	} else {
		if ( g == v )
		{
			if ( b == x )
				h = 256 + rr ;
			else
				h = 768 - bb ;
		} else {
			if ( r == x )
				h = 768 + gg ;
			else
				h = 1280 - rr ;
		}
	}
	h %= 1536 ;	/*	h = ( h * 60 ) /256 ; h %= 360 ;	*/
	*hh = h;
	*ss = s;
	*vv = v;
}
