Package org.apache.batik.gvt.text
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: BidiAttributedCharacterIterator.java 1831630 2018-05-15 12:56:55Z ssteiner $
-
Nested Class Summary
Nested classes/interfaces inherited from interface java.text.AttributedCharacterIterator
AttributedCharacterIterator.Attribute
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
private static final Float
private FontRenderContext
private int[]
private AttributedCharacterIterator
Fields inherited from interface java.text.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.protected
BidiAttributedCharacterIterator
(AttributedCharacterIterator reorderedACI, FontRenderContext frc, int chunkStart, int[] newCharOrder) -
Method Summary
Modifier and TypeMethodDescriptionclone()
Creates a copy of this iterator.char
current()
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.char
first()
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.int
Returns the start index of the text.int[]
int
Returns the end index of the text.int
getIndex()
Returns the current index.int
Get the index of the first character following the run with respect to all attributes containing the current character.int
getRunLimit
(AttributedCharacterIterator.Attribute attribute) Get the index of the first character following the run with respect to the given attribute containing the current character.int
getRunLimit
(Set attributes) Get the index of the first character following the run with respect to the given attributes containing the current character.int
Get the index of the first character of the run with respect to all attributes containing the current character.int
getRunStart
(AttributedCharacterIterator.Attribute attribute) Get the index of the first character of the run with respect to the given attribute containing the current character.int
getRunStart
(Set attributes) Get the index of the first character of the run with respect to the given attributes containing the current character.char
last()
Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty) and returns the character at that position.static int
mirrorChar
(int c) char
next()
Increments the iterator's index by one and returns the character at the new index.char
previous()
Decrements the iterator's index by one and returns the character at the new index.char
setIndex
(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:
getAllAttributeKeys
in interfaceAttributedCharacterIterator
-
getAttribute
Get the value of the named attribute for the current character.- Specified by:
getAttribute
in interfaceAttributedCharacterIterator
-
getAttributes
Returns a map with the attributes defined on the current character.- Specified by:
getAttributes
in 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:
getRunLimit
in interfaceAttributedCharacterIterator
-
getRunLimit
Get the index of the first character following the run with respect to the given attribute containing the current character.- Specified by:
getRunLimit
in interfaceAttributedCharacterIterator
-
getRunLimit
Get the index of the first character following the run with respect to the given attributes containing the current character.- Specified by:
getRunLimit
in 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:
getRunStart
in interfaceAttributedCharacterIterator
-
getRunStart
Get the index of the first character of the run with respect to the given attribute containing the current character.- Specified by:
getRunStart
in 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:
getRunStart
in interfaceAttributedCharacterIterator
- Parameters:
attributes
- the Set of attributes which begins at the returned index.
-
clone
Creates a copy of this iterator.- Specified by:
clone
in interfaceCharacterIterator
- Overrides:
clone
in classObject
-
current
public char current()Gets the character at the current position (as returned by getIndex()).- Specified by:
current
in interfaceCharacterIterator
-
first
public char first()Sets the position to getBeginIndex() and returns the character at that position.- Specified by:
first
in interfaceCharacterIterator
-
getBeginIndex
public int getBeginIndex()Returns the start index of the text.- Specified by:
getBeginIndex
in interfaceCharacterIterator
-
getEndIndex
public int getEndIndex()Returns the end index of the text.- Specified by:
getEndIndex
in interfaceCharacterIterator
-
getIndex
public int getIndex()Returns the current index.- Specified by:
getIndex
in 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:
last
in interfaceCharacterIterator
-
next
public char next()Increments the iterator's index by one and returns the character at the new index.- Specified by:
next
in interfaceCharacterIterator
-
previous
public char previous()Decrements the iterator's index by one and returns the character at the new index.- Specified by:
previous
in interfaceCharacterIterator
-
setIndex
public char setIndex(int position) Sets the position to the specified position in the text and returns that character.- Specified by:
setIndex
in interfaceCharacterIterator
-
mirrorChar
public static int mirrorChar(int c) - Parameters:
c
- the character to 'mirror'- Returns:
- either the 'mirror'-character for c or c itself
-