Add color type.
authorDavid Thompson <dthompson2@worcester.edu>
Thu, 17 Dec 2015 14:06:58 +0000 (09:06 -0500)
committerDavid Thompson <dthompson2@worcester.edu>
Thu, 17 Dec 2015 14:08:07 +0000 (09:08 -0500)
* sdl2/bindings.scm (sdl-color): New variable.
* sdl2.scm (<color>): New record type.
  (make-color, color?, color-r, color-g, color-b, color-a, color->struct): New
  procedures.

sdl2.scm
sdl2/bindings.scm

index 74839fe..3541596 100644 (file)
--- a/sdl2.scm
+++ b/sdl2.scm
@@ -26,6 +26,7 @@
 (define-module (sdl2)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-4)
+  #:use-module (srfi srfi-9)
   #:use-module (system foreign)
   #:use-module ((sdl2 bindings) #:prefix ffi:)
   #:export (sdl-error-string
             sdl-version
             sdl-init
             sdl-quit
-            sdl-ticks))
+            sdl-ticks
+
+            <color>
+            make-color
+            color?
+            color-r
+            color-g
+            color-b
+            color-a))
 
 (define %default-init-flags
   '(timer audio video haptic game-controller events))
@@ -83,3 +92,18 @@ upon all exit conditions."
   "Return the number of milliseconds since the SDL library
 initialization."
   (ffi:sdl-get-ticks))
+
+;; SDL_Color
+(define-record-type <color>
+  (make-color r g b a)
+  color?
+  (r color-r)
+  (g color-g)
+  (b color-b)
+  (a color-a))
+
+(define (color->struct color)
+  "Convert COLOR into a foreign struct."
+  (match color
+    (($ <color> r g b a)
+     (make-c-struct ffi:sdl-color (list r g b a)))))
index a25822f..7edd7b2 100644 (file)
@@ -76,6 +76,9 @@ RETURN-TYPE and accept arguments of ARG-TYPES."
 ;;; Foreign Types
 ;;;
 
+(define-public sdl-color
+  (list uint8 uint8 uint8 uint8))
+
 (define sdl-bool int)
 
 (define (boolean->sdl-bool b)