X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fftgl.c;h=ca39ad9b8a7da56432b64a807de361ff90387183;hb=bdc03bcc2da4d01745fb542d7a7d642b888b691e;hp=2dc79a0fd1ca2e92225adce0ffae78b74b5412a4;hpb=905abebe9a3b80a9ae2723024c6df8a728076157;p=gacela.git diff --git a/src/ftgl.c b/src/ftgl.c index 2dc79a0..ca39ad9 100644 --- a/src/ftgl.c +++ b/src/ftgl.c @@ -22,12 +22,13 @@ struct font { SCM filename; FTGLfont *font_address; + int size; }; static scm_t_bits font_tag; SCM -make_font (SCM file, FTGLfont *font_address) +make_font (SCM file, SCM size, FTGLfont *font_address) { SCM smob; struct font *font; @@ -35,6 +36,7 @@ make_font (SCM file, FTGLfont *font_address) font = (struct font *) scm_gc_malloc (sizeof (struct font), "font"); font->filename = SCM_BOOL_F; + font->size = scm_to_int (size); font->font_address = NULL; SCM_NEWSMOB (smob, font_tag, font); @@ -55,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) { @@ -83,7 +95,9 @@ print_font (SCM font_smob, SCM port, scm_print_state *pstate) scm_puts ("#filename, port); - scm_puts ("\">", port); + scm_puts ("\", size ", port); + scm_display (scm_from_int (font->size), port); + scm_puts (">", port); /* non-zero means success */ return 1; @@ -91,12 +105,12 @@ print_font (SCM font_smob, SCM port, scm_print_state *pstate) SCM -gacela_ftglCreateTextureFont (SCM file) +gacela_ftglCreateTextureFont (SCM file, SCM size) { FTGLfont *font_address = ftglCreateTextureFont (scm_to_locale_string (file)); if (font_address) { - return make_font (file, font_address); + return make_font (file, size, font_address); } else { return SCM_BOOL_F; @@ -109,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) { @@ -131,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", 1, 0, 0, gacela_ftglCreateTextureFont); + 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); }