001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.swt.graphics;
011:
012: import org.eclipse.swt.*;
013:
014: /**
015: * Instances of this class represent glyph metrics.
016: * <p>
017: * The hashCode() method in this class uses the values of the public
018: * fields to compute the hash value. When storing instances of the
019: * class in hashed collections, do not modify these fields after the
020: * object has been inserted.
021: * </p>
022: * <p>
023: * Application code does <em>not</em> need to explicitly release the
024: * resources managed by each instance when those instances are no longer
025: * required, and thus no <code>dispose()</code> method is provided.
026: * </p>
027: *
028: * @see TextStyle
029: * @see TextLayout
030: *
031: * @since 3.2
032: */
033: public final class GlyphMetrics {
034:
035: /**
036: * the ascent of the GlyphMetrics
037: */
038: public int ascent;
039:
040: /**
041: * the descent of the GlyphMetrics
042: */
043: public int descent;
044:
045: /**
046: * the width of the GlyphMetrics
047: */
048: public int width;
049:
050: /**
051: * Constructs an instance of this class with the given
052: * ascent, descent and width values.
053: *
054: * @exception IllegalArgumentException <ul>
055: * <li>ERROR_INVALID_ARGUMENT - if the ascent, descent or width argument is negative</li>
056: * </ul>
057: */
058: public GlyphMetrics(int ascent, int descent, int width) {
059: if (ascent < 0 || descent < 0 || width < 0) {
060: SWT.error(SWT.ERROR_INVALID_ARGUMENT);
061: }
062: this .ascent = ascent;
063: this .descent = descent;
064: this .width = width;
065: }
066:
067: /**
068: * Compares the argument to the receiver, and returns true
069: * if they represent the <em>same</em> object using a class
070: * specific comparison.
071: *
072: * @param object the object to compare with this object
073: * @return <code>true</code> if the object is the same as this object and <code>false</code> otherwise
074: *
075: * @see #hashCode()
076: */
077: public boolean equals(Object object) {
078: if (object == this )
079: return true;
080: if (!(object instanceof GlyphMetrics))
081: return false;
082: GlyphMetrics metrics = (GlyphMetrics) object;
083: return metrics.ascent == ascent && metrics.descent == descent
084: && metrics.width == width;
085: }
086:
087: /**
088: * Returns an integer hash code for the receiver. Any two
089: * objects that return <code>true</code> when passed to
090: * <code>equals</code> must return the same value for this
091: * method.
092: *
093: * @return the receiver's hash
094: *
095: * @see #equals(Object)
096: */
097: public int hashCode() {
098: return ascent ^ descent ^ width;
099: }
100:
101: /**
102: * Returns a string containing a concise, human-readable
103: * description of the receiver.
104: *
105: * @return a string representation of the <code>GlyphMetrics</code>
106: */
107: public String toString() {
108: return "GlyphMetrics {" + ascent + ", " + descent + ", " + width + "}"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
109: }
110:
111: }
|