Android
java.text
public final class

java.text.Bidi

java.lang.Object
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

      Value  
int  DIRECTION_DEFAULT_LEFT_TO_RIGHT  Constant that indicates the default base level.  -2  0xfffffffe 
int  DIRECTION_DEFAULT_RIGHT_TO_LEFT  Constant that indicates the default base level.  -1  0xffffffff 
int  DIRECTION_LEFT_TO_RIGHT  Constant that specifies the default base level as 0 (left-to-right).  0x00000000 
int  DIRECTION_RIGHT_TO_LEFT  Constant that specifies the default base level as 1 (right-to-left).  0x00000001 

Public Constructors

            Bidi(AttributedCharacterIterator paragraph)
Create a Bidi object from the AttributedCharacterIterator of a paragraph text.
            Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
Create a Bidi object.
            Bidi(String paragraph, int flags)
Create a Bidi object.

Public Methods

          boolean  baseIsLeftToRight()
Return whether the base level is from left to right.
          Bidi  createLineBidi(int lineStart, int lineLimit)
Create a new Bidi object containing the information of one line from this object.
          int  getBaseLevel()
Return the base level.
          int  getLength()
Return the length of the text in the Bidi object.
          int  getLevelAt(int offset)
Return the level of a specified character.
          int  getRunCount()
Return the number of runs in the bidirectional text.
          int  getRunLevel(int run)
Return the level of a specified run.
          int  getRunLimit(int run)
Return the limit offset of a specified run.
          int  getRunStart(int run)
Return the start offset of a specified run.
          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.
          boolean  isMixed()
Return whether the text direction is mixed.
          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.
      static    void  reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
Reorder a range of objects according to their specified levels.
      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.
          String  toString()
Return the internal message of the Bidi object, used in debugging.
Methods inherited from class java.lang.Object

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

public Bidi(AttributedCharacterIterator paragraph)

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.

Returns

  • the level 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.
Copyright 2007 Google Inc. Build 0.9_r1-98467 - 14 Aug 2008 18:48