Class BidiAttributedCharacterIterator
java.lang.Object
org.apache.batik.gvt.text.BidiAttributedCharacterIterator
- All Implemented Interfaces:
Cloneable, AttributedCharacterIterator, CharacterIterator
An attributed character iterator that does the reordering of the characters
for bidirectional text. It reorders the characters so they are in visual order.
It also assigns a BIDI_LEVEL attribute to each character which can be used
to split the reordered ACI into text runs based on direction. ie. characters
in a text run will all have the same bidi level.
- Version:
- $Id$
-
Nested Class Summary
Nested classes/interfaces inherited from interface AttributedCharacterIterator
AttributedCharacterIterator.Attribute -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate static final Floatprivate FontRenderContextprivate int[]private AttributedCharacterIteratorFields inherited from interface CharacterIterator
DONE -
Constructor Summary
ConstructorsModifierConstructorDescriptionBidiAttributedCharacterIterator(AttributedCharacterIterator aci, FontRenderContext frc, int chunkStart) Constructs a character iterator that represents the visual display order of characters within bidirectional text.protectedBidiAttributedCharacterIterator(AttributedCharacterIterator reorderedACI, FontRenderContext frc, int chunkStart, int[] newCharOrder) -
Method Summary
Modifier and TypeMethodDescriptionclone()Creates a copy of this iterator.charcurrent()Gets the character at the current position (as returned by getIndex()).private int[]doBidiReorder(int[] charIndices, int[] charLevels, int numChars, int highestLevel) Calculates the display order of the characters based on the specified character levels.charfirst()Sets the position to getBeginIndex() and returns the character at that position.Get the keys of all attributes defined on the iterator's text range.Get the value of the named attribute for the current character.Returns a map with the attributes defined on the current character.intReturns the start index of the text.int[]intReturns the end index of the text.intgetIndex()Returns the current index.intGet the index of the first character following the run with respect to all attributes containing the current character.intgetRunLimit(AttributedCharacterIterator.Attribute attribute) Get the index of the first character following the run with respect to the given attribute containing the current character.intgetRunLimit(Set attributes) Get the index of the first character following the run with respect to the given attributes containing the current character.intGet the index of the first character of the run with respect to all attributes containing the current character.intgetRunStart(AttributedCharacterIterator.Attribute attribute) Get the index of the first character of the run with respect to the given attribute containing the current character.intgetRunStart(Set attributes) Get the index of the first character of the run with respect to the given attributes containing the current character.charlast()Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty) and returns the character at that position.static intmirrorChar(int c) charnext()Increments the iterator's index by one and returns the character at the new index.charprevious()Decrements the iterator's index by one and returns the character at the new index.charsetIndex(int position) Sets the position to the specified position in the text and returns that character.
-
Field Details
-
reorderedACI
-
frc
-
chunkStart
private int chunkStart -
newCharOrder
private int[] newCharOrder -
FLOAT_NAN
-
-
Constructor Details
-
BidiAttributedCharacterIterator
protected BidiAttributedCharacterIterator(AttributedCharacterIterator reorderedACI, FontRenderContext frc, int chunkStart, int[] newCharOrder) -
BidiAttributedCharacterIterator
public BidiAttributedCharacterIterator(AttributedCharacterIterator aci, FontRenderContext frc, int chunkStart) Constructs a character iterator that represents the visual display order of characters within bidirectional text.- Parameters:
aci- The character iterator containing the characters in logical order.frc- The current font render context
-
-
Method Details
-
getCharMap
public int[] getCharMap() -
doBidiReorder
private int[] doBidiReorder(int[] charIndices, int[] charLevels, int numChars, int highestLevel) Calculates the display order of the characters based on the specified character levels. This method is recursive.- Parameters:
charIndices- An array contianing the original indices of each char.charLevels- An array containing the current levels of each char.numChars- The number of chars to reorder.- Returns:
- An array contianing the reordered character indices.
-
getAllAttributeKeys
Get the keys of all attributes defined on the iterator's text range.- Specified by:
getAllAttributeKeysin interfaceAttributedCharacterIterator
-
getAttribute
Get the value of the named attribute for the current character.- Specified by:
getAttributein interfaceAttributedCharacterIterator
-
getAttributes
Returns a map with the attributes defined on the current character.- Specified by:
getAttributesin interfaceAttributedCharacterIterator
-
getRunLimit
public int getRunLimit()Get the index of the first character following the run with respect to all attributes containing the current character.- Specified by:
getRunLimitin interfaceAttributedCharacterIterator
-
getRunLimit
Get the index of the first character following the run with respect to the given attribute containing the current character.- Specified by:
getRunLimitin interfaceAttributedCharacterIterator
-
getRunLimit
Get the index of the first character following the run with respect to the given attributes containing the current character.- Specified by:
getRunLimitin interfaceAttributedCharacterIterator
-
getRunStart
public int getRunStart()Get the index of the first character of the run with respect to all attributes containing the current character.- Specified by:
getRunStartin interfaceAttributedCharacterIterator
-
getRunStart
Get the index of the first character of the run with respect to the given attribute containing the current character.- Specified by:
getRunStartin interfaceAttributedCharacterIterator- Parameters:
attribute- The attribute for whose appearance the first offset is requested.
-
getRunStart
Get the index of the first character of the run with respect to the given attributes containing the current character.- Specified by:
getRunStartin interfaceAttributedCharacterIterator- Parameters:
attributes- the Set of attributes which begins at the returned index.
-
clone
Creates a copy of this iterator.- Specified by:
clonein interfaceCharacterIterator- Overrides:
clonein classObject
-
current
public char current()Gets the character at the current position (as returned by getIndex()).- Specified by:
currentin interfaceCharacterIterator
-
first
public char first()Sets the position to getBeginIndex() and returns the character at that position.- Specified by:
firstin interfaceCharacterIterator
-
getBeginIndex
public int getBeginIndex()Returns the start index of the text.- Specified by:
getBeginIndexin interfaceCharacterIterator
-
getEndIndex
public int getEndIndex()Returns the end index of the text.- Specified by:
getEndIndexin interfaceCharacterIterator
-
getIndex
public int getIndex()Returns the current index.- Specified by:
getIndexin interfaceCharacterIterator
-
last
public char last()Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty) and returns the character at that position.- Specified by:
lastin interfaceCharacterIterator
-
next
public char next()Increments the iterator's index by one and returns the character at the new index.- Specified by:
nextin interfaceCharacterIterator
-
previous
public char previous()Decrements the iterator's index by one and returns the character at the new index.- Specified by:
previousin interfaceCharacterIterator
-
setIndex
public char setIndex(int position) Sets the position to the specified position in the text and returns that character.- Specified by:
setIndexin interfaceCharacterIterator
-
mirrorChar
public static int mirrorChar(int c) - Parameters:
c- the character to 'mirror'- Returns:
- either the 'mirror'-character for c or c itself
-