| java.lang.Object java.awt.font.TextLayout
TextLayout | final public class TextLayout implements Cloneable(Code) | | TextLayout is an immutable graphical representation of styled
character data.
It provides the following capabilities:
- implicit bidirectional analysis and reordering,
- cursor positioning and movement, including split cursors for
mixed directional text,
- highlighting, including both logical and visual highlighting
for mixed directional text,
- multiple baselines (roman, hanging, and centered),
- hit testing,
- justification,
- default font substitution,
- metric information such as ascent, descent, and advance, and
- rendering
A TextLayout object can be rendered using
its draw method.
TextLayout can be constructed either directly or through
the use of a
LineBreakMeasurer . When constructed directly, the
source text represents a single paragraph. LineBreakMeasurer
allows styled text to be broken into lines that fit within a particular
width. See the LineBreakMeasurer documentation for more
information.
TextLayout construction logically proceeds as follows:
- paragraph attributes are extracted and examined,
- text is analyzed for bidirectional reordering, and reordering
information is computed if needed,
- text is segmented into style runs
- fonts are chosen for style runs, first by using a font if the
attribute
TextAttribute.FONT is present, otherwise by computing
a default font using the attributes that have been defined
- if text is on multiple baselines, the runs or subruns are further
broken into subruns sharing a common baseline,
- glyphvectors are generated for each run using the chosen font,
- final bidirectional reordering is performed on the glyphvectors
All graphical information returned from a TextLayout
object's methods is relative to the origin of the
TextLayout , which is the intersection of the
TextLayout object's baseline with its left edge. Also,
coordinates passed into a TextLayout object's methods
are assumed to be relative to the TextLayout object's
origin. Clients usually need to translate between a
TextLayout object's coordinate system and the coordinate
system in another object (such as a
java.awt.Graphics Graphics object).
TextLayout objects are constructed from styled text,
but they do not retain a reference to their source text. Thus,
changes in the text previously used to generate a TextLayout
do not affect the TextLayout .
Three methods on a TextLayout object
(getNextRightHit , getNextLeftHit , and
hitTestChar ) return instances of
TextHitInfo .
The offsets contained in these TextHitInfo objects
are relative to the start of the TextLayout , not
to the text used to create the TextLayout . Similarly,
TextLayout methods that accept TextHitInfo
instances as parameters expect the TextHitInfo object's
offsets to be relative to the TextLayout , not to any
underlying text storage model.
Examples:
Constructing and drawing a TextLayout and its bounding
rectangle:
Graphics2D g = ...;
Point2D loc = ...;
Font font = Font.getFont("Helvetica-bold-italic");
FontRenderContext frc = g.getFontRenderContext();
TextLayout layout = new TextLayout("This is a string", font, frc);
layout.draw(g, (float)loc.getX(), (float)loc.getY());
Rectangle2D bounds = layout.getBounds();
bounds.setRect(bounds.getX()+loc.getX(),
bounds.getY()+loc.getY(),
bounds.getWidth(),
bounds.getHeight());
g.draw(bounds);
Hit-testing a TextLayout (determining which character is at
a particular graphical location):
Point2D click = ...;
TextHitInfo hit = layout.hitTestChar(
(float) (click.getX() - loc.getX()),
(float) (click.getY() - loc.getY()));
Responding to a right-arrow key press:
int insertionIndex = ...;
TextHitInfo next = layout.getNextRightHit(insertionIndex);
if (next != null) {
// translate graphics to origin of layout on screen
g.translate(loc.getX(), loc.getY());
Shape[] carets = layout.getCaretShapes(next.getInsertionIndex());
g.draw(carets[0]);
if (carets[1] != null) {
g.draw(carets[1]);
}
}
Drawing a selection range corresponding to a substring in the source text.
The selected area may not be visually contiguous:
// selStart, selLimit should be relative to the layout,
// not to the source text
int selStart = ..., selLimit = ...;
Color selectionColor = ...;
Shape selection = layout.getLogicalHighlightShape(selStart, selLimit);
// selection may consist of disjoint areas
// graphics is assumed to be tranlated to origin of layout
g.setColor(selectionColor);
g.fill(selection);
Drawing a visually contiguous selection range. The selection range may
correspond to more than one substring in the source text. The ranges of
the corresponding source text substrings can be obtained with
getLogicalRangesForVisualSelection() :
TextHitInfo selStart = ..., selLimit = ...;
Shape selection = layout.getVisualHighlightShape(selStart, selLimit);
g.setColor(selectionColor);
g.fill(selection);
int[] ranges = getLogicalRangesForVisualSelection(selStart, selLimit);
// ranges[0], ranges[1] is the first selection range,
// ranges[2], ranges[3] is the second selection range, etc.
Note: Font rotations can cause text baselines to be rotated, and
multiple runs with different rotations can cause the baseline to
bend or zig-zag. In order to account for this (rare) possibility,
some APIs are specified to return metrics and take parameters 'in
baseline-relative coordinates' (e.g. ascent, advance), and others
are in 'in standard coordinates' (e.g. getBounds). Values in
baseline-relative coordinates map the 'x' coordinate to the
distance along the baseline, (positive x is forward along the
baseline), and the 'y' coordinate to a distance along the
perpendicular to the baseline at 'x' (postitive y is 90 degrees
clockwise from the baseline vector). Values in standard
coordinates are measured along the x and y axes, with 0,0 at the
origin of the TextLayout. Documentation for each relevant API
indicates what values are in what coordinate system. In general,
measurement-related APIs are in baseline-relative coordinates,
while display-related APIs are in standard coordinates.
See Also: LineBreakMeasurer See Also: TextAttribute See Also: TextHitInfo See Also: LayoutPath |
Inner Class :public static class CaretPolicy | |
Field Summary | |
final public static CaretPolicy | DEFAULT_CARET_POLICY This CaretPolicy is used when a policy is not specified
by the client. |
Constructor Summary | |
public | TextLayout(String string, Font font, FontRenderContext frc) Constructs a TextLayout from a String
and a
Font . | public | TextLayout(String string, Map<? extends Attribute, ?> attributes, FontRenderContext frc) Constructs a TextLayout from a String
and an attribute set.
All the text is styled using the provided attributes.
string must specify a single paragraph of text because an
entire paragraph is required for the bidirectional algorithm.
Parameters: string - the text to display Parameters: attributes - the attributes used to style the text Parameters: frc - contains information about a graphics device which is needed to measure the text correctly.Text measurements can vary slightly depending on thedevice resolution, and attributes such as antialiasing. | public | TextLayout(AttributedCharacterIterator text, FontRenderContext frc) Constructs a TextLayout from an iterator over styled text.
The iterator must specify a single paragraph of text because an
entire paragraph is required for the bidirectional
algorithm.
Parameters: text - the styled text to display Parameters: frc - contains information about a graphics device which is needed to measure the text correctly.Text measurements can vary slightly depending on thedevice resolution, and attributes such as antialiasing. | | TextLayout(TextLine textLine, byte baseline, float[] baselineOffsets, float justifyRatio) Creates a TextLayout from a
TextLine and
some paragraph data. |
Method Summary | |
protected Object | clone() Creates a copy of this TextLayout . | public void | draw(Graphics2D g2, float x, float y) Renders this TextLayout at the specified location in
the specified
java.awt.Graphics2D Graphics2D context.
The origin of the layout is placed at x, y. | public boolean | equals(Object obj) Returns true if the specified Object is a
TextLayout object and if the specified Object
equals this TextLayout . | public boolean | equals(TextLayout rhs) Returns true if the two layouts are equal. | public float | getAdvance() Returns the advance of this TextLayout .
The advance is the distance from the origin to the advance of the
rightmost (bottommost) character. | public float | getAscent() Returns the ascent of this TextLayout .
The ascent is the distance from the top (right) of the
TextLayout to the baseline. | public byte | getBaseline() Returns the baseline for this TextLayout .
The baseline is one of the values defined in Font ,
which are roman, centered and hanging. | static byte | getBaselineFromGraphic(GraphicAttribute graphic) | public float[] | getBaselineOffsets() Returns the offsets array for the baselines used for this
TextLayout .
The array is indexed by one of the values defined in
Font , which are roman, centered and hanging. | public Shape | getBlackBoxBounds(int firstEndpoint, int secondEndpoint) Returns the black box bounds of the characters in the specified range.
The black box bounds is an area consisting of the union of the bounding
boxes of all the glyphs corresponding to the characters between start
and limit. | public Rectangle2D | getBounds() Returns the bounds of this TextLayout . | public float[] | getCaretInfo(TextHitInfo hit, Rectangle2D bounds) Returns information about the caret corresponding to hit .
The first element of the array is the intersection of the caret with
the baseline, as a distance along the baseline. | public float[] | getCaretInfo(TextHitInfo hit) Returns information about the caret corresponding to hit .
This method is a convenience overload of getCaretInfo and
uses the natural bounds of this TextLayout .
Parameters: hit - a hit on a character in this TextLayout the information about a caret corresponding to a hit. | public Shape | getCaretShape(TextHitInfo hit, Rectangle2D bounds) Returns a
Shape representing the caret at the specified
hit inside the specified bounds.
Parameters: hit - the hit at which to generate the caret Parameters: bounds - the bounds of the TextLayout to use in generating the caret. | public Shape | getCaretShape(TextHitInfo hit) Returns a Shape representing the caret at the specified
hit inside the natural bounds of this TextLayout .
Parameters: hit - the hit at which to generate the caret a Shape representing the caret. | public Shape[] | getCaretShapes(int offset, Rectangle2D bounds, CaretPolicy policy) Returns two paths corresponding to the strong and weak caret.
Parameters: offset - an offset in this TextLayout Parameters: bounds - the bounds to which to extend the carets. | public Shape[] | getCaretShapes(int offset, Rectangle2D bounds) Returns two paths corresponding to the strong and weak caret. | public Shape[] | getCaretShapes(int offset) Returns two paths corresponding to the strong and weak caret. | public int | getCharacterCount() Returns the number of characters represented by this
TextLayout . | public byte | getCharacterLevel(int index) Returns the level of the character at index . | public float | getDescent() Returns the descent of this TextLayout .
The descent is the distance from the baseline to the bottom (left) of
the TextLayout . | public TextLayout | getJustifiedLayout(float justificationWidth) Creates a copy of this TextLayout justified to the
specified width.
If this TextLayout has already been justified, an
exception is thrown. | public LayoutPath | getLayoutPath() Return the LayoutPath, or null if the layout path is the
default path (x maps to advance, y maps to offset). | public float | getLeading() Returns the leading of the TextLayout .
The leading is the suggested interline spacing for this
TextLayout . | public Shape | getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds) Returns a Shape enclosing the logical selection in the
specified range, extended to the specified bounds .
If the selection range includes the first logical character, the
selection is extended to the portion of bounds before
the start of this TextLayout . | public Shape | getLogicalHighlightShape(int firstEndpoint, int secondEndpoint) Returns a Shape enclosing the logical selection in the
specified range, extended to the natural bounds of this
TextLayout . | public int[] | getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint) Returns the logical ranges of text corresponding to a visual selection.
Parameters: firstEndpoint - an endpoint of the visual range Parameters: secondEndpoint - the other endpoint of the visual range.This endpoint can be less than firstEndpoint . | public TextHitInfo | getNextLeftHit(TextHitInfo hit) Returns the hit for the next caret to the left (top); if no such
hit, returns null .
If the hit character index is out of bounds, an
IllegalArgumentException is thrown.
Parameters: hit - a hit on a character in this TextLayout . | public TextHitInfo | getNextLeftHit(int offset, CaretPolicy policy) Returns the hit for the next caret to the left (top); if no
such hit, returns null . | public TextHitInfo | getNextLeftHit(int offset) Returns the hit for the next caret to the left (top); if no
such hit, returns null . | public TextHitInfo | getNextRightHit(TextHitInfo hit) Returns the hit for the next caret to the right (bottom); if there
is no such hit, returns null . | public TextHitInfo | getNextRightHit(int offset, CaretPolicy policy) Returns the hit for the next caret to the right (bottom); if no
such hit, returns null . | public TextHitInfo | getNextRightHit(int offset) Returns the hit for the next caret to the right (bottom); if no
such hit, returns null . | public Shape | getOutline(AffineTransform tx) Returns a Shape representing the outline of this
TextLayout .
Parameters: tx - an optional AffineTransform to apply to theoutline of this TextLayout . | public Rectangle | getPixelBounds(FontRenderContext frc, float x, float y) Returns the pixel bounds of this TextLayout when
rendered in a graphics with the given
FontRenderContext at the given location. | TextLine | getTextLineForTesting() Package-only method for testing ONLY. | public float | getVisibleAdvance() Returns the advance of this TextLayout , minus trailing
whitespace. | public Shape | getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds) Returns a path enclosing the visual selection in the specified range,
extended to bounds .
If the selection includes the leftmost (topmost) position, the selection
is extended to the left (top) of bounds . | public Shape | getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint) Returns a Shape enclosing the visual selection in the
specified range, extended to the bounds. | public TextHitInfo | getVisualOtherHit(TextHitInfo hit) Returns the hit on the opposite side of the specified hit's caret. | protected void | handleJustify(float justificationWidth) Justify this layout. | public int | hashCode() Returns the hash code of this TextLayout . | public TextHitInfo | hitTestChar(float x, float y, Rectangle2D bounds) Returns a TextHitInfo corresponding to the
specified point.
Coordinates outside the bounds of the TextLayout
map to hits on the leading edge of the first logical character,
or the trailing edge of the last logical character, as appropriate,
regardless of the position of that character in the line. | public TextHitInfo | hitTestChar(float x, float y) Returns a TextHitInfo corresponding to the
specified point. | public void | hitToPoint(TextHitInfo hit, Point2D point) Convert a hit to a point in standard coordinates. | public boolean | isLeftToRight() Returns true if this TextLayout has
a left-to-right base direction or false if it has
a right-to-left base direction. | public boolean | isVertical() Returns true if this TextLayout is vertical. | public String | toString() Returns debugging information for this TextLayout . |
DEFAULT_CARET_POLICY | final public static CaretPolicy DEFAULT_CARET_POLICY(Code) | | This CaretPolicy is used when a policy is not specified
by the client. With this policy, a hit on a character whose direction
is the same as the line direction is stronger than a hit on a
counterdirectional character. If the characters' directions are
the same, a hit on the leading edge of a character is stronger
than a hit on the trailing edge of a character.
|
TextLayout | public TextLayout(String string, Font font, FontRenderContext frc)(Code) | | Constructs a TextLayout from a String
and a
Font . All the text is styled using the specified
Font .
The String must specify a single paragraph of text,
because an entire paragraph is required for the bidirectional
algorithm.
Parameters: string - the text to display Parameters: font - a Font used to style the text Parameters: frc - contains information about a graphics device which is needed to measure the text correctly.Text measurements can vary slightly depending on thedevice resolution, and attributes such as antialiasing. Thisparameter does not specify a translation between theTextLayout and user space. |
TextLayout | public TextLayout(String string, Map<? extends Attribute, ?> attributes, FontRenderContext frc)(Code) | | Constructs a TextLayout from a String
and an attribute set.
All the text is styled using the provided attributes.
string must specify a single paragraph of text because an
entire paragraph is required for the bidirectional algorithm.
Parameters: string - the text to display Parameters: attributes - the attributes used to style the text Parameters: frc - contains information about a graphics device which is needed to measure the text correctly.Text measurements can vary slightly depending on thedevice resolution, and attributes such as antialiasing. Thisparameter does not specify a translation between theTextLayout and user space. |
TextLayout | public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)(Code) | | Constructs a TextLayout from an iterator over styled text.
The iterator must specify a single paragraph of text because an
entire paragraph is required for the bidirectional
algorithm.
Parameters: text - the styled text to display Parameters: frc - contains information about a graphics device which is needed to measure the text correctly.Text measurements can vary slightly depending on thedevice resolution, and attributes such as antialiasing. Thisparameter does not specify a translation between theTextLayout and user space. |
TextLayout | TextLayout(TextLine textLine, byte baseline, float[] baselineOffsets, float justifyRatio)(Code) | | Creates a TextLayout from a
TextLine and
some paragraph data. This method is used by
TextMeasurer .
Parameters: textLine - the line measurement attributes to apply to thethe resulting TextLayout Parameters: baseline - the baseline of the text Parameters: baselineOffsets - the baseline offsets for this TextLayout . This should already be normalized to baseline Parameters: justifyRatio - 0 if the TextLayout cannot be justified; 1 otherwise. |
clone | protected Object clone()(Code) | | Creates a copy of this TextLayout .
|
draw | public void draw(Graphics2D g2, float x, float y)(Code) | | Renders this TextLayout at the specified location in
the specified
java.awt.Graphics2D Graphics2D context.
The origin of the layout is placed at x, y. Rendering may touch
any point within getBounds() of this position. This
leaves the g2 unchanged. Text is rendered along the
baseline path.
Parameters: g2 - the Graphics2D context into which to renderthe layout Parameters: x - the X coordinate of the origin of this TextLayout Parameters: y - the Y coordinate of the origin of this TextLayout See Also: TextLayout.getBounds() |
equals | public boolean equals(Object obj)(Code) | | Returns true if the specified Object is a
TextLayout object and if the specified Object
equals this TextLayout .
Parameters: obj - an Object to test for equality true if the specified Object equals this TextLayout ; false otherwise. |
equals | public boolean equals(TextLayout rhs)(Code) | | Returns true if the two layouts are equal.
Two layouts are equal if they contain equal glyphvectors in the same order.
Parameters: rhs - the TextLayout to compare to this TextLayout true if the specified TextLayout equals this TextLayout . |
getAdvance | public float getAdvance()(Code) | | Returns the advance of this TextLayout .
The advance is the distance from the origin to the advance of the
rightmost (bottommost) character. This is in baseline-relative
coordinates.
the advance of this TextLayout . |
getAscent | public float getAscent()(Code) | | Returns the ascent of this TextLayout .
The ascent is the distance from the top (right) of the
TextLayout to the baseline. It is always either
positive or zero. The ascent is sufficient to
accomodate superscripted text and is the maximum of the sum of the
ascent, offset, and baseline of each glyph. The ascent is
the maximum ascent from the baseline of all the text in the
TextLayout. It is in baseline-relative coordinates.
the ascent of this TextLayout . |
getBaseline | public byte getBaseline()(Code) | | Returns the baseline for this TextLayout .
The baseline is one of the values defined in Font ,
which are roman, centered and hanging. Ascent and descent are
relative to this baseline. The baselineOffsets
are also relative to this baseline.
the baseline of this TextLayout . See Also: TextLayout.getBaselineOffsets() See Also: Font |
getBaselineOffsets | public float[] getBaselineOffsets()(Code) | | Returns the offsets array for the baselines used for this
TextLayout .
The array is indexed by one of the values defined in
Font , which are roman, centered and hanging. The
values are relative to this TextLayout object's
baseline, so that getBaselineOffsets[getBaseline()] == 0 .
Offsets are added to the position of the TextLayout
object's baseline to get the position for the new baseline.
the offsets array containing the baselines used for thisTextLayout . See Also: TextLayout.getBaseline() See Also: Font |
getBlackBoxBounds | public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint)(Code) | | Returns the black box bounds of the characters in the specified range.
The black box bounds is an area consisting of the union of the bounding
boxes of all the glyphs corresponding to the characters between start
and limit. This area can be disjoint.
Parameters: firstEndpoint - one end of the character range Parameters: secondEndpoint - the other end of the character range. Can beless than firstEndpoint . a Shape enclosing the black box bounds. This isin standard coordinates. |
getBounds | public Rectangle2D getBounds()(Code) | | Returns the bounds of this TextLayout .
The bounds are in standard coordinates.
Due to rasterization effects, this bounds might not enclose all of the
pixels rendered by the TextLayout.
It might not coincide exactly with the ascent, descent,
origin or advance of the TextLayout .
a Rectangle2D that is the bounds of thisTextLayout . |
getCaretInfo | public float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds)(Code) | | Returns information about the caret corresponding to hit .
The first element of the array is the intersection of the caret with
the baseline, as a distance along the baseline. The second element
of the array is the inverse slope (run/rise) of the caret, measured
with respect to the baseline at that point.
This method is meant for informational use. To display carets, it
is better to use getCaretShapes .
Parameters: hit - a hit on a character in this TextLayout Parameters: bounds - the bounds to which the caret info is constructed.The bounds is in baseline-relative coordinates. a two-element array containing the position and slope ofthe caret. The returned caret info is in baseline-relative coordinates. See Also: TextLayout.getCaretShapes(int,Rectangle2D,TextLayout.CaretPolicy) See Also: Font.getItalicAngle |
getCaretInfo | public float[] getCaretInfo(TextHitInfo hit)(Code) | | Returns information about the caret corresponding to hit .
This method is a convenience overload of getCaretInfo and
uses the natural bounds of this TextLayout .
Parameters: hit - a hit on a character in this TextLayout the information about a caret corresponding to a hit. Thereturned caret info is in baseline-relative coordinates. |
getCaretShape | public Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)(Code) | | Returns a
Shape representing the caret at the specified
hit inside the specified bounds.
Parameters: hit - the hit at which to generate the caret Parameters: bounds - the bounds of the TextLayout to use in generating the caret. The bounds is in baseline-relative coordinates. a Shape representing the caret. The returnedshape is in standard coordinates. |
getCaretShape | public Shape getCaretShape(TextHitInfo hit)(Code) | | Returns a Shape representing the caret at the specified
hit inside the natural bounds of this TextLayout .
Parameters: hit - the hit at which to generate the caret a Shape representing the caret. The returnedshape is in standard coordinates. |
getCaretShapes | public Shape[] getCaretShapes(int offset, Rectangle2D bounds, CaretPolicy policy)(Code) | | Returns two paths corresponding to the strong and weak caret.
Parameters: offset - an offset in this TextLayout Parameters: bounds - the bounds to which to extend the carets. Thebounds is in baseline-relative coordinates. Parameters: policy - the specified CaretPolicy an array of two paths. Element zero is the strongcaret. If there are two carets, element one is the weak caret,otherwise it is null . The returned shapesare in standard coordinates. |
getCaretShapes | public Shape[] getCaretShapes(int offset, Rectangle2D bounds)(Code) | | Returns two paths corresponding to the strong and weak caret.
This method is a convenience overload of getCaretShapes
that uses the default caret policy.
Parameters: offset - an offset in this TextLayout Parameters: bounds - the bounds to which to extend the carets. This isin baseline-relative coordinates. two paths corresponding to the strong and weak caret asdefined by the DEFAULT_CARET_POLICY . These arein standard coordinates. |
getCaretShapes | public Shape[] getCaretShapes(int offset)(Code) | | Returns two paths corresponding to the strong and weak caret.
This method is a convenience overload of getCaretShapes
that uses the default caret policy and this TextLayout
object's natural bounds.
Parameters: offset - an offset in this TextLayout two paths corresponding to the strong and weak caret asdefined by the DEFAULT_CARET_POLICY . These arein standard coordinates. |
getCharacterCount | public int getCharacterCount()(Code) | | Returns the number of characters represented by this
TextLayout .
the number of characters in this TextLayout . |
getCharacterLevel | public byte getCharacterLevel(int index)(Code) | | Returns the level of the character at index .
Indices -1 and characterCount are assigned the base
level of this TextLayout .
Parameters: index - the index of the character from which to get the level the level of the character at the specified index. |
getDescent | public float getDescent()(Code) | | Returns the descent of this TextLayout .
The descent is the distance from the baseline to the bottom (left) of
the TextLayout . It is always either positive or zero.
The descent is sufficient to accomodate subscripted text and is the
maximum of the sum of the descent, offset, and baseline of each glyph.
This is the maximum descent from the baseline of all the text in
the TextLayout. It is in baseline-relative coordinates.
the descent of this TextLayout . |
getJustifiedLayout | public TextLayout getJustifiedLayout(float justificationWidth)(Code) | | Creates a copy of this TextLayout justified to the
specified width.
If this TextLayout has already been justified, an
exception is thrown. If this TextLayout object's
justification ratio is zero, a TextLayout identical
to this TextLayout is returned.
Parameters: justificationWidth - the width to use when justifying the line.For best results, it should not be too different from the currentadvance of the line. a TextLayout justified to the specified width. exception: Error - if this layout has already been justified, an Error isthrown. |
getLayoutPath | public LayoutPath getLayoutPath()(Code) | | Return the LayoutPath, or null if the layout path is the
default path (x maps to advance, y maps to offset).
the layout path since: 1.6 |
getLeading | public float getLeading()(Code) | | Returns the leading of the TextLayout .
The leading is the suggested interline spacing for this
TextLayout . This is in baseline-relative
coordinates.
The leading is computed from the leading, descent, and baseline
of all glyphvectors in the TextLayout . The algorithm
is roughly as follows:
maxD = 0;
maxDL = 0;
for (GlyphVector g in all glyphvectors) {
maxD = max(maxD, g.getDescent() + offsets[g.getBaseline()]);
maxDL = max(maxDL, g.getDescent() + g.getLeading() +
offsets[g.getBaseline()]);
}
return maxDL - maxD;
the leading of this TextLayout . |
getLogicalHighlightShape | public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)(Code) | | Returns a Shape enclosing the logical selection in the
specified range, extended to the specified bounds .
If the selection range includes the first logical character, the
selection is extended to the portion of bounds before
the start of this TextLayout . If the range includes
the last logical character, the selection is extended to the portion
of bounds after the end of this TextLayout .
The height (width on vertical lines) of the selection is always
extended to bounds .
The selection can be discontiguous on lines with mixed-direction text.
Only those characters in the logical range between start and limit
appear selected. For example, consider the text 'ABCdef' where capital
letters indicate right-to-left text, rendered on a right-to-left line,
with a logical selection from 0 to 4 ('ABCd'). The text appears as
follows, with bold standing in for the selection, and underlining for
the extension:
defCBA
The selection is discontiguous because the selected characters are
visually discontiguous. Also note that since the range includes the
first logical character (A), the selection is extended to the portion
of the bounds before the start of the layout, which in
this case (a right-to-left line) is the right portion of the
bounds .
Parameters: firstEndpoint - an endpoint in the range of characters to select Parameters: secondEndpoint - the other endpoint of the range of charactersto select. Can be less than firstEndpoint . The rangeincludes the character at min(firstEndpoint, secondEndpoint), butexcludes max(firstEndpoint, secondEndpoint). Parameters: bounds - the bounding rectangle to which to extend the selection.This is in baseline-relative coordinates. an area enclosing the selection. This is in standardcoordinates. See Also: TextLayout.getVisualHighlightShape(TextHitInfo,TextHitInfo,Rectangle2D) |
getLogicalHighlightShape | public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)(Code) | | Returns a Shape enclosing the logical selection in the
specified range, extended to the natural bounds of this
TextLayout . This method is a convenience overload of
getLogicalHighlightShape that uses the natural bounds of
this TextLayout .
Parameters: firstEndpoint - an endpoint in the range of characters to select Parameters: secondEndpoint - the other endpoint of the range of charactersto select. Can be less than firstEndpoint . The rangeincludes the character at min(firstEndpoint, secondEndpoint), butexcludes max(firstEndpoint, secondEndpoint). a Shape enclosing the selection. This is instandard coordinates. |
getLogicalRangesForVisualSelection | public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)(Code) | | Returns the logical ranges of text corresponding to a visual selection.
Parameters: firstEndpoint - an endpoint of the visual range Parameters: secondEndpoint - the other endpoint of the visual range.This endpoint can be less than firstEndpoint . an array of integers representing start/limit pairs for theselected ranges. See Also: TextLayout.getVisualHighlightShape(TextHitInfo,TextHitInfo,Rectangle2D) |
getNextLeftHit | public TextHitInfo getNextLeftHit(TextHitInfo hit)(Code) | | Returns the hit for the next caret to the left (top); if no such
hit, returns null .
If the hit character index is out of bounds, an
IllegalArgumentException is thrown.
Parameters: hit - a hit on a character in this TextLayout . a hit whose caret appears at the next position to theleft (top) of the caret of the provided hit, or null . |
getNextLeftHit | public TextHitInfo getNextLeftHit(int offset, CaretPolicy policy)(Code) | | Returns the hit for the next caret to the left (top); if no
such hit, returns null . The hit is to the left of
the strong caret at the specified offset, as determined by the
specified policy.
The returned hit is the stronger of the two possible
hits, as determined by the specified policy.
Parameters: offset - an insertion offset in this TextLayout .Cannot be less than 0 or greater than this TextLayout object's character count. Parameters: policy - the policy used to select the strong caret a hit whose caret appears at the next position to theleft (top) of the caret of the provided hit, or null . |
getNextLeftHit | public TextHitInfo getNextLeftHit(int offset)(Code) | | Returns the hit for the next caret to the left (top); if no
such hit, returns null . The hit is to the left of
the strong caret at the specified offset, as determined by the
default policy.
The returned hit is the stronger of the two possible
hits, as determined by the default policy.
Parameters: offset - an insertion offset in this TextLayout . Cannot be less than 0 or greater than this TextLayout object's character count. a hit whose caret appears at the next position to theleft (top) of the caret of the provided hit, or null . |
getNextRightHit | public TextHitInfo getNextRightHit(TextHitInfo hit)(Code) | | Returns the hit for the next caret to the right (bottom); if there
is no such hit, returns null .
If the hit character index is out of bounds, an
IllegalArgumentException is thrown.
Parameters: hit - a hit on a character in this layout a hit whose caret appears at the next position to theright (bottom) of the caret of the provided hit or null . |
getNextRightHit | public TextHitInfo getNextRightHit(int offset, CaretPolicy policy)(Code) | | Returns the hit for the next caret to the right (bottom); if no
such hit, returns null . The hit is to the right of
the strong caret at the specified offset, as determined by the
specified policy.
The returned hit is the stronger of the two possible
hits, as determined by the specified policy.
Parameters: offset - an insertion offset in this TextLayout .Cannot be less than 0 or greater than this TextLayout object's character count. Parameters: policy - the policy used to select the strong caret a hit whose caret appears at the next position to theright (bottom) of the caret of the provided hit, or null . |
getNextRightHit | public TextHitInfo getNextRightHit(int offset)(Code) | | Returns the hit for the next caret to the right (bottom); if no
such hit, returns null . The hit is to the right of
the strong caret at the specified offset, as determined by the
default policy.
The returned hit is the stronger of the two possible
hits, as determined by the default policy.
Parameters: offset - an insertion offset in this TextLayout .Cannot be less than 0 or greater than the TextLayout object's character count. a hit whose caret appears at the next position to theright (bottom) of the caret of the provided hit, or null . |
getOutline | public Shape getOutline(AffineTransform tx)(Code) | | Returns a Shape representing the outline of this
TextLayout .
Parameters: tx - an optional AffineTransform to apply to theoutline of this TextLayout . a Shape that is the outline of thisTextLayout . This is in standard coordinates. |
getPixelBounds | public Rectangle getPixelBounds(FontRenderContext frc, float x, float y)(Code) | | Returns the pixel bounds of this TextLayout when
rendered in a graphics with the given
FontRenderContext at the given location. The
graphics render context need not be the same as the
FontRenderContext used to create this
TextLayout , and can be null. If it is null, the
FontRenderContext of this TextLayout
is used.
Parameters: frc - the FontRenderContext of the Graphics . Parameters: x - the x-coordinate at which to render this TextLayout . Parameters: y - the y-coordinate at which to render this TextLayout . a Rectangle bounding the pixels that would be affected. See Also: GlyphVector.getPixelBounds since: 1.6 |
getTextLineForTesting | TextLine getTextLineForTesting()(Code) | | Package-only method for testing ONLY. Please don't abuse.
|
getVisibleAdvance | public float getVisibleAdvance()(Code) | | Returns the advance of this TextLayout , minus trailing
whitespace. This is in baseline-relative coordinates.
the advance of this TextLayout without thetrailing whitespace. See Also: TextLayout.getAdvance() |
getVisualHighlightShape | public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)(Code) | | Returns a path enclosing the visual selection in the specified range,
extended to bounds .
If the selection includes the leftmost (topmost) position, the selection
is extended to the left (top) of bounds . If the
selection includes the rightmost (bottommost) position, the selection
is extended to the right (bottom) of the bounds. The height
(width on vertical lines) of the selection is always extended to
bounds .
Although the selection is always contiguous, the logically selected
text can be discontiguous on lines with mixed-direction text. The
logical ranges of text selected can be retrieved using
getLogicalRangesForVisualSelection . For example,
consider the text 'ABCdef' where capital letters indicate
right-to-left text, rendered on a right-to-left line, with a visual
selection from 0L (the leading edge of 'A') to 3T (the trailing edge
of 'd'). The text appears as follows, with bold underlined areas
representing the selection:
defCBA
The logical selection ranges are 0-3, 4-6 (ABC, ef) because the
visually contiguous text is logically discontiguous. Also note that
since the rightmost position on the layout (to the right of 'A') is
selected, the selection is extended to the right of the bounds.
Parameters: firstEndpoint - one end of the visual selection Parameters: secondEndpoint - the other end of the visual selection Parameters: bounds - the bounding rectangle to which to extend the selection.This is in baseline-relative coordinates. a Shape enclosing the selection. This is instandard coordinates. See Also: TextLayout.getLogicalRangesForVisualSelection(TextHitInfo,TextHitInfo) See Also: TextLayout.getLogicalHighlightShape(int,int,Rectangle2D) |
getVisualHighlightShape | public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)(Code) | | Returns a Shape enclosing the visual selection in the
specified range, extended to the bounds. This method is a
convenience overload of getVisualHighlightShape that
uses the natural bounds of this TextLayout .
Parameters: firstEndpoint - one end of the visual selection Parameters: secondEndpoint - the other end of the visual selection a Shape enclosing the selection. This isin standard coordinates. |
getVisualOtherHit | public TextHitInfo getVisualOtherHit(TextHitInfo hit)(Code) | | Returns the hit on the opposite side of the specified hit's caret.
Parameters: hit - the specified hit a hit that is on the opposite side of the specified hit'scaret. |
handleJustify | protected void handleJustify(float justificationWidth)(Code) | | Justify this layout. Overridden by subclassers to control justification
(if there were subclassers, that is...)
The layout will only justify if the paragraph attributes (from the
source text, possibly defaulted by the layout attributes) indicate a
non-zero justification ratio. The text will be justified to the
indicated width. The current implementation also adjusts hanging
punctuation and trailing whitespace to overhang the justification width.
Once justified, the layout may not be rejustified.
Some code may rely on immutablity of layouts. Subclassers should not
call this directly, but instead should call getJustifiedLayout, which
will call this method on a clone of this layout, preserving
the original.
Parameters: justificationWidth - the width to use when justifying the line.For best results, it should not be too different from the currentadvance of the line. See Also: TextLayout.getJustifiedLayout(float) |
hashCode | public int hashCode()(Code) | | Returns the hash code of this TextLayout .
the hash code of this TextLayout . |
hitTestChar | public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds)(Code) | | Returns a TextHitInfo corresponding to the
specified point.
Coordinates outside the bounds of the TextLayout
map to hits on the leading edge of the first logical character,
or the trailing edge of the last logical character, as appropriate,
regardless of the position of that character in the line. Only the
direction along the baseline is used to make this evaluation.
Parameters: x - the x offset from the origin of this TextLayout . This is in standard coordinates. Parameters: y - the y offset from the origin of thisTextLayout . This is in standard coordinates. Parameters: bounds - the bounds of the TextLayout . Thisis in baseline-relative coordinates. a hit describing the character and edge (leading or trailing)under the specified point. |
hitTestChar | public TextHitInfo hitTestChar(float x, float y)(Code) | | Returns a TextHitInfo corresponding to the
specified point. This method is a convenience overload of
hitTestChar that uses the natural bounds of this
TextLayout .
Parameters: x - the x offset from the origin of thisTextLayout . This is in standard coordinates. Parameters: y - the y offset from the origin of thisTextLayout . This is in standard coordinates. a hit describing the character and edge (leading or trailing)under the specified point. |
hitToPoint | public void hitToPoint(TextHitInfo hit, Point2D point)(Code) | | Convert a hit to a point in standard coordinates. The point is
on the baseline of the character at the leading or trailing
edge of the character, as appropriate. If the path is
broken at the side of the character represented by the hit, the
point will be adjacent to the character.
Parameters: hit - the hit to check. This must be a valid hit onthe TextLayout. Parameters: point - the returned point. The point is in standardcoordinates. throws: IllegalArgumentException - if the hit is not valid for theTextLayout. throws: NullPointerException - if hit or point is null. since: 1.6 |
isLeftToRight | public boolean isLeftToRight()(Code) | | Returns true if this TextLayout has
a left-to-right base direction or false if it has
a right-to-left base direction. The TextLayout
has a base direction of either left-to-right (LTR) or
right-to-left (RTL). The base direction is independent of the
actual direction of text on the line, which may be either LTR,
RTL, or mixed. Left-to-right layouts by default should position
flush left. If the layout is on a tabbed line, the
tabs run left to right, so that logically successive layouts position
left to right. The opposite is true for RTL layouts. By default they
should position flush left, and tabs run right-to-left.
true if the base direction of this TextLayout is left-to-right; false otherwise. |
isVertical | public boolean isVertical()(Code) | | Returns true if this TextLayout is vertical.
true if this TextLayout is vertical;false otherwise. |
toString | public String toString()(Code) | | Returns debugging information for this TextLayout .
the textLine of this TextLayout as a String . |
|
|