X-Git-Url: https://git.jsancho.org/?p=guile-irrlicht.git;a=blobdiff_plain;f=src%2Fdevice.cpp;h=3b5b9b9f76d1b820c755e6580b71d7db9bd9dd51;hp=a02cd0564f221c6b130285d813eeca0660f6b967;hb=3394d6066c9092a5444c9273f52cea01e2eaf10f;hpb=704cf6c2cc3d308c625071f6e03bd20ed2d833f8 diff --git a/src/device.cpp b/src/device.cpp index a02cd05..3b5b9b9 100644 --- a/src/device.cpp +++ b/src/device.cpp @@ -34,9 +34,10 @@ extern "C" { init_device (void) { init_device_type (); - scm_c_define_gsubr ("create-device", 7, 0, 0, (scm_t_subr)irr_createDevice); + scm_c_define_gsubr ("create-device", 0, 0, 1, (scm_t_subr)irr_createDevice); scm_c_define_gsubr ("run", 1, 0, 0, (scm_t_subr)irr_run); scm_c_define_gsubr ("set-window-caption!", 2, 0, 0, (scm_t_subr)irr_setWindowCaption); + scm_c_export ("create-device", "run", "set-window-caption!", NULL); } DEFINE_WRAPPED_TYPE (irr::IrrlichtDevice*, "device", @@ -44,17 +45,30 @@ extern "C" { wrap_device, unwrap_device); SCM - irr_createDevice (SCM deviceType, - SCM windowSize, - SCM bits, - SCM fullscreen, - SCM stencilbuffer, - SCM vsync, - SCM receiver) + irr_createDevice (SCM rest) { + SCM device_type = scm_from_utf8_symbol ("software"); + SCM window_size = scm_list_2 (scm_from_uint32 (640), + scm_from_uint32 (480)); + SCM bits = scm_from_uint32 (16); + SCM fullscreen = scm_from_bool (0); + SCM stencilbuffer = scm_from_bool (0); + SCM vsync = scm_from_bool (0); + SCM receiver = scm_from_bool (0); + + scm_c_bind_keyword_arguments ("create-device", rest, (scm_t_keyword_arguments_flags)0, + scm_from_utf8_keyword ("device-type"), &device_type, + scm_from_utf8_keyword ("window-size"), &window_size, + scm_from_utf8_keyword ("bits"), &bits, + scm_from_utf8_keyword ("fullscreen"), &fullscreen, + scm_from_utf8_keyword ("stencilbuffer"), &stencilbuffer, + scm_from_utf8_keyword ("vsync"), &vsync, + scm_from_utf8_keyword ("receiver"), &receiver, + SCM_UNDEFINED); + irr::IrrlichtDevice* device = - irr::createDevice (scm_to_driver_type (deviceType), - scm_to_dimension2d_u32 (windowSize), + irr::createDevice (scm_to_driver_type (device_type), + scm_to_dimension2d_u32 (window_size), scm_to_uint32 (bits), scm_to_bool (fullscreen), scm_to_bool (stencilbuffer),