diff options
author | Midare Kiyura <puce@gmx.com> | 2008-05-24 16:04:33 -0500 |
---|---|---|
committer | Shawn <sabetts@juicebox.(none)> | 2008-05-24 23:41:09 -0700 |
commit | d37c7484ab881b0283fd4573235b24fe7d1e7af9 (patch) | |
tree | 981341de090bb7834ab4617aed763218d9c7e8f5 /src/globals.c | |
parent | c7ec59674cfe315f2a0ea54fc7444b4a6a6a8a67 (diff) | |
download | ratpoison-d37c7484ab881b0283fd4573235b24fe7d1e7af9.zip |
Add xft support
Diffstat (limited to 'src/globals.c')
-rw-r--r-- | src/globals.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/globals.c b/src/globals.c index 844e9d4..91467c3 100644 --- a/src/globals.c +++ b/src/globals.c @@ -264,3 +264,49 @@ init_globals (void) selection.text = NULL; selection.len = 0; } + +/* Wrapper font functions to support Xft */ + +void +rp_draw_string (rp_screen *s, Drawable d, GC gc, int x, int y, char *string, int length) +{ + if (length < 0) + length = strlen (string); + +#ifdef USE_XFT_FONT + if (s->ft_font) + { + XftDraw *draw; + draw = XftDrawCreate (dpy, d, DefaultVisual (dpy, s->screen_num), + DefaultColormap (dpy, s->screen_num)); + if (draw) + { + XftDrawString8 (draw, &s->color, s->ft_font, x, y, (FcChar8*) string, length); + XftDrawDestroy (draw); + } + else + PRINT_ERROR(("Failed to allocate XftDraw object\n")); + } + else +#endif + XmbDrawString (dpy, d, defaults.font, gc, x, y, string, length); +} + +int +rp_text_width (rp_screen *s, XFontSet font, char *string, int count) +{ + if (count < 0) + count = strlen (string); + +#ifdef USE_XFT_FONT + if (s->ft_font) + { + XGlyphInfo extents; + XftTextExtents8 (dpy, s->ft_font, (FcChar8*) string, count, &extents); + return extents.xOff; + } + else +#endif + return XmbTextEscapement (font, string, count); +} + |