| /* 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() + "]"; |
| } |
| } |