]> git.jsancho.org Git - gacela.git/blob - gacela.c
(no commit message)
[gacela.git] / gacela.c
1 #include <SDL/SDL.h>
2 #include <GL/gl.h>
3 #include <libguile.h>
4 #include <pthread.h>
5
6 SCM prueba () {
7         int flags;
8
9         SDL_Init (SDL_INIT_EVERYTHING);
10
11         SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
12
13         flags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE | SDL_SWSURFACE;
14         SDL_SetVideoMode (200, 200, 32, flags);
15
16         glShadeModel (GL_SMOOTH);
17         glClearColor (0, 0, 0, 0);
18         glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
19         glViewport (0, 0, 200, 200);
20         glMatrixMode (GL_PROJECTION);
21         glLoadIdentity ();
22         glOrtho (-200, 200, -200, 200, 0, 1);
23         glMatrixMode (GL_MODELVIEW);
24         glLoadIdentity ();
25
26         return SCM_UNSPECIFIED;
27 }
28
29 void *bucle () {
30         while (1) {
31                 scm_c_eval_string("(define contador (+ contador incremento))");
32                 scm_c_eval_string("(if (> contador 1000) (define incremento -1))");
33                 scm_c_eval_string("(if (< contador 0) (define incremento 1))");
34         }
35         pthread_exit(NULL);
36 }
37
38 SCM lanzar_bucle () {
39         pthread_t t;
40
41         pthread_create(&t, NULL, bucle, NULL);
42         return SCM_UNSPECIFIED;
43 }
44
45 /*SCM ver_contador () {
46         return scm_from_int(contador);
47 }*/
48
49 static void*
50 register_functions (void* data)
51 {
52         scm_c_define_gsubr ("prueba", 0, 0, 0, &prueba);
53 //      scm_c_define_gsubr ("ver-contador", 0, 0, 0, &ver_contador);
54         scm_c_define_gsubr ("lanzar-bucle", 0, 0, 0, &lanzar_bucle);
55         return NULL;
56 }
57
58
59 int main (int argc, char *argv[]) {
60         scm_with_guile (&register_functions, NULL);
61         scm_c_eval_string("(set-repl-prompt! \"gacela>\")");
62         scm_c_eval_string("(use-modules (ice-9 readline))");
63         scm_c_eval_string("(activate-readline)");
64         scm_c_eval_string("(define contador 0)");
65         scm_c_eval_string("(define incremento 1)");
66         scm_shell (argc, argv);
67 }
68