X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela%2Fimage.scm;h=cd0d27351277e3a29cfca446b30ba2bb1c6d0e6a;hb=5f298cad7dceabfa1a8f41bf71ae17b9554c0443;hp=1fdeaf61441826351c459f4c1ca1c18bef0dfa0b;hpb=f3487d80c29eb9a6ecc23686c5010bffb364af22;p=gacela.git diff --git a/gacela/image.scm b/gacela/image.scm index 1fdeaf6..cd0d273 100644 --- a/gacela/image.scm +++ b/gacela/image.scm @@ -18,28 +18,32 @@ (define-module (gacela image) #:use-module (gacela scene) #:use-module (gacela game) + #:use-module ((sdl2) #:prefix sdl2:) #:use-module ((sdl2 image) #:prefix sdl2:) #:use-module ((sdl2 render) #:prefix sdl2:) - #:export (import-bitmap - move-xy)) + #:use-module ((sdl2 surface) #:prefix sdl2:) + #:export (bitmap + move-xy)) -(define-syntax-rule (import-bitmap filename) +(define (bitmap filename) (make-scene "bitmap" (let ((image (sdl2:load-image filename)) - (texture #f)) + (texture #f)) (let ((a 0)) - (lambda () - (if (not texture) - (set! texture (sdl2:surface->texture %sdl-renderer image))) - ;; (set! a (+ a 1)) - ;; (format #t "~a steps with texture ~a~%" a texture)))))) - (sdl2:clear-renderer %sdl-renderer) - (sdl2:render-copy %sdl-renderer texture) - (sdl2:present-renderer %sdl-renderer)))))) + (lambda* (#:key (xy '(0 0))) + (if (not texture) + (set! texture (sdl2:surface->texture %sdl-renderer image))) + (sdl2:clear-renderer %sdl-renderer) + (sdl2:render-copy %sdl-renderer texture #:dest-rect (sdl2:make-rect (car xy) (cadr xy) (sdl2:surface-width image) (sdl2:surface-height image))) + (sdl2:present-renderer %sdl-renderer)))))) -(define-syntax-rule (move-xy x y scene) +(define (move-xy x y scene) + (define (to-integer n) + (inexact->exact (round n))) (make-scene "move-xy" (lambda () - (display-scene scene)))) + (let ((xy (list (to-integer (if (procedure? x) (x) x)) + (to-integer (if (procedure? y) (y) y))))) + (display-scene scene #:xy xy)))))