annotate regenerate-pngs.py @ 231:857040b211d5

Note why we're disabling a warning.
author Simon Cross <hodgestar@gmail.com>
date Fri, 04 Sep 2009 23:59:28 +0000
parents 87a58da53b17
children af19d6fdc1f8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
2
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
3 import cairo
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
4 import rsvg
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
5 import os
160
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
6 from Image import open
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8 def svg_to_png(svg_name, png_name, w, h):
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
9 """Convert an SVG file to a PNG file."""
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
10 print "Generating %s at %dx%d..." % (png_name, w, h)
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
11 r = rsvg.Handle(svg_name)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
13 scale = max(float(r.props.width) / w, float(r.props.height) / h)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
14 scale = 1.0 / scale
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
15
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
16 r.props.dpi_x = r.props.dpi_x / scale
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
17 r.props.dpi_y = r.props.dpi_y / scale
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
19 cs = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
20 ctx = cairo.Context(cs)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
21 ctx.scale(scale, scale)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
22 r.render_cairo(ctx)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
23 cs.write_to_png(png_name)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
24
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
25 def process_svg_folder(path, width, height):
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
26 for dirpath, dirnames, filenames in os.walk(path):
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
27 for filename in filenames:
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
28 basename, ext = os.path.splitext(filename)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
29 if ext == ".svg":
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
30 svg_name = os.path.join(dirpath, basename + ".svg")
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
31 png_name = os.path.join(dirpath, basename + ".png")
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
32 svg_to_png(svg_name, png_name, width, height)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
33
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
34 def process_sprite(name, width, height, sprite_path):
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
35 svg_name = os.path.join(sprite_path, name) + ".svg"
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
36 png_name = os.path.join(sprite_path, name) + ".png"
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
37 svg_to_png(svg_name, png_name, width, height)
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
38
160
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
39 def process_cursor(name, width, height, sprite_path, cursor_path):
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
40 # We bounce through png to get something PIL understands
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
41 svg_name = os.path.join(sprite_path, name) + '.svg'
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
42 png_name = os.path.join(cursor_path, name) + '.png'
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
43 xbm_name = os.path.join(cursor_path, name) + '.xbm'
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
44 svg_to_png(svg_name, png_name, width, height)
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
45 # We need to bounce through 'L' first to handle transparency OK
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
46 pixeldata = open(png_name).convert('L')
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
47 # Everything > 0 goes to white
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
48 lut = [0] + [1]*255
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
49 pixeldata.point(lut, mode='1').save(xbm_name)
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
50 os.remove(png_name)
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
51
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
52 if __name__ == "__main__":
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
53 tile_path = "data/tiles"
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
54 sprite_path = "data/sprites"
121
7b2660cc7861 splash png
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 117
diff changeset
55 image_path = "data/images"
160
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
56 cursor_path = "data/cursors"
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
57 sprites = [
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
58 ("chkn", 20, 20),
150
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
59 ("select_chkn", 20, 20),
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
60 ("chkn_death", 20, 20),
48
030bea282f28 Add egg to sprite images generated.
Simon Cross <hodgestar@gmail.com>
parents: 33
diff changeset
61 ("egg", 20, 20),
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
62 ("fox", 20, 20),
150
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
63 ("fox_death", 20, 20),
126
73e13216d7bb equipped weapons; ninja fox
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 121
diff changeset
64 ("ninja_fox", 20, 20),
214
87a58da53b17 sapper fox
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 210
diff changeset
65 ("sapper_fox", 20, 20),
126
73e13216d7bb equipped weapons; ninja fox
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 121
diff changeset
66 ("equip_rifle", 20, 20),
73e13216d7bb equipped weapons; ninja fox
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 121
diff changeset
67 ("equip_knife", 20, 20),
150
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
68 ("muzzle_flash", 20, 20),
134
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 132
diff changeset
69 ("kevlar", 20, 20),
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 132
diff changeset
70 ("helmet", 20, 20),
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
71 ("henhouse", 60, 40),
150
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
72 ("select_henhouse", 60, 40),
132
03293bd45930 hedominium
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 126
diff changeset
73 ("hendominium", 40, 60),
150
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
74 ("select_hendominium", 40, 60),
61
67f0346e5435 watchtower
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 48
diff changeset
75 ("watchtower", 40, 40),
150
89d2360d4350 select chicken, henhouse, hendominium or watchtower; fox death, chicken death; muzzle flash
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 134
diff changeset
76 ("select_watchtower", 40, 40),
184
ab7063d7c5e5 better nest
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 160
diff changeset
77 ("nest", 20, 20),
210
00d609883252 egg equipment
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 201
diff changeset
78 ("equip_egg", 20, 20),
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
79 ]
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
80
160
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
81 cursors = [
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
82 ("chkn", 16, 16),
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
83 ("equip_knife", 16, 16),
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
84 ("equip_rifle", 16, 16),
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
85 ("egg", 16, 16),
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
86 ]
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
87
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
88 process_svg_folder("data/tiles", 20, 20)
81
8a46055c7d08 regenerate icons as well
Neil Muller <drnlmuller@gmail.com>
parents: 61
diff changeset
89 process_svg_folder("data/icons", 40, 40)
33
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
90 for name, width, height in sprites:
c8436f1752d7 Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
91 process_sprite(name, width, height, sprite_path)
121
7b2660cc7861 splash png
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 117
diff changeset
92 process_sprite("splash", 800, 600, image_path)
155
3381af605912 game over splash screens
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 150
diff changeset
93 process_sprite("gameover_win", 800, 600, image_path)
3381af605912 game over splash screens
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 150
diff changeset
94 process_sprite("gameover_lose", 800, 600, image_path)
160
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
95 for name, width, height in cursors:
8a11bbafa07f Add support for creting xbm cursors
Neil Muller <drnlmuller@gmail.com>
parents: 155
diff changeset
96 process_cursor(name, width, height, sprite_path, cursor_path)