| /* Copyright (C) 2000 Free Software Foundation | |
| This file is part of libgcj. | |
| This software is copyrighted work licensed under the terms of the | |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for | |
| details. */ | |
| package java.awt; | |
| /** | |
| * Status: Stubbed; A very incomplete implementation. | |
| */ | |
| public class FontMetrics implements java.io.Serializable | |
| { | |
| protected Font font; | |
| protected FontMetrics(Font font) | |
| { | |
| this.font = font; | |
| } | |
| public Font getFont() | |
| { | |
| return font; | |
| } | |
| public int getLeading() | |
| { | |
| return getMaxAscent() + getMaxDescent() - (getAscent() + getDescent()); | |
| } | |
| public int getAscent() | |
| { | |
| return getHeight() - (getDescent() + getLeading()); | |
| } | |
| public int getDescent() | |
| { | |
| return getHeight() - (getLeading() + getDescent()); | |
| } | |
| public int getHeight() | |
| { | |
| return getLeading() + getAscent() + getDescent(); | |
| } | |
| public int getMaxAscent() | |
| { | |
| return getAscent(); | |
| } | |
| public int getMaxDescent() | |
| { | |
| return getDescent(); | |
| } | |
| /* @deprecated Use getMaxDescent() instead. */ | |
| public int getMaxDecent() | |
| { | |
| return getMaxDescent(); | |
| } | |
| /** @return max advance, or -1 if unknown. */ | |
| public int getMaxAdvance() | |
| { | |
| return -1; | |
| } | |
| public int charWidth(int ch) | |
| { | |
| return charWidth((char) ch); | |
| } | |
| public int charWidth(char ch) | |
| { | |
| Character chObj = new Character(ch); | |
| return stringWidth(chObj.toString()); | |
| } | |
| public int stringWidth(String str) | |
| { | |
| return charsWidth(str.toCharArray(), 0, str.length()); | |
| } | |
| public int charsWidth(char[] data, int off, int len) | |
| { | |
| return stringWidth(new String(data, off, len)); | |
| } | |
| public int bytesWidth(byte[] data, int off, int len) | |
| { | |
| return stringWidth(new String(data, off, len)); | |
| } | |
| public int[] getWidths() | |
| { | |
| int[] widths = new int[256]; | |
| for (char c=0; c<256; c++) widths[c] = charWidth(c); | |
| return widths; | |
| } | |
| public boolean hasUniformLineMetrics() | |
| { | |
| // FIXME | |
| return false; | |
| } | |
| // Don't have LineMetrics yet... | |
| /* | |
| public LineMetrics getLineMetrics(String str, Graphics context) | |
| public LineMetrics getLineMetrics(String str, int beginIndex, int limit, | |
| Graphics context) | |
| public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, | |
| Graphics context) | |
| public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, | |
| int limit, Graphics context) | |
| */ | |
| // Don't have Java2D yet. | |
| /* | |
| public Rectangle2D getStringBounds(String str, Graphics context) | |
| public Rectangle2D getStringBounds(String str, int beginIndex, int limit, | |
| Graphics context) | |
| public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, | |
| Graphics context) | |
| public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, | |
| int limit, Graphics context) | |
| public Rectangle2D getMaxCharBounds(Graphics context) | |
| */ | |
| public String toString() | |
| { | |
| return this.getClass() + "[font=" + font + ",ascent=" + getAscent() | |
| + ",descent=" + getDescent() + ",height=" + getHeight() + "]"; | |
| } | |
| } |