Package org.apache.batik.gvt.text
Class BidiAttributedCharacterIterator
- java.lang.Object
-
- org.apache.batik.gvt.text.BidiAttributedCharacterIterator
-
- All Implemented Interfaces:
java.lang.Cloneable,java.text.AttributedCharacterIterator,java.text.CharacterIterator
public class BidiAttributedCharacterIterator extends java.lang.Object implements java.text.AttributedCharacterIteratorAn 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 $
-
-
Field Summary
Fields Modifier and Type Field Description private intchunkStartprivate static java.lang.FloatFLOAT_NANprivate java.awt.font.FontRenderContextfrcprivate int[]newCharOrderprivate java.text.AttributedCharacterIteratorreorderedACI
-
Constructor Summary
Constructors Modifier Constructor Description BidiAttributedCharacterIterator(java.text.AttributedCharacterIterator aci, java.awt.font.FontRenderContext frc, int chunkStart)Constructs a character iterator that represents the visual display order of characters within bidirectional text.protectedBidiAttributedCharacterIterator(java.text.AttributedCharacterIterator reorderedACI, java.awt.font.FontRenderContext frc, int chunkStart, int[] newCharOrder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone()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.java.util.SetgetAllAttributeKeys()Get the keys of all attributes defined on the iterator's text range.java.lang.ObjectgetAttribute(java.text.AttributedCharacterIterator.Attribute attribute)Get the value of the named attribute for the current character.java.util.MapgetAttributes()Returns a map with the attributes defined on the current character.intgetBeginIndex()Returns the start index of the text.int[]getCharMap()intgetEndIndex()Returns the end index of the text.intgetIndex()Returns the current index.intgetRunLimit()Get the index of the first character following the run with respect to all attributes containing the current character.intgetRunLimit(java.text.AttributedCharacterIterator.Attribute attribute)Get the index of the first character following the run with respect to the given attribute containing the current character.intgetRunLimit(java.util.Set attributes)Get the index of the first character following the run with respect to the given attributes containing the current character.intgetRunStart()Get the index of the first character of the run with respect to all attributes containing the current character.intgetRunStart(java.text.AttributedCharacterIterator.Attribute attribute)Get the index of the first character of the run with respect to the given attribute containing the current character.intgetRunStart(java.util.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.
-
-
-
Constructor Detail
-
BidiAttributedCharacterIterator
protected BidiAttributedCharacterIterator(java.text.AttributedCharacterIterator reorderedACI, java.awt.font.FontRenderContext frc, int chunkStart, int[] newCharOrder)
-
BidiAttributedCharacterIterator
public BidiAttributedCharacterIterator(java.text.AttributedCharacterIterator aci, java.awt.font.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 Detail
-
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
public java.util.Set getAllAttributeKeys()
Get the keys of all attributes defined on the iterator's text range.- Specified by:
getAllAttributeKeysin interfacejava.text.AttributedCharacterIterator
-
getAttribute
public java.lang.Object getAttribute(java.text.AttributedCharacterIterator.Attribute attribute)
Get the value of the named attribute for the current character.- Specified by:
getAttributein interfacejava.text.AttributedCharacterIterator
-
getAttributes
public java.util.Map getAttributes()
Returns a map with the attributes defined on the current character.- Specified by:
getAttributesin interfacejava.text.AttributedCharacterIterator
-
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 interfacejava.text.AttributedCharacterIterator
-
getRunLimit
public int getRunLimit(java.text.AttributedCharacterIterator.Attribute attribute)
Get the index of the first character following the run with respect to the given attribute containing the current character.- Specified by:
getRunLimitin interfacejava.text.AttributedCharacterIterator
-
getRunLimit
public int getRunLimit(java.util.Set attributes)
Get the index of the first character following the run with respect to the given attributes containing the current character.- Specified by:
getRunLimitin interfacejava.text.AttributedCharacterIterator
-
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 interfacejava.text.AttributedCharacterIterator
-
getRunStart
public int getRunStart(java.text.AttributedCharacterIterator.Attribute attribute)
Get the index of the first character of the run with respect to the given attribute containing the current character.- Specified by:
getRunStartin interfacejava.text.AttributedCharacterIterator- Parameters:
attribute- The attribute for whose appearance the first offset is requested.
-
getRunStart
public int getRunStart(java.util.Set attributes)
Get the index of the first character of the run with respect to the given attributes containing the current character.- Specified by:
getRunStartin interfacejava.text.AttributedCharacterIterator- Parameters:
attributes- the Set of attributes which begins at the returned index.
-
clone
public java.lang.Object clone()
Creates a copy of this iterator.- Specified by:
clonein interfacejava.text.CharacterIterator- Overrides:
clonein classjava.lang.Object
-
current
public char current()
Gets the character at the current position (as returned by getIndex()).- Specified by:
currentin interfacejava.text.CharacterIterator
-
first
public char first()
Sets the position to getBeginIndex() and returns the character at that position.- Specified by:
firstin interfacejava.text.CharacterIterator
-
getBeginIndex
public int getBeginIndex()
Returns the start index of the text.- Specified by:
getBeginIndexin interfacejava.text.CharacterIterator
-
getEndIndex
public int getEndIndex()
Returns the end index of the text.- Specified by:
getEndIndexin interfacejava.text.CharacterIterator
-
getIndex
public int getIndex()
Returns the current index.- Specified by:
getIndexin interfacejava.text.CharacterIterator
-
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 interfacejava.text.CharacterIterator
-
next
public char next()
Increments the iterator's index by one and returns the character at the new index.- Specified by:
nextin interfacejava.text.CharacterIterator
-
previous
public char previous()
Decrements the iterator's index by one and returns the character at the new index.- Specified by:
previousin interfacejava.text.CharacterIterator
-
setIndex
public char setIndex(int position)
Sets the position to the specified position in the text and returns that character.- Specified by:
setIndexin interfacejava.text.CharacterIterator
-
mirrorChar
public static int mirrorChar(int c)
- Parameters:
c- the character to 'mirror'- Returns:
- either the 'mirror'-character for c or c itself
-
-