/* Copyright (C) 2003 Univ. of Massachusetts Amherst, Computer Science Dept.
This file is part of "MALLET" (MAchine Learning for LanguagE Toolkit).
http://www.cs.umass.edu/~mccallum/mallet
This software is provided under the terms of the Common Public License,
version 1.0, as published by http://www.opensource.org. For further
information, see the file `LICENSE' included with this distribution. */
package cc.mallet.util;
import java.awt.*;
import java.text.DecimalFormat;
import cc.mallet.types.MatrixOps;
/**
* Utilities for dealing with RGB-style colors.
*
* Created: Mar 30, 2005
*
* @author <A HREF="mailto:casutton@cs.umass.edu>casutton@cs.umass.edu</A>
* @version $Id: ColorUtils.java,v 1.1 2007/10/22 21:37:40 mccallum Exp $
*/
public class ColorUtils {
/**
* Returns a list of hex color names of length n.
* Colors are generated by equally-spaced hues in HSB space.
* @param n Number of "equally-spaced" colors to return
* @param s Saturation of generated colors
* @param b Brightness
* @return An array of hex color names, e.g., "#0033FF"
*/
public static String[] rainbow (int n, float s, float b)
{
double[] vals = new double[n];
for (int i = 0; i < n; i++) vals[i] = i;
MatrixOps.timesEquals (vals, 1.0/n);
String[] ret = new String[n];
for (int i = 0; i < n; i++) {
int rgb = Color.HSBtoRGB ((float) vals[i], s, b);
Color color = new Color (rgb);
ret[i] = colorToHexString (color);
}
return ret;
}
private static String colorToHexString (Color color)
{
int r = color.getRed ();
int g = color.getGreen ();
int b = color.getBlue ();
StringBuffer ret = new StringBuffer ();
ret.append ('#');
if (r < 16) ret.append (0);
ret.append (Integer.toHexString(r).toUpperCase());
if (g < 16) ret.append (0);
ret.append (Integer.toHexString(g).toUpperCase());
if (b < 16) ret.append (0);
ret.append (Integer.toHexString(b).toUpperCase());
return ret.toString ();
}
}