📄 color.java
字号:
/*
* @(#)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 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 + -