From b8b635a078699b0d6dd36348f0324d192fec95ac Mon Sep 17 00:00:00 2001 From: jsancho Date: Fri, 16 Mar 2012 10:25:29 +0000 Subject: [PATCH] Storing original font size. --- src/ftgl.c | 18 ++++++++++++++++++ src/video.scm | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ftgl.c b/src/ftgl.c index 57fbbf8..ca39ad9 100644 --- a/src/ftgl.c +++ b/src/ftgl.c @@ -57,6 +57,16 @@ get_font_address (SCM font_smob) return font->font_address; } +SCM +get_font_size (SCM font_smob) +{ + struct font *font; + + scm_assert_smob_type (font_tag, font_smob); + font = (struct font *) SCM_SMOB_DATA (font_smob); + return scm_from_int (font->size); +} + SCM mark_font (SCM font_smob) { @@ -113,6 +123,12 @@ gacela_ftglSetFontFaceSize (SCM font, SCM size, SCM res) return scm_from_int (ftglSetFontFaceSize (get_font_address (font), scm_to_int (size), scm_to_int (res))); } +SCM +gacela_ftglGetFontFaceSize (SCM font) +{ + return scm_from_int (ftglGetFontFaceSize (get_font_address (font))); +} + SCM gacela_ftglSetFontCharMap (SCM font, SCM encoding) { @@ -135,12 +151,14 @@ init_gacela_ftgl (void *data) scm_set_smob_free (font_tag, free_font); scm_set_smob_print (font_tag, print_font); // scm_set_smob_equalp (surface_tag, equalp_surface); + scm_c_define_gsubr ("font-size", 1, 0, 0, get_font_size); scm_c_define ("ft_encoding_unicode", scm_from_int (ft_encoding_unicode)); scm_c_define ("FTGL_RENDER_ALL", scm_from_int (FTGL_RENDER_ALL)); scm_c_define_gsubr ("ftglCreateTextureFont", 2, 0, 0, gacela_ftglCreateTextureFont); scm_c_define_gsubr ("ftglSetFontFaceSize", 3, 0, 0, gacela_ftglSetFontFaceSize); + scm_c_define_gsubr ("ftglGetFontFaceSize", 1, 0, 0, gacela_ftglGetFontFaceSize); scm_c_define_gsubr ("ftglSetFontCharMap", 2, 0, 0, gacela_ftglSetFontCharMap); scm_c_define_gsubr ("ftglRenderFont", 3, 0, 0, gacela_ftglRenderFont); } diff --git a/src/video.scm b/src/video.scm index 5a5ef2b..726694a 100644 --- a/src/video.scm +++ b/src/video.scm @@ -408,5 +408,9 @@ font)) (define* (render-text text font #:key (size #f)) - (cond (size (ftglSetFontFaceSize font size 72))) + (cond (size + (cond ((not (= (ftglGetFontFaceSize font) size)) + (ftglSetFontFaceSize font size 72)))) + ((not (= (ftglGetFontFaceSize font) (font-size font))) + (ftglSetFontFaceSize font (font-size font) 72))) (ftglRenderFont font text FTGL_RENDER_ALL)) -- 2.39.2