⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 color.java

📁 《移动Agent技术》一书的所有章节源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * @(#)Color.java	1.34 98/07/01
 *
 * Copyright 1995-1998 by Sun Microsystems, Inc.,
 * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
 * All rights reserved.
 * 
 * This software is the confidential and proprietary information
 * of Sun Microsystems, Inc. ("Confidential Information").  You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Sun.
 */
package java.awt;

import java.io.*;
import java.lang.*;

/**
 * This class encapsulates colors using the RGB format. In RGB 
 * format, the red, blue, and green components of a color are each 
 * represented by an integer in the range 0-255. The value 0 
 * indicates no contribution from this primary color. The value 255 
 * indicates the maximum intensity of this color component. 
 * <p>
 * Although the <code>Color</code> class is based on the 
 * three-component RGB model, the class provides a set of convenience 
 * methods for converting between RGB and HSB colors. For a 
 * definition of the RGB and HSB color models, see Foley, van&nbsp;Dam, 
 * Feiner, and Hughes, <cite>Computer Graphics: Principles 
 * and Practice</cite>.
 *
 * @version 	1.34, 07/01/98
 * @author 	Sami Shaio
 * @author 	Arthur van Hoff
 * @since       JDK1.0
 */
public class Color implements java.io.Serializable {
    
    /**
     * The color white.
     */
    public final static Color white 	= new Color(255, 255, 255);

    /**
     * The color light gray.
     */
    public final static Color lightGray = new Color(192, 192, 192);

    /**
     * The color gray.
     */
    public final static Color gray 	= new Color(128, 128, 128);

    /**
     * The color dark gray.
     */
    public final static Color darkGray 	= new Color(64, 64, 64);

    /**
     * The color black.
     */
    public final static Color black 	= new Color(0, 0, 0);
    
    /**
     * The color red.
     */
    public final static Color red 	= new Color(255, 0, 0);

    /**
     * The color pink.
     */
    public final static Color pink 	= new Color(255, 175, 175);

    /**
     * The color orange.
     */
    public final static Color orange 	= new Color(255, 200, 0);

    /**
     * The color yellow.
     */
    public final static Color yellow 	= new Color(255, 255, 0);

    /**
     * The color green.
     */
    public final static Color green 	= new Color(0, 255, 0);

    /**
     * The color magenta.
     */
    public final static Color magenta	= new Color(255, 0, 255);

    /**
     * The color cyan.
     */
    public final static Color cyan 	= new Color(0, 255, 255);

    /**
     * The color blue.
     */
    public final static Color blue 	= new Color(0, 0, 255);

    /**
     * Private data.
     */
    transient private int pData;

    /**
     * The color value.
     */
    int value;

    /*
     * JDK 1.1 serialVersionUID 
     */
     private static final long serialVersionUID = 118526816881161077L;

    /**
     * Checks the color integer components supplied for validity.
     * Throws an IllegalArgumentException if the value is out of range.
     * @param r the Red component
     * @param g the Green component
     * @param b the Blue component
     **/
    private static void testColorValueRange(int r, int g, int b) {
        boolean rangeError = false;
	String badComponentString = "";
	if ( r < 0 || r > 255) {
	    rangeError = true;
	    badComponentString = badComponentString + " Red";
	}
	if ( g < 0 || g > 255) {
	    rangeError = true;
	    badComponentString = badComponentString + " Green";
	}
	if ( b < 0 || b > 255) {
	    rangeError = true;
	    badComponentString = badComponentString + " Blue";
	}
	if ( rangeError == true ) {
	throw new IllegalArgumentException("Color parameter outside of expected range:"
					   + badComponentString);
	}
    }

    /**
     * Checks the color float components supplied for validity.
     * Throws an IllegalArgumentException if the value is out of range.
     * @param r the Red component
     * @param g the Green component
     * @param b the Blue component
     **/
    private static void testColorValueRange(float r, float g, float b) {
        boolean rangeError = false;
	String badComponentString = "";
	if ( r < 0.0 || r > 1.0) {
	    rangeError = true;
	    badComponentString = badComponentString + " Red";
	}
	if ( g < 0.0 || g > 1.0) {
	    rangeError = true;
	    badComponentString = badComponentString + " Green";
	}
	if ( b < 0.0 || b > 1.0) {
	    rangeError = true;
	    badComponentString = badComponentString + " Blue";
	}
	if ( rangeError == true ) {
	throw new IllegalArgumentException("Color parameter outside of expected range:"
					   + badComponentString);
	}
    }

    /**
     * Creates a color with the specified red, green, and blue 
     * components. The three arguments must each be in the range 
     * 0-255. 
     * <p>
     * The actual color used in rendering depends on finding the best 
     * match given the color space available for a given output device. 
     * @param       r the red component.
     * @param       g the green component.
     * @param       b the blue component.
     * @see         java.awt.Color#getRed.
     * @see         java.awt.Color#getGreen.
     * @see         java.awt.Color#getBlue.
     * @see         java.awt.Color#getRGB.
     * @since       JDK1.0
     */
    public Color(int r, int g, int b) {
        this(((r & 0xFF) << 16) | ((g & 0xFF) << 8) | ((b & 0xFF) << 0));
	testColorValueRange(r,g,b);
    }

    /**
     * Creates a color with the specified RGB value, where the red 
     * component is in bits 16-23 of the argument, the green 
     * component is in bits 8-15 of the argument, and the blue 
     * component is in bits 0-7. The value zero indicates no 
     * contribution from the primary color component. 
     * <p>
     * The actual color used in rendering depends on finding the best 
     * match given the color space available for a given output device. 
     * @param       rgb   an integer giving the red, green, and blue components.
     * @see         java.awt.image.ColorModel#getRGBdefault
     * @see         java.awt.Color#getRed.
     * @see         java.awt.Color#getGreen.
     * @see         java.awt.Color#getBlue.
     * @see         java.awt.Color#getRGB.
     * @since       JDK1.0
     */
    public Color(int rgb) {
      value = 0xff000000 | rgb;
    }

    /**
     * Creates a color with the specified red, green, and blue values, 
     * where each of the values is in the range 0.0-1.0. The value 
     * 0.0 indicates no contribution from the primary color component. 
     * The value 1.0 indicates the maximum intensity of the primary color 
     * component. 
     * <p>
     * The actual color used in rendering depends on finding the best 
     * match given the color space available for a given output device. 
     * @param       r the red component
     * @param       g the red component
     * @param       b the red component
     * @see         java.awt.Color#getRed.
     * @see         java.awt.Color#getGreen.
     * @see         java.awt.Color#getBlue.
     * @see         java.awt.Color#getRGB.
     * @since       JDK1.0
     */
    public Color(float r, float g, float b) {
      this( (int) (r * 255), (int) (g * 255), (int) (b * 255));
      testColorValueRange(r,g,b);
    }

    /**
     * Gets the red component of this color. The result is 
     * an integer in the range 0 to 255. 
     * @return        the red component of this color.
     * @see           java.awt.Color#getRGB
     * @since         JDK1.0
     */
    public int getRed() {
	return (getRGB() >> 16) & 0xFF;
    }

    /**
     * Gets the green component of this color. The result is 
     * an integer in the range 0 to 255. 
     * @return        the green component of this color.
     * @see           java.awt.Color#getRGB
     * @since         JDK1.0
     */
    public int getGreen() {
	return (getRGB() >> 8) & 0xFF;
    }

    /**
     * Gets the blue component of this color. The result is 
     * an integer in the range 0 to 255. 
     * @return        the blue component of this color.
     * @see           java.awt.Color#getRGB
     * @since         JDK1.0
     */
    public int getBlue() {
	return (getRGB() >> 0) & 0xFF;
    }

    /**
     * Gets the RGB value representing the color in the default RGB ColorModel. 
     * The red, green, and blue components of the color are each scaled to be 
     * a value between 0 (abscence of the color) and 255 (complete saturation). 
     * Bits 24-31 of the returned integer are 0xff, bits 16-23 are the red 
     * value, bit 8-15 are the green value, and bits 0-7 are the blue value.
     * @see java.awt.image.ColorModel#getRGBdefault
     * @see #getRed
     * @see #getGreen
     * @see #getBlue
     * @since JDK1.0
     */
    public int getRGB() {
	return value;
    }

    private static final double FACTOR = 0.7;

    /**
     * Creates a brighter version of this color.
     * <p>
     * This method applies an arbitrary scale factor to each of the three RGB 
     * components of the color to create a brighter version of the same 
     * color. Although <code>brighter</code> and <code>darker</code> are 
     * inverse operations, the results of a series of invocations of 
     * these two methods may be inconsistent because of rounding errors. 
     * @return     a new <code>Color</code> object, 
     *                            a brighter version of this color.
     * @see        java.awt.Color#darker
     * @since      JDK1.0
     */
    public Color brighter() {
	int r = getRed();
	int g = getGreen();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -