package org.eclipse.swt.graphics;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved
*/
import org.eclipse.swt.internal.win32.*;
import org.eclipse.swt.*;
/**
* Instances of this class manage operating system resources that
* define how text looks when it is displayed. Fonts may be constructed
* by providing a device and either name, size and style information
* or a FontData
object which encapsulates this data.
*
* Application code must explicitly invoke the Font.dispose()
* method to release the operating system resources managed by each instance
* when those instances are no longer required.
*
* You must dispose the font when it is no longer required. *
* * @param device the device to create the font on * @param fd the FontData that describes the desired font (must not be null) * * @exception IllegalArgumentException* You must dispose the font when it is no longer required. *
* * @param device the device to create the font on * @param name the name of the font (must not be null) * @param height the font height in points * @param style a bit or combination of NORMAL, BOLD, ITALIC * * @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 Font)) return false;
Font font = (Font) object;
return device == font.device && handle == font.handle;
}
/**
* Returns an array of FontData
s representing the receiver.
* On Windows, only one FontData will be returned per font. On X however,
* a Font
object may be composed of multiple X
* fonts. To support this case, we return an array of font data objects.
*
* @return an array of font data objects describing the receiver
*
* @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 () {
return handle;
}
void init (Device device, FontData fd) {
if (fd == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
this.device = device;
LOGFONT logFont = fd.data;
int lfHeight = logFont.lfHeight;
logFont.lfHeight = device.computePixels(fd.height);
handle = OS.CreateFontIndirect(logFont);
logFont.lfHeight = lfHeight;
if (handle == 0) SWT.error(SWT.ERROR_NO_HANDLES);
}
/**
* Returns true
if the font has been disposed,
* and false
otherwise.
*
* This method gets the dispose state for the font.
* When a font has been disposed, it is an error to
* invoke any other method using the font.
*
* @return true
when the font is disposed and false
otherwise
*/
public boolean isDisposed() {
return handle == 0;
}
/**
* 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 "Font {*DISPOSED*}";
return "Font {" + handle + "}";
}
/**
* Invokes platform specific functionality to allocate a new font.
*
* IMPORTANT: This method is not part of the public
* API for Font
. 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.
*