Files
petri/libpetri-guile/petri.c

59 lines
1.3 KiB
C

#include <agar/core.h>
#include <agar/gui.h>
#include <libguile.h>
SCM_DEFINE(init, "init", 2, 0, 0,
(SCM name, SCM flags), "Initialize Agar's core functionality")
{
AG_InitCore(scm_to_locale_string(name), scm_to_uint(flags));
return scm_from_uint(AG_InitGraphics(NULL));
}
SCM_DEFINE(get_error, "get-error", 0, 0, 0,
(), "Return the last error message")
{
const char *err = AG_GetError();
return scm_from_locale_string(err);
}
SCM_DEFINE(quit, "quit", 0, 0, 0,
(), "Shutdown Petri")
{
AG_Destroy();
AG_Quit();
return SCM_UNDEFINED;
}
SCM_DEFINE(event_loop, "event-loop", 0, 0, 0,
(), "")
{
AG_EventLoop();
return SCM_UNDEFINED;
}
SCM_DEFINE(window_new, "_window-new", 0, 0, 0,
(), "Create a new base level container")
{
return scm_from_pointer(AG_WindowNew(AG_WINDOW_MAIN), AG_ObjectDestroy);
}
SCM_DEFINE(window_show, "window-show", 1, 0, 0,
(SCM win), "Display a window")
{
AG_WindowShow(scm_to_pointer(win));
return SCM_UNDEFINED;
}
SCM_DEFINE(label_new, "_label-new", 2, 0, 0,
(SCM parent, SCM text), "Create a new label with text")
{
return scm_from_pointer(AG_LabelNew(scm_to_pointer(parent), 0, scm_to_locale_string(text)), AG_ObjectDestroy);
}
void
init_petri() {
#ifndef SCM_MAGIC_SNARFER
#include "petri.x"
#endif
}