]> git.jsancho.org Git - guile-irrlicht.git/commitdiff
get-font set-font!
authorJavier Sancho <jsf@jsancho.org>
Wed, 22 Apr 2020 07:09:02 +0000 (09:09 +0200)
committerJavier Sancho <jsf@jsancho.org>
Wed, 22 Apr 2020 07:09:02 +0000 (09:09 +0200)
src/gui-environment.cpp
src/gui-environment.h
src/gui-skin.cpp
src/gui-skin.h
src/gui.cpp
src/gui.h

index 0e12e72ff7873373a735d84c5526fcd84315513c..1ea86258b4534f89379393e819b78632fac1119a 100644 (file)
@@ -46,7 +46,6 @@ extern "C" {
     DEFINE_GSUBR ("add-image!", 3, 0, 1, irr_gui_addImage);
     DEFINE_GSUBR ("add-static-text!", 3, 0, 1, irr_gui_addStaticText);
     DEFINE_GSUBR ("get-built-in-font", 1, 0, 0, irr_gui_getBuiltInFont);
-    DEFINE_GSUBR ("get-font", 2, 0, 0, irr_gui_getFont);
     DEFINE_GSUBR ("get-gui-environment", 1, 0, 0, irr_getGUIEnvironment);
     DEFINE_GSUBR ("get-skin", 1, 0, 0, irr_gui_getSkin);
   }
@@ -140,15 +139,6 @@ extern "C" {
     return wrap_gui_font (font);
   }
 
-  SCM
-  irr_gui_getFont (SCM wrapped_gui_environment,
-                   SCM filename)
-  {
-    irr::gui::IGUIEnvironment* guienv = unwrap_gui_environment (wrapped_gui_environment);
-    irr::gui::IGUIFont* font = guienv->getFont (scm_to_utf8_stringn (filename, NULL));
-    return wrap_gui_font (font);
-  }
-
   SCM
   irr_gui_getSkin (SCM wrapped_gui_environment)
   {
@@ -184,4 +174,13 @@ extern "C" {
     return wrap_gui_button (button);
   }
 
+  SCM
+  irr_gui_IGUIEnvironment_getFont (SCM wrapped_gui_environment,
+                                   SCM filename)
+  {
+    irr::gui::IGUIEnvironment* guienv = unwrap_gui_environment (wrapped_gui_environment);
+    irr::gui::IGUIFont* font = guienv->getFont (scm_to_utf8_stringn (filename, NULL));
+    return wrap_gui_font (font);
+  }
+
 }
index e99e133f7237873774e978531cb9f2617e5bd4f5..79853fa92fbc0980777021c58993d743078218e7 100644 (file)
@@ -52,10 +52,6 @@ extern "C" {
   SCM
   irr_gui_getBuiltInFont (SCM wrapped_gui_environment);
 
-  SCM
-  irr_gui_getFont (SCM wrapped_gui_environment,
-                   SCM filename);
-
   SCM
   irr_gui_getSkin (SCM wrapped_gui_environment);
 
@@ -64,6 +60,10 @@ extern "C" {
                                      SCM rectangle,
                                      SCM rest);
 
+  SCM
+  irr_gui_IGUIEnvironment_getFont (SCM wrapped_gui_environment,
+                                   SCM filename);
+
   }
 
 #endif
