java.text
public
final
class
java.text.Bidi
Bidi is the class providing the bidirectional algorithm. The algorithm is
defined in the Unicode Standard Annex #9, version 13, also described in The
Unicode Standard, Version 4.0 .
Use a Bidi object to get the information on the position reordering of a
bidirectional text, such as Arabic or Hebrew. The natural display ordering of
horizontal text in these languages is from right to left, while they order
numbers from left to right.
If the text contains multiple runs, the information of each run can be
obtained from the run index. The level of any particular run indicates the
direction of the text as well as the nesting level. Left-to-right runs have
even levels while right-to-left runs have odd levels.
Summary
Constants
Public Constructors
Public Methods
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
Details
Constants
public
static
final
int
DIRECTION_DEFAULT_LEFT_TO_RIGHT
Constant that indicates the default base level. If there is no strong
character, then set the paragraph level to 0 (left-to-right).
Constant Value:
-2
(0xfffffffe)
public
static
final
int
DIRECTION_DEFAULT_RIGHT_TO_LEFT
Constant that indicates the default base level. If there is no strong
character, then set the paragraph level to 1 (right-to-left).
Constant Value:
-1
(0xffffffff)
public
static
final
int
DIRECTION_LEFT_TO_RIGHT
Constant that specifies the default base level as 0 (left-to-right).
Constant Value:
0
(0x00000000)
public
static
final
int
DIRECTION_RIGHT_TO_LEFT
Constant that specifies the default base level as 1 (right-to-left).
Constant Value:
1
(0x00000001)
Public Constructors
Create a Bidi object from the AttributedCharacterIterator of a paragraph
text.
The RUN_DIRECTION attribute determines the base direction of the
bidirectional text. If it's not specified explicitly, the algorithm uses
DIRECTION_DEFAULT_LEFT_TO_RIGHT by default.
The BIDI_EMBEDDING attribute specifies the level of embedding for each
character. Values between -1 and -62 denote overrides at the level's
absolute value, values from 1 to 62 indicate embeddings, and the 0 value
indicates the level is calculated by the algorithm automatically. For the
character with no BIDI_EMBEDDING attribute or with a improper attribute
value, such as a null value, the algorithm treats its embedding level as
0.
The NUMERIC_SHAPING attribute specifies the instance of NumericShaper
used to convert European digits to other decimal digits before performing
the bidi algorithm.
Parameters
paragraph
| TODO Make these proper links again (problem with core vs. framework).
see TextAttribute.BIDI_EMBEDDING
see TextAttribute.NUMERIC_SHAPING
see TextAttribute.RUN_DIRECTION
|
public
Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
Create a Bidi object.
Parameters
text
| the char array of the paragraph text. |
textStart
| the start offset of the text array to perform the algorithm. |
embeddings
| the embedding level array of the paragraph text, specifying
the embedding level information for each character. Values
between -1 and -62 denote overrides at the level's absolute
value, values from 1 to 62 indicate embeddings, and the 0
value indicates the level is calculated by the algorithm
automatically. |
embStart
| the start offset of the embeddings array to perform the
algorithm. |
paragraphLength
| the length of the text to perform the algorithm. It must be
text.length >= textStart + paragraphLength, and
embeddings.length >= embStart + paragraphLength. |
flags
| indicates the base direction of the bidirectional text. It is
expected that this will be one of the direction constant
values defined in this class. An unknown value is treated as
DIRECTION_DEFAULT_LEFT_TO_RIGHT. |
public
Bidi(String paragraph, int flags)
Create a Bidi object.
Parameters
paragraph
| the String containing the paragraph text to perform the
algorithm. |
flags
| indicates the base direction of the bidirectional text. It is
expected that this will be one of the direction constant
values defined in this class. An unknown value is treated as
DIRECTION_DEFAULT_LEFT_TO_RIGHT. |
Public Methods
public
boolean
baseIsLeftToRight()
Return whether the base level is from left to right.
Returns
- true if the base level is from left to right.
public
Bidi
createLineBidi(int lineStart, int lineLimit)
Create a new Bidi object containing the information of one line from this
object.
Parameters
lineStart
| the start offset of the line. |
lineLimit
| the limit of the line. |
Returns
- the new line Bidi object. In this new object, the indices will
range from 0 to (limit - start - 1).
public
int
getBaseLevel()
Return the base level.
Returns
- the int value of the base level.
public
int
getLength()
Return the length of the text in the Bidi object.
Returns
- the int value of the length.
public
int
getLevelAt(int offset)
Return the level of a specified character.
Parameters
offset
| the offset of the character. |
Returns
- the int value of the level.
public
int
getRunCount()
Return the number of runs in the bidirectional text.
Returns
- the int value of runs, at least 1.
public
int
getRunLevel(int run)
Return the level of a specified run.
Parameters
run
| the index of the run. |
public
int
getRunLimit(int run)
Return the limit offset of a specified run.
Parameters
run
| the index of the run. |
Returns
- the limit offset of the run.
public
int
getRunStart(int run)
Return the start offset of a specified run.
Parameters
run
| the index of the run. |
Returns
- the start offset of the run.
public
boolean
isLeftToRight()
Return whether the text is from left to right, that is, both the base
direction and the text direction is from left to right.
Returns
- true if the text is from left to right.
public
boolean
isMixed()
Return whether the text direction is mixed.
Returns
- true if the text direction is mixed.
public
boolean
isRightToLeft()
Return whether the text is from right to left, that is, both the base
direction and the text direction is from right to left.
Returns
- true if the text is from right to left.
public
static
void
reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
Reorder a range of objects according to their specified levels. This is a
convenience function that does not use a Bidi object. The range of
objects at index from objectStart to objectStart + count will be
reordered according to the range of levels at index from levelStart to
levelStart + count.
Parameters
levels
| the level array, which is already determined. |
levelStart
| the start offset of the range of the levels. |
objects
| the object array to reorder. |
objectStart
| the start offset of the range of objects. |
count
| the count of the range of objects to reorder.
|
public
static
boolean
requiresBidi(char[] text, int start, int limit)
Return whether a range of characters of a text requires a Bidi object to
display properly.
Parameters
text
| the char array of the text. |
start
| the start offset of the range of characters. |
limit
| the limit offset of the range of characters. |
Returns
- true if the range of characters requires a Bidi object.
public
String
toString()
Return the internal message of the Bidi object, used in debugging.
Returns
- a string containing the internal message.