/*
	RGB to HSV 変換関数		v1.02
						おこめ

	col:15bitGRB
	ret h:(0,1535) s,v:(0,255)

	参考:Ｏｈ！ＦＭ　1989.9  特集
		 爆走!!  趣味のＣ言語ライブラリ
		 Part 6		あれやこれやの
				 	ＭＩＳＣライブラリ	歩野零一
*/

void c32toHSV( 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);	/*	r = (r!=0) ? (r+7) : 0;	*/
	g = ((col >> 7) & 0xf8);	/*	g = (g!=0) ? (g+7) : 0;	*/
	b = ((col << 3) & 0xf8);	/*	b = (b!=0) ? (b+7) : 0;	*/
/*	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 ;
		}
	}
	*hh = ((t!=0) ? h : *hh) % 1536;
	*ss = s;
	*vv = v;
}
