+++ /dev/null
-/* Color.java -- Class representing a color in Java
- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package java.awt;
-
-/**
- * This class represents a color value in the AWT system.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public class Color implements java.io.Serializable
-{
-
-/*
- * Static Variables
- */
-
-/**
- * Constant for the color white
- */
-public static final Color white = new Color(255,255,255,255);
-
-/**
- * Constant for the color light gray
- */
-public static final Color lightGray = new Color(192,192,192,255);
-
-/**
- * Constant for the color gray
- */
-public static final Color gray = new Color(128,128,128,255);
-
-/**
- * Constant for the color dark gray
- */
-public static final Color darkGray = new Color(64,64,64,255);
-
-/**
- * Constant for the color black
- */
-public static final Color black = new Color(0,0,0,255);
-
-/**
- * Constant for the color red
- */
-public static final Color red = new Color(255,0,0,255);
-
-/**
- * Constant for the color pink
- */
-public static final Color pink = new Color(255, 175, 175,255);
-
-/**
- * Constant for the color orange
- */
-public static final Color orange = new Color(255, 200, 0,255);
-
-/**
- * Constant for the color yellow
- */
-public static final Color yellow = new Color(255,255,0,255);
-
-/**
- * Constant for the color green
- */
-public static final Color green = new Color(0,255,0,255);
-
-/**
- * Constant for the color magenta
- */
-public static final Color magenta = new Color(255,0,255,255);
-
-/**
- * Constant for the color cyan
- */
-public static final Color cyan = new Color(0,255,255,255);
-
-/**
- * Constant for the color blue
- */
-public static final Color blue = new Color(0,0,255,255);
-
-// Serialization Constant
-private static final long serialVersionUID = 118526816881161077L;
-
-// Masks for individual color components
-private static final int redmask = 255 << 16;
-private static final int greenmask = 255 << 8;
-private static final int bluemask = 255;
-private static final int alphamask = 255 << 24;
-
-private static final int BRIGHT_STEP = 0x30;
-
-/*************************************************************************/
-
-/*
- * Instance Variables
- */
-
-/**
- * @serial The RGB value of the color.
- */
-private int value = 0xFFFFFFFF;
-
-/*************************************************************************/
-
-/*
- * Static Methods
- */
-
-/**
- * Converts the specified string to a number and creates a new instance
- * of <code>Color</code> from the value.
- *
- * @param str The numeric color string.
- *
- * @return A new instance of <code>Color</code> for the string.
- *
- * @exception NumberFormatException If the string cannot be parsed.
- */
-public static Color
-decode(String str) throws NumberFormatException
-{
- Integer i = Integer.decode(str);
- return(new Color(i.intValue()));
-}
-
-/*************************************************************************/
-
-/**
- * Returns a new instance of <code>Color</code> from the value of
- * the system property named by the specified string. If the property
- * does not exist, or cannot be parsed, then <code>null</code> will be
- * returned.
- *
- * @param prop The system property to retrieve.
- */
-public static Color
-getColor(String prop)
-{
- return(getColor(prop, null));
-}
-
-/*************************************************************************/
-
-/**
- * Returns a new instance of <code>Color</code> from the value of the
- * system property named by the specified string. If the property does
- * not exist, or cannot be parsed, then the default RGB value will be
- * used to create a return value.
- *
- * @param prop The system property to retrieve.
- * @param defrgb The default RGB value.
- */
-public static Color
-getColor(String prop, int defrgb)
-{
- return(getColor(prop, new Color(defrgb)));
-}
-
-/*************************************************************************/
-
-/**
- * Returns a new instance of <code>Color</code> from the value of the
- * system property named by the specified string. If the property does
- * not exist, or cannot be parsed, then the default color value will be
- * returned
- *
- * @param prop The system property to retrieve.
- * @param defcolor The default color
- */
-public static Color
-getColor(String prop, Color defcolor)
-{
- String val = System.getProperty(prop);
- if (val == null)
- return(defcolor);
-
- try
- {
- return(decode(val));
- }
- catch(NumberFormatException e)
- {
- return(defcolor);
- }
-}
-
-/*************************************************************************/
-
-/**
- * Converts from the HSB (hue, saturation, brightness) color model to
- * the RGB (red, green, blue) color model.
- *
- * @param hue The hue of the HSB value.
- * @param saturation The saturation of the HSB value.
- * @param brightness The brightness of the HSB value.
- *
- * @return The RGB value.
- */
-public static int
-HSBtoRGB(float hue, float saturation, float brightness)
-{
- // FIXME: Implement
- throw new RuntimeException("Not implemented yet");
-}
-
-/*************************************************************************/
-
-/**
- * Converts from the RGB (red, green, blue) color model to the HSB
- * (hue, saturation, brightness) color model.
- *
- * @param red The red part of the RGB value.
- * @param green The green part of the RGB value.
- * @param blue The blue part of the RGB value.
- * @param hsbvals An array of three floats used for storing the HSB values,
- * or <code>null</code> if this return mechanism is not used.
- *
- * @return The HSB value.
- */
-public static float[]
-RGBtoHSB(int red, int green, int blue, float hsbvals[])
-{
- // FIXME: Implement
- throw new RuntimeException("Not implemented yet");
-}
-
-/*************************************************************************/
-
-/**
- * Returns a new instance of <code>Color</code> based on the specified
- * HSB values.
- *
- * @param hue The hue of the HSB value.
- * @param saturation The saturation of the HSB value.
- * @param brightness The brightness of the HSB value.
- *
- * @return The new <code>Color</code> object.
- */
-public static Color
-getHSBColor(float hue, float saturation, float brightness)
-{
- return(new Color(HSBtoRGB(hue, saturation, brightness)));
-}
-
-/*************************************************************************/
-
-/*
- * Constructors
- */
-
-/**
- * Initializes a new instance of <code>Color</code> using the specified
- * red, green, and blue values, which must be given as integers in the
- * range of 0-255.
- *
- * @param red The red component of the RGB value.
- * @param green The green component of the RGB value.
- * @param blue The blue component of the RGB value.
- *
- * @exception IllegalArgumentException If the values are out of range.
- */
-public
-Color(int red, int green, int blue)
-{
- if ((red < 0) || (red > 255) || (green < 0) || (green > 255) ||
- (blue < 0) || (blue > 255))
- throw new IllegalArgumentException("Bad RGB values");
-
- value = blue + (green << 8) + (red << 16);
-}
-
-public
-Color(int red, int green, int blue, int alpha)
-{
- if ((red < 0) || (red > 255) || (green < 0) || (green > 255) ||
- (blue < 0) || (blue > 255))
- throw new IllegalArgumentException("Bad RGB values");
-
- value = blue + (green << 8) + (red << 16) + (alpha << 24);
-}
-
-/*************************************************************************/
-
-/**
- * Initializes a new instance of <code>Color</code> using the specified
- * RGB value. The blue value is in bits 0-7, green in bits 8-15, and
- * red in bits 16-23. The other bits are ignored.
- *
- * @param value The RGB value
- */
-public
-Color(int value)
-{
- this.value = value;
-}
-
-public
-Color(int value, boolean hasalpha)
-{
- this.value = value;
- if (! hasalpha)
- this.value |= 0xFF000000;
-}
-
-/*************************************************************************/
-
-/**
- * Initializes a new instance of <code>Color</code> using the specified
- * RGB values. These must be in the range of 0.0-1.0.
- *
- * @param red The red component of the RGB value.
- * @param green The green component of the RGB value.
- * @param blue The blue component of the RGB value.
- *
- * @exception IllegalArgumentException If the values are out of range.
- */
-public
-Color(float red, float green, float blue)
-{
- if ((red < 0.0) || (red > 1.0) || (green < 0.0) || (green > 1.0) ||
- (blue < 0.0) || (blue > 1.0))
- throw new IllegalArgumentException("Bad RGB values");
-
- int redval = (int)(255 * red);
- int greenval = (int)(255 * green);
- int blueval = (int)(255 * blue);
-
- value = blueval + (greenval << 8) + (redval << 16);
-}
-
-/*************************************************************************/
-
-/*
- * Instance Methods
- */
-
-/**
- * Returns the red value for this color.
- *
- * @return The red value for this color.
- */
-public int
-getRed()
-{
- int redval = (value & redmask) >> 16;
-
- return(redval);
-}
-
-/*************************************************************************/
-
-/**
- * Returns the green value for this color.
- *
- * @return The green value for this color.
- */
-public int
-getGreen()
-{
- int greenval = (value & greenmask) >> 8;
-
- return(greenval);
-}
-
-/*************************************************************************/
-
-/**
- * Returns the blue value for this color.
- *
- * @return The blue value for this color.
- */
-public int
-getBlue()
-{
- int blueval = (value & bluemask);
-
- return(blueval);
-}
-
-public int
-getAlpha()
-{
- int alphaval = (value & alphamask);
-
- return(alphaval);
-}
-
-public int
-getTransparency()
-{
- if (getAlpha() == 0xFF)
- return Transparency.OPAQUE;
- else
- return Transparency.TRANSLUCENT;
-}
-
-/*************************************************************************/
-
-/**
- * Returns the RGB value for this color. The blue value will be in bits
- * 0-7, green in 8-15, and red in 6-23. The upper bits should be ignored.
- *
- * @return The RGB value for this color.
- */
-public int
-getRGB()
-{
- return(value);
-}
-
-/*************************************************************************/
-
-/**
- * Returns a brighter version of this color. This is done by increasing
- * the RGB values by an arbitrary scale factor. Note that this method
- * and the <code>darker()</code> method are not necessarily inverses.
- *
- * @return A brighter version of this color.
- */
-public Color
-brighter()
-{
- return new Color(Math.min(255, getRed() + BRIGHT_STEP),
- Math.min(255, getGreen() + BRIGHT_STEP),
- Math.min(255, getBlue() + BRIGHT_STEP),
- getAlpha());
-}
-
-/*************************************************************************/
-
-/**
- * Returns a darker version of this color. This is done by decreasing
- * the RGB values by an arbitrary scale factor. Note that this method
- * and the <code>brighter()</code> method are not necessarily inverses.
- *
- * @return A darker version of this color.
- */
-public Color
-darker()
-{
- return new Color(Math.max(0, getRed() - BRIGHT_STEP),
- Math.max(0, getGreen() - BRIGHT_STEP),
- Math.max(0, getBlue() - BRIGHT_STEP),
- getAlpha());
-}
-
-/*************************************************************************/
-
-/**
- * Returns a hash value for this color.
- *
- * @return A hash value for this color.
- */
-public int
-hashCode()
-{
- return(value);
-}
-
-/*************************************************************************/
-
-/**
- * Tests this object for equality against the specified object. This will
- * be true if and only if the specified object is an instance of
- * <code>Color</code> and has the same red, green, and blue values as
- * this object.
- *
- * @return <code>true</code> if the specified object is equal to this one,
- * <code>false</code> otherwise.
- */
-public boolean
-equals(Object obj)
-{
- if (!(obj instanceof Color))
- return(false);
-
- Color c = (Color)obj;
- return value == c.value;
-}
-
-/*************************************************************************/
-
-/**
- * Returns a string representation of this object.
- *
- * @return A string representation of this object.
- */
-public String
-toString()
-{
- return(getClass().getName() + "(red=" + getRed() + ",green=" + getGreen() +
- ",blue=" + getBlue() + ")");
-}
-
-} // class Color
-