summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJona <saikyun@gmail.com>2017-05-05 10:36:07 +0200
committerDavid Thompson <dthompson2@worcester.edu>2017-06-06 21:12:14 -0400
commitecdb209d374e62144defa4b80d6a1c9f46a727d1 (patch)
treea884c7fb8ad66d7d312f10aaf3a6367630493b58
parent85704a5b67bd1d1d31cd4e6ca04be488c5fe64d8 (diff)
render: Add srcrect and dstrect arguments to render-copy.
* sdl2/bindings.scm (sdl-rect): New variable. * sdl2/render.scm (render-copy): Add srcrect and dstrect arguments.
-rw-r--r--sdl2/bindings.scm3
-rw-r--r--sdl2/render.scm11
2 files changed, 10 insertions, 4 deletions
diff --git a/sdl2/bindings.scm b/sdl2/bindings.scm
index d69e737..dd0a619 100644
--- a/sdl2/bindings.scm
+++ b/sdl2/bindings.scm
@@ -49,6 +49,9 @@ RETURN-TYPE and accept arguments of ARG-TYPES."
(define-public sdl-color
(list uint8 uint8 uint8 uint8))
+(define-public sdl-rect
+ (list int int int int))
+
(define sdl-bool int)
(define-public (boolean->sdl-bool b)
diff --git a/sdl2/render.scm b/sdl2/render.scm
index 8c34d60..5b27990 100644
--- a/sdl2/render.scm
+++ b/sdl2/render.scm
@@ -122,12 +122,15 @@ color."
(sdl-error "surface->texture" "failed to convert surface to texture")
(wrap-texture ptr))))
-;; TODO: Add srcrect and dstrect.
-(define (render-copy renderer texture)
+(define (render-copy renderer texture srcrect dstrect)
"Copy TEXTURE to the rendering target of RENDERER."
(let ((result (ffi:sdl-render-copy (unwrap-renderer renderer)
(unwrap-texture texture)
- %null-pointer
- %null-pointer)))
+ (if (nil? srcrect)
+ %null-pointer
+ (make-c-struct ffi:sdl-rect srcrect))
+ (if (nil? dstrect)
+ %null-pointer
+ (make-c-struct ffi:sdl-rect dstrect)))))
(unless (zero? result)
(sdl-error "render-copy" "failed to copy texture"))))