From: Javier Sancho Date: Thu, 20 Apr 2017 23:41:06 +0000 (+0200) Subject: Merge branch 'release/0.5' X-Git-Url: https://git.jsancho.org/?p=gacela.git;a=commitdiff_plain;h=6cc07be7e64e74546bf295ad42b5d2475624e3fc;hp=8875fdf238b6ae7fa548937f103142def7b6c19f Merge branch 'release/0.5' --- diff --git a/examples/01-hello-world/01-hello-world.scm b/examples/01-hello-world/01-hello-world.scm index 61263f1..2a18040 100644 --- a/examples/01-hello-world/01-hello-world.scm +++ b/examples/01-hello-world/01-hello-world.scm @@ -21,4 +21,4 @@ (display-scene (window ((resolution '(640 480))) - (bitmap "hello-world.bmp"))) + (image "hello-world.bmp"))) diff --git a/examples/02-event-driven-programming/02-event-driven-programming.scm b/examples/02-event-driven-programming/02-event-driven-programming.scm index b151233..a75eddf 100644 --- a/examples/02-event-driven-programming/02-event-driven-programming.scm +++ b/examples/02-event-driven-programming/02-event-driven-programming.scm @@ -31,4 +31,4 @@ (display-scene (window ((resolution '(640 480)) (when-quit counter-quit)) - (bitmap "x.bmp"))) + (image "x.bmp"))) diff --git a/examples/03-key-presses/03-key-presses.scm b/examples/03-key-presses/03-key-presses.scm index 06fa186..ed8a65d 100644 --- a/examples/03-key-presses/03-key-presses.scm +++ b/examples/03-key-presses/03-key-presses.scm @@ -23,11 +23,11 @@ (define get-pressed-scene #f) (set! get-pressed-scene - (let* ((up (bitmap "up.bmp")) - (down (bitmap "down.bmp")) - (left (bitmap "left.bmp")) - (right (bitmap "right.bmp")) - (press (bitmap "press.bmp")) + (let* ((up (image "up.bmp")) + (down (image "down.bmp")) + (left (image "left.bmp")) + (right (image "right.bmp")) + (press (image "press.bmp")) (actived press)) (lambda () (if (any-key-down?) @@ -43,8 +43,6 @@ (set! actived press)))) actived))) -(define press (bitmap "press.bmp")) - (display-scene (window ((resolution '(640 480))) (lambda () diff --git a/examples/04-stretch-images/04-stretch-images.scm b/examples/04-stretch-images/04-stretch-images.scm index e23daef..6676e1d 100644 --- a/examples/04-stretch-images/04-stretch-images.scm +++ b/examples/04-stretch-images/04-stretch-images.scm @@ -21,6 +21,6 @@ (display-scene (window ((resolution '(640 480))) - (stretch - (bitmap "stretch.bmp") + (scale + (image "stretch.bmp") 2))) diff --git a/examples/05-animations/05-animations.scm b/examples/05-animations/05-animations.scm new file mode 100644 index 0000000..eea8812 --- /dev/null +++ b/examples/05-animations/05-animations.scm @@ -0,0 +1,34 @@ +#!/usr/bin/env guile +!# + +;;; Gacela, a GNU Guile extension for fast games development +;;; Copyright (C) 2017 by Javier Sancho Fernandez +;;; +;;; This program is free software: you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see . + +(use-modules (gacela)) + +(define (tick) (* 3000000 (get-internal-real-time))) +(define (waggle) (* 200 (cos (* pi (tick))))) +(define (wiggle) (* 300 (sin (* pi (tick))))) + +(display-scene + (window ((resolution '(640 480))) + (move (image "homer.png") + wiggle 0))) + +(display-scene + (window ((resolution '(640 480))) + (move (image "marge.png") + 0 waggle))) diff --git a/examples/05-animations/homer.png b/examples/05-animations/homer.png new file mode 100644 index 0000000..485e01e Binary files /dev/null and b/examples/05-animations/homer.png differ diff --git a/examples/05-animations/marge.png b/examples/05-animations/marge.png new file mode 100644 index 0000000..576092b Binary files /dev/null and b/examples/05-animations/marge.png differ diff --git a/gacela/image.scm b/gacela/image.scm index 1fa861f..e6c8f4e 100644 --- a/gacela/image.scm +++ b/gacela/image.scm @@ -23,13 +23,18 @@ #:use-module ((sdl2 render) #:prefix sdl2:) #:use-module ((sdl2 surface) #:prefix sdl2:) #:use-module (gl) - #:export (bitmap - move-xy - stretch)) + #:export (image + move + scale)) -(define (bitmap filename) +(define (calculate proc-or-value) + (if (procedure? proc-or-value) + (proc-or-value) + proc-or-value)) + +(define (image filename) (make-scene - "bitmap" + "image" (let ((image (sdl2:load-image filename)) (texture #f) (w/2 0) @@ -52,19 +57,18 @@ (gl-vertex (- w/2) (- h/2) 0)) (gl-disable (oes-framebuffer-object texture-2d)))))) -(define (move-xy x y scene) - (define (to-integer n) - (inexact->exact (round n))) +(define* (move scene x y #:optional (z 0)) (make-scene - "move-xy" + "move" (lambda () - (let ((xy (list (to-integer (if (procedure? x) (x) x)) - (to-integer (if (procedure? y) (y) y))))) - (display-scene scene #:xy xy))))) + (gl-translate (calculate x) + (calculate y) + (calculate z)) + (display-scene scene)))) -(define* (stretch scene x #:optional (y x) (z y)) +(define* (scale scene x #:optional (y x) (z y)) (make-scene - "stretch" + "scale" (lambda () (gl-scale x y z) (display-scene scene))))