summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"))))