XDrawText16()XDrawText16()NameXDrawText16 – draw 16-bit polytext strings.
Synopsis
XDrawText16(display, drawable, gc, x, y, items, nitems)
Display *display;
Drawable drawable;
GC gc;
int x, y;
XTextItem16 *items;
int nitems;
Arguments
display Specifies a connection to an X server; returned from
XOpenDisplay().
drawable Specifies the drawable.
gc Specifies the graphics context.
x Specify the x and y coordinates of the baseline starting
y position for the initial string, relative to the origin of
the specified drawable.
items Specifies a pointer to an array of text items using two-byte
characters.
nitems Specifies the number of text items in the array.
DescriptionXDrawText16() is capable of drawing multiple strings on the same hori‐
zontal line and changing fonts between strings. Each XTextItem struc‐
ture contains a string, the number of characters in the string, the
delta offset from the starting position for the string, and the font.
Each text item is processed in turn. The font in each XTextItem is
stored in the specified GC and used for subsequent text. If the XTex‐
tItem16.font is None, the font in the GC is used for drawing and is not
changed. Switching between fonts with different drawing directions is
permitted.
The delta in each XTextItem specifies the change in horizontal position
before the string is drawn. The delta is always added to the character
origin and is not dependent on the drawing direction of the font. For
example, if x = 40, y = 20, and items[0].delta = 8, the string speci‐
fied by items[0].chars would be drawn starting at x = 48, y = 20. The
delta for the second string begins at the rbearing of the last charac‐
ter in the first string. A negative delta would tend to overlay subse‐
quent strings on the end of the previous string.
Only the pixels selected in the font are drawn (the background member
of the GC is not used to fill the bounding box).
In all X releases there is a limit to the number and size of strings
that can be drawn in a single XDrawText16() call, that varies according
to the server. To determine how much text you can draw in a single
call, you find out your server's maximum request size using XMaxRe‐
questSize(). Subtract four, and then subtract ((strlen(string)+2)/4)
for each string. This is the maximum amount of text you can draw in a
single XDrawText16() call.
XDrawText16() uses the following elements in the specified GC: func‐
tion, plane_ mask, fill_style, font, subwindow_mode, clip_x_origin,
clip_y_origin, and clip_mask. This function also uses these graphics
context mode-dependent components: foreground, background, tile, stip‐
ple, ts_x_origin, and ts_y_
origin.
Note that the chars member of the XTextItem16 structure is of type
XChar2b, rather than of type char as it is in the XTextItem structure.
For fonts defined with linear indexing rather than two-byte matrix
indexing, the X server will interpret each member of the XChar2b struc‐
ture as a 16-bit number that has been transmitted most significant byte
first. In other words, the byte1 member of the XChar2b structure is
taken as the most significant byte.
For more information, see Volume One, Chapter 6, Drawing Graphics and
Text, and Chapter 5, The Graphics Context.
Structures
typedef struct {
XChar2b *chars; /* 2 byte characters */
int nchars; /* number of characters */
int delta; /* delta between strings */
Font font; /* font to print it in, None don't change */
} XTextItem16;
typedef struct { /* normal 16 bit characters are two bytes */
unsigned char byte1;
unsigned char byte2;
} XChar2b;
Errors
BadDrawable
BadFont
BadGC
BadMatch
See AlsoXDrawImageString(), XDrawImageString16(), XDrawString(), XDraw‐
String16(), XDrawText(), XQueryTextExtents(), XQueryTextExtents16(),
XTextExtents(), XTextExtents16(), XTextWidth(), XTextWidth16().
Xlib - Text XDrawText16()