]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Tue, 17 May 2011 23:57:42 +0000 (23:57 +0000)
committerjsancho <devnull@localhost>
Tue, 17 May 2011 23:57:42 +0000 (23:57 +0000)
Makefile
configure.ac
src/Makefile.am
src/gacela.c
src/gacela_FTGL.c [new file with mode: 0644]
src/gacela_FTGL.h [new file with mode: 0644]

index 56409d1419b8d7a18c8c7da267e9bd8bfb33dcee..8b2e0be631f3ef3ae30ca488652e6803fad5ef46 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -86,7 +86,7 @@ AUTOMAKE = ${SHELL} /home/jsancho/proyectos/gacela/trunk/missing --run automake-
 AWK = mawk
 CC = gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2
+CFLAGS = -g -O2 -I/usr/include/freetype2
 CPPFLAGS = 
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
@@ -107,7 +107,7 @@ INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
 LDFLAGS = 
 LIBOBJS = 
-LIBS =  -lSDL -lSDL_image -lSDL_mixer -lGL -lGLU
+LIBS =  -lSDL -lSDL_image -lSDL_mixer -lGL -lGLU -lftgl
 LTLIBOBJS = 
 MAKEINFO = ${SHELL} /home/jsancho/proyectos/gacela/trunk/missing --run makeinfo
 MKDIR_P = /bin/mkdir -p
index 29d0f81de97334ee293854543cf21e7ea8d23699..b86920cf059aaf8696b6c9f7510053dd5d5b4527 100644 (file)
@@ -2,6 +2,7 @@ AC_INIT([gacela], [0.5], [jsf@jsancho.org])
 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
 AC_PROG_CC
 GUILE_FLAGS
+CFLAGS="$CFLAGS -I/usr/include/freetype2"
 AC_CHECK_LIB(SDL,
        main,
        LIBS="$LIBS -lSDL",
@@ -27,6 +28,11 @@ AC_CHECK_LIB(GLU,
        LIBS="$LIBS -lGLU",
        AC_MSG_ERROR([*** GLU library not found!])
 )
+AC_CHECK_LIB(ftgl,
+       main,
+       LIBS="$LIBS -lftgl",
+       AC_MSG_ERROR([*** FTGL library not found!])
+)
 AC_CONFIG_SRCDIR([src/gacela_SDL.h])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([
index 948db53d5a29b44b7560421a7aac0a2b59e22f4c..e1c7d16b52d47e3912763c8e4507554b477d2fe8 100644 (file)
@@ -1,4 +1,4 @@
 bin_PROGRAMS = gacela
-gacela_SOURCES = gacela.c gacela_SDL.c gacela_GL.c
+gacela_SOURCES = gacela.c gacela_SDL.c gacela_GL.c gacela_FTGL.c
 gacela_LDADD = @GUILE_LDFLAGS@
 
index ad85b740a14a95e75726ef0562964609e3e122cc..1f80b76b34fcd130a06a4a58ae2f73ff495c78a4 100644 (file)
 #include <libgen.h>
 #include "gacela_SDL.h"
 #include "gacela_GL.h"
+#include "gacela_FTGL.h"
 
 static void*
 register_functions (void* data)
 {
   SDL_register_functions (NULL);
   GL_register_functions (NULL);
+  FTGL_register_functions (NULL);
   return NULL;
 }
 
-void
-load_scheme_files (char *path)
-{
-  load_scheme_file (path, "gacela.scm");
-}
-
 void
 load_scheme_file (char *path, char *filename)
 {
@@ -46,6 +42,12 @@ load_scheme_file (char *path, char *filename)
   scm_c_primitive_load (fn);
 }
 
+void
+load_scheme_files (char *path)
+{
+  load_scheme_file (path, "gacela.scm");
+}
+
 int
 main (int argc, char *argv[])
 {
diff --git a/src/gacela_FTGL.c b/src/gacela_FTGL.c
new file mode 100644 (file)
index 0000000..15232fa
--- /dev/null
@@ -0,0 +1,103 @@
+/* Gacela, a GNU Guile extension for fast games development
+   Copyright (C) 2009 by Javier Sancho Fernandez <jsf at jsancho dot org>
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <libguile.h>
+#include <FTGL/ftgl.h>
+#include "gacela_FTGL.h"
+
+struct font
+{
+  SCM filename;
+  FTGLfont *font_address;
+};
+
+static scm_t_bits font_tag;
+
+
+SCM
+gacela_ftglCreateTextureFont (SCM file)
+{
+  SCM smob;
+  struct font *font;
+  FTGLfont *font_address = NULL;
+
+  font_address = ftglCreateTextureFont (scm_to_locale_string (file));
+
+  if (font_address) {
+    font = (struct font *) scm_gc_malloc (sizeof (struct font), "font");
+
+    font->filename = SCM_BOOL_F;
+    font->font_address = NULL;
+
+    SCM_NEWSMOB (smob, font_tag, font);
+
+    font->filename = file;
+    font->font_address = font_address;
+
+    return smob;
+  }
+  else {
+    return SCM_UNSPECIFIED;
+  }
+}
+
+SCM
+gacela_ftglSetFontFaceSize (SCM font, SCM size, SCM res)
+{
+  return scm_from_int (ftglSetFontFaceSize ((FTGLfont *)scm_to_int (font), scm_to_int (size), scm_to_int (res)));
+}
+
+SCM
+gacela_ftglSetFontCharMap (SCM font, SCM encoding)
+{
+  return scm_from_int (ftglSetFontCharMap ((FTGLfont *)scm_to_int (font), scm_to_int (encoding)));
+}
+
+SCM
+gacela_ftglRenderFont (SCM font, SCM string, SCM mode)
+{
+  ftglRenderFont ((FTGLfont *)scm_to_int (font), scm_to_locale_string(string), scm_to_int (mode));
+  return SCM_UNSPECIFIED;
+}
+
+SCM
+gacela_ftglDestroyFont (SCM font)
+{
+  ftglDestroyFont ((FTGLfont *)scm_to_int (font));
+  return SCM_UNSPECIFIED;
+}
+
+void*
+FTGL_register_functions (void* data)
+{
+  font_tag = scm_make_smob_type ("font", sizeof (struct font));
+  //  scm_set_smob_mark (surface_tag, mark_surface);
+  //  scm_set_smob_free (surface_tag, free_surface);
+  //  scm_set_smob_print (surface_tag, print_surface);
+  //  scm_set_smob_equalp (surface_tag, equalp_surface);
+
+  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 ("ftglSetFontFaceSize", 3, 0, 0, gacela_ftglSetFontFaceSize);
+  scm_c_define_gsubr ("ftglSetFontCharMap", 2, 0, 0, gacela_ftglSetFontCharMap);
+  scm_c_define_gsubr ("ftglRenderFont", 3, 0, 0, gacela_ftglRenderFont);
+  scm_c_define_gsubr ("ftglDestroyFont", 1, 0, 0, gacela_ftglDestroyFont);
+
+  return NULL;
+}
diff --git a/src/gacela_FTGL.h b/src/gacela_FTGL.h
new file mode 100644 (file)
index 0000000..83111e9
--- /dev/null
@@ -0,0 +1,18 @@
+/* Gacela, a GNU Guile extension for fast games development
+   Copyright (C) 2009 by Javier Sancho Fernandez <jsf at jsancho dot org>
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+void* FTGL_register_functions (void* data);