From 37460b20782029bb9886e1cd45bc4a7ac5e44e50 Mon Sep 17 00:00:00 2001 From: Stefan Jeske Date: Thu, 25 Jun 1998 09:01:42 +0000 Subject: [PATCH] Added functions gdk_text_height, gdk_string_height, gdk_char_height to Thu Jun 25 10:50:34 1998 Stefan Jeske * 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. --- ChangeLog | 6 ++++ ChangeLog.pre-2-0 | 6 ++++ ChangeLog.pre-2-10 | 6 ++++ ChangeLog.pre-2-2 | 6 ++++ ChangeLog.pre-2-4 | 6 ++++ ChangeLog.pre-2-6 | 6 ++++ ChangeLog.pre-2-8 | 6 ++++ gdk/gdk.h | 33 ++++++++++++--------- gdk/gdkfont.c | 68 +++++++++++++++++++++++++++++++++++++++++++ gdk/x11/gdkfont-x11.c | 68 +++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 198 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index c0adc68102..3882fc5a06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index c0adc68102..3882fc5a06 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c0adc68102..3882fc5a06 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index c0adc68102..3882fc5a06 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index c0adc68102..3882fc5a06 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index c0adc68102..3882fc5a06 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index c0adc68102..3882fc5a06 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Thu Jun 25 10:50:34 1998 Stefan Jeske + + * 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. + Thu Jun 25 07:53:51 BST 1998 Tony Gale * docs/gtk_tut.sgml: add section on GtkCList widget, contributed diff --git a/gdk/gdk.h b/gdk/gdk.h index 7d1815340c..2713772066 100644 --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -489,26 +489,33 @@ gint gdk_color_equal (GdkColor *colora, /* Fonts */ GdkFont* gdk_font_load (const gchar *font_name); -GdkFont* gdk_fontset_load (gchar *fontset_name); -GdkFont* gdk_font_ref (GdkFont *font); -void gdk_font_unref (GdkFont *font); +GdkFont* gdk_fontset_load (gchar *fontset_name); +GdkFont* gdk_font_ref (GdkFont *font); +void gdk_font_unref (GdkFont *font); gint gdk_font_id (const GdkFont *font); gint gdk_font_equal (const GdkFont *fonta, const GdkFont *fontb); -gint gdk_string_width (GdkFont *font, +gint gdk_string_width (GdkFont *font, const gchar *string); -gint gdk_text_width (GdkFont *font, +gint gdk_text_width (GdkFont *font, const gchar *text, - gint text_length); -gint gdk_char_width (GdkFont *font, - gchar character); -gint gdk_string_measure (GdkFont *font, + gint text_length); +gint gdk_char_width (GdkFont *font, + gchar character); +gint gdk_string_measure (GdkFont *font, const gchar *string); -gint gdk_text_measure (GdkFont *font, +gint gdk_text_measure (GdkFont *font, const gchar *text, - gint text_length); -gint gdk_char_measure (GdkFont *font, - gchar character); + gint text_length); +gint gdk_char_measure (GdkFont *font, + gchar character); +gint gdk_string_height (GdkFont *font, + const gchar *string); +gint gdk_text_height (GdkFont *font, + const gchar *text, + gint text_length); +gint gdk_char_height (GdkFont *font, + gchar character); /* Drawing diff --git a/gdk/gdkfont.c b/gdk/gdkfont.c index 352de2003f..acc82f2b62 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); +} diff --git a/gdk/x11/gdkfont-x11.c b/gdk/x11/gdkfont-x11.c index 352de2003f..acc82f2b62 100644 --- a/gdk/x11/gdkfont-x11.c +++ b/gdk/x11/gdkfont-x11.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); +}