Class GlyphLayout
java.lang.Object
org.apache.batik.bridge.GlyphLayout
- All Implemented Interfaces:
TextSpanLayout
- Direct Known Subclasses:
FlowExtGlyphLayout, FlowGlyphLayout
Implementation of TextSpanLayout which uses java.awt.font.GlyphVector.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Point2Dstatic final doublestatic final AttributedCharacterIterator.Attributestatic final AttributedCharacterIterator.Attributestatic final AttributedCharacterIterator.Attributeprotected GVTGlyphVectorstatic final AttributedCharacterIterator.Attributestatic final AttributedCharacterIterator.Attributeprotected booleanstatic final AttributedCharacterIterator.Attributeprotected static Setprotected static Setstatic final AttributedCharacterIterator.Attributestatic final AttributedCharacterIterator.AttributeFields inherited from interface TextSpanLayout
DECORATION_ALL, DECORATION_OVERLINE, DECORATION_STRIKETHROUGH, DECORATION_UNDERLINE -
Constructor Summary
ConstructorsConstructorDescriptionGlyphLayout(AttributedCharacterIterator aci, int[] charMap, Point2D offset, FontRenderContext frc) Creates the specified text layout using the specified AttributedCharacterIterator and rendering context. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddPtsToPath(GeneralPath shape, Point2D.Float[] topPts, Point2D.Float[] botPts, int numPts) protected voidDoes any spacing adjustments that may have been specified.protected voidapplyStretchTransform(boolean stretchGlyphs) Stretches the text so that it becomes the specified length.protected voidExplicitly lays out each of the glyphs in the glyph vector.protected voidIf this layout is on a text path, positions the characters along the path.protected Point2DPerforms any spacing adjustments required and returns the new advance value.voiddraw(Graphics2D g2d) Paints the text layout using the specified Graphics2D and rendering context.static booleanepsEQ(double a, double b) Returns the current text position at the completion of glyph layout.Returns the rectangular bounds of the completed glyph layout.intgetCharacterCount(int startGlyphIndex, int endGlyphIndex) Returns the number of chars represented by the glyphs within the specified range.doublegetComputedOrientationAngle(int index) Return the angle value according to the orientation of the character.getDecorationOutline(int decorationType) Returns the outline of the specified decorations on the glyphs,protected GVTFontgetFont()Returns the GVTFont to use when rendering the specified character iterator.Returns the rectangular bounds of the completed glyph layout, inclusive of "decoration" (underline, overline, etc.)float[]Returns the advance between each glyph in text progression direction.intReturns the number of glyphs in this layout.intgetGlyphIndex(int charIndex) Returns the index of the first glyph that has the specified char index.getGlyphMetrics(int glyphIndex) Returns the Metrics for a particular glyph.protected intReturns the value of the vertical glyph orientation angle.Return the glyph vector asociated to this layout.getHighlightShape(int beginCharIndex, int endCharIndex) Returns a Shape which encloses the currently selected glyphs as specified by the character indices.intgetLastGlyphIndex(int charIndex) Returns the index of the last glyph that has the specified char index.Returns the Line metrics for this text span.Returns the current text position at the beginning of glyph layout, before the application of explicit glyph positioning attributes.Returns the outline of the completed glyph layout.protected ShapeReturns a shape describing the overline decoration for a given ACI.protected ShapeReturns a shape describing the strikethrough line for a given ACI.Returns the position to used when drawing a text run after this one.protected ShapeReturns a shape describing the undeline decoration for a given ACI.booleanhasCharacterIndex(int index) Return true is the character index is represented by glyphs in this layout.hitTestChar(float x, float y) Perform hit testing for coordinate at x, y.booleanReturn true if this text run represents an alt glyph.protected booleanReturns whether or not the vertical glyph orientation value is "auto".protected booleanisLatinChar(char c) Returns true if the specified character is within one of the Latin unicode character blocks.booleanReturns true if the text direction in this layout is from left to right.booleanReturns true if this layout in on a text path.booleanReturn true if this text has been reversed.booleanReturns true if the advance direction of this text is vertical.static intmakeConvexHull(Point2D.Float[] pts, int numPts) voidmaybeReverse(boolean mirror) Reverse (and optionally mirror) glyphs if not already reversed.static voidmergeAreas(GeneralPath shape, Area[] shapes, int nShapes) voidSets the text position used for the implicit origin of glyph layout.voidsetScale(float xScale, float yScale, boolean adjSpacing) Sets the scaling factor to use for string.
-
Field Details
-
gv
-
advance
-
layoutApplied
protected boolean layoutApplied -
FLOW_LINE_BREAK
-
FLOW_PARAGRAPH
-
FLOW_EMPTY_PARAGRAPH
-
LINE_HEIGHT
-
VERTICAL_ORIENTATION
-
VERTICAL_ORIENTATION_ANGLE
-
HORIZONTAL_ORIENTATION_ANGLE
-
GVT_FONT
-
runAtts
-
szAtts
-
eps
public static final double eps- See Also:
-
-
Constructor Details
-
GlyphLayout
public GlyphLayout(AttributedCharacterIterator aci, int[] charMap, Point2D offset, FontRenderContext frc) Creates the specified text layout using the specified AttributedCharacterIterator and rendering context.- Parameters:
aci- the AttributedCharacterIterator whose text is to be laid outcharMap- Indicates how chars in aci map to original text char array.offset- The offset position of this text layoutfrc- the FontRenderContext to use for generating glyphs.
-
-
Method Details
-
getGlyphVector
Description copied from interface:TextSpanLayoutReturn the glyph vector asociated to this layout.- Specified by:
getGlyphVectorin interfaceTextSpanLayout- Returns:
- glyph vector
-
getOffset
Returns the current text position at the beginning of glyph layout, before the application of explicit glyph positioning attributes.- Specified by:
getOffsetin interfaceTextSpanLayout
-
setScale
public void setScale(float xScale, float yScale, boolean adjSpacing) Sets the scaling factor to use for string. if ajdSpacing is true then only the spacing between glyphs will be adjusted otherwise the glyphs and the spaces between them will be adjusted. Only the scale factor in the progression direction is used (x for horizontal text, y for vertical text ).- Specified by:
setScalein interfaceTextSpanLayout- Parameters:
xScale- Scale factor to apply in X direction.yScale- Scale factor to apply in Y direction.adjSpacing- True if only spaces should be adjusted.
-
setOffset
Sets the text position used for the implicit origin of glyph layout. Ignored if multiple explicit glyph positioning attributes are present in ACI (e.g. if the aci has multiple X or Y values).- Specified by:
setOffsetin interfaceTextSpanLayout
-
getGlyphMetrics
Description copied from interface:TextSpanLayoutReturns the Metrics for a particular glyph.- Specified by:
getGlyphMetricsin interfaceTextSpanLayout
-
getLineMetrics
Description copied from interface:TextSpanLayoutReturns the Line metrics for this text span.- Specified by:
getLineMetricsin interfaceTextSpanLayout
-
isVertical
public boolean isVertical()Returns true if the advance direction of this text is vertical.- Specified by:
isVerticalin interfaceTextSpanLayout
-
isOnATextPath
public boolean isOnATextPath()Returns true if this layout in on a text path.- Specified by:
isOnATextPathin interfaceTextSpanLayout
-
getGlyphCount
public int getGlyphCount()Returns the number of glyphs in this layout.- Specified by:
getGlyphCountin interfaceTextSpanLayout
-
getCharacterCount
public int getCharacterCount(int startGlyphIndex, int endGlyphIndex) Returns the number of chars represented by the glyphs within the specified range.- Specified by:
getCharacterCountin interfaceTextSpanLayout- Parameters:
startGlyphIndex- The index of the first glyph in the range.endGlyphIndex- The index of the last glyph in the range.- Returns:
- The number of chars.
-
isLeftToRight
public boolean isLeftToRight()Returns true if the text direction in this layout is from left to right.- Specified by:
isLeftToRightin interfaceTextSpanLayout
-
draw
Paints the text layout using the specified Graphics2D and rendering context.- Specified by:
drawin interfaceTextSpanLayout- Parameters:
g2d- the Graphics2D to use
-
getAdvance2D
Returns the current text position at the completion of glyph layout.- Specified by:
getAdvance2Din interfaceTextSpanLayout
-
getOutline
Returns the outline of the completed glyph layout.- Specified by:
getOutlinein interfaceTextSpanLayout
-
getGlyphAdvances
public float[] getGlyphAdvances()Description copied from interface:TextSpanLayoutReturns the advance between each glyph in text progression direction.- Specified by:
getGlyphAdvancesin interfaceTextSpanLayout
-
getDecorationOutline
Returns the outline of the specified decorations on the glyphs,- Specified by:
getDecorationOutlinein interfaceTextSpanLayout- Parameters:
decorationType- an integer indicating the type(s) of decorations included in this shape. May be the result of "OR-ing" several values together: e.g.DECORATION_UNDERLINE | DECORATION_STRIKETHROUGH
-
getBounds2D
Returns the rectangular bounds of the completed glyph layout.- Specified by:
getBounds2Din interfaceTextSpanLayout
-
getGeometricBounds
Returns the rectangular bounds of the completed glyph layout, inclusive of "decoration" (underline, overline, etc.)- Specified by:
getGeometricBoundsin interfaceTextSpanLayout
-
getTextPathAdvance
Returns the position to used when drawing a text run after this one. It takes into account the text path layout if there is one.- Specified by:
getTextPathAdvancein interfaceTextSpanLayout
-
getGlyphIndex
public int getGlyphIndex(int charIndex) Returns the index of the first glyph that has the specified char index.- Specified by:
getGlyphIndexin interfaceTextSpanLayout- Parameters:
charIndex- The original index of the character in the text node's text string.- Returns:
- The index of the matching glyph in this layout's glyph vector, or -1 if a matching glyph could not be found.
-
getLastGlyphIndex
public int getLastGlyphIndex(int charIndex) Returns the index of the last glyph that has the specified char index.- Parameters:
charIndex- The original index of the character in the text node's text string.- Returns:
- The index of the matching glyph in this layout's glyph vector, or -1 if a matching glyph could not be found.
-
getComputedOrientationAngle
public double getComputedOrientationAngle(int index) Return the angle value according to the orientation of the character.- Specified by:
getComputedOrientationAnglein interfaceTextSpanLayout- Parameters:
index- index of the character in the ACI- Returns:
- rotation angle
-
getHighlightShape
Returns a Shape which encloses the currently selected glyphs as specified by the character indices.- Specified by:
getHighlightShapein interfaceTextSpanLayout- Parameters:
beginCharIndex- the index of the first char in the contiguous selection.endCharIndex- the index of the last char in the contiguous selection.- Returns:
- The highlight shape or null if the spacified char range does not overlap with the chars in this layout.
-
epsEQ
public static boolean epsEQ(double a, double b) -
makeConvexHull
-
addPtsToPath
public static void addPtsToPath(GeneralPath shape, Point2D.Float[] topPts, Point2D.Float[] botPts, int numPts) -
mergeAreas
-
hitTestChar
Perform hit testing for coordinate at x, y.- Specified by:
hitTestCharin interfaceTextSpanLayout- Parameters:
x- the x coordinate of the point to be tested.y- the y coordinate of the point to be tested.- Returns:
- a TextHit object encapsulating the character index for successful hits and whether the hit is on the character leading edge.
-
getFont
Returns the GVTFont to use when rendering the specified character iterator. This should already be set as an attribute on the aci.- Returns:
- The GVTFont to use.
-
getOverlineShape
Returns a shape describing the overline decoration for a given ACI. -
getUnderlineShape
Returns a shape describing the undeline decoration for a given ACI. -
getStrikethroughShape
Returns a shape describing the strikethrough line for a given ACI. -
doExplicitGlyphLayout
protected void doExplicitGlyphLayout()Explicitly lays out each of the glyphs in the glyph vector. This will handle any glyph position adjustments such as dx, dy and baseline offsets. It will also handle vertical layouts. -
adjustTextSpacing
protected void adjustTextSpacing()Does any spacing adjustments that may have been specified. -
doSpacing
Performs any spacing adjustments required and returns the new advance value.- Parameters:
kern- The kerning adjustment to apply to the space between each char.letterSpacing- The amount of spacing required between each char.wordSpacing- The amount of spacing required between each word.
-
applyStretchTransform
protected void applyStretchTransform(boolean stretchGlyphs) Stretches the text so that it becomes the specified length.- Parameters:
stretchGlyphs- if true xScale, yScale will be applied to each glyphs transform.
-
doPathLayout
protected void doPathLayout()If this layout is on a text path, positions the characters along the path. -
isLatinChar
protected boolean isLatinChar(char c) Returns true if the specified character is within one of the Latin unicode character blocks.- Parameters:
c- The char to test.- Returns:
- True if c is latin.
-
isGlyphOrientationAuto
protected boolean isGlyphOrientationAuto()Returns whether or not the vertical glyph orientation value is "auto". -
getGlyphOrientationAngle
protected int getGlyphOrientationAngle()Returns the value of the vertical glyph orientation angle. This will be one of 0, 90, 180 or 270. -
hasCharacterIndex
public boolean hasCharacterIndex(int index) Return true is the character index is represented by glyphs in this layout.- Specified by:
hasCharacterIndexin interfaceTextSpanLayout- Parameters:
index- index of the character in the ACI.- Returns:
- true if the layout represents that character.
-
isAltGlyph
public boolean isAltGlyph()Return true if this text run represents an alt glyph.- Specified by:
isAltGlyphin interfaceTextSpanLayout
-
isReversed
public boolean isReversed()Description copied from interface:TextSpanLayoutReturn true if this text has been reversed.- Specified by:
isReversedin interfaceTextSpanLayout
-
maybeReverse
public void maybeReverse(boolean mirror) Description copied from interface:TextSpanLayoutReverse (and optionally mirror) glyphs if not already reversed.- Specified by:
maybeReversein interfaceTextSpanLayout
-