summaryrefslogtreecommitdiff
path: root/src/globals.c
diff options
context:
space:
mode:
authorMidare Kiyura <puce@gmx.com>2008-05-24 16:04:33 -0500
committerShawn <sabetts@juicebox.(none)>2008-05-24 23:41:09 -0700
commitd37c7484ab881b0283fd4573235b24fe7d1e7af9 (patch)
tree981341de090bb7834ab4617aed763218d9c7e8f5 /src/globals.c
parentc7ec59674cfe315f2a0ea54fc7444b4a6a6a8a67 (diff)
downloadratpoison-d37c7484ab881b0283fd4573235b24fe7d1e7af9.zip
Add xft support
Diffstat (limited to 'src/globals.c')
-rw-r--r--src/globals.c46
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);
+}
+