code: 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 );
      }
docs: Create a HSV color.
  @param color argb color
  @return the HSL