fribidi_get_par_embedding_levels(3)

NAME
fribidi_get_par_embedding_levels - 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).

SEE ALSO
fribidi_charset_to_unicode(3), fribidi_unicode_to_charset(3), fribidi_parse_charset(3), fribidi_shape_arabic(3), fribidi_get_par_direction(3), fribidi_reorder_line(3), fribidi_get_bidi_type(3), fribidi_get_bidi_types(3), fribidi_get_bidi_type_name(3), fribidi_debug_status(3), fribidi_mirroring_status(3), fribidi_set_mirroring(3), fribidi_reorder_nsm_status(3), fribidi_set_reorder_nsm(3), fribidi_log2vis_get_embedding_levels(3), fribidi_get_type(3), fribidi_get_type_internal(3), fribidi_remove_bidi_marks(3), fribidi_log2vis(3), fribidi_join_arabic(3), fribidi_get_joining_type(3), fribidi_get_joining_types(3), fribidi_get_joining_type_name(3), fribidi_get_mirror_char(3), fribidi_shape_mirroring(3), fribidi_shape(3)