summaryrefslogtreecommitdiff
path: root/sdl2
diff options
context:
space:
mode:
Diffstat (limited to 'sdl2')
-rw-r--r--sdl2/bindings.scm3
-rw-r--r--sdl2/render.scm16
2 files changed, 19 insertions, 0 deletions
diff --git a/sdl2/bindings.scm b/sdl2/bindings.scm
index c382a45..bf8db7a 100644
--- a/sdl2/bindings.scm
+++ b/sdl2/bindings.scm
@@ -255,6 +255,9 @@ RETURN-TYPE and accept arguments of ARG-TYPES."
(define-foreign sdl-render-draw-point
int "SDL_RenderDrawPoint" (list '* int int))
+(define-foreign sdl-render-draw-points
+ int "SDL_RenderDrawPoints" (list '* '* int))
+
;;;
;;; Events
diff --git a/sdl2/render.scm b/sdl2/render.scm
index 91236c6..326745f 100644
--- a/sdl2/render.scm
+++ b/sdl2/render.scm
@@ -40,6 +40,7 @@
set-render-draw-color
render-draw-line
render-draw-point
+ render-draw-points
delete-texture!
surface->texture))
@@ -118,6 +119,21 @@ color."
"Draw point on RENDERER."
(ffi:sdl-render-draw-point (unwrap-renderer renderer) x y))
+(define (render-draw-points renderer points)
+ "Draw POINTS on RENDERER."
+ (define (fill-bv bv l n)
+ (match l
+ (() bv)
+ (((x y) . r)
+ (s32vector-set! bv n x)
+ (s32vector-set! bv (+ n 1) y)
+ (fill-bv bv r (+ 2 n)))))
+ (let* ((count (length points))
+ (bv (fill-bv (make-s32vector (* count 2)) points 0)))
+ (ffi:sdl-render-draw-points (unwrap-renderer renderer)
+ (bytevector->pointer bv)
+ count)))
+
;;;
;;; Texture