mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-27 03:20:22 +08:00
85 lines
3.1 KiB
Plaintext
85 lines
3.1 KiB
Plaintext
#
|
|
# $Id: bidiapi.txt,v 1.2 1999/11/19 15:24:29 mleisher Exp $
|
|
#
|
|
|
|
"Pretty Good Bidi Algorithm" API
|
|
|
|
The PGBA (Pretty Good Bidi Algorithm) is an effective alternative to the
|
|
Unicode BiDi algorithm. It currently provides only implicit reordering and
|
|
does not yet support explicit reordering codes that the Unicode BiDi algorithm
|
|
supports. In addition to reordering, the PGBA includes cursor movement
|
|
support for both visual and logical navigation.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
#define UCPGBA_LTR 0
|
|
#define UCPGBA_RTL 1
|
|
|
|
These macros appear in the `direction' field of the data structures.
|
|
|
|
#define UCPGBA_CURSOR_VISUAL 0
|
|
#define UCPGBA_CURSOR_LOGICAL 1
|
|
|
|
These macros are used to set the cursor movement for each reordered string.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
ucstring_t *ucstring_create(unsigned long *source, unsigned long start,
|
|
unsigned long end, int default_direction,
|
|
int cursor_motion)
|
|
|
|
This function will create a reordered string by using the implicit
|
|
directionality of the characters in the specified substring.
|
|
|
|
The `default_direction' parameter should be one of UCPGBA_LTR or UCPGBA_RTL
|
|
and is used only in cases where a string contains no characters with strong
|
|
directionality.
|
|
|
|
The `cursor_motion' parameter should be one of UCPGBA_CURSOR_VISUAL or
|
|
UCPGBA_CURSOR_LOGICAL, and is used to specify the initial cursor motion
|
|
behavior. This behavior can be switched at any time using
|
|
ustring_set_cursor_motion().
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
void ucstring_free(ucstring_t *string)
|
|
|
|
This function will deallocate the memory used by the string, incuding the
|
|
string itself.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
void ucstring_cursor_info(ustring_t *string, int *direction,
|
|
unsigned long *position)
|
|
|
|
This function will return the text position of the internal cursor and the
|
|
directionality of the text at that position. The position returned is the
|
|
original text position of the character.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
int ucstring_set_cursor_motion(ucstring_t *string, int cursor_motion)
|
|
|
|
This function will change the cursor motion type and return the previous
|
|
cursor motion type.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
int ucstring_cursor_right(ucstring_t *string, int count)
|
|
|
|
This function will move the internal cursor to the right according to the
|
|
type of cursor motion set for the string.
|
|
|
|
If no cursor motion is performed, it returns 0. Otherwise it will return a
|
|
1.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
int ucstring_cursor_left(ucstring_t *string, int count)
|
|
|
|
This function will move the internal cursor to the left according to the
|
|
type of cursor motion set for the string.
|
|
|
|
If no cursor motion is performed, it returns 0. Otherwise it will return a
|
|
1.
|