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.