static HSV toHSV( double color ) {
        long argb = Double.doubleToRawLongBits( color );
        double a = alpha( color );
        double r = clamp( ((argb >> 32) & 0xFFFF) / (double)0xFF00 );
        double g = clamp( ((argb >> 16) & 0xFFFF) / (double)0xFF00 );
        double b = clamp( ((argb >> 0) & 0xFFFF) / (double)0xFF00 );

        double max = Math.max(Math.max(r, g), b);
        double min = Math.min(Math.min(r, g), b);
        double h, s, v = max;

        double d = max - min;
        if (max == 0) {
            s = 0;
        } else {
            s = d / max;
        }

        if (max == min) {
            h = 0;
        } else if( max == r ){
            h = (g - b) / d + (g < b ? 6 : 0);
        } else if( max == g ){
            h = (b - r) / d + 2;
        } else { //if( max == b ){
            h = (r - g) / d + 4;
        }
        h /= 6;
        return new HSV( h * 360, s, v,  a );
    }
static HSV toHSV ( double color ) { long argb = Double . doubleToRawLongBits ( color ) ; double a = alpha ( color ) ; double r = clamp ( ( ( argb > > 32 ) & 0xFFFF ) / ( double ) 0xFF00 ) ; double g = clamp ( ( ( argb > > 16 ) & 0xFFFF ) / ( double ) 0xFF00 ) ; double b = clamp ( ( ( argb > > 0 ) & 0xFFFF ) / ( double ) 0xFF00 ) ; double max = Math . max ( Math . max ( r , g ) , b ) ; double min = Math . min ( Math . min ( r , g ) , b ) ; double h , s , v = max ; double d = max - min ; if ( max == 0 ) { s = 0 ; } else { s = d / max ; } if ( max == min ) { h = 0 ; } else if ( max == r ) { h = ( g - b ) / d + ( g < b ? 6 : 0 ) ; } else if ( max == g ) { h = ( b - r ) / d + 2 ; } else { h = ( r - g ) / d + 4 ; } h /= 6 ; return new HSV ( h * 360 , s , v , a ) ; }
Create a HSV color.
@param color argb color
@return the HSL