diff options
author | Tom Tromey <tromey@redhat.com> | 2002-01-22 22:03:04 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-01-22 22:03:04 +0000 |
commit | bda145054363dfa5eef640d526542bc6130a56d0 (patch) | |
tree | 317e29ad09d5c7d11f21d6999c1e4c2d70eb6650 /libjava/java/awt/FontMetrics.java | |
parent | e3b0efd1eeea460b091c1b9b9038605a672b1cb9 (diff) | |
download | gcc-bda145054363dfa5eef640d526542bc6130a56d0.zip gcc-bda145054363dfa5eef640d526542bc6130a56d0.tar.gz gcc-bda145054363dfa5eef640d526542bc6130a56d0.tar.bz2 |
ButtonPeer.java: Replace with Classpath version.
* java/awt/peer/ButtonPeer.java: Replace with Classpath version.
* java/awt/peer/CanvasPeer.java: Replace with Classpath version.
* java/awt/peer/CheckboxMenuItemPeer.java: Replace with Classpath
version.
* java/awt/peer/CheckboxPeer.java: Replace with Classpath version.
* java/awt/peer/ChoicePeer.java: Replace with Classpath version.
* java/awt/peer/ComponentPeer.java: Replace with Classpath version.
* java/awt/peer/ContainerPeer.java: Replace with Classpath version.
* java/awt/peer/DialogPeer.java: Replace with Classpath version.
* java/awt/peer/FileDialogPeer.java: Replace with Classpath version.
* java/awt/peer/FontPeer.java: Replace with Classpath version.
* java/awt/peer/FramePeer.java: Replace with Classpath version.
* java/awt/peer/LabelPeer.java: Replace with Classpath version.
* java/awt/peer/LightweightPeer.java: Replace with Classpath version.
* java/awt/peer/ListPeer.java: Replace with Classpath version.
* java/awt/peer/MenuBarPeer.java: Replace with Classpath version.
* java/awt/peer/MenuComponentPeer.java: Replace with Classpath version.
* java/awt/peer/MenuItemPeer.java: Replace with Classpath version.
* java/awt/peer/MenuPeer.java: Replace with Classpath version.
* java/awt/peer/PanelPeer.java: Replace with Classpath version.
* java/awt/peer/PopupMenuPeer.java: Replace with Classpath version.
* java/awt/peer/ScrollPanePeer.java: Replace with Classpath version.
* java/awt/peer/ScrollbarPeer.java: Replace with Classpath version.
* java/awt/peer/TextAreaPeer.java: Replace with Classpath version.
* java/awt/peer/TextComponentPeer.java: Replace with Classpath version.
* java/awt/peer/TextFieldPeer.java: Replace with Classpath version.
* java/awt/peer/WindowPeer.java: Replace with Classpath version.
* gnu/awt/xlib/XPanelPeer.java (insets): New method.
* gnu/awt/xlib/XCanvasPeer.java (show, hide): New methods.
(minimumSize, preferredSize, reshape): Likewise.
* gnu/awt/xlib/XFramePeer.java (insets, enable, disable,
getColorModel): New methods.
* java/awt/PopupMenu.java: Merged with Classpath.
* java/awt/MenuBar.java: Merged with Classpath.
* java/awt/SystemColor.java: Replace with Classpath version.
* java/awt/Panel.java: Merged with Classpath.
* java/awt/PaintContext.java: Updated copyright.
* java/awt/MenuShortcut.java: Merged with Classpath.
* java/awt/MenuContainer.java: Merged with Classpath.
* java/awt/Menu.java: Merged with Classpath.
* java/awt/MediaEntry.java: New file from Classpath.
* java/awt/MediaTracker.java: New file from Classpath.
* java/awt/List.java: Merged with Classpath version.
* java/awt/Insets.java: Merged with Classpath version.
* java/awt/ImageMediaEntry.java: New file from Classpath.
* java/awt/Image.java: Replaced with Classpath version.
* java/awt/FontMetrics.java: Merged with Classpath version.
* java/awt/Cursor.java (getDefaultCursor): Use DEFAULT_CURSOR
constant.
* java/awt/Font.java: Merged with Classpath version.
* java/awt/Dialog.java: Merged with Classpath version.
* java/awt/Color.java: Merged with Classpath version.
* java/awt/Choice.java: Merged with Classpath version.
* java/awt/CheckboxMenuItem.java: Merged with Classpath version.
* java/awt/Adjustable.java: Replace with Classpath version.
* java/awt/MenuItem.java (paramString): Don't include class name
or brackets. Call superclass paramString.
* java/awt/MenuComponent.java (toString): Call paramString.
(paramString): Compute string; don't call toString.
* java/awt/Label.java (paramString): Don't include class name
or brackets. Call superclass paramString.
* java/awt/Checkbox.java (paramString): Don't include class name
or brackets. Call superclass paramString.
* java/awt/Button.java (paramString): Don't include class name or
brackets. Call superclass paramString.
* java/awt/MenuComponent.java (getTreeLock): Now protected.
From-SVN: r49099
Diffstat (limited to 'libjava/java/awt/FontMetrics.java')
-rw-r--r-- | libjava/java/awt/FontMetrics.java | 466 |
1 files changed, 329 insertions, 137 deletions
diff --git a/libjava/java/awt/FontMetrics.java b/libjava/java/awt/FontMetrics.java index dcd0946..890ffd1 100644 --- a/libjava/java/awt/FontMetrics.java +++ b/libjava/java/awt/FontMetrics.java @@ -1,146 +1,338 @@ -/* Copyright (C) 2000 Free Software Foundation +/* FontMetrics.java -- Information about about a fonts display characteristics + Copyright (C) 1999, 2002 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.awt; +// FIXME: I leave many methods basically unimplemented. This +// should be reviewed. + /** - * Status: Stubbed; A very incomplete implementation. + * This class returns information about the display characteristics of + * a font. It is abstract, and concrete subclasses should implement at + * least the following methods: + * <p> + * <ul> + * <li>getAscent + * <li>getDescent + * <li>getLeading() + * <li>getMaxAdvance() + * <li>charWidth(char) + * <li>charsWidth(char[], int, int) + * </ul> + * + * @author Aaron M. Renn (arenn@urbanophile.com) + */ +public abstract class FontMetrics implements java.io.Serializable +{ + +/* + * Static Variables */ -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() + "]"; - } +// Serialization constant +private static final long serialVersionUID = 1681126225205050147L; + +/*************************************************************************/ + +/* + * Instance Variables + */ + +/** + * This is the font for which metrics will be returned. + */ +protected Font font; + +/*************************************************************************/ + +/* + * Constructors + */ + +/** + * Initializes a new instance of <code>FontMetrics</code> for the + * specified font. + * + * @param font The font to return metric information for. + */ +protected +FontMetrics(Font font) +{ + this.font = font; +} + +/*************************************************************************/ + +/* + * Instance Methods + */ + +/** + * Returns the font that this object is creating metric information fo. + * + * @return The font for this object. + */ +public Font +getFont() +{ + return(font); +} + +/*************************************************************************/ + +/** + * Returns the leading, or spacing between lines, for this font. + * + * @return The font leading. + */ +public int +getLeading() +{ + return(0); +} + +/*************************************************************************/ + +/** + * Returns the ascent of the font, which is the distance from the base + * to the top of the majority of characters in the set. Some characters + * can exceed this value however. + * + * @return The font ascent. + */ +public int +getAscent() +{ + return(1); +} + +/*************************************************************************/ + +/** + * Returns the descent of the font, which is the distance from the base + * to the bottom of the majority of characters in the set. Some characters + * can exceed this value however. + * + * @return The font descent. + */ +public int +getDescent() +{ + return(1); +} + +/*************************************************************************/ + +/** + * Returns the height of a line in this font. This will be the sum + * of the leading, the ascent, and the descent. + * + * @return The height of the font. + */ +public int +getHeight() +{ + return(getAscent() + getDescent() + getLeading()); +} + +/*************************************************************************/ + +/** + * Returns the maximum ascent value. This is the maximum distance any + * character in the font rised above the baseline. + * + * @return The maximum ascent for this font. + */ +public int +getMaxAscent() +{ + return(getAscent()); +} + +/*************************************************************************/ + +/** + * Returns the maximum descent value. This is the maximum distance any + * character in the font extends below the baseline. + * + * @return The maximum descent for this font. + */ +public int +getMaxDescent() +{ + return(getDescent()); +} + +/*************************************************************************/ + +/** + * Returns the maximum descent value. This is the maximum distance any + * character in the font extends below the baseline. + * + * @return The maximum descent for this font. + * + * @deprecated This method is deprecated in favor of + * <code>getMaxDescent()</code>. + */ +public int +getMaxDecent() +{ + return(getMaxDescent()); +} + +/*************************************************************************/ + +/** + * Returns the width of the widest character in the font. + * + * @return The width of the widest character in the font. + */ +public int +getMaxAdvance() +{ + return(-1); +} + +/*************************************************************************/ + +/** + * Returns the width of the specified character. + * + * @param ch The character to return the width of. + * + * @return The width of the specified character. + */ +public int +charWidth(int ch) +{ + return(charWidth((char)ch)); +} + +/*************************************************************************/ + +/** + * Returns the width of the specified character. + * + * @param ch The character to return the width of. + * + * @return The width of the specified character. + */ +public int +charWidth(char ch) +{ + return(1); +} + +/*************************************************************************/ + +/** + * Returns the total width of the specified string + * + * @param str The string to return the width of. + * + * @return The width of the string. + */ +public int +stringWidth(String str) +{ + char[] buf = new char[str.length()]; + str.getChars(0, str.length(), buf, 0); + + return(charsWidth(buf, 0, buf.length)); +} + +/*************************************************************************/ + +/** + * Returns the total width of the specified character array. + * + * @param buf The character array containing the data. + * @param offset The offset into the array to start calculating from. + * @param len The total number of bytes to process. + * + * @return The width of the requested characters. + */ +public int +charsWidth(char buf[], int offset, int len) +{ + int total_width = 0; + for (int i = offset; i < len; i++) + total_width = charWidth(buf[i]); + + return(total_width); } + +/*************************************************************************/ + +/** + * Returns the total width of the specified byte array. + * + * @param buf The byte array containing the data. + * @param offset The offset into the array to start calculating from. + * @param len The total number of bytes to process. + * + * @return The width of the requested characters. + */ +public int +bytesWidth(byte buf[], int offset, int len) +{ + int total_width = 0; + for (int i = offset; i < len; i++) + total_width = charWidth((char)buf[i]); + + return(total_width); +} + +/*************************************************************************/ + +/** + * Returns the widths of the first 256 characters in the font. + * + * @return The widths of the first 256 characters in the font. + */ +public int[] +getWidths() +{ + return(new int[256]); +} + +/*************************************************************************/ + +/** + * Returns a string representation of this object. + * + * @return A string representation of this object. + */ +public String +toString() +{ + return (this.getClass() + "[font=" + font + ",ascent=" + getAscent() + + ",descent=" + getDescent() + ",height=" + getHeight() + "]"); +} + +} // class FontMetrics + |