]> git.jsancho.org Git - guile-irrlicht.git/commitdiff
dimension2d as a foreign record type
authorJavier Sancho <jsf@jsancho.org>
Fri, 27 Dec 2019 17:05:32 +0000 (18:05 +0100)
committerJavier Sancho <jsf@jsancho.org>
Fri, 27 Dec 2019 17:05:32 +0000 (18:05 +0100)
examples/01.HelloWorld.scm
examples/02.Quake3Map.scm
irrlicht.scm
irrlicht/bindings/core.scm
irrlicht/device.scm
irrlicht/dimension2d.scm [new file with mode: 0644]
irrlicht/util.scm

index 3f128cb7770d3839213a0f825148165942f81adf..40b0acadba2e9809566a6bc82a7527fbc823639d 100644 (file)
@@ -28,7 +28,7 @@
 (define device
   (create-device
    #:device-type 'software
-   #:window-size '(640 480)))
+   #:window-size (make-dimension2d 640 480)))
 (when (not device)
   (exit #f))
 
index 45249aceb562599864cd6c06e2325aad25c6765e..5f26f2a6beb6f216dece757decd926ac19dbbcd9 100644 (file)
@@ -52,7 +52,7 @@
 (define device
   (create-device
    #:device-type driver
-   #:window-size '(640 480)))
+   #:window-size (make-dimension2d 640 480)))
 (when (not device)
   (exit #f))
 
index aaa58ea9d947ab708ab763f018d7684cccaa2f29..c70a122b5c4f57a7364939b3b49c046c2a984dc2 100644 (file)
@@ -25,6 +25,7 @@
   (let ((public-modules
          '((irrlicht aabbox3d)
            (irrlicht device)
+           (irrlicht dimension2d)
            (irrlicht gui)
            (irrlicht io)
            (irrlicht scene)
index c432714e9c17dc8d49a8e6584daec7f7aa0f56d9..8605919dd10a4138812409ed052ef70128b5e68c 100644 (file)
   #:use-module (system foreign)
   #:use-module (irrlicht util))
 
+;; rect struct
+(define-public rect
+  (list int32 int32 int32 int32))
+
+;; vector2df struct
+(define-public vector2df
+  (list float float float))
+
+;; vector3df struct
+(define-public vector3df
+  (list float float float))
+
 ;; aabbox3d f32 struct and functions
 (define-public aabbox3d_f32
-  (list
-   float float float ;minEdge
-   float float float ;maxEdge
+  (append
+   vector3df  ; min-edge
+   vector3df  ; max-edge
    ))
 
 (define-foreign aabbox3d-add-internal-point
 
 (define-foreign aabbox3d-reset
   void "irr_core_aabbox3d_reset" (list '* '*))
-
-;; dimension2d struct
-(define-public dimension2d
-  (list uint32 uint32))
-
-;; rect struct
-(define-public rect
-  (list int32 int32 int32 int32))
-
-;; vector3df struct
-(define-public vector3df
-  (list float float float))
index 928a6c8e51cf362b2506c430cf2825b623f8479c..25ec8ca78bf0328711471b04a2f3df3660fcb17e 100644 (file)
@@ -22,7 +22,6 @@
   #:use-module (ice-9 match)
   #:use-module (system foreign)
   #:use-module ((irrlicht bindings) #:prefix ffi:)
-  #:use-module ((irrlicht bindings core) #:prefix ffi-core:)
   #:use-module ((irrlicht bindings video) #:prefix ffi-video:)
   #:use-module (irrlicht util)
   #:export (create-device
@@ -51,7 +50,7 @@
                        ('direct3d9 ffi-video:EDT_DIRECT3D9)
                        ('opengl ffi-video:EDT_OPENGL)
                        ('count ffi-video:EDT_COUNT)))
-        (wsize (make-c-struct ffi-core:dimension2d window-size)))
+        (wsize (foreign-record-pointer window-size)))
     (let ((device (ffi:create-device driver wsize bits
                                      (bool->integer fullscreen)
                                      (bool->integer stencilbuffer)
diff --git a/irrlicht/dimension2d.scm b/irrlicht/dimension2d.scm
new file mode 100644 (file)
index 0000000..7eb8cfd
--- /dev/null
@@ -0,0 +1,35 @@
+;;; guile-irrlicht --- FFI bindings for Irrlicht Engine
+;;; Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
+;;;
+;;; This file is part of guile-irrlicht.
+;;;
+;;; Guile-irrlicht is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU Lesser General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; Guile-irrlicht is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Lesser General Public
+;;; License along with guile-irrlicht.  If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+
+(define-module (irrlicht dimension2d)
+  #:use-module (system foreign)
+  #:use-module (irrlicht util)
+  #:export (dimension2d
+            make-dimension2d
+            dimension2d?
+            dimension2d-width
+            dimension2d-height))
+
+;; dimension2d struct
+(define-foreign-record-type dimension2d
+  (make-dimension2d width height)
+  dimension2d?
+  (width uint32 dimension2d-width)
+  (height uint32 dimension2d-height))
index 488ea333b0515ff1b787385370e82e5e89a07cce..9110be9fd53a3a311e394bf9feb2e0951b8e13f0 100644 (file)
@@ -26,7 +26,8 @@
   #:export (bool->integer
             integer->bool
             define-foreign
-            define-foreign-record-type))
+            define-foreign-record-type
+            foreign-record-pointer))
 
 (define (bool->integer var)
   (if var 1 0))
                  (list-set! values setter-id new-value)
                  (set-foreign-record-pointer! record (make-c-struct types values))
                  new-value))
-             ...
-
-             (export name)
-             (export make-name)
-             (export predicate?)
-             (export getter)
-             ...
-             (export setter)
              ...))))))