]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - irrlicht.scm
Scenes management and draw GUI elements
[guile-irrlicht.git] / irrlicht.scm
index 0ff6e3a6083358af344f25911a9f21b2be555abb..1946da1c6b5c21c3b4247ba2f45393843ae49eaa 100644 (file)
   #:use-module (system foreign)
   #:use-module ((irrlicht bindings) #:prefix ffi:)
   #:use-module ((irrlicht bindings core) #:prefix ffi-core:)
+  #:use-module ((irrlicht bindings gui) #:prefix ffi-gui:)
   #:use-module ((irrlicht bindings video) #:prefix ffi-video:)
-  #:export (create-device
+  #:export (;; device
+            create-device
             get-video-driver
+            get-gui-environment
             get-scene-manager
             set-window-caption!
             device-run?
-            device-drop!))
+            device-drop!
+            ;; driver
+            begin-scene
+            end-scene
+            ;; gui
+            add-static-text!
+            gui-draw-all))
 
+;; Device functions
 (define* (create-device #:optional
                         (device-type 'software)
                         (window-size '(640 480))
@@ -56,6 +66,9 @@
 (define (get-video-driver device)
   (ffi:get-video-driver device))
 
+(define (get-gui-environment device)
+  (ffi:get-gui-environment device))
+
 (define (get-scene-manager device)
   (ffi:get-scene-manager device))
 
 
 (define (device-drop! device)
   (if (> (ffi:drop device) 0) #t #f))
+
+
+;; Driver functions
+(define* (begin-scene driver
+                      #:optional
+                      (back-buffer #t)
+                      (z-buffer #t)
+                      (color '(255 0 0 0))
+                      (video-data %null-pointer)
+                      (source-rect '()))
+  (ffi-video:begin-scene driver
+                         (if back-buffer 1 0)
+                         (if z-buffer 1 0)
+                         (make-c-struct ffi-video:scolor color)
+                         video-data
+                         (if (null? source-rect)
+                             %null-pointer
+                             (make-c-struct ffi-core:rect source-rect))))
+
+(define (end-scene driver)
+  (ffi-video:end-scene driver))
+
+
+;; GUI functions
+(define* (add-static-text! gui-env text rectangle
+                           #:optional
+                           (border #f)
+                           (word-wrap #t)
+                           (parent %null-pointer)
+                           (id -1)
+                           (fill-background #f))
+  (ffi-gui:add-static-text gui-env
+                           (string->pointer text)
+                           (make-c-struct ffi-core:rect rectangle)
+                           (if border 1 0)
+                           (if word-wrap 1 0)
+                           parent
+                           id
+                           (if fill-background 1 0)))
+
+(define (gui-draw-all gui-env)
+  (ffi-gui:draw-all gui-env))