fribidi_get_par_embedding_levels(3) get bidi embedding levels of a paragraph

SYNOPSIS

#include <fribidi.h>

FriBidiLevel fribidi_get_par_embedding_levels
(
       const FriBidiCharType *bidi_types,

       const FriBidiStrIndex len,

       FriBidiParType *pbase_dir,

       FriBidiLevel *embedding_levels

);

PARAMETERS

const FriBidiCharType *bidi_types
Input list of bidi types as returned by fribidi_get_bidi_types().

Possible values for a const FriBidiCharType are as follows:

FRIBIDI_TYPE_LTR
Left-To-Right letter.
FRIBIDI_TYPE_RTL
Right-To-Left letter.
FRIBIDI_TYPE_AL
Arabic Letter.
FRIBIDI_TYPE_EN
European Numeral.
FRIBIDI_TYPE_AN
Arabic Numeral.
FRIBIDI_TYPE_ES
European number Separator.
FRIBIDI_TYPE_ET
European number Terminator.
FRIBIDI_TYPE_CS
Common Separator.
FRIBIDI_TYPE_NSM
Non Spacing Mark.
FRIBIDI_TYPE_BN
Boundary Neutral.
FRIBIDI_TYPE_BS
Block Separator.
FRIBIDI_TYPE_SS
Segment Separator.
FRIBIDI_TYPE_WS
WhiteSpace.
FRIBIDI_TYPE_ON
Other Neutral.
FRIBIDI_TYPE_LRE
Left-to-Right Embedding.
FRIBIDI_TYPE_RLE
Right-to-Left Embedding.
FRIBIDI_TYPE_LRO
Left-to-Right Override.
FRIBIDI_TYPE_RLO
Right-to-Left Override.
FRIBIDI_TYPE_PDF
Pop Directional Flag.
const FriBidiStrIndex len
Input string length of the paragraph.
FriBidiParType *pbase_dir
Requested and resolved paragraph base direction.

Possible values for a FriBidiParType are as follows:

FRIBIDI_PAR_LTR
Left-To-Right paragraph.
FRIBIDI_PAR_RTL
Right-To-Left paragraph.
FRIBIDI_PAR_ON
DirectiOn-Neutral paragraph.
FRIBIDI_PAR_WLTR
Weak Left To Right paragraph.
FRIBIDI_PAR_WRTL
Weak Right To Left paragraph.
FriBidiLevel *embedding_levels
Output list of embedding levels.

DESCRIPTION

This function finds the bidi embedding levels of a single paragraph, as defined by the Unicode Bidirectional Algorithm available at http://www.unicode.org/reports/tr9/. This function implements rules P2 to I1 inclusive, and parts 1 to 3 of L1, except for rule X9 which is implemented in fribidi_remove_bidi_marks(). Part 4 of L1 is implemented in fribidi_reorder_line().

There are a few macros defined in fribidi-bidi-types.h to work with this embedding levels.

RETURNS

Maximum level found plus one, or zero if any error occured (memory allocation failure most probably).