X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=irrlicht.scm;h=1946da1c6b5c21c3b4247ba2f45393843ae49eaa;hb=c0cf88d754a6df204df73d4d043905a2760cfb85;hp=0ff6e3a6083358af344f25911a9f21b2be555abb;hpb=6926f985d7c92c543969ae8957645815dc58f098;p=guile-irrlicht.git diff --git a/irrlicht.scm b/irrlicht.scm index 0ff6e3a..1946da1 100644 --- a/irrlicht.scm +++ b/irrlicht.scm @@ -23,14 +23,24 @@ #: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)) @@ -67,3 +80,45 @@ (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))