Mercurial > rinkhals
annotate regenerate_pngs.py @ 266:390ef4387e05
Update TODO
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 05 Sep 2009 14:01:14 +0000 |
parents | 8896bae31eda |
children | bee12aed1f68 |
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 |
261
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
52 TILE_PATH = "data/tiles" |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
53 SPRITE_PATH = "data/sprites" |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
54 IMAGE_PATH = "data/images" |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
55 CURSOR_PATH = "data/cursors" |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
56 |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
57 SPRITES = [ |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
58 # chicken bits |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
59 ("chkn", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
60 ("wing", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
61 ("eye", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
62 ("equip_rifle", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
63 ("equip_knife", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
64 ("equip_kevlar", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
65 ("equip_helmet", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
66 ("select_chkn", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
67 ("nest", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
68 ("equip_egg", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
69 # fox bits |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
70 ("fox", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
71 ("ninja_fox", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
72 ("sapper_fox", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
73 ("rinkhals", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
74 # buildings |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
75 ("henhouse", 60, 40), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
76 ("select_henhouse", 60, 40), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
77 ("hendominium", 40, 60), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
78 ("select_hendominium", 40, 60), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
79 ("watchtower", 40, 40), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
80 ("select_watchtower", 40, 40), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
81 # special effects |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
82 ("muzzle_flash", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
83 ("chkn_death", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
84 ("fox_death", 20, 20), |
263 | 85 ("boom1", 20, 20), |
86 ("boom2", 20, 20), | |
87 ("boom3", 20, 20), | |
88 ("boom4", 20, 20), | |
261
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
89 # other |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
90 ("egg", 20, 20), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
91 ] |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
92 |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
93 CURSORS = [ |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
94 ("chkn", 16, 16), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
95 ("egg", 16, 16), |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
96 ("sell_cursor", 24, 24), |
33
c8436f1752d7
Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents:
18
diff
changeset
|
97 ] |
c8436f1752d7
Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents:
18
diff
changeset
|
98 |
261
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
99 if __name__ == "__main__": |
33
c8436f1752d7
Add special handling for different sized sprites.
Simon Cross <hodgestar@gmail.com>
parents:
18
diff
changeset
|
100 process_svg_folder("data/tiles", 20, 20) |
81 | 101 process_svg_folder("data/icons", 40, 40) |
261
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
102 for name, width, height in SPRITES: |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
103 process_sprite(name, width, height, SPRITE_PATH) |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
104 process_sprite("splash", 800, 600, IMAGE_PATH) |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
105 process_sprite("gameover_win", 800, 600, IMAGE_PATH) |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
106 process_sprite("gameover_lose", 800, 600, IMAGE_PATH) |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
107 for name, width, height in CURSORS: |
86291107d67a
Make regenerate_pngs more import-friendly.
Jeremy Thurgood <firxen@gmail.com>
parents:
258
diff
changeset
|
108 process_cursor(name, width, height, SPRITE_PATH, CURSOR_PATH) |