ucpgba(3)ucpgba(3)NAMEucpgba - functions for doing bidirectional reordering of
Unicode text and logical and visual cursor motion
SYNOPSIS
#include <ucdata.h>
#include <ucpgba.h>
ucstring_t *ucstring_create(unsigned long *source, unsigned long start,
unsigned long end, int default_direction,
int cursor_motion)
void ucstring_free(ucstring_t *string)
int ucstring_set_cursor_motion(ucstring_t *string, int cursor_motion)
int ucstring_cursor_right(ucstring_t *string, int count)
int ucstring_cursor_left(ucstring_t *string, int count)
void ucstring_cursor_info(ucstring_t *string, int *direction,
unsigned long *position)
DESCRIPTION
Macros
UCPGBA_LTR
UCPGBA_RTL
UCPGBA_CURSOR_VISUAL
UCPGBA_CURSOR_LOGICAL
ucstring_create()
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().
ucstring_free()
This function will deallocate the memory used by the
string, incuding the string itself.
ucstring_cursor_info()
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.
ucstring_set_cursor_motion()
This function will change the cursor motion type and
return the previous cursor motion type.
ucstring_cursor_right()
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. Oth-
erwise it will return a 1.
ucstring_cursor_left()
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. Oth-
erwise it will return a 1.
SEE ALSOucdata(3)ACKNOWLEDGMENTS
These are people who have helped with patches or alerted
me about problems.
AUTHOR
Mark Leisher
Computing Research Lab
New Mexico State University
Email: mleisher@crl.nmsu.edu
19 November 1999 ucpgba(3)