Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XctData.Xmu.z() — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought


 XctData(Xmu)      X Version 11 (Release 5) 6 January 1993       XctData(Xmu)


 Name

    XctData - compound text functions

 Syntax


    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 Syntax 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 con-
       tain 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 charac-
       ters.

    +  XctProvideExtensions -- This means that if the Compound Text string is
       from a higher version than this code is implemented to, then syntacti-
       cally 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 follow-
    ing 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;


 See also

    Xlib - C Language X Interface


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026