JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
inching towards opengl opengl
authorJason Woofenden <jason@jasonwoof.com>
Wed, 3 Feb 2010 09:44:48 +0000 (04:44 -0500)
committerJason Woofenden <jason@jasonwoof.com>
Wed, 3 Feb 2010 09:44:48 +0000 (04:44 -0500)
.gitignore
gfx.mk
main.c
povtex.sh [new file with mode: 0755]

index 5eea8b6..9c4fc7b 100644 (file)
@@ -3,6 +3,7 @@ vor
 font_guts
 font_guts.pov
 data/rock*.png
+data/texrock*.png
 data/icon.png
 data/macicon.png
 data/ship.png
diff --git a/gfx.mk b/gfx.mk
index 132a8c2..f119083 100644 (file)
--- a/gfx.mk
+++ b/gfx.mk
@@ -16,6 +16,26 @@ data/life.png: ship.pov $(gfx-deps)
 data/rock%.png: rocks.pov $(gfx-deps)
        ./povimg.sh +H52 +W52 +K$* $< > $@ || sh -c "rm $@; false"
 
+texrocks := 00 01 02 03 04 05 06 07 08 09
+texrocks += 10 11 12 13 14 15 16 17 18 19
+texrocks += 20 21 22 23 24 25 26 27 28 29
+texrocks += 30 31 32 33 34 35 36 37 38 39
+texrocks += 40 41 42 43 44 45 46 47 48 49
+texrocks := data/texship.png data/texlife.png $(texrocks:%=data/texrock%.png)
+
+data/tiles.png: $(texrocks)
+       montage -background '#00000000' +frame +shadow +label -tile 9x6 -geometry '52x52+0+0>' $(texrocks) $@
+
+
+data/texrock%.png: rocks.pov $(gfx-deps)
+       ./povtex.sh $@ +H52 +W52 +K$* $< || sh -c "rm $@; false"
+
+data/texship.png: ship.pov $(gfx-deps)
+       ./povtex.sh $@ +W32 +H32 $< || sh -c "rm $@; false"
+
+data/texlife.png: ship.pov $(gfx-deps)
+       ./povtex.sh $@ +W17 +H17 $< || sh -c "rm $@; false"
+
 font_guts: font_guts.c
 
 font_guts.pov: font_guts font_template.txt
diff --git a/main.c b/main.c
index 1d4ce85..528509c 100644 (file)
--- a/main.c
+++ b/main.c
@@ -339,21 +339,35 @@ draw_dots(void) {
 }
 
 SDL_Surface *
-load_image(char *filename)
-{
+_load_image(char *filename, int alpha) {
        SDL_Surface *tmp, *img = NULL;
        char *s = add_data_path(filename);
        if(s) {
                tmp = IMG_Load(s);
                free(s);
                if(tmp) {
-                       img = SDL_DisplayFormat(tmp);
+                       if(alpha) {
+                               img = SDL_DisplayFormatAlpha(tmp);
+                       } else {
+                               img = SDL_DisplayFormat(tmp);
+                       }
                        SDL_FreeSurface(tmp);
                }
        }
        return img;
 }
 
+SDL_Surface *
+load_image(char *filename) {
+       return _load_image(filename, 0);
+}
+
+SDL_Surface *
+load_image_alpha(char *filename) {
+       return _load_image(filename, 1);
+}
+
+
 void
 load_ship(void)
 {
@@ -431,12 +445,12 @@ init(void) {
        }
 
        // Load the banners
-       NULLERROR(surf_b_variations = load_image("b_variations.png"));
-       NULLERROR(surf_b_on = load_image("b_on.png"));
-       NULLERROR(surf_b_rockdodger = load_image("b_rockdodger.png"));
+       NULLERROR(surf_b_variations = load_image_alpha("b_variations.png"));
+       NULLERROR(surf_b_on = load_image_alpha("b_on.png"));
+       NULLERROR(surf_b_rockdodger = load_image_alpha("b_rockdodger.png"));
 
-       NULLERROR(surf_b_game = load_image("b_game.png"));
-       NULLERROR(surf_b_over = load_image("b_over.png"));
+       NULLERROR(surf_b_game = load_image_alpha("b_game.png"));
+       NULLERROR(surf_b_over = load_image_alpha("b_over.png"));
 
        // Load the life indicator (small ship) graphic.
        NULLERROR(surf_life = load_image("life.png"));
diff --git a/povtex.sh b/povtex.sh
new file mode 100755 (executable)
index 0000000..e4f3bf4
--- /dev/null
+++ b/povtex.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+output="$1"
+tmpfile="$1.tmp.png"
+shift
+povray -D +A +UA -O- +FN $* 2>/dev/null > "$tmpfile" || sh -c "rm '$tmpfile'; false"
+pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB "$tmpfile" "$output" || sh -c "rm '$tmpfile'; false"
+rm "$tmpfile"