public class TextUtilities
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
private static boolean |
drawStringsWithFontAttributes
When this flag is set to
true, strings will be drawn
as attributed strings with the attributes taken from the current font. |
protected static LogContext |
logger
Access to logging facilities.
|
private static boolean |
useDrawRotatedStringWorkaround
A flag that controls whether or not the rotated string workaround is
used.
|
private static boolean |
useFontMetricsGetStringBounds
A flag that controls whether the FontMetrics.getStringBounds() method
is used or a workaround is applied.
|
| Modifier | Constructor and Description |
|---|---|
private |
TextUtilities()
Private constructor prevents object creation.
|
| Modifier and Type | Method and Description |
|---|---|
static java.awt.Shape |
calculateRotatedStringBounds(java.lang.String text,
java.awt.Graphics2D g2,
float textX,
float textY,
double angle,
float rotateX,
float rotateY)
Returns a shape that represents the bounds of the string after the
specified rotation has been applied.
|
static java.awt.Shape |
calculateRotatedStringBounds(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor textAnchor,
double angle,
TextAnchor rotationAnchor)
Returns a shape that represents the bounds of the string after the
specified rotation has been applied.
|
static TextBlock |
createTextBlock(java.lang.String text,
java.awt.Font font,
java.awt.Paint paint)
Creates a
TextBlock from a String. |
static TextBlock |
createTextBlock(java.lang.String text,
java.awt.Font font,
java.awt.Paint paint,
float maxWidth,
int maxLines,
TextMeasurer measurer)
Creates a new text block from the given string, breaking the
text into lines so that the
maxWidth value is
respected. |
static TextBlock |
createTextBlock(java.lang.String text,
java.awt.Font font,
java.awt.Paint paint,
float maxWidth,
TextMeasurer measurer)
Creates a new text block from the given string, breaking the
text into lines so that the
maxWidth value is
respected. |
private static float[] |
deriveRotationAnchorOffsets(java.awt.Graphics2D g2,
java.lang.String text,
TextAnchor anchor)
A utility method that calculates the rotation anchor offsets for a
string.
|
private static float[] |
deriveTextBoundsAnchorOffsets(java.awt.Graphics2D g2,
java.lang.String text,
TextAnchor anchor)
A utility method that calculates the anchor offsets for a string.
|
private static float[] |
deriveTextBoundsAnchorOffsets(java.awt.Graphics2D g2,
java.lang.String text,
TextAnchor anchor,
java.awt.geom.Rectangle2D textBounds)
A utility method that calculates the anchor offsets for a string.
|
static java.awt.geom.Rectangle2D |
drawAlignedString(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor anchor)
Draws a string such that the specified anchor point is aligned to the
given (x, y) location.
|
static void |
drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
double angle,
float x,
float y)
A utility method for drawing rotated text.
|
static void |
drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
float textX,
float textY,
double angle,
float rotateX,
float rotateY)
A utility method for drawing rotated text.
|
static void |
drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor textAnchor,
double angle,
float rotationX,
float rotationY)
Draws a string that is aligned by one anchor point and rotated about
another anchor point.
|
static void |
drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor textAnchor,
double angle,
TextAnchor rotationAnchor)
Draws a string that is aligned by one anchor point and rotated about
another anchor point.
|
static boolean |
getDrawStringsWithFontAttributes()
Returns the flag that controls whether or not strings are drawn using
the current font attributes (such as underlining, strikethrough etc).
|
static java.awt.geom.Rectangle2D |
getTextBounds(java.lang.String text,
java.awt.Graphics2D g2,
java.awt.FontMetrics fm)
Returns the bounds for the specified text.
|
static boolean |
getUseFontMetricsGetStringBounds()
Returns the flag that controls whether the FontMetrics.getStringBounds()
method is used or not.
|
static boolean |
isUseDrawRotatedStringWorkaround()
Returns the flag that controls whether or not a workaround is used for
drawing rotated strings.
|
private static int |
nextLineBreak(java.lang.String text,
int start,
float width,
java.text.BreakIterator iterator,
TextMeasurer measurer)
Returns the character index of the next line break.
|
static void |
setDrawStringsWithFontAttributes(boolean b)
Sets the flag that controls whether or not strings are drawn using the
current font attributes.
|
static void |
setUseDrawRotatedStringWorkaround(boolean use)
Sets the flag that controls whether or not a workaround is used for
drawing rotated strings.
|
static void |
setUseFontMetricsGetStringBounds(boolean use)
Sets the flag that controls whether the FontMetrics.getStringBounds()
method is used or not.
|
protected static final LogContext logger
private static boolean drawStringsWithFontAttributes
true, strings will be drawn
as attributed strings with the attributes taken from the current font.
This allows for underlining, strike-out etc, but it means that
TextLayout will be used to render the text:
http://www.jfree.org/phpBB2/viewtopic.php?p=45459&highlight=#45459private static boolean useDrawRotatedStringWorkaround
private static boolean useFontMetricsGetStringBounds
private TextUtilities()
public static TextBlock createTextBlock(java.lang.String text, java.awt.Font font, java.awt.Paint paint)
text - the text.font - the font.paint - the paint.public static TextBlock createTextBlock(java.lang.String text, java.awt.Font font, java.awt.Paint paint, float maxWidth, TextMeasurer measurer)
maxWidth value is
respected.text - the text.font - the font.paint - the paint.maxWidth - the maximum width for each line.measurer - the text measurer.public static TextBlock createTextBlock(java.lang.String text, java.awt.Font font, java.awt.Paint paint, float maxWidth, int maxLines, TextMeasurer measurer)
maxWidth value is
respected.text - the text.font - the font.paint - the paint.maxWidth - the maximum width for each line.maxLines - the maximum number of lines.measurer - the text measurer.private static int nextLineBreak(java.lang.String text,
int start,
float width,
java.text.BreakIterator iterator,
TextMeasurer measurer)
width this method will return
start - the caller should check for this case.text - the text (null not permitted).start - the start index.width - the target display width.iterator - the word break iterator.measurer - the text measurer.public static java.awt.geom.Rectangle2D getTextBounds(java.lang.String text,
java.awt.Graphics2D g2,
java.awt.FontMetrics fm)
text - the text (null permitted).g2 - the graphics context (not null).fm - the font metrics (not null).null if the text
argument is null).public static java.awt.geom.Rectangle2D drawAlignedString(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor anchor)
text - the text.g2 - the graphics device.x - the x coordinate (Java 2D).y - the y coordinate (Java 2D).anchor - the anchor location.private static float[] deriveTextBoundsAnchorOffsets(java.awt.Graphics2D g2,
java.lang.String text,
TextAnchor anchor,
java.awt.geom.Rectangle2D textBounds)
g2 - the graphics device (not null).text - the text.anchor - the anchor point.textBounds - the text bounds (if not null, this
object will be updated by this method to match the
string bounds).public static void drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
double angle,
float x,
float y)
A common rotation is -Math.PI/2 which draws text 'vertically' (with the top of the characters on the left).
text - the text.g2 - the graphics device.angle - the angle of the (clockwise) rotation (in radians).x - the x-coordinate.y - the y-coordinate.public static void drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
float textX,
float textY,
double angle,
float rotateX,
float rotateY)
A common rotation is -Math.PI/2 which draws text 'vertically' (with the top of the characters on the left).
text - the text.g2 - the graphics device.textX - the x-coordinate for the text (before rotation).textY - the y-coordinate for the text (before rotation).angle - the angle of the (clockwise) rotation (in radians).rotateX - the point about which the text is rotated.rotateY - the point about which the text is rotated.public static void drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor textAnchor,
double angle,
float rotationX,
float rotationY)
text - the text.g2 - the graphics device.x - the x-coordinate for positioning the text.y - the y-coordinate for positioning the text.textAnchor - the text anchor.angle - the rotation angle.rotationX - the x-coordinate for the rotation anchor point.rotationY - the y-coordinate for the rotation anchor point.public static void drawRotatedString(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor textAnchor,
double angle,
TextAnchor rotationAnchor)
text - the text.g2 - the graphics device.x - the x-coordinate for positioning the text.y - the y-coordinate for positioning the text.textAnchor - the text anchor.angle - the rotation angle (in radians).rotationAnchor - the rotation anchor.public static java.awt.Shape calculateRotatedStringBounds(java.lang.String text,
java.awt.Graphics2D g2,
float x,
float y,
TextAnchor textAnchor,
double angle,
TextAnchor rotationAnchor)
text - the text (null permitted).g2 - the graphics device.x - the x coordinate for the anchor point.y - the y coordinate for the anchor point.textAnchor - the text anchor.angle - the angle.rotationAnchor - the rotation anchor.null).private static float[] deriveTextBoundsAnchorOffsets(java.awt.Graphics2D g2,
java.lang.String text,
TextAnchor anchor)
g2 - the graphics device (not null).text - the text.anchor - the anchor point.private static float[] deriveRotationAnchorOffsets(java.awt.Graphics2D g2,
java.lang.String text,
TextAnchor anchor)
BASELINE_LEFT).g2 - the graphics device.text - the text.anchor - the anchor point.public static java.awt.Shape calculateRotatedStringBounds(java.lang.String text,
java.awt.Graphics2D g2,
float textX,
float textY,
double angle,
float rotateX,
float rotateY)
text - the text (null permitted).g2 - the graphics device.textX - the x coordinate for the text.textY - the y coordinate for the text.angle - the angle.rotateX - the x coordinate for the rotation point.rotateY - the y coordinate for the rotation point.null if text is
null or has zero length).public static boolean getUseFontMetricsGetStringBounds()
public static void setUseFontMetricsGetStringBounds(boolean use)
use - the flag.public static boolean isUseDrawRotatedStringWorkaround()
public static void setUseDrawRotatedStringWorkaround(boolean use)
TextLayout
instance to draw the text instead of calling the
drawString() method in the Graphics2D class.use - the new flag value.public static boolean getDrawStringsWithFontAttributes()
false.public static void setDrawStringsWithFontAttributes(boolean b)
b - the new flag value.