org.apache.batik.gvt.renderer
Class StrokingTextPainter

java.lang.Object
  extended by org.apache.batik.gvt.renderer.BasicTextPainter
      extended by org.apache.batik.gvt.renderer.StrokingTextPainter
All Implemented Interfaces:
TextPainter
Direct Known Subclasses:
FlowExtTextPainter, FlowTextPainter

public class StrokingTextPainter
extends BasicTextPainter

More sophisticated implementation of TextPainter which renders the attributed character iterator of a TextNode. StrokingTextPainter includes support for stroke, fill, opacity, text-decoration, and other attributes.

See Also:
TextPainter, GVTAttributedCharacterIterator

Nested Class Summary
 class StrokingTextPainter.TextRun
          Inner convenience class for associating a TextLayout for sub-spans, and the ACI which iterates over that subspan.
 
Nested classes/interfaces inherited from class org.apache.batik.gvt.renderer.BasicTextPainter
BasicTextPainter.BasicMark
 
Field Summary
static Integer ADJUST_ALL
           
static Integer ADJUST_SPACING
           
static GVTAttributedCharacterIterator.TextAttribute ALT_GLYPH_HANDLER
           
static AttributedCharacterIterator.Attribute ANCHOR_TYPE
           
static AttributedCharacterIterator.Attribute BIDI_LEVEL
           
static AttributedCharacterIterator.Attribute FLOW_PARAGRAPH
           
static AttributedCharacterIterator.Attribute FLOW_REGIONS
           
static AttributedCharacterIterator.Attribute GVT_FONT
           
static AttributedCharacterIterator.Attribute GVT_FONTS
           
static AttributedCharacterIterator.Attribute PAINT_INFO
           
protected static TextPainter singleton
          A unique instance of this class.
static AttributedCharacterIterator.Attribute TEXT_COMPOUND_ID
           
static AttributedCharacterIterator.Attribute TEXTPATH
           
static AttributedCharacterIterator.Attribute WRITING_MODE
           
static Integer WRITING_MODE_RTL
           
static Integer WRITING_MODE_TTB
           
static AttributedCharacterIterator.Attribute XPOS
           
static AttributedCharacterIterator.Attribute YPOS
           
 
Fields inherited from class org.apache.batik.gvt.renderer.BasicTextPainter
aaOffFontRenderContext, fontRenderContext
 
Constructor Summary
StrokingTextPainter()
           
 
Method Summary
protected  Point2D adjustChunkOffsets(Point2D location, List textRuns, org.apache.batik.gvt.renderer.StrokingTextPainter.TextChunk chunk)
          Adjusts the position of the text runs within the specified text chunk to account for any text anchor properties.
 List computeTextRuns(TextNode node, AttributedCharacterIterator aci, AttributedCharacterIterator[] chunkACIs)
           
protected static AttributedCharacterIterator createModifiedACIForFontMatching(AttributedCharacterIterator aci)
          Returns a new AttributedCharacterIterator that contains resolved GVTFont attributes.
 Rectangle2D getBounds2D(TextNode node)
          Get a Rectangle2D in userspace coords which encloses the textnode glyphs including stroke etc.
protected  Shape getDecorationOutline(List textRuns, int decorationType)
          Returns the outline of the specified decoration type.
protected  Shape getDecorationStrokeOutline(List textRuns, int decorationType)
          Returns the strokeed outline of the specified decoration type.
 Shape getHighlightShape(Mark beginMark, Mark endMark)
          Return a Shape, in the coordinate system of the text layout, which encloses the text selection delineated by two Mark instances.
static TextPainter getInstance()
          Returns a unique instance of this class.
 Mark getMark(TextNode node, int index, boolean leadingEdge)
          Returns a mark for the char at index in node's AttributedCharacterIterator.
 Shape getOutline(TextNode node)
          Get a Shape in userspace coords which defines the textnode glyph outlines.
 int[] getSelected(Mark startMark, Mark finishMark)
          Returns an array of ints representing begin/end index pairs into an AttributedCharacterIterator which represents the text selection delineated by two Mark instances.
