#include "Xlibint.h"
#include "Xlcint.h"
#if NeedFunctionPrototypes
void
XwcDrawText(
Display *dpy,
Drawable d,
GC gc,
int x,
int y,
XwcTextItem *text_items,
int nitems)
#else
void
XwcDrawText(dpy, d, gc, x, y, text_items, nitems)
Display *dpy;
Drawable d;
GC gc;
int x, y;
XwcTextItem *text_items;
int nitems;
#endif
{
register XFontSet fs = NULL;
register XwcTextItem *p = text_items;
register int i = nitems;
register int esc;
while (i && !p->font_set) {
i--;
p++;
}
for (; --i >= 0; p++) {
if (p->font_set)
fs = p->font_set;
x += p->delta;
esc = (*fs->methods->wc_draw_string) (dpy, d, fs, gc, x, y,
p->chars, p->nchars);
if (!esc)
esc = fs->methods->wc_escapement (fs, p->chars, p->nchars);
x += esc;
}
}
#if NeedFunctionPrototypes
void
XwcDrawString(
Display *dpy,
Drawable d,
XFontSet font_set,
GC gc,
int x,
int y,
_Xconst wchar_t *text,
int text_len)
#else
void
XwcDrawString(dpy, d, font_set, gc, x, y, text, text_len)
Display *dpy;
Drawable d;
XFontSet font_set;
GC gc;
int x, y;
_Xconst wchar_t *text;
int text_len;
#endif
{
(void)(*font_set->methods->wc_draw_string) (dpy, d, font_set, gc, x, y,
text, text_len);
}
#if NeedFunctionPrototypes
void
XwcDrawImageString(
Display *dpy,
Drawable d,
XFontSet font_set,
GC gc,
int x,
int y,
_Xconst wchar_t *text,
int text_len)
#else
void
XwcDrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
Display *dpy;
Drawable d;
XFontSet font_set;
GC gc;
int x, y;
_Xconst wchar_t *text;
int text_len;
#endif
{
(*font_set->methods->wc_draw_image_string) (dpy, d, font_set, gc, x, y,
text, text_len);
}
#if NeedFunctionPrototypes
int
XwcTextEscapement(
XFontSet font_set,
_Xconst wchar_t *text,
int text_len)
#else
int
XwcTextEscapement(font_set, text, text_len)
XFontSet font_set;
_Xconst wchar_t *text;
int text_len;
#endif
{
return (*font_set->methods->wc_escapement) (font_set, text, text_len);
}
#if NeedFunctionPrototypes
int
XwcTextExtents(
XFontSet font_set,
_Xconst wchar_t *text,
int text_len,
XRectangle *overall_ink_extents,
XRectangle *overall_logical_extents)
#else
int
XwcTextExtents(font_set, text, text_len,
overall_ink_extents, overall_logical_extents)
XFontSet font_set;
_Xconst wchar_t *text;
int text_len;
XRectangle *overall_ink_extents;
XRectangle *overall_logical_extents;
#endif
{
return (*font_set->methods->wc_extents) (font_set, text, text_len,
overall_ink_extents,
overall_logical_extents);
}
#if NeedFunctionPrototypes
Status
XwcTextPerCharExtents(
XFontSet font_set,
_Xconst wchar_t *text,
int text_len,
XRectangle *ink_extents_buffer,
XRectangle *logical_extents_buffer,
int buffer_size,
int *num_chars,
XRectangle *max_ink_extents,
XRectangle *max_logical_extents)
#else
Status
XwcTextPerCharExtents(font_set, text, text_len,
ink_extents_buffer, logical_extents_buffer,
buffer_size, num_chars,
max_ink_extents, max_logical_extents)
XFontSet font_set;
_Xconst wchar_t *text;
int text_len;
XRectangle *ink_extents_buffer;
XRectangle *logical_extents_buffer;
int buffer_size;
int *num_chars;
XRectangle *max_ink_extents;
XRectangle *max_logical_extents;
#endif
{
return (*font_set->methods->wc_extents_per_char)
(font_set, text, text_len,
ink_extents_buffer, logical_extents_buffer,
buffer_size, num_chars, max_ink_extents, max_logical_extents);
}