package org.robolectric.shadows; import android.graphics.Color; import org.robolectric.annotation.Implements; import org.robolectric.annotation.Implementation; @Implements(Color.class) public class ShadowColor { /** * This is implemented in native code in the Android SDK. * * Since HSV == HSB then the implementation from {@link java.awt.Color} can be used, * with a small adjustment to the representation of the hue. * * {@link java.awt.Color} represents hue as 0..1 (where 1 == 100% == 360 degrees), * while {@link android.graphics.Color} represents hue as 0..360 degrees. The correct hue * can be calculated by multiplying with 360. * * @param red Red component * @param green Green component * @param blue Blue component * @param hsv Array to store HSV components */ @Implementation public static void RGBToHSV(int red, int green, int blue, float hsv[]) { java.awt.Color.RGBtoHSB(red, green, blue, hsv); hsv[0] = hsv[0] * 360; } @Implementation public static int HSVToColor(int alpha, float hsv[]) { int rgb = java.awt.Color.HSBtoRGB(hsv[0] / 360, hsv[1], hsv[2]); return Color.argb(alpha, Color.red(rgb), Color.green(rgb), Color.blue(rgb)); } }