(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:)
#:use-module ((sdl2 surface) #:prefix sdl2:)
#:export (import-bitmap
move-xy))
-(define-syntax-rule (import-bitmap filename)
+(define (import-bitmap filename)
(make-scene
"bitmap"
- (let ((surface (sdl2:load-bmp filename)))
+ (let ((image (sdl2:load-image filename))
+ (texture #f))
(let ((a 0))
- (lambda ()
- (set! a (+ a 1))
- (format #t "Steps: ~a~%" a))))))
+ (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)))))