package prefuse.util; /** * A color map provides a mapping from numeric values to specific colors. * This useful for assigning colors to visualized items. The numeric values * may represent different categories (i.e. nominal variables) or run along * a spectrum of values (i.e. quantitative variables). * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class ColorMap { private int[] palette; private double minValue, maxValue; /** * Creates a new ColorMap instance using the given internal color map * array and minimum and maximum index values. * @param map the color palette, an int array of color values * @param min the minimum value in the color map * @param max the maximum value in the color map */ public ColorMap(int[] map, double min, double max) { palette = map; minValue = min; maxValue = max; } /** * Returns the color associated with the given value. If the value * is outside the range defined by this map's minimum or maximum * values, a endpoint value is returned (i.e. the first entry * in the color map for values below the minimum, the last enty * for value above the maximum). * @param val the value for which to retrieve the color * @return the color corresponding the given value */ public int getColor(double val) { if ( val < minValue ) { return palette[0]; } else if ( val >= maxValue ) { return palette[palette.length-1]; } else { int idx = (int)(palette.length * (val-minValue)/(maxValue-minValue)); return palette[idx]; } } /** * Gets the internal color palette, an int array of color values. * @return returns the color palette. */ public int[] getColorPalette() { return palette; } /** * Sets the internal color palette, an int array of color values. * @param palette the new palette. */ public void setColorPalette(int[] palette) { this.palette = palette; } /** * Gets the maximum value that corresponds to the last * color in the color map. * @return returns the max index value into the color map. */ public double getMaxValue() { return maxValue; } /** * Sets the maximum value that corresponds to the last * color in the color map. * @param maxValue the new max index value. */ public void setMaxValue(double maxValue) { this.maxValue = maxValue; } /** * Gets the minimum value that corresponds to the first * color in the color map. * @return Returns the min index value. */ public double getMinValue() { return minValue; } /** * Sets the minimum value that corresponds to the first * color in the color map. * @param minValue the new min index value. */ public void setMinValue(double minValue) { this.minValue = minValue; } } // end of class ColorMap