protected  org.apache.batik.gvt.renderer.StrokingTextPainter.TextChunk getTextChunk(TextNode node, AttributedCharacterIterator aci, int[] charMap, List textRuns, org.apache.batik.gvt.renderer.StrokingTextPainter.TextChunk prevChunk)
           
protected  AttributedCharacterIterator[] getTextChunkACIs(AttributedCharacterIterator aci)
          Returns an array of ACIs, one for each text chunk within the given text node.
 List getTextRuns(TextNode node, AttributedCharacterIterator aci)
           
protected  Mark hitTest(double x, double y, TextNode node)
          Returns the mark for the specified parameters.
 void paint(TextNode node, Graphics2D g2d)
          Paints the specified text node using the specified Graphics2D.
protected  void paintDecorations(List textRuns, Graphics2D g2d, int decorationType)
          Paints decorations of the specified type.
protected  void paintTextRuns(List textRuns, Graphics2D g2d)
          Paints the text in each text run.
protected  void printAttrs(AttributedCharacterIterator aci)
           
 Mark selectFirst(TextNode node)
          Selects the first glyph in the text node.
 Mark selectLast(TextNode node)
          Selects the last glyph in the text node.
 
Methods inherited from class org.apache.batik.gvt.renderer.BasicTextPainter
getGeometryBounds, getTextLayoutFactory, selectAt, selectTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PAINT_INFO

public static final AttributedCharacterIterator.Attribute PAINT_INFO

FLOW_REGIONS

public static final AttributedCharacterIterator.Attribute FLOW_REGIONS

FLOW_PARAGRAPH

public static final AttributedCharacterIterator.Attribute FLOW_PARAGRAPH

TEXT_COMPOUND_ID

public static final AttributedCharacterIterator.Attribute TEXT_COMPOUND_ID

GVT_FONT

public static final AttributedCharacterIterator.Attribute GVT_FONT

GVT_FONTS

public static final AttributedCharacterIterator.Attribute GVT_FONTS

BIDI_LEVEL

public static final AttributedCharacterIterator.Attribute BIDI_LEVEL

XPOS

public static final AttributedCharacterIterator.Attribute XPOS

YPOS

public static final AttributedCharacterIterator.Attribute YPOS

TEXTPATH

public static final AttributedCharacterIterator.Attribute TEXTPATH

WRITING_MODE

public static final AttributedCharacterIterator.Attribute WRITING_MODE

WRITING_MODE_TTB

public static final Integer WRITING_MODE_TTB

WRITING_MODE_RTL

public static final Integer WRITING_MODE_RTL

ANCHOR_TYPE

public static final AttributedCharacterIterator.Attribute ANCHOR_TYPE

ADJUST_SPACING

public static final Integer ADJUST_SPACING

ADJUST_ALL

public static final Integer ADJUST_ALL

ALT_GLYPH_HANDLER

public static final GVTAttributedCharacterIterator.TextAttribute ALT_GLYPH_HANDLER

singleton

protected static TextPainter singleton
A unique instance of this class.

Constructor Detail

StrokingTextPainter

public StrokingTextPainter()
Method Detail

getInstance

public static TextPainter getInstance()
Returns a unique instance of this class.


paint

public void paint(TextNode node,
                  Graphics2D g2d)
Paints the specified text node using the specified Graphics2D.

Parameters:
node - the text node to paint
g2d - the Graphics2D to use

printAttrs

protected void printAttrs(AttributedCharacterIterator aci)

getTextRuns

public List getTextRuns(TextNode node,
                        AttributedCharacterIterator aci)

computeTextRuns

public List computeTextRuns(TextNode node,
                            AttributedCharacterIterator aci,
                            AttributedCharacterIterator[] chunkACIs)

getTextChunkACIs

protected AttributedCharacterIterator[] getTextChunkACIs(AttributedCharacterIterator aci)
Returns an array of ACIs, one for each text chunk within the given text node.


createModifiedACIForFontMatching

protected static AttributedCharacterIterator createModifiedACIForFontMatching(AttributedCharacterIterator aci)
Returns a new AttributedCharacterIterator that contains resolved GVTFont attributes. This is then used when creating the text runs so that the text can be split on changes of font as well as tspans and trefs.

Parameters:
aci - The aci to be modified should already be split into text chunks.
Returns:
The new modified aci.

getTextChunk

protected org.apache.batik.gvt.renderer.StrokingTextPainter.TextChunk getTextChunk(TextNode node,
                                                                                   AttributedCharacterIterator aci,
                                                                                   int[] charMap,
                                                                                   List textRuns,
                                                                                   org.apache.batik.gvt.renderer.StrokingTextPainter.TextChunk prevChunk)

adjustChunkOffsets

protected Point2D adjustChunkOffsets(Point2D location,
                                     List textRuns,
                                     org.apache.batik.gvt.renderer.StrokingTextPainter.TextChunk chunk)
Adjusts the position of the text runs within the specified text chunk to account for any text anchor properties.


paintDecorations

protected void paintDecorations(List textRuns,
                                Graphics2D g2d,
                                int decorationType)
Paints decorations of the specified type.


paintTextRuns

protected void paintTextRuns(List textRuns,
                             Graphics2D g2d)
Paints the text in each text run. Decorations are not painted here.


getOutline

public Shape getOutline(TextNode node)
Get a Shape in userspace coords which defines the textnode glyph outlines.

Parameters:
node - the TextNode to measure

getBounds2D

public Rectangle2D getBounds2D(TextNode node)
Get a Rectangle2D in userspace coords which encloses the textnode glyphs including stroke etc.

Parameters:
node - the TextNode to measure

getDecorationOutline

protected Shape getDecorationOutline(List textRuns,
                                     int decorationType)
Returns the outline of the specified decoration type.

Parameters:
textRuns - The list of text runs to get the decoration outline for.
decorationType - Indicates the type of decoration required. eg. underline, overline or strikethrough.
Returns:
The decoration outline or null if the text is not decorated.

getDecorationStrokeOutline

protected Shape getDecorationStrokeOutline(List textRuns,
                                           int decorationType)
Returns the strokeed outline of the specified decoration type. If the decoration has no stroke it will return the fill outline

Parameters:
textRuns - The list of text runs to get the decoration outline for.
decorationType - Indicates the type of decoration required. eg. underline, overline or strikethrough.
Returns:
The decoration outline or null if the text is not decorated.

getMark

public Mark getMark(TextNode node,
                    int index,
                    boolean leadingEdge)
Description copied from interface: TextPainter
Returns a mark for the char at index in node's AttributedCharacterIterator. Leading edge indicates if the mark should be considered immediately 'before' glyph or after


hitTest

protected Mark hitTest(double x,
                       double y,
                       TextNode node)
Description copied from class: BasicTextPainter
Returns the mark for the specified parameters.

Specified by:
hitTest in class BasicTextPainter

selectFirst

public Mark selectFirst(TextNode node)
Selects the first glyph in the text node.


selectLast

public Mark selectLast(TextNode node)
Selects the last glyph in the text node.


getSelected

public int[] getSelected(Mark startMark,
                         Mark finishMark)
Returns an array of ints representing begin/end index pairs into an AttributedCharacterIterator which represents the text selection delineated by two Mark instances. Note: The Mark instances passed must have been instantiated by an instance of this enclosing TextPainter implementation.


getHighlightShape

public Shape getHighlightShape(Mark beginMark,
                               Mark endMark)
Return a Shape, in the coordinate system of the text layout, which encloses the text selection delineated by two Mark instances. Note: The Mark instances passed must have been instantiated by an instance of this enclosing TextPainter implementation.



Copyright © 2008 Apache Software Foundation. All Rights Reserved.