//package mobilesmil.utils;
import android.graphics.Color;
import android.graphics.Paint;
/**
* Utilities for performing common color-related tasks.
* @author Ryan Ware
*
*/
public class ColorUtils {
public static int getComplimentColor(Paint paint) {
return getComplimentColor(paint.getColor());
}
/**
* Returns the complimentary (opposite) color.
* @param color int RGB color to return the compliment of
* @return int RGB of compliment color
*/
public static int getComplimentColor(int color) {
// get existing colors
int alpha = Color.alpha(color);
int red = Color.red(color);
int blue = Color.blue(color);
int green = Color.green(color);
// find compliments
red = (~red) & 0xff;
blue = (~blue) & 0xff;
green = (~green) & 0xff;
return Color.argb(alpha, red, green, blue);
}
/**
* Converts an int RGB color representation into a hexadecimal {@link String}.
* @param argbColor int RGB color
* @return {@link String} hexadecimal color representation
*/
public static String getHexStringForARGB(int argbColor) {
String hexString = "#";
hexString += ARGBToHex(Color.alpha(argbColor));
hexString += ARGBToHex(Color.red(argbColor));
hexString += ARGBToHex(Color.green(argbColor));
hexString += ARGBToHex(Color.blue(argbColor));
return hexString;
}
/**
* Converts an int R, G, or B value into a hexadecimal {@link String}.
* @param rgbVal int R, G, or B value
* @return {@link String} hexadecimal value
*/
private static String ARGBToHex(int rgbVal) {
String hexReference = "0123456789ABCDEF";
rgbVal = Math.max(0,rgbVal);
rgbVal = Math.min(rgbVal,255);
rgbVal = Math.round(rgbVal);
return String.valueOf( hexReference.charAt((rgbVal-rgbVal%16)/16) + "" + hexReference.charAt(rgbVal%16) );
}
}