Commit b53d0783 by Michael Koch Committed by Michael Koch

FontMetrics.java: Reformatted.

2005-04-19  Michael Koch  <konqueror@gmx.de>

	* java/awt/FontMetrics.java: Reformatted.
	(getFontRenderContext): Handle case when java.awt.Graphics context is
	given.

2005-04-19  Michael Koch  <konqueror@gmx.de>

	* java/awt/FontMetrics.java
	(getStringBounds): New methods.

From-SVN: r98398
parent fd603291
2005-04-19 Michael Koch <konqueror@gmx.de> 2005-04-19 Michael Koch <konqueror@gmx.de>
* java/awt/FontMetrics.java: Reformatted.
(getFontRenderContext): Handle case when java.awt.Graphics context is
given.
2005-04-19 Michael Koch <konqueror@gmx.de>
* java/awt/FontMetrics.java
(getStringBounds): New methods.
2005-04-19 Michael Koch <konqueror@gmx.de>
* gnu/java/security/x509/X509Certificate.java * gnu/java/security/x509/X509Certificate.java
(parse): Handle val == null case. (parse): Handle val == null case.
......
/* FontMetrics.java -- Information about about a fonts display characteristics /* FontMetrics.java -- Information about about a fonts display characteristics
Copyright (C) 1999, 2002 Free Software Foundation, Inc. Copyright (C) 1999, 2002, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -40,6 +40,7 @@ package java.awt; ...@@ -40,6 +40,7 @@ package java.awt;
import java.awt.font.FontRenderContext; import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics; import java.awt.font.LineMetrics;
import java.awt.geom.Rectangle2D;
import java.text.CharacterIterator; import java.text.CharacterIterator;
// FIXME: I leave many methods basically unimplemented. This // FIXME: I leave many methods basically unimplemented. This
...@@ -49,7 +50,7 @@ import java.text.CharacterIterator; ...@@ -49,7 +50,7 @@ import java.text.CharacterIterator;
* This class returns information about the display characteristics of * This class returns information about the display characteristics of
* a font. It is abstract, and concrete subclasses should implement at * a font. It is abstract, and concrete subclasses should implement at
* least the following methods: * least the following methods:
* <p> *
* <ul> * <ul>
* <li>getAscent()</li> * <li>getAscent()</li>
* <li>getDescent()</li> * <li>getDescent()</li>
...@@ -63,148 +64,103 @@ import java.text.CharacterIterator; ...@@ -63,148 +64,103 @@ import java.text.CharacterIterator;
*/ */
public abstract class FontMetrics implements java.io.Serializable public abstract class FontMetrics implements java.io.Serializable
{ {
// Serialization constant.
private static final long serialVersionUID = 1681126225205050147L;
/* /**
* Static Variables
*/
// Serialization constant
private static final long serialVersionUID = 1681126225205050147L;
/*************************************************************************/
/*
* Instance Variables
*/
/**
* This is the font for which metrics will be returned. * This is the font for which metrics will be returned.
*/ */
protected Font font; protected Font font;
/*************************************************************************/ /**
/*
* Constructors
*/
/**
* Initializes a new instance of <code>FontMetrics</code> for the * Initializes a new instance of <code>FontMetrics</code> for the
* specified font. * specified font.
* *
* @param font The font to return metric information for. * @param font The font to return metric information for.
*/ */
protected protected FontMetrics(Font font)
FontMetrics(Font font) {
{
this.font = font; this.font = font;
} }
/*************************************************************************/
/*
* Instance Methods
*/
/** /**
* Returns the font that this object is creating metric information fo. * Returns the font that this object is creating metric information fo.
* *
* @return The font for this object. * @return The font for this object.
*/ */
public Font public Font getFont()
getFont() {
{ return font;
return(font); }
}
/*************************************************************************/
/** /**
* Returns the leading, or spacing between lines, for this font. * Returns the leading, or spacing between lines, for this font.
* *
* @return The font leading. * @return The font leading.
*/ */
public int public int getLeading()
getLeading() {
{ return 0;
return(0); }
}
/*************************************************************************/
/** /**
* Returns the ascent of the font, which is the distance from the base * 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 * to the top of the majority of characters in the set. Some characters
* can exceed this value however. * can exceed this value however.
* *
* @return The font ascent. * @return The font ascent.
*/ */
public int public int getAscent()
getAscent() {
{ return 1;
return(1); }
}
/*************************************************************************/
/** /**
* Returns the descent of the font, which is the distance from the base * 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 * to the bottom of the majority of characters in the set. Some characters
* can exceed this value however. * can exceed this value however.
* *
* @return The font descent. * @return The font descent.
*/ */
public int public int getDescent()
getDescent() {
{ return 1;
return(1); }
}
/*************************************************************************/
/** /**
* Returns the height of a line in this font. This will be the sum * Returns the height of a line in this font. This will be the sum
* of the leading, the ascent, and the descent. * of the leading, the ascent, and the descent.
* *
* @return The height of the font. * @return The height of the font.
*/ */
public int public int getHeight()
getHeight() {
{ return getAscent() + getDescent() + getLeading();
return(getAscent() + getDescent() + getLeading()); }
}
/*************************************************************************/
/** /**
* Returns the maximum ascent value. This is the maximum distance any * Returns the maximum ascent value. This is the maximum distance any
* character in the font rised above the baseline. * character in the font rised above the baseline.
* *
* @return The maximum ascent for this font. * @return The maximum ascent for this font.
*/ */
public int public int getMaxAscent()
getMaxAscent() {
{ return getAscent();
return(getAscent()); }
}
/*************************************************************************/
/** /**
* Returns the maximum descent value. This is the maximum distance any * Returns the maximum descent value. This is the maximum distance any
* character in the font extends below the baseline. * character in the font extends below the baseline.
* *
* @return The maximum descent for this font. * @return The maximum descent for this font.
*/ */
public int public int getMaxDescent()
getMaxDescent() {
{ return getMaxDecent();
return getMaxDecent (); }
}
/*************************************************************************/
/** /**
* Returns the maximum descent value. This is the maximum distance any * Returns the maximum descent value. This is the maximum distance any
* character in the font extends below the baseline. * character in the font extends below the baseline.
* *
...@@ -213,76 +169,61 @@ getMaxDescent() ...@@ -213,76 +169,61 @@ getMaxDescent()
* @deprecated This method is deprecated in favor of * @deprecated This method is deprecated in favor of
* <code>getMaxDescent()</code>. * <code>getMaxDescent()</code>.
*/ */
public int public int getMaxDecent()
getMaxDecent() {
{ return getDescent();
return getDescent (); }
}
/*************************************************************************/
/** /**
* Returns the width of the widest character in the font. * Returns the width of the widest character in the font.
* *
* @return The width of the widest character in the font. * @return The width of the widest character in the font.
*/ */
public int public int getMaxAdvance()
getMaxAdvance() {
{ return -1;
return(-1); }
}
/*************************************************************************/
/** /**
* Returns the width of the specified character. * Returns the width of the specified character.
* *
* @param ch The character to return the width of. * @param ch The character to return the width of.
* *
* @return The width of the specified character. * @return The width of the specified character.
*/ */
public int public int charWidth(int ch)
charWidth(int ch) {
{ return charWidth((char) ch);
return(charWidth((char)ch)); }
}
/*************************************************************************/
/** /**
* Returns the width of the specified character. * Returns the width of the specified character.
* *
* @param ch The character to return the width of. * @param ch The character to return the width of.
* *
* @return The width of the specified character. * @return The width of the specified character.
*/ */
public int public int charWidth(char ch)
charWidth(char ch) {
{ return 1;
return(1); }
}
/*************************************************************************/
/** /**
* Returns the total width of the specified string * Returns the total width of the specified string
* *
* @param str The string to return the width of. * @param str The string to return the width of.
* *
* @return The width of the string. * @return The width of the string.
*/ */
public int public int stringWidth(String str)
stringWidth(String str) {
{
char[] buf = new char[str.length()]; char[] buf = new char[str.length()];
str.getChars(0, str.length(), buf, 0); str.getChars(0, str.length(), buf, 0);
return(charsWidth(buf, 0, buf.length)); return charsWidth(buf, 0, buf.length);
} }
/*************************************************************************/
/** /**
* Returns the total width of the specified character array. * Returns the total width of the specified character array.
* *
* @param buf The character array containing the data. * @param buf The character array containing the data.
...@@ -291,18 +232,15 @@ stringWidth(String str) ...@@ -291,18 +232,15 @@ stringWidth(String str)
* *
* @return The width of the requested characters. * @return The width of the requested characters.
*/ */
public int public int charsWidth(char[] buf, int offset, int len)
charsWidth(char buf[], int offset, int len) {
{
int total_width = 0; int total_width = 0;
for (int i = offset; i < len; i++) for (int i = offset; i < len; i++)
total_width += charWidth(buf[i]); total_width += charWidth(buf[i]);
return(total_width); return total_width;
} }
/*************************************************************************/
/** /**
* Returns the total width of the specified byte array. * Returns the total width of the specified byte array.
* *
* @param buf The byte array containing the data. * @param buf The byte array containing the data.
...@@ -311,56 +249,46 @@ charsWidth(char buf[], int offset, int len) ...@@ -311,56 +249,46 @@ charsWidth(char buf[], int offset, int len)
* *
* @return The width of the requested characters. * @return The width of the requested characters.
*/ */
public int public int bytesWidth(byte[] buf, int offset, int len)
bytesWidth(byte buf[], int offset, int len) {
{
int total_width = 0; int total_width = 0;
for (int i = offset; i < len; i++) for (int i = offset; i < len; i++)
total_width = charWidth((char)buf[i]); total_width = charWidth((char) buf[i]);
return(total_width); return total_width;
} }
/*************************************************************************/
/** /**
* Returns the widths of the first 256 characters in the font. * Returns the widths of the first 256 characters in the font.
* *
* @return The widths of the first 256 characters in the font. * @return The widths of the first 256 characters in the font.
*/ */
public int[] public int[] getWidths()
getWidths()
{
int [] result = new int[256];
for(char i = 0; i < 256; i++)
{ {
result[i]= charWidth(i); int[] result = new int[256];
for (char i = 0; i < 256; i++)
result[i] = charWidth(i);
return result;
} }
return(result);
}
/*************************************************************************/
/** /**
* Returns a string representation of this object. * Returns a string representation of this object.
* *
* @return A string representation of this object. * @return A string representation of this object.
*/ */
public String public String toString()
toString() {
{
return (this.getClass() + "[font=" + font + ",ascent=" + getAscent() return (this.getClass() + "[font=" + font + ",ascent=" + getAscent()
+ ",descent=" + getDescent() + ",height=" + getHeight() + "]"); + ",descent=" + getDescent() + ",height=" + getHeight() + "]");
} }
// Generic FontRenderContext used when getLineMetrics is called with a // Generic FontRenderContext used when getLineMetrics is called with a
// plain Graphics object. // plain Graphics object.
private static final FontRenderContext gRC = new FontRenderContext(null, private static final FontRenderContext gRC = new FontRenderContext(null,
false, false,
false); false);
/** /**
* Returns a {@link LineMetrics} object constructed with the * Returns a {@link LineMetrics} object constructed with the
* specified text and the {@link FontRenderContext} of the Graphics * specified text and the {@link FontRenderContext} of the Graphics
* object when it is an instance of Graphics2D or a generic * object when it is an instance of Graphics2D or a generic
...@@ -372,12 +300,12 @@ private static final FontRenderContext gRC = new FontRenderContext(null, ...@@ -372,12 +300,12 @@ private static final FontRenderContext gRC = new FontRenderContext(null,
* *
* @return A new {@link LineMetrics} object. * @return A new {@link LineMetrics} object.
*/ */
public LineMetrics getLineMetrics(String text, Graphics g) public LineMetrics getLineMetrics(String text, Graphics g)
{ {
return getLineMetrics(text, 0, text.length(), g); return getLineMetrics(text, 0, text.length(), g);
} }
/** /**
* Returns a {@link LineMetrics} object constructed with the * Returns a {@link LineMetrics} object constructed with the
* specified text and the {@link FontRenderContext} of the Graphics * specified text and the {@link FontRenderContext} of the Graphics
* object when it is an instance of Graphics2D or a generic * object when it is an instance of Graphics2D or a generic
...@@ -394,18 +322,18 @@ public LineMetrics getLineMetrics(String text, Graphics g) ...@@ -394,18 +322,18 @@ public LineMetrics getLineMetrics(String text, Graphics g)
* @throws IndexOutOfBoundsException if the range [begin, limit] is * @throws IndexOutOfBoundsException if the range [begin, limit] is
* invalid in <code>text</code>. * invalid in <code>text</code>.
*/ */
public LineMetrics getLineMetrics(String text, int begin, public LineMetrics getLineMetrics(String text, int begin, int limit,
int limit, Graphics g) Graphics g)
{ {
FontRenderContext rc; FontRenderContext rc;
if (g instanceof Graphics2D) if (g instanceof Graphics2D)
rc = ((Graphics2D) g).getFontRenderContext(); rc = ((Graphics2D) g).getFontRenderContext();
else else
rc = gRC; rc = gRC;
return font.getLineMetrics(text, begin, limit, rc); return font.getLineMetrics(text, begin, limit, rc);
} }
/** /**
* Returns a {@link LineMetrics} object constructed with the * Returns a {@link LineMetrics} object constructed with the
* specified text and the {@link FontRenderContext} of the Graphics * specified text and the {@link FontRenderContext} of the Graphics
* object when it is an instance of Graphics2D or a generic * object when it is an instance of Graphics2D or a generic
...@@ -422,18 +350,18 @@ public LineMetrics getLineMetrics(String text, int begin, ...@@ -422,18 +350,18 @@ public LineMetrics getLineMetrics(String text, int begin,
* @throws IndexOutOfBoundsException if the range [begin, limit] is * @throws IndexOutOfBoundsException if the range [begin, limit] is
* invalid in <code>text</code>. * invalid in <code>text</code>.
*/ */
public LineMetrics getLineMetrics(char[] chars, int begin, public LineMetrics getLineMetrics(char[] chars, int begin, int limit,
int limit, Graphics g) Graphics g)
{ {
FontRenderContext rc; FontRenderContext rc;
if (g instanceof Graphics2D) if (g instanceof Graphics2D)
rc = ((Graphics2D) g).getFontRenderContext(); rc = ((Graphics2D) g).getFontRenderContext();
else else
rc = gRC; rc = gRC;
return font.getLineMetrics(chars, begin, limit, rc); return font.getLineMetrics(chars, begin, limit, rc);
} }
/** /**
* Returns a {@link LineMetrics} object constructed with the * Returns a {@link LineMetrics} object constructed with the
* specified text and the {@link FontRenderContext} of the Graphics * specified text and the {@link FontRenderContext} of the Graphics
* object when it is an instance of Graphics2D or a generic * object when it is an instance of Graphics2D or a generic
...@@ -450,14 +378,48 @@ public LineMetrics getLineMetrics(char[] chars, int begin, ...@@ -450,14 +378,48 @@ public LineMetrics getLineMetrics(char[] chars, int begin,
* @throws IndexOutOfBoundsException if the range [begin, limit] is * @throws IndexOutOfBoundsException if the range [begin, limit] is
* invalid in <code>text</code>. * invalid in <code>text</code>.
*/ */
public LineMetrics getLineMetrics(CharacterIterator ci, int begin, public LineMetrics getLineMetrics(CharacterIterator ci, int begin,
int limit, Graphics g) int limit, Graphics g)
{ {
FontRenderContext rc; FontRenderContext rc;
if (g instanceof Graphics2D) if (g instanceof Graphics2D)
rc = ((Graphics2D) g).getFontRenderContext(); rc = ((Graphics2D) g).getFontRenderContext();
else else
rc = gRC; rc = gRC;
return font.getLineMetrics(ci, begin, limit, rc); 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)
{
return font.getStringBounds(str, beginIndex, limit,
getFontRenderContext(context));
}
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit,
Graphics context)
{
return font.getStringBounds(chars, beginIndex, limit,
getFontRenderContext(context));
}
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex,
int limit, Graphics context)
{
return font.getStringBounds(ci, beginIndex, limit,
getFontRenderContext(context));
}
private FontRenderContext getFontRenderContext(Graphics context)
{
if (context instanceof Graphics2D)
return ((Graphics2D) context).getFontRenderContext();
return gRC;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment