summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Antoine Rouby <contact@parouby.fr>2019-05-29 22:43:27 +0200
committerDavid Thompson <dthompson2@worcester.edu>2019-05-31 09:51:18 -0400
commite455ed5e2d41cb5f8c0f4d536f650a40a9cdc534 (patch)
tree0a52bf81cefb6f423d9b85014e40f89722053b34
parent75e37396df6ceb6732c37800e098333dc90d2211 (diff)
render: Add SDL_RenderDrawPoints binding.
* sdl2/bindings.scm (sdl-render-draw-points): New procedure. * sdl2/render.scm (render-draw-points): New procedure. * doc/api.texi (Rendering): Document it.
-rw-r--r--doc/api.texi5
-rw-r--r--sdl2/bindings.scm3
-rw-r--r--sdl2/render.scm16
3 files changed, 24 insertions, 0 deletions
diff --git a/doc/api.texi b/doc/api.texi
index 0a154ae..b692725 100644
--- a/doc/api.texi
+++ b/doc/api.texi
@@ -1066,6 +1066,11 @@ Draw a point at (@var{x}, @var{y}) on the current rendering target
of @var{renderer}.
@end deffn
+@deffn {Procedure} render-draw-points renderer points
+Draw a multiple points from @var{points} on the current rendering
+target of @var{renderer}.
+@end deffn
+
@deffn {Procedure} surface->texture renderer surface
Convert @var{surface} to a texture suitable for @var{renderer}.
@end deffn
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