X Version 11 (Release 6.1)
XctData(X3xmu)
XctData --
compound text functions
Synopsis
cc . . . -lXmu
#include <X11/Xmu/Xct.h>
typedef unsigned char *XctString;
XctData XctCreate(string, length, flags)
XctString string;
int length;
XctFlags flags;
void XctReset(data)
XctData data;
XctResult XctNextItem(data)
XctData data;
void XctFree(data)
XctData data;
Arguments
string-
Compound Text string.
length-
Number of bytes in string.
flags-
Parsing control flags.
data-
Specifies the Compound Text structure.
Description
A Compound Text string is represented as indicated in the
Synopsis section above.
The functions defined in this section are for parsing Compound Text strings
and decomposing them into individual segments.
Definitions needed to use these
routines are in the include file <X11/Xmu/Xct.h>.
XctCreate returns an
XctData
structure that can be used for parsing a Compound Text
string.
string need not be null terminated. The following flags are
defined to control parsing of the string:
XctSingleSetSegments-
This means that returned segments should contain
characters from only one set (C0, C1, GL,
GR). When this is requested,
XctSegment
is never returned by XctNextItem,
instead
XctC0Segment,
XctC1Segment,
XctGlSegment,
and
XctGRSegment
are returned. C0 and C1
segments are always returned as singleton characters.
XctProvideExtensions-
This means that if the Compound Text string is from a
higher version than this code is implemented to, then syntactically correct
but unknown control sequences should be returned as
XctExtension
items by
XctNextItem.
If this flag is not set, and the Compound Text string version
indicates that extensions cannot be ignored, then each unknown control
sequence will be reported as an
XctError.
XctAcceptC0Extensions-
This means that if the Compound Text string is from
a higher version than this code is implemented to, then
unknown C0
characters should be treated as if they were legal, and returned
as C0 characters (regardless of how
XctProvideExtensions
is set) by
XctNextItem.
If this flag is not set, then all unknown C0
characters are treated according to
XctProvideExtensions.
XctAcceptC1Extensions-
This means that if the Compound Text string is from
a higher version than this code is implemented to, then
unknown C1
characters should be treated as if they were legal, and returned
as C1 characters (regardless of how
XctProvideExtensions
is set) by
XctNextItem.
If this flag is not set, then all unknown
C1 characters are treated
according to
XctProvideExtensions.
XctHideDirection-
This means that horizontal direction changes should be
reported as
XctHorizontal
items by
XctNextItem.
If this flag is not set,
then direction changes are not returned as items, but the current direction
is still maintained and reported for other items. The current direction is
given as an enumeration, with the values
XctUnspecified,
XctLeftToRight,
and
XctRightToLeft.
XctFreeString-
This means that
XctFree
should free the Compound Text string that is passed to
XctCreate.
If this flag is not set, the string is not freed.
XctShiftMultiGRToGL-
This means that
XctNextItem
should translate GR
segments on-the-fly into GL segments for the GR
sets: GB2312.1980-1,
JISX0208.1983-1, and KSC5601.1987-1.
XctReset resets the
XctData
structure to reparse the Compound Text string from the beginning.
XctNextItem parses the next ``item'' from the Compound Text string.
The
return value indicates what kind of item is returned. The item itself, its
length, and the current contextual state, are reported as components of the
XctData
structure.
XctResult
is an enumeration, with the following values:
XctSegment-
The item contains some mixture of C0, GL,
GR, and C1 characters.
XctC0Segment-
The item contains only C0 characters.
XctGLSegment-
The item contains only GL characters.
XctC1Segment-
The item contains only C1 characters.
XctGRSegment-
The item contains only GR characters.
XctExtendedSegment-
The item contains an extended segment.
XctExtension-
The item is an unknown extension control sequence.
XctHorizontal-
The item indicates a change in horizontal direction or
depth. The new direction and depth are recorded in the
XctData
structure.
XctEndOfText-
The end of the Compound Text string has been reached.
XctError-
The string contains a syntactic or semantic error; no further
parsing should be performed.
XctFree-
This frees all data associated with the
XctData structure.
Structures
The following structure is defined for XctData :
typedef struct _XctRec {
XctString total_string; /* as given to XctCreate */
int total_length; /* as given to XctCreate */
XctFlags flags; /* as given to XctCreate */
int version; /* indicates version of the CT spec
the string was produced from */
int can_ignore_exts; /* non-zero if ignoring extensions
is acceptable, else zero */
XctString item; /* the action item */
int item_length; /* the length of item in bytes */
int char_size; /* number of bytes per character in
item, zero meaning variable */
char *encoding; /* the XLFD encoding name for item */
XctHDirection horizontal; /* the direction of item */
int horz_depth; /* current direction nesting depth */
char *GL; /* "{I} F" string for the current GL */
char *GL_encoding; /* XLFD encoding name for current GL */
int GL_set_size; /* 94 or 96 */
int GL_char_size; /* number of bytes per GL character */
char *GR; /* "{I} F" string for the current GR */
char *GR_encoding; /* XLFD encoding name for current GR */
int GR_set_size; /* 94 or 96 */
int GR_char_size; /* number of bytes per GR character */
char *GLGR_encoding; /* XLFD encoding name for the
current GL+GR, if known */
struct _XctPriv *priv; /* private to parser */
} *XctData;
The following is the return type defined for XctNextItem:
typedef enum {
XctSegment, /* used when XctSingleSetSegments not requested */
XctC0Segment, /* used when XctSingleSetSegments is requested */
XctGLSegment, /* used when XctSingleSetSegments is requested */
XctC1Segment, /* used when XctSingleSetSegments is requested */
XctGRSegment, /* used when XctSingleSetSegments is requested */
XctExtendedSegment, /* an extended segment */
XctExtension, /* used when XctProvideExtensions is requested */
XctHorizontal, /* horizontal direction or depth change */
XctEndOfText, /* end of text string */
XctError /* syntactic or semantic error */
} XctResult;
References
Xlib - C Language X Interface
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004