X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=irrlicht%2Fgui.scm;h=5e2017bbfcb6bb788276303d89a814ef0ad93121;hb=43b3e4fbfc4a80af937ba223dfa15ee8b6b8e736;hp=09102694c5f6b1621ece4a5c3d3274ac52c17059;hpb=d8367430b147ccdb2505295a7d50f1f412b4e6e1;p=guile-irrlicht.git diff --git a/irrlicht/gui.scm b/irrlicht/gui.scm index 0910269..5e2017b 100644 --- a/irrlicht/gui.scm +++ b/irrlicht/gui.scm @@ -1,5 +1,5 @@ ;;; guile-irrlicht --- FFI bindings for Irrlicht Engine -;;; Copyright (C) 2019 Javier Sancho +;;; Copyright (C) 2020 Javier Sancho ;;; ;;; This file is part of guile-irrlicht. ;;; @@ -19,35 +19,108 @@ (define-module (irrlicht gui) - #:use-module (ice-9 match) - #:use-module (system foreign) - #:use-module ((irrlicht bindings core) #:prefix ffi-core:) - #:use-module ((irrlicht bindings gui) #:prefix ffi-gui:) - #:use-module (irrlicht util) - #:export (add-static-text! - gui-draw-all - set-visible-cursor!)) - -(define* (add-static-text! gui-env text rectangle - #:key - (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) - (bool->integer border) - (bool->integer word-wrap) - parent - id - (bool->integer fill-background))) - -(define (gui-draw-all gui-env) - (ffi-gui:draw-all gui-env)) - -(define (set-visible-cursor! cursor-control visible) - (ffi-gui:set-visible-cursor - cursor-control - (bool->integer visible))) + #:use-module (oop goops) + #:use-module (ice-9 optargs) + #:use-module (irrlicht base) + #:use-module (irrlicht foreign) + #:use-module ((irrlicht io) #:select ()) + #:use-module ((irrlicht irr) #:select ( ))) + + +;; ICursorControl +(define-class () + (irr-class #:init-value "ICursorControl")) + +(define-method (set-visible! (cursor-control ) visible) + (let ((setVisible (get-irrlicht-proc "setVisible" cursor-control))) + (setVisible cursor-control visible))) + +(export set-visible!) + + +;; IGUIElement +(define-class ( ) + (irr-class #:init-value "IGUIElement")) + +(export ) + + +;; IGUIEnvironment +(define-class () + (irr-class #:init-value "IGUIEnvironment")) + +(define-method (add-image! (gui-environment ) image pos . rest) + (let-keywords rest #f + ((use-alpha-channel #t) + (parent (make )) + (id -1) + (text "")) + (let ((addImage (get-irrlicht-proc "addImage" gui-environment parent))) + (addImage gui-environment image pos use-alpha-channel parent id text)))) + +(define-method (add-static-text! (gui-environment ) text rectangle . rest) + (let-keywords rest #f + ((border #f) + (word-wrap #t) + (parent (make )) + (id -1) + (fill-background #f)) + (let ((addStaticText (get-irrlicht-proc "addStaticText" gui-environment parent))) + (addStaticText gui-environment text rectangle border word-wrap parent + id fill-background)))) + +(define-method (draw-all (gui-environment )) + ((get-irrlicht-proc "drawAll" gui-environment) + gui-environment)) + +(define-method (get-built-in-font (gui-environment )) + (let ((getBuiltInFont (get-irrlicht-proc "getBuiltInFont" gui-environment))) + (getBuiltInFont gui-environment))) + +(define-method (get-font (gui-environment ) filename) + (let ((getFont (get-irrlicht-proc "getFont" gui-environment))) + (getFont gui-environment filename))) + +(define-method (get-skin (gui-environment )) + (let ((getSkin (get-irrlicht-proc "getSkin" gui-environment))) + (getSkin gui-environment))) + +(export add-image! add-static-text! draw-all get-built-in-font get-font get-skin) + + +;; IGUIStaticText +(define-class () + (irr-class #:init-value "IGUIStaticText")) + +(define-method (set-override-color! (static-text ) color) + (let ((setOverrideColor (get-irrlicht-proc "setOverrideColor" static-text))) + (setOverrideColor static-text color))) + +(export set-override-color!) + + +;; IGUIImage +(define-class () + (irr-class #:init-value "IGUIImage")) + +(export ) + + +;; IGUISkin +(define-class () + (irr-class #:init-value "IGUISkin")) + +(define-method (set-font! (skin ) font . rest) + (let-keywords rest #f + ((which 'default)) + (let ((setFont (get-irrlicht-proc "setFont" skin))) + (setFont skin font which)))) + +(export set-font!) + + +;; IGUIFont +(define-class () + (irr-class #:init-value "IGUIFont")) + +(export )