package jyplot;

import java.awt.Color;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Map;

import javax.swing.text.html.StyleSheet;


/**
 * Misc useful graphics methods
 * @author dion
 *
 */
public class GraphicsUtil
{

	static Map stringColorMap = GraphicsUtil.getStringToColorMap();
	static StyleSheet styleSheet = new StyleSheet(); //For converting strings such as #123423 to colors
	
	
	/**
	 * Converts a string into a Color object.
	 * Checks a few local maps and the styleSheet
	 * class.
	 * @param s
	 * @return
	 */
	public static Color getColorFromString(String s)
	{
		Color c = null;
		try
		{	
			if(GraphicsUtil.stringColorMap.containsKey(s))
			{
				return GraphicsUtil.stringColorMap.get(s);
			}
			else if(isDouble(s))
			{
				float value = (float) Double.parseDouble(s);
				c = new Color(value, value, value);
				return c;
			}
			else
			{
				c = styleSheet.stringToColor(s);
				if(c != null)
				{
					return c;
				}
				
			}
			System.out.println("No color matching " + s);
			
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return c;
		
	}


	
	private static boolean isDouble(String s)
	{
		try
		{
			Double.parseDouble(s);
			return true;
		}
		catch (NumberFormatException nfe)
		{
			return false;
		}

	}
	
	private static Map getStringToColorMap()
	{
		Map ret = new HashMap();
		try
		{
			Class clazz = java.awt.Color.class;
			Field[] filc = clazz.getDeclaredFields();

			for (int i = 0; i < filc.length; i++)
			{
				// System.out.println(filc[i].getName());
				Field f = filc[i];

				if(Modifier.isStatic(f.getModifiers()) && Modifier.isPublic(f.getModifiers()))
				{
					Object o = f.get(null);

					if(o instanceof java.awt.Color)
					{
						ret.put(f.getName(), (Color) o);
					}
				}
			}
			return ret;
		}
		catch (SecurityException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IllegalArgumentException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IllegalAccessException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return ret;
	}
	
static Color mask = Color.blue;

}

 

Ads help maintain this website.