diff options
author | Michael Koch <konqueror@gmx.de> | 2005-04-12 12:15:55 +0000 |
---|---|---|
committer | Michael Koch <konqueror@gmx.de> | 2005-04-12 12:15:55 +0000 |
commit | 5aae9f14c44b90a9a0c6b8b80df415ff1679612a (patch) | |
tree | cc1d65f385254c86e9b9ef0ed48272882adbc6e7 /java/awt/FontMetrics.java | |
parent | 28d3be05c16fcc9121ce04ad6fb55f1afde5ee63 (diff) | |
download | classpath-5aae9f14c44b90a9a0c6b8b80df415ff1679612a.tar.gz |
2005-04-12 Michael Koch <konqueror@gmx.de>
* java/awt/FontMetrics.java: Reformatted.
(getFontRenderContext): Handle case when java.awt.Graphics context is
given.
Diffstat (limited to 'java/awt/FontMetrics.java')
-rw-r--r-- | java/awt/FontMetrics.java | 695 |
1 files changed, 314 insertions, 381 deletions
diff --git a/java/awt/FontMetrics.java b/java/awt/FontMetrics.java index 65ee9c15f..c1d19846b 100644 --- a/java/awt/FontMetrics.java +++ b/java/awt/FontMetrics.java @@ -50,7 +50,7 @@ import java.text.CharacterIterator; * 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> * <li>getDescent()</li> @@ -64,422 +64,355 @@ import java.text.CharacterIterator; */ public abstract class FontMetrics implements java.io.Serializable { + // Serialization constant. + private static final long serialVersionUID = 1681126225205050147L; + + /** + * This is the font for which metrics will be returned. + */ + protected Font font; + + /** + * 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; + } -/* - * Static Variables - */ - -// 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 getMaxDecent (); -} - -/*************************************************************************/ - -/** - * 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 getDescent (); -} - -/*************************************************************************/ - -/** - * 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 font that this object is creating metric information fo. + * + * @return The font for this object. + */ + public Font getFont() + { + return font; + } -/** - * 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 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 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 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 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); + /** + * 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(); + } - return(charsWidth(buf, 0, buf.length)); -} + /** + * 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 getMaxDecent(); + } -/*************************************************************************/ + /** + * 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 getDescent(); + } -/** - * 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 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 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]); + /** + * 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; + } - return(total_width); -} + /** + * 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 widths of the first 256 characters in the font. - * - * @return The widths of the first 256 characters in the font. - */ -public int[] -getWidths() -{ - int [] result = new int[256]; - for(char i = 0; i < 256; i++) + /** + * 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) { - result[i]= charWidth(i); + int total_width = 0; + for (int i = offset; i < len; i++) + total_width += charWidth(buf[i]); + return total_width; } - return(result); -} -/*************************************************************************/ + /** + * 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]); -/** - * 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() + "]"); -} + 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() + { + int[] result = new int[256]; + for (char i = 0; i < 256; i++) + result[i] = charWidth(i); + return result; + } -// Generic FontRenderContext used when getLineMetrics is called with a -// plain Graphics object. -private static final FontRenderContext gRC = new FontRenderContext(null, - false, - false); + /** + * 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() + "]"); + } -/** - * Returns a {@link LineMetrics} object constructed with the - * specified text and the {@link FontRenderContext} of the Graphics - * object when it is an instance of Graphics2D or a generic - * FontRenderContext with a null transform, not anti-aliased and not - * using fractional metrics. - * - * @param text The string to calculate metrics from. - * @param g The Graphics object that will be used. - * - * @return A new {@link LineMetrics} object. - */ -public LineMetrics getLineMetrics(String text, Graphics g) -{ - return getLineMetrics(text, 0, text.length(), g); -} + // Generic FontRenderContext used when getLineMetrics is called with a + // plain Graphics object. + private static final FontRenderContext gRC = new FontRenderContext(null, + false, + false); + + /** + * Returns a {@link LineMetrics} object constructed with the + * specified text and the {@link FontRenderContext} of the Graphics + * object when it is an instance of Graphics2D or a generic + * FontRenderContext with a null transform, not anti-aliased and not + * using fractional metrics. + * + * @param text The string to calculate metrics from. + * @param g The Graphics object that will be used. + * + * @return A new {@link LineMetrics} object. + */ + public LineMetrics getLineMetrics(String text, Graphics g) + { + return getLineMetrics(text, 0, text.length(), g); + } -/** - * Returns a {@link LineMetrics} object constructed with the - * specified text and the {@link FontRenderContext} of the Graphics - * object when it is an instance of Graphics2D or a generic - * FontRenderContext with a null transform, not anti-aliased and not - * using fractional metrics. - * - * @param text The string to calculate metrics from. - * @param begin Index of first character in <code>text</code> to measure. - * @param limit Index of last character in <code>text</code> to measure. - * @param g The Graphics object that will be used. - * - * @return A new {@link LineMetrics} object. - * - * @throws IndexOutOfBoundsException if the range [begin, limit] is - * invalid in <code>text</code>. - */ -public LineMetrics getLineMetrics(String text, int begin, - int limit, Graphics g) -{ - FontRenderContext rc; - if (g instanceof Graphics2D) - rc = ((Graphics2D) g).getFontRenderContext(); - else - rc = gRC; - return font.getLineMetrics(text, begin, limit, rc); -} + /** + * Returns a {@link LineMetrics} object constructed with the + * specified text and the {@link FontRenderContext} of the Graphics + * object when it is an instance of Graphics2D or a generic + * FontRenderContext with a null transform, not anti-aliased and not + * using fractional metrics. + * + * @param text The string to calculate metrics from. + * @param begin Index of first character in <code>text</code> to measure. + * @param limit Index of last character in <code>text</code> to measure. + * @param g The Graphics object that will be used. + * + * @return A new {@link LineMetrics} object. + * + * @throws IndexOutOfBoundsException if the range [begin, limit] is + * invalid in <code>text</code>. + */ + public LineMetrics getLineMetrics(String text, int begin, int limit, + Graphics g) + { + FontRenderContext rc; + if (g instanceof Graphics2D) + rc = ((Graphics2D) g).getFontRenderContext(); + else + rc = gRC; + return font.getLineMetrics(text, begin, limit, rc); + } -/** - * Returns a {@link LineMetrics} object constructed with the - * specified text and the {@link FontRenderContext} of the Graphics - * object when it is an instance of Graphics2D or a generic - * FontRenderContext with a null transform, not anti-aliased and not - * using fractional metrics. - * - * @param chars The string to calculate metrics from. - * @param begin Index of first character in <code>text</code> to measure. - * @param limit Index of last character in <code>text</code> to measure. - * @param g The Graphics object that will be used. - * - * @return A new {@link LineMetrics} object. - * - * @throws IndexOutOfBoundsException if the range [begin, limit] is - * invalid in <code>text</code>. - */ -public LineMetrics getLineMetrics(char[] chars, int begin, - int limit, Graphics g) -{ - FontRenderContext rc; - if (g instanceof Graphics2D) - rc = ((Graphics2D) g).getFontRenderContext(); - else - rc = gRC; - return font.getLineMetrics(chars, begin, limit, rc); -} + /** + * Returns a {@link LineMetrics} object constructed with the + * specified text and the {@link FontRenderContext} of the Graphics + * object when it is an instance of Graphics2D or a generic + * FontRenderContext with a null transform, not anti-aliased and not + * using fractional metrics. + * + * @param chars The string to calculate metrics from. + * @param begin Index of first character in <code>text</code> to measure. + * @param limit Index of last character in <code>text</code> to measure. + * @param g The Graphics object that will be used. + * + * @return A new {@link LineMetrics} object. + * + * @throws IndexOutOfBoundsException if the range [begin, limit] is + * invalid in <code>text</code>. + */ + public LineMetrics getLineMetrics(char[] chars, int begin, int limit, + Graphics g) + { + FontRenderContext rc; + if (g instanceof Graphics2D) + rc = ((Graphics2D) g).getFontRenderContext(); + else + rc = gRC; + return font.getLineMetrics(chars, begin, limit, rc); + } -/** - * Returns a {@link LineMetrics} object constructed with the - * specified text and the {@link FontRenderContext} of the Graphics - * object when it is an instance of Graphics2D or a generic - * FontRenderContext with a null transform, not anti-aliased and not - * using fractional metrics. - * - * @param ci An iterator over the string to calculate metrics from. - * @param begin Index of first character in <code>text</code> to measure. - * @param limit Index of last character in <code>text</code> to measure. - * @param g The Graphics object that will be used. - * - * @return A new {@link LineMetrics} object. - * - * @throws IndexOutOfBoundsException if the range [begin, limit] is - * invalid in <code>text</code>. - */ -public LineMetrics getLineMetrics(CharacterIterator ci, int begin, - int limit, Graphics g) -{ - FontRenderContext rc; - if (g instanceof Graphics2D) - rc = ((Graphics2D) g).getFontRenderContext(); - else - rc = gRC; - return font.getLineMetrics(ci, begin, limit, rc); -} + /** + * Returns a {@link LineMetrics} object constructed with the + * specified text and the {@link FontRenderContext} of the Graphics + * object when it is an instance of Graphics2D or a generic + * FontRenderContext with a null transform, not anti-aliased and not + * using fractional metrics. + * + * @param ci An iterator over the string to calculate metrics from. + * @param begin Index of first character in <code>text</code> to measure. + * @param limit Index of last character in <code>text</code> to measure. + * @param g The Graphics object that will be used. + * + * @return A new {@link LineMetrics} object. + * + * @throws IndexOutOfBoundsException if the range [begin, limit] is + * invalid in <code>text</code>. + */ + public LineMetrics getLineMetrics(CharacterIterator ci, int begin, + int limit, Graphics g) + { + FontRenderContext rc; + if (g instanceof Graphics2D) + rc = ((Graphics2D) g).getFontRenderContext(); + else + rc = gRC; + return font.getLineMetrics(ci, begin, limit, rc); + } public Rectangle2D getStringBounds(String str, Graphics context) { return font.getStringBounds(str, getFontRenderContext(context)); } - public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context) + public Rectangle2D getStringBounds(String str, int beginIndex, int limit, + Graphics context) { - return font.getStringBounds(str, beginIndex, limit, getFontRenderContext(context)); + return font.getStringBounds(str, beginIndex, limit, + getFontRenderContext(context)); } - public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context) + public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, + Graphics context) { - return font.getStringBounds(chars, beginIndex, limit, getFontRenderContext(context)); + return font.getStringBounds(chars, beginIndex, limit, + getFontRenderContext(context)); } - public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context) + public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, + int limit, Graphics context) { - return font.getStringBounds(ci, beginIndex, limit, getFontRenderContext(context)); + return font.getStringBounds(ci, beginIndex, limit, + getFontRenderContext(context)); } private FontRenderContext getFontRenderContext(Graphics context) @@ -487,6 +420,6 @@ public LineMetrics getLineMetrics(CharacterIterator ci, int begin, if (context instanceof Graphics2D) return ((Graphics2D) context).getFontRenderContext(); - throw new UnsupportedOperationException("not implemented for Graphics contexts"); + return gRC; } } |