#: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))
(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))