/*******************************************************************************
* Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.graphics;
import org.eclipse.swt.*;
/**
* Instances of this class manage the operating system resources that
* implement SWT's RGB color model. To create a color you can either
* specify the individual color components as integers in the range
* 0 to 255 or provide an instance of an RGB
.
*
* Application code must explicitly invoke the Color.dispose()
* method to release the operating system resources managed by each instance
* when those instances are no longer required.
*
* IMPORTANT: This field is not part of the SWT * public API. It is marked public only so that it can be shared * within the packages provided by SWT. It is not available on all * platforms and should never be accessed from application code. *
* * @noreference This field is not intended to be referenced by clients. */ public float /*double*/ [] handle; Color(Device device) { super(device); } /** * Constructs a new instance of this class given a device and the * desired red, green and blue values expressed as ints in the range * 0 to 255 (where 0 is black and 255 is full brightness). On limited * color devices, the color instance created by this call may not have * the same RGB values as the ones specified by the arguments. The * RGB values on the returned instance will be the color values of * the operating system color. ** You must dispose the color when it is no longer required. *
* * @param device the device on which to allocate the color * @param red the amount of red in the color * @param green the amount of green in the color * @param blue the amount of blue in the color * * @exception IllegalArgumentExceptionRGB
describing the desired red, green and blue values.
* On limited color devices, the color instance created by this call
* may not have the same RGB values as the ones specified by the
* argument. The RGB values on the returned instance will be the color
* values of the operating system color.
* * You must dispose the color when it is no longer required. *
* * @param device the device on which to allocate the color * @param rgb the RGB values of the desired color * * @exception IllegalArgumentExceptiontrue
if the object is the same as this object and false
otherwise
*
* @see #hashCode
*/
public boolean equals(Object object) {
if (object == this) return true;
if (!(object instanceof Color)) return false;
Color color = (Color)object;
float /*double*/ [] rgbColor = color.handle;
if (handle == rgbColor) return true;
return device == color.device &&
(int)(handle[0] * 255) == (int)(rgbColor[0] * 255) &&
(int)(handle[1] * 255) == (int)(rgbColor[1] * 255) &&
(int)(handle[2] * 255) == (int)(rgbColor[2] * 255);
}
/**
* Returns the amount of blue in the color, from 0 to 255.
*
* @return the blue component of the color
*
* @exception SWTException true
when passed to
* equals
must return the same value for this
* method.
*
* @return the receiver's hash
*
* @see #equals
*/
public int hashCode() {
if (isDisposed()) return 0;
return (int)(handle[0] * 255) ^ (int)(handle[1] * 255) ^ (int)(handle[2] * 255);
}
/**
* Returns an RGB
representing the receiver.
*
* @return the RGB for the color
*
* @exception SWTException
* IMPORTANT: This method is not part of the public
* API for Color
. It is marked public only so that it
* can be shared within the packages provided by SWT. It is not
* available on all platforms, and should never be called from
* application code.
*
true
if the color has been disposed,
* and false
otherwise.
*
* This method gets the dispose state for the color.
* When a color has been disposed, it is an error to
* invoke any other method (except {@link #dispose()}) using the color.
*
* @return true
when the color is disposed and false
otherwise
*/
public boolean isDisposed() {
return handle == null;
}
/**
* Returns a string containing a concise, human-readable
* description of the receiver.
*
* @return a string representation of the receiver
*/
public String toString () {
if (isDisposed()) return "Color {*DISPOSED*}";
return "Color {" + getRed() + ", " + getGreen() + ", " + getBlue() + "}";
}
}