< prev index next >
src/java.desktop/share/classes/java/awt/Color.java
Print this page
*** 30,50 ****
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.color.ColorSpace;
/**
! * The <code>Color</code> class is used to encapsulate colors in the default
* sRGB color space or colors in arbitrary color spaces identified by a
* {@link ColorSpace}. Every color has an implicit alpha value of 1.0 or
* an explicit one provided in the constructor. The alpha value
* defines the transparency of a color and can be represented by
* a float value in the range 0.0 - 1.0 or 0 - 255.
* An alpha value of 1.0 or 255 means that the color is completely
* opaque and an alpha value of 0 or 0.0 means that the color is
* completely transparent.
! * When constructing a <code>Color</code> with an explicit alpha or
! * getting the color/alpha components of a <code>Color</code>, the color
* components are never premultiplied by the alpha component.
* <p>
* The default color space for the Java 2D(tm) API is sRGB, a proposed
* standard RGB color space. For further information on sRGB,
* see <A href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
--- 30,50 ----
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.color.ColorSpace;
/**
! * The {@code Color} class is used to encapsulate colors in the default
* sRGB color space or colors in arbitrary color spaces identified by a
* {@link ColorSpace}. Every color has an implicit alpha value of 1.0 or
* an explicit one provided in the constructor. The alpha value
* defines the transparency of a color and can be represented by
* a float value in the range 0.0 - 1.0 or 0 - 255.
* An alpha value of 1.0 or 255 means that the color is completely
* opaque and an alpha value of 0 or 0.0 means that the color is
* completely transparent.
! * When constructing a {@code Color} with an explicit alpha or
! * getting the color/alpha components of a {@code Color}, the color
* components are never premultiplied by the alpha component.
* <p>
* The default color space for the Java 2D(tm) API is sRGB, a proposed
* standard RGB color space. For further information on sRGB,
* see <A href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
*** 208,252 ****
* @see #getRGB
*/
int value;
/**
! * The color value in the default sRGB <code>ColorSpace</code> as
! * <code>float</code> components (no alpha).
! * If <code>null</code> after object construction, this must be an
* sRGB color constructed with 8-bit precision, so compute from the
! * <code>int</code> color value.
* @serial
* @see #getRGBColorComponents
* @see #getRGBComponents
*/
private float frgbvalue[] = null;
/**
! * The color value in the native <code>ColorSpace</code> as
! * <code>float</code> components (no alpha).
! * If <code>null</code> after object construction, this must be an
* sRGB color constructed with 8-bit precision, so compute from the
! * <code>int</code> color value.
* @serial
* @see #getRGBColorComponents
* @see #getRGBComponents
*/
private float fvalue[] = null;
/**
! * The alpha value as a <code>float</code> component.
! * If <code>frgbvalue</code> is <code>null</code>, this is not valid
! * data, so compute from the <code>int</code> color value.
* @serial
* @see #getRGBComponents
* @see #getComponents
*/
private float falpha = 0.0f;
/**
! * The <code>ColorSpace</code>. If <code>null</code>, then it's
* default is sRGB.
* @serial
* @see #getColor
* @see #getColorSpace
* @see #getColorComponents
--- 208,252 ----
* @see #getRGB
*/
int value;
/**
! * The color value in the default sRGB {@code ColorSpace} as
! * {@code float} components (no alpha).
! * If {@code null} after object construction, this must be an
* sRGB color constructed with 8-bit precision, so compute from the
! * {@code int} color value.
* @serial
* @see #getRGBColorComponents
* @see #getRGBComponents
*/
private float frgbvalue[] = null;
/**
! * The color value in the native {@code ColorSpace} as
! * {@code float} components (no alpha).
! * If {@code null} after object construction, this must be an
* sRGB color constructed with 8-bit precision, so compute from the
! * {@code int} color value.
* @serial
* @see #getRGBColorComponents
* @see #getRGBComponents
*/
private float fvalue[] = null;
/**
! * The alpha value as a {@code float} component.
! * If {@code frgbvalue} is {@code null}, this is not valid
! * data, so compute from the {@code int} color value.
* @serial
* @see #getRGBComponents
* @see #getComponents
*/
private float falpha = 0.0f;
/**
! * The {@code ColorSpace}. If {@code null}, then it's
* default is sRGB.
* @serial
* @see #getColor
* @see #getColorSpace
* @see #getColorComponents
*** 311,323 ****
+ badComponentString);
}
}
/**
! * Checks the color <code>float</code> components supplied for
* validity.
! * Throws an <code>IllegalArgumentException</code> if the value is out
* of range.
* @param r the Red component
* @param g the Green component
* @param b the Blue component
**/
--- 311,323 ----
+ badComponentString);
}
}
/**
! * Checks the color {@code float} components supplied for
* validity.
! * Throws an {@code IllegalArgumentException} if the value is out
* of range.
* @param r the Red component
* @param g the Green component
* @param b the Blue component
**/
*** 352,363 ****
* The actual color used in rendering depends
* on finding the best match given the color space
* available for a given output device.
* Alpha is defaulted to 255.
*
! * @throws IllegalArgumentException if <code>r</code>, <code>g</code>
! * or <code>b</code> are outside of the range
* 0 to 255, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @see #getRed
--- 352,363 ----
* The actual color used in rendering depends
* on finding the best match given the color space
* available for a given output device.
* Alpha is defaulted to 255.
*
! * @throws IllegalArgumentException if {@code r}, {@code g}
! * or {@code b} are outside of the range
* 0 to 255, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @see #getRed
*** 371,382 ****
/**
* Creates an sRGB color with the specified red, green, blue, and alpha
* values in the range (0 - 255).
*
! * @throws IllegalArgumentException if <code>r</code>, <code>g</code>,
! * <code>b</code> or <code>a</code> are outside of the range
* 0 to 255, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @param a the alpha component
--- 371,382 ----
/**
* Creates an sRGB color with the specified red, green, blue, and alpha
* values in the range (0 - 255).
*
! * @throws IllegalArgumentException if {@code r}, {@code g},
! * {@code b} or {@code a} are outside of the range
* 0 to 255, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @param a the alpha component
*** 416,431 ****
/**
* Creates an sRGB color with the specified combined RGBA value consisting
* of the alpha component in bits 24-31, the red component in bits 16-23,
* the green component in bits 8-15, and the blue component in bits 0-7.
! * If the <code>hasalpha</code> argument is <code>false</code>, alpha
* is defaulted to 255.
*
* @param rgba the combined RGBA components
! * @param hasalpha <code>true</code> if the alpha bits are valid;
! * <code>false</code> otherwise
* @see java.awt.image.ColorModel#getRGBdefault
* @see #getRed
* @see #getGreen
* @see #getBlue
* @see #getAlpha
--- 416,431 ----
/**
* Creates an sRGB color with the specified combined RGBA value consisting
* of the alpha component in bits 24-31, the red component in bits 16-23,
* the green component in bits 8-15, and the blue component in bits 0-7.
! * If the {@code hasalpha} argument is {@code false}, alpha
* is defaulted to 255.
*
* @param rgba the combined RGBA components
! * @param hasalpha {@code true} if the alpha bits are valid;
! * {@code false} otherwise
* @see java.awt.image.ColorModel#getRGBdefault
* @see #getRed
* @see #getGreen
* @see #getBlue
* @see #getAlpha
*** 444,455 ****
* values in the range (0.0 - 1.0). Alpha is defaulted to 1.0. The
* actual color used in rendering depends on finding the best
* match given the color space available for a particular output
* device.
*
! * @throws IllegalArgumentException if <code>r</code>, <code>g</code>
! * or <code>b</code> are outside of the range
* 0.0 to 1.0, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @see #getRed
--- 444,455 ----
* values in the range (0.0 - 1.0). Alpha is defaulted to 1.0. The
* actual color used in rendering depends on finding the best
* match given the color space available for a particular output
* device.
*
! * @throws IllegalArgumentException if {@code r}, {@code g}
! * or {@code b} are outside of the range
* 0.0 to 1.0, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @see #getRed
*** 471,482 ****
/**
* Creates an sRGB color with the specified red, green, blue, and
* alpha values in the range (0.0 - 1.0). The actual color
* used in rendering depends on finding the best match given the
* color space available for a particular output device.
! * @throws IllegalArgumentException if <code>r</code>, <code>g</code>
! * <code>b</code> or <code>a</code> are outside of the range
* 0.0 to 1.0, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @param a the alpha component
--- 471,482 ----
/**
* Creates an sRGB color with the specified red, green, blue, and
* alpha values in the range (0.0 - 1.0). The actual color
* used in rendering depends on finding the best match given the
* color space available for a particular output device.
! * @throws IllegalArgumentException if {@code r}, {@code g}
! * {@code b} or {@code a} are outside of the range
* 0.0 to 1.0, inclusive
* @param r the red component
* @param g the green component
* @param b the blue component
* @param a the alpha component
*** 495,517 ****
falpha = a;
fvalue = frgbvalue;
}
/**
! * Creates a color in the specified <code>ColorSpace</code>
! * with the color components specified in the <code>float</code>
* array and the specified alpha. The number of components is
! * determined by the type of the <code>ColorSpace</code>. For
* example, RGB requires 3 components, but CMYK requires 4
* components.
! * @param cspace the <code>ColorSpace</code> to be used to
* interpret the components
* @param components an arbitrary number of color components
! * that is compatible with the <code>ColorSpace</code>
* @param alpha alpha value
* @throws IllegalArgumentException if any of the values in the
! * <code>components</code> array or <code>alpha</code> is
* outside of the range 0.0 to 1.0
* @see #getComponents
* @see #getColorComponents
*/
public Color(ColorSpace cspace, float components[], float alpha) {
--- 495,517 ----
falpha = a;
fvalue = frgbvalue;
}
/**
! * Creates a color in the specified {@code ColorSpace}
! * with the color components specified in the {@code float}
* array and the specified alpha. The number of components is
! * determined by the type of the {@code ColorSpace}. For
* example, RGB requires 3 components, but CMYK requires 4
* components.
! * @param cspace the {@code ColorSpace} to be used to
* interpret the components
* @param components an arbitrary number of color components
! * that is compatible with the {@code ColorSpace}
* @param alpha alpha value
* @throws IllegalArgumentException if any of the values in the
! * {@code components} array or {@code alpha} is
* outside of the range 0.0 to 1.0
* @see #getComponents
* @see #getColorComponents
*/
public Color(ColorSpace cspace, float components[], float alpha) {
*** 590,600 ****
* Returns the RGB value representing the color in the default sRGB
* {@link ColorModel}.
* (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are
* blue).
* @return the RGB value of the color in the default sRGB
! * <code>ColorModel</code>.
* @see java.awt.image.ColorModel#getRGBdefault
* @see #getRed
* @see #getGreen
* @see #getBlue
* @since 1.0
--- 590,600 ----
* Returns the RGB value representing the color in the default sRGB
* {@link ColorModel}.
* (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are
* blue).
* @return the RGB value of the color in the default sRGB
! * {@code ColorModel}.
* @see java.awt.image.ColorModel#getRGBdefault
* @see #getRed
* @see #getGreen
* @see #getBlue
* @since 1.0
*** 604,626 ****
}
private static final double FACTOR = 0.7;
/**
! * Creates a new <code>Color</code> that is a brighter version of this
! * <code>Color</code>.
* <p>
* This method applies an arbitrary scale factor to each of the three RGB
! * components of this <code>Color</code> to create a brighter version
! * of this <code>Color</code>.
* The {@code alpha} value is preserved.
! * Although <code>brighter</code> and
! * <code>darker</code> are inverse operations, the results of a
* series of invocations of these two methods might be inconsistent
* because of rounding errors.
! * @return a new <code>Color</code> object that is
! * a brighter version of this <code>Color</code>
* with the same {@code alpha} value.
* @see java.awt.Color#darker
* @since 1.0
*/
public Color brighter() {
--- 604,626 ----
}
private static final double FACTOR = 0.7;
/**
! * Creates a new {@code Color} that is a brighter version of this
! * {@code Color}.
* <p>
* This method applies an arbitrary scale factor to each of the three RGB
! * components of this {@code Color} to create a brighter version
! * of this {@code Color}.
* The {@code alpha} value is preserved.
! * Although {@code brighter} and
! * {@code darker} are inverse operations, the results of a
* series of invocations of these two methods might be inconsistent
* because of rounding errors.
! * @return a new {@code Color} object that is
! * a brighter version of this {@code Color}
* with the same {@code alpha} value.
* @see java.awt.Color#darker
* @since 1.0
*/
public Color brighter() {
*** 647,669 ****
Math.min((int)(b/FACTOR), 255),
alpha);
}
/**
! * Creates a new <code>Color</code> that is a darker version of this
! * <code>Color</code>.
* <p>
* This method applies an arbitrary scale factor to each of the three RGB
! * components of this <code>Color</code> to create a darker version of
! * this <code>Color</code>.
* The {@code alpha} value is preserved.
! * Although <code>brighter</code> and
! * <code>darker</code> are inverse operations, the results of a series
* of invocations of these two methods might be inconsistent because
* of rounding errors.
! * @return a new <code>Color</code> object that is
! * a darker version of this <code>Color</code>
* with the same {@code alpha} value.
* @see java.awt.Color#brighter
* @since 1.0
*/
public Color darker() {
--- 647,669 ----
Math.min((int)(b/FACTOR), 255),
alpha);
}
/**
! * Creates a new {@code Color} that is a darker version of this
! * {@code Color}.
* <p>
* This method applies an arbitrary scale factor to each of the three RGB
! * components of this {@code Color} to create a darker version of
! * this {@code Color}.
* The {@code alpha} value is preserved.
! * Although {@code brighter} and
! * {@code darker} are inverse operations, the results of a series
* of invocations of these two methods might be inconsistent because
* of rounding errors.
! * @return a new {@code Color} object that is
! * a darker version of this {@code Color}
* with the same {@code alpha} value.
* @see java.awt.Color#brighter
* @since 1.0
*/
public Color darker() {
*** 672,726 ****
Math.max((int)(getBlue() *FACTOR), 0),
getAlpha());
}
/**
! * Computes the hash code for this <code>Color</code>.
* @return a hash code value for this object.
* @since 1.0
*/
public int hashCode() {
return value;
}
/**
* Determines whether another object is equal to this
! * <code>Color</code>.
* <p>
! * The result is <code>true</code> if and only if the argument is not
! * <code>null</code> and is a <code>Color</code> object that has the same
* red, green, blue, and alpha values as this object.
* @param obj the object to test for equality with this
! * <code>Color</code>
! * @return <code>true</code> if the objects are the same;
! * <code>false</code> otherwise.
* @since 1.0
*/
public boolean equals(Object obj) {
return obj instanceof Color && ((Color)obj).getRGB() == this.getRGB();
}
/**
! * Returns a string representation of this <code>Color</code>. This
* method is intended to be used only for debugging purposes. The
* content and format of the returned string might vary between
* implementations. The returned string might be empty but cannot
! * be <code>null</code>.
*
! * @return a string representation of this <code>Color</code>.
*/
public String toString() {
return getClass().getName() + "[r=" + getRed() + ",g=" + getGreen() + ",b=" + getBlue() + "]";
}
/**
! * Converts a <code>String</code> to an integer and returns the
! * specified opaque <code>Color</code>. This method handles string
* formats that are used to represent octal and hexadecimal numbers.
! * @param nm a <code>String</code> that represents
* an opaque color as a 24-bit integer
! * @return the new <code>Color</code> object.
* @see java.lang.Integer#decode
* @exception NumberFormatException if the specified string cannot
* be interpreted as a decimal,
* octal, or hexadecimal integer.
* @since 1.1
--- 672,726 ----
Math.max((int)(getBlue() *FACTOR), 0),
getAlpha());
}
/**
! * Computes the hash code for this {@code Color}.
* @return a hash code value for this object.
* @since 1.0
*/
public int hashCode() {
return value;
}
/**
* Determines whether another object is equal to this
! * {@code Color}.
* <p>
! * The result is {@code true} if and only if the argument is not
! * {@code null} and is a {@code Color} object that has the same
* red, green, blue, and alpha values as this object.
* @param obj the object to test for equality with this
! * {@code Color}
! * @return {@code true} if the objects are the same;
! * {@code false} otherwise.
* @since 1.0
*/
public boolean equals(Object obj) {
return obj instanceof Color && ((Color)obj).getRGB() == this.getRGB();
}
/**
! * Returns a string representation of this {@code Color}. This
* method is intended to be used only for debugging purposes. The
* content and format of the returned string might vary between
* implementations. The returned string might be empty but cannot
! * be {@code null}.
*
! * @return a string representation of this {@code Color}.
*/
public String toString() {
return getClass().getName() + "[r=" + getRed() + ",g=" + getGreen() + ",b=" + getBlue() + "]";
}
/**
! * Converts a {@code String} to an integer and returns the
! * specified opaque {@code Color}. This method handles string
* formats that are used to represent octal and hexadecimal numbers.
! * @param nm a {@code String} that represents
* an opaque color as a 24-bit integer
! * @return the new {@code Color} object.
* @see java.lang.Integer#decode
* @exception NumberFormatException if the specified string cannot
* be interpreted as a decimal,
* octal, or hexadecimal integer.
* @since 1.1
*** 734,750 ****
/**
* Finds a color in the system properties.
* <p>
* The argument is treated as the name of a system property to
* be obtained. The string value of this property is then interpreted
! * as an integer which is then converted to a <code>Color</code>
* object.
* <p>
* If the specified property is not found or could not be parsed as
! * an integer then <code>null</code> is returned.
* @param nm the name of the color property
! * @return the <code>Color</code> converted from the system
* property.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.Integer#getInteger(java.lang.String)
* @see java.awt.Color#Color(int)
* @since 1.0
--- 734,750 ----
/**
* Finds a color in the system properties.
* <p>
* The argument is treated as the name of a system property to
* be obtained. The string value of this property is then interpreted
! * as an integer which is then converted to a {@code Color}
* object.
* <p>
* If the specified property is not found or could not be parsed as
! * an integer then {@code null} is returned.
* @param nm the name of the color property
! * @return the {@code Color} converted from the system
* property.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.Integer#getInteger(java.lang.String)
* @see java.awt.Color#Color(int)
* @since 1.0
*** 756,775 ****
/**
* Finds a color in the system properties.
* <p>
* The first argument is treated as the name of a system property to
* be obtained. The string value of this property is then interpreted
! * as an integer which is then converted to a <code>Color</code>
* object.
* <p>
* If the specified property is not found or cannot be parsed as
! * an integer then the <code>Color</code> specified by the second
* argument is returned instead.
* @param nm the name of the color property
! * @param v the default <code>Color</code>
! * @return the <code>Color</code> converted from the system
! * property, or the specified <code>Color</code>.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.Integer#getInteger(java.lang.String)
* @see java.awt.Color#Color(int)
* @since 1.0
*/
--- 756,775 ----
/**
* Finds a color in the system properties.
* <p>
* The first argument is treated as the name of a system property to
* be obtained. The string value of this property is then interpreted
! * as an integer which is then converted to a {@code Color}
* object.
* <p>
* If the specified property is not found or cannot be parsed as
! * an integer then the {@code Color} specified by the second
* argument is returned instead.
* @param nm the name of the color property
! * @param v the default {@code Color}
! * @return the {@code Color} converted from the system
! * property, or the specified {@code Color}.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.Integer#getInteger(java.lang.String)
* @see java.awt.Color#Color(int)
* @since 1.0
*/
*** 785,804 ****
/**
* Finds a color in the system properties.
* <p>
* The first argument is treated as the name of a system property to
* be obtained. The string value of this property is then interpreted
! * as an integer which is then converted to a <code>Color</code>
* object.
* <p>
* If the specified property is not found or could not be parsed as
! * an integer then the integer value <code>v</code> is used instead,
! * and is converted to a <code>Color</code> object.
* @param nm the name of the color property
* @param v the default color value, as an integer
! * @return the <code>Color</code> converted from the system
! * property or the <code>Color</code> converted from
* the specified integer.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.Integer#getInteger(java.lang.String)
* @see java.awt.Color#Color(int)
* @since 1.0
--- 785,804 ----
/**
* Finds a color in the system properties.
* <p>
* The first argument is treated as the name of a system property to
* be obtained. The string value of this property is then interpreted
! * as an integer which is then converted to a {@code Color}
* object.
* <p>
* If the specified property is not found or could not be parsed as
! * an integer then the integer value {@code v} is used instead,
! * and is converted to a {@code Color} object.
* @param nm the name of the color property
* @param v the default color value, as an integer
! * @return the {@code Color} converted from the system
! * property or the {@code Color} converted from
* the specified integer.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.Integer#getInteger(java.lang.String)
* @see java.awt.Color#Color(int)
* @since 1.0
*** 811,833 ****
/**
* Converts the components of a color, as specified by the HSB
* model, to an equivalent set of values for the default RGB model.
* <p>
! * The <code>saturation</code> and <code>brightness</code> components
* should be floating-point values between zero and one
! * (numbers in the range 0.0-1.0). The <code>hue</code> component
* can be any floating-point number. The floor of this number is
* subtracted from it to create a fraction between 0 and 1. This
* fractional number is then multiplied by 360 to produce the hue
* angle in the HSB color model.
* <p>
! * The integer that is returned by <code>HSBtoRGB</code> encodes the
* value of a color in bits 0-23 of an integer value that is the same
* format used by the method {@link #getRGB() getRGB}.
* This integer can be supplied as an argument to the
! * <code>Color</code> constructor that takes a single integer argument.
* @param hue the hue component of the color
* @param saturation the saturation of the color
* @param brightness the brightness of the color
* @return the RGB value of the color with the indicated hue,
* saturation, and brightness.
--- 811,833 ----
/**
* Converts the components of a color, as specified by the HSB
* model, to an equivalent set of values for the default RGB model.
* <p>
! * The {@code saturation} and {@code brightness} components
* should be floating-point values between zero and one
! * (numbers in the range 0.0-1.0). The {@code hue} component
* can be any floating-point number. The floor of this number is
* subtracted from it to create a fraction between 0 and 1. This
* fractional number is then multiplied by 360 to produce the hue
* angle in the HSB color model.
* <p>
! * The integer that is returned by {@code HSBtoRGB} encodes the
* value of a color in bits 0-23 of an integer value that is the same
* format used by the method {@link #getRGB() getRGB}.
* This integer can be supplied as an argument to the
! * {@code Color} constructor that takes a single integer argument.
* @param hue the hue component of the color
* @param saturation the saturation of the color
* @param brightness the brightness of the color
* @return the RGB value of the color with the indicated hue,
* saturation, and brightness.
*** 885,903 ****
/**
* Converts the components of a color, as specified by the default RGB
* model, to an equivalent set of values for hue, saturation, and
* brightness that are the three components of the HSB model.
* <p>
! * If the <code>hsbvals</code> argument is <code>null</code>, then a
* new array is allocated to return the result. Otherwise, the method
! * returns the array <code>hsbvals</code>, with the values put into
* that array.
* @param r the red component of the color
* @param g the green component of the color
* @param b the blue component of the color
* @param hsbvals the array used to return the
! * three HSB values, or <code>null</code>
* @return an array of three elements containing the hue, saturation,
* and brightness (in that order), of the color with
* the indicated red, green, and blue components.
* @see java.awt.Color#getRGB()
* @see java.awt.Color#Color(int)
--- 885,903 ----
/**
* Converts the components of a color, as specified by the default RGB
* model, to an equivalent set of values for hue, saturation, and
* brightness that are the three components of the HSB model.
* <p>
! * If the {@code hsbvals} argument is {@code null}, then a
* new array is allocated to return the result. Otherwise, the method
! * returns the array {@code hsbvals}, with the values put into
* that array.
* @param r the red component of the color
* @param g the green component of the color
* @param b the blue component of the color
* @param hsbvals the array used to return the
! * three HSB values, or {@code null}
* @return an array of three elements containing the hue, saturation,
* and brightness (in that order), of the color with
* the indicated red, green, and blue components.
* @see java.awt.Color#getRGB()
* @see java.awt.Color#Color(int)
*** 940,981 ****
hsbvals[2] = brightness;
return hsbvals;
}
/**
! * Creates a <code>Color</code> object based on the specified values
* for the HSB color model.
* <p>
! * The <code>s</code> and <code>b</code> components should be
* floating-point values between zero and one
! * (numbers in the range 0.0-1.0). The <code>h</code> component
* can be any floating-point number. The floor of this number is
* subtracted from it to create a fraction between 0 and 1. This
* fractional number is then multiplied by 360 to produce the hue
* angle in the HSB color model.
* @param h the hue component
* @param s the saturation of the color
* @param b the brightness of the color
! * @return a <code>Color</code> object with the specified hue,
* saturation, and brightness.
* @since 1.0
*/
public static Color getHSBColor(float h, float s, float b) {
return new Color(HSBtoRGB(h, s, b));
}
/**
! * Returns a <code>float</code> array containing the color and alpha
! * components of the <code>Color</code>, as represented in the default
* sRGB color space.
! * If <code>compArray</code> is <code>null</code>, an array of length
* 4 is created for the return value. Otherwise,
! * <code>compArray</code> must have length 4 or greater,
* and it is filled in with the components and returned.
* @param compArray an array that this method fills with
* color and alpha components and returns
! * @return the RGBA components in a <code>float</code> array.
*/
public float[] getRGBComponents(float[] compArray) {
float[] f;
if (compArray == null) {
f = new float[4];
--- 940,981 ----
hsbvals[2] = brightness;
return hsbvals;
}
/**
! * Creates a {@code Color} object based on the specified values
* for the HSB color model.
* <p>
! * The {@code s} and {@code b} components should be
* floating-point values between zero and one
! * (numbers in the range 0.0-1.0). The {@code h} component
* can be any floating-point number. The floor of this number is
* subtracted from it to create a fraction between 0 and 1. This
* fractional number is then multiplied by 360 to produce the hue
* angle in the HSB color model.
* @param h the hue component
* @param s the saturation of the color
* @param b the brightness of the color
! * @return a {@code Color} object with the specified hue,
* saturation, and brightness.
* @since 1.0
*/
public static Color getHSBColor(float h, float s, float b) {
return new Color(HSBtoRGB(h, s, b));
}
/**
! * Returns a {@code float} array containing the color and alpha
! * components of the {@code Color}, as represented in the default
* sRGB color space.
! * If {@code compArray} is {@code null}, an array of length
* 4 is created for the return value. Otherwise,
! * {@code compArray} must have length 4 or greater,
* and it is filled in with the components and returned.
* @param compArray an array that this method fills with
* color and alpha components and returns
! * @return the RGBA components in a {@code float} array.
*/
public float[] getRGBComponents(float[] compArray) {
float[] f;
if (compArray == null) {
f = new float[4];
*** 995,1013 ****
}
return f;
}
/**
! * Returns a <code>float</code> array containing only the color
! * components of the <code>Color</code>, in the default sRGB color
! * space. If <code>compArray</code> is <code>null</code>, an array of
* length 3 is created for the return value. Otherwise,
! * <code>compArray</code> must have length 3 or greater, and it is
* filled in with the components and returned.
* @param compArray an array that this method fills with color
* components and returns
! * @return the RGB components in a <code>float</code> array.
*/
public float[] getRGBColorComponents(float[] compArray) {
float[] f;
if (compArray == null) {
f = new float[3];
--- 995,1013 ----
}
return f;
}
/**
! * Returns a {@code float} array containing only the color
! * components of the {@code Color}, in the default sRGB color
! * space. If {@code compArray} is {@code null}, an array of
* length 3 is created for the return value. Otherwise,
! * {@code compArray} must have length 3 or greater, and it is
* filled in with the components and returned.
* @param compArray an array that this method fills with color
* components and returns
! * @return the RGB components in a {@code float} array.
*/
public float[] getRGBColorComponents(float[] compArray) {
float[] f;
if (compArray == null) {
f = new float[3];
*** 1025,1047 ****
}
return f;
}
/**
! * Returns a <code>float</code> array containing the color and alpha
! * components of the <code>Color</code>, in the
! * <code>ColorSpace</code> of the <code>Color</code>.
! * If <code>compArray</code> is <code>null</code>, an array with
* length equal to the number of components in the associated
! * <code>ColorSpace</code> plus one is created for
! * the return value. Otherwise, <code>compArray</code> must have at
* least this length and it is filled in with the components and
* returned.
* @param compArray an array that this method fills with the color and
! * alpha components of this <code>Color</code> in its
! * <code>ColorSpace</code> and returns
! * @return the color and alpha components in a <code>float</code>
* array.
*/
public float[] getComponents(float[] compArray) {
if (fvalue == null)
return getRGBComponents(compArray);
--- 1025,1047 ----
}
return f;
}
/**
! * Returns a {@code float} array containing the color and alpha
! * components of the {@code Color}, in the
! * {@code ColorSpace} of the {@code Color}.
! * If {@code compArray} is {@code null}, an array with
* length equal to the number of components in the associated
! * {@code ColorSpace} plus one is created for
! * the return value. Otherwise, {@code compArray} must have at
* least this length and it is filled in with the components and
* returned.
* @param compArray an array that this method fills with the color and
! * alpha components of this {@code Color} in its
! * {@code ColorSpace} and returns
! * @return the color and alpha components in a {@code float}
* array.
*/
public float[] getComponents(float[] compArray) {
if (fvalue == null)
return getRGBComponents(compArray);
*** 1058,1080 ****
f[n] = falpha;
return f;
}
/**
! * Returns a <code>float</code> array containing only the color
! * components of the <code>Color</code>, in the
! * <code>ColorSpace</code> of the <code>Color</code>.
! * If <code>compArray</code> is <code>null</code>, an array with
* length equal to the number of components in the associated
! * <code>ColorSpace</code> is created for
! * the return value. Otherwise, <code>compArray</code> must have at
* least this length and it is filled in with the components and
* returned.
* @param compArray an array that this method fills with the color
! * components of this <code>Color</code> in its
! * <code>ColorSpace</code> and returns
! * @return the color components in a <code>float</code> array.
*/
public float[] getColorComponents(float[] compArray) {
if (fvalue == null)
return getRGBColorComponents(compArray);
float[] f;
--- 1058,1080 ----
f[n] = falpha;
return f;
}
/**
! * Returns a {@code float} array containing only the color
! * components of the {@code Color}, in the
! * {@code ColorSpace} of the {@code Color}.
! * If {@code compArray} is {@code null}, an array with
* length equal to the number of components in the associated
! * {@code ColorSpace} is created for
! * the return value. Otherwise, {@code compArray} must have at
* least this length and it is filled in with the components and
* returned.
* @param compArray an array that this method fills with the color
! * components of this {@code Color} in its
! * {@code ColorSpace} and returns
! * @return the color components in a {@code float} array.
*/
public float[] getColorComponents(float[] compArray) {
if (fvalue == null)
return getRGBColorComponents(compArray);
float[] f;
*** 1089,1111 ****
}
return f;
}
/**
! * Returns a <code>float</code> array containing the color and alpha
! * components of the <code>Color</code>, in the
! * <code>ColorSpace</code> specified by the <code>cspace</code>
! * parameter. If <code>compArray</code> is <code>null</code>, an
* array with length equal to the number of components in
! * <code>cspace</code> plus one is created for the return value.
! * Otherwise, <code>compArray</code> must have at least this
* length, and it is filled in with the components and returned.
! * @param cspace a specified <code>ColorSpace</code>
* @param compArray an array that this method fills with the
! * color and alpha components of this <code>Color</code> in
! * the specified <code>ColorSpace</code> and returns
! * @return the color and alpha components in a <code>float</code>
* array.
*/
public float[] getComponents(ColorSpace cspace, float[] compArray) {
if (cs == null) {
cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
--- 1089,1111 ----
}
return f;
}
/**
! * Returns a {@code float} array containing the color and alpha
! * components of the {@code Color}, in the
! * {@code ColorSpace} specified by the {@code cspace}
! * parameter. If {@code compArray} is {@code null}, an
* array with length equal to the number of components in
! * {@code cspace} plus one is created for the return value.
! * Otherwise, {@code compArray} must have at least this
* length, and it is filled in with the components and returned.
! * @param cspace a specified {@code ColorSpace}
* @param compArray an array that this method fills with the
! * color and alpha components of this {@code Color} in
! * the specified {@code ColorSpace} and returns
! * @return the color and alpha components in a {@code float}
* array.
*/
public float[] getComponents(ColorSpace cspace, float[] compArray) {
if (cs == null) {
cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
*** 1134,1156 ****
}
return compArray;
}
/**
! * Returns a <code>float</code> array containing only the color
! * components of the <code>Color</code> in the
! * <code>ColorSpace</code> specified by the <code>cspace</code>
! * parameter. If <code>compArray</code> is <code>null</code>, an array
* with length equal to the number of components in
! * <code>cspace</code> is created for the return value. Otherwise,
! * <code>compArray</code> must have at least this length, and it is
* filled in with the components and returned.
! * @param cspace a specified <code>ColorSpace</code>
* @param compArray an array that this method fills with the color
! * components of this <code>Color</code> in the specified
! * <code>ColorSpace</code>
! * @return the color components in a <code>float</code> array.
*/
public float[] getColorComponents(ColorSpace cspace, float[] compArray) {
if (cs == null) {
cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
}
--- 1134,1156 ----
}
return compArray;
}
/**
! * Returns a {@code float} array containing only the color
! * components of the {@code Color} in the
! * {@code ColorSpace} specified by the {@code cspace}
! * parameter. If {@code compArray} is {@code null}, an array
* with length equal to the number of components in
! * {@code cspace} is created for the return value. Otherwise,
! * {@code compArray} must have at least this length, and it is
* filled in with the components and returned.
! * @param cspace a specified {@code ColorSpace}
* @param compArray an array that this method fills with the color
! * components of this {@code Color} in the specified
! * {@code ColorSpace}
! * @return the color components in a {@code float} array.
*/
public float[] getColorComponents(ColorSpace cspace, float[] compArray) {
if (cs == null) {
cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
}
*** 1173,1184 ****
}
return compArray;
}
/**
! * Returns the <code>ColorSpace</code> of this <code>Color</code>.
! * @return this <code>Color</code> object's <code>ColorSpace</code>.
*/
public ColorSpace getColorSpace() {
if (cs == null) {
cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
}
--- 1173,1184 ----
}
return compArray;
}
/**
! * Returns the {@code ColorSpace} of this {@code Color}.
! * @return this {@code Color} object's {@code ColorSpace}.
*/
public ColorSpace getColorSpace() {
if (cs == null) {
cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
}
*** 1219,1231 ****
RenderingHints hints) {
return new ColorPaintContext(getRGB(), cm);
}
/**
! * Returns the transparency mode for this <code>Color</code>. This is
! * required to implement the <code>Paint</code> interface.
! * @return this <code>Color</code> object's transparency mode.
* @see Paint
* @see Transparency
* @see #createContext
*/
public int getTransparency() {
--- 1219,1231 ----
RenderingHints hints) {
return new ColorPaintContext(getRGB(), cm);
}
/**
! * Returns the transparency mode for this {@code Color}. This is
! * required to implement the {@code Paint} interface.
! * @return this {@code Color} object's transparency mode.
* @see Paint
* @see Transparency
* @see #createContext
*/
public int getTransparency() {
< prev index next >