index 4d1f0ec254ae8a67eaf1660fea38416b720e9994..5bbfc6633c99a919228bf64e11f2ba87b6ed706e 100644 (file)
@@ -34,7 +34,7 @@ extern "C" {
   {
     init_gui_skin_type ();
     DEFINE_GSUBR ("get-skin-font", 1, 0, 1, irr_gui_getSkinFont);
-    DEFINE_GSUBR ("set-skin-font!", 2, 0, 1, irr_gui_setSkinFont);
+    DEFINE_GSUBR ("set-font!", 2, 0, 1, irr_gui_setFont);
   }
 
   DEFINE_WRAPPED_TYPE (irr::gui::IGUISkin*, "gui-skin",
@@ -57,13 +57,28 @@ extern "C" {
   }
 
   SCM
-  irr_gui_setSkinFont (SCM wrapped_gui_skin,
-                       SCM font,
-                       SCM rest)
+  irr_gui_IGUISkin_getFont (SCM wrapped_gui_skin,
+                            SCM rest)
   {
     SCM which = scm_from_utf8_symbol ("default");
 
-    scm_c_bind_keyword_arguments ("get-skin-font", rest, (scm_t_keyword_arguments_flags)0,
+    scm_c_bind_keyword_arguments ("get-font", rest, (scm_t_keyword_arguments_flags)0,
+                                  scm_from_utf8_keyword ("which"), &which,
+                                  SCM_UNDEFINED);
+
+    irr::gui::IGUISkin* skin = unwrap_gui_skin (wrapped_gui_skin);
+    irr::gui::IGUIFont* font = skin->getFont (scm_to_default_font (which));
+    return wrap_gui_font (font);
+  }
+
+  SCM
+  irr_gui_setFont (SCM wrapped_gui_skin,
+                   SCM font,
+                   SCM rest)
+  {
+    SCM which = scm_from_utf8_symbol ("default");
+
+    scm_c_bind_keyword_arguments ("set-font!", rest, (scm_t_keyword_arguments_flags)0,
                                   scm_from_utf8_keyword ("which"), &which,
                                   SCM_UNDEFINED);
 
index 529eb0c4e62852ab1c8d8bdacf6ef71ffaa7a523..9d022f95e6d1511acb37d04927ac7007d0574794 100644 (file)
@@ -39,9 +39,13 @@ extern "C" {
                        SCM rest);
 
   SCM
-  irr_gui_setSkinFont (SCM wrapped_gui_skin,
-                       SCM font,
-                       SCM rest);
+  irr_gui_IGUISkin_getFont (SCM wrapped_gui_skin,
+                            SCM rest);
+
+  SCM
+  irr_gui_setFont (SCM wrapped_gui_skin,
+                   SCM font,
+                   SCM rest);
 
   irr::gui::EGUI_DEFAULT_FONT
   scm_to_default_font (SCM default_font);
index 2f7044bb437dea04b7fa807a2fd366dce7e6c7e0..bcc1cef441ff88c9da05f5d8832f8c0edba94b62 100644 (file)
@@ -53,6 +53,7 @@ extern "C" {
 
     // Shared procedures (used by two or more objects)
     DEFINE_GSUBR ("add-button!", 1, 1, 1, irr_gui_addButton);
+    DEFINE_GSUBR ("get-font", 1, 1, 1, irr_gui_getFont);
     DEFINE_GSUBR ("set-override-color!", 2, 0, 0, irr_gui_setOverrideColor);
   }
 
@@ -76,6 +77,26 @@ extern "C" {
       }
   }
 
+  SCM
+  irr_gui_getFont (SCM wrapped_obj,
+                   SCM filename,
+                   SCM rest)
+  {
+    if (gui_environment_p (wrapped_obj))
+      {
+        return irr_gui_IGUIEnvironment_getFont (wrapped_obj, filename);
+      }
+    else if (gui_skin_p (wrapped_obj))
+      {
+        return irr_gui_IGUISkin_getFont (wrapped_obj, rest);
+      }
+    else
+      {
+        scm_error (scm_arg_type_key, NULL, "Cannot get font from object: ~S",
+                   scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj));
+      }
+  }
+
   SCM
   irr_gui_setOverrideColor (SCM wrapped_obj,
                             SCM color)
index 6cab006f4d76c7310184768d14c3c6236792fb0b..f86abb31af1a44f985cef2b1ead8874997b35eff 100644 (file)
--- a/src/gui.h
+++ b/src/gui.h
@@ -35,6 +35,11 @@ extern "C" {
                      SCM rectangle,
                      SCM rest);
 
+  SCM
+  irr_gui_getFont (SCM wrapped_obj,
+                   SCM filename,
+                   SCM rest);
+
   SCM
   irr_gui_setOverrideColor (SCM wrapped_obj,
                             SCM color);