diff options
author | Stefan Jeske <stefan@gtk.org> | 1998-06-25 09:01:42 +0000 |
---|---|---|
committer | Stefan Jeske <stefan@src.gnome.org> | 1998-06-25 09:01:42 +0000 |
commit | 37460b20782029bb9886e1cd45bc4a7ac5e44e50 (patch) | |
tree | c962e04aa8102d4b19257a7ff05f64b49be7ec3a /gdk/gdkfont.c | |
parent | 713cecba4cdf7004d19871b21d2c978ab292984c (diff) | |
download | gdk-pixbuf-37460b20782029bb9886e1cd45bc4a7ac5e44e50.tar.gz |
Added functions gdk_text_height, gdk_string_height, gdk_char_height to
Thu Jun 25 10:50:34 1998 Stefan Jeske <stefan@gtk.org>
* gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
gdk_string_height, gdk_char_height to retrieve the exact
height of a text.
Diffstat (limited to 'gdk/gdkfont.c')
-rw-r--r-- | gdk/gdkfont.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gdk/gdkfont.c b/gdk/gdkfont.c index 352de2003..acc82f2b6 100644 --- a/gdk/gdkfont.c +++ b/gdk/gdkfont.c @@ -385,3 +385,71 @@ gdk_char_measure (GdkFont *font, return gdk_text_measure (font, &character, 1); } + +gint +gdk_string_height (GdkFont *font, + const gchar *string) +{ + g_return_val_if_fail (font != NULL, -1); + g_return_val_if_fail (string != NULL, -1); + + return gdk_text_height (font, string, strlen (string)); +} + +gint +gdk_text_height (GdkFont *font, + const gchar *text, + gint text_length) +{ + GdkFontPrivate *private; + XCharStruct overall; + XFontStruct *xfont; + XFontSet fontset; + XRectangle ink, log; + int direction; + int font_ascent; + int font_descent; + gint height; + + g_return_val_if_fail (font != NULL, -1); + g_return_val_if_fail (text != NULL, -1); + + private = (GdkFontPrivate*) font; + + switch (font->type) + { + case GDK_FONT_FONT: + xfont = (XFontStruct *) private->xfont; + if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0)) + { + XTextExtents (xfont, text, text_length, + &direction, &font_ascent, &font_descent, + &overall); + } + else + { + XTextExtents16 (xfont, (XChar2b *) text, text_length / 2, + &direction, &font_ascent, &font_descent, + &overall); + } + height = overall.ascent + overall.descent; + break; + case GDK_FONT_FONTSET: + fontset = (XFontSet) private->xfont; + XmbTextExtents (fontset, text, text_length, &ink, &log); + height = log.height; + break; + default: + height = 0; + } + return height; +} + +gint +gdk_char_height (GdkFont *font, + gchar character) +{ + g_return_val_if_fail (font != NULL, -1); + + return gdk_text_height (font, &character, 1); +} |