]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/particles/particlefont.pl
Make Warfare a snowy winter map
[voretournament/voretournament.git] / data / particles / particlefont.pl
1 #!/usr/bin/perl\r
2 \r
3 use strict;\r
4 use warnings;\r
5 use POSIX qw/ceil floor/;\r
6 \r
7 # particlefont.txt generator for DarkPlaces\r
8 \r
9 # this is eval'ed to not fail if Image::Magick is not installed\r
10 my $magick =\r
11 eval q{\r
12         use Image::Magick;\r
13         Image::Magick->new();\r
14 }\r
15         or warn "Image::Magick not installed, not generating a TGA\n";\r
16 \r
17 sub checkmagick($)\r
18 {\r
19         my ($e) = @_;\r
20         die $e if $e;\r
21         return $e;\r
22 }\r
23 \r
24 my ($pixw, $pixh, $cols, $rows, $beamoffset, $beams) = @ARGV;\r
25 defined $beams\r
26         or die "Usage: $0 pixw pixh columns rows beamoffset beams\n";\r
27 \r
28 if($magick)\r
29 {\r
30         checkmagick $magick->Set(size => "${pixw}x${pixh}");\r
31         checkmagick $magick->ReadImage("xc:white");\r
32 }\r
33 \r
34 my $square_x = 1.0 / $cols;\r
35 my $square_y = 1.0 / $rows;\r
36 $rows -= $beams;\r
37 \r
38 my $dx = 1.0 / $pixw;\r
39 my $dy = 1.0 / $pixh;\r
40 \r
41 my $i = 0;\r
42 for my $row(0..$rows-1)\r
43 {\r
44         for my $col(0..$cols-1)\r
45         {\r
46                 my $s0 = $col * $square_x + $dx;\r
47                 my $s1 = ($col+1) * $square_x - $dx;\r
48                 my $t0 = $row * $square_y + $dy;\r
49                 my $t1 = ($row+1) * $square_y - $dy;\r
50                 print "$i $s0 $t0 $s1 $t1\n";\r
51                 if($magick)\r
52                 {\r
53                         checkmagick $magick->Draw(\r
54                                 fill => (($row + $col)%2 ? 'green' : 'cyan'),\r
55                                 primitive => 'rectangle',\r
56                                 points => sprintf "%d,%d %d,%d", ceil($s0 * $pixw), ceil($t0 * $pixh), floor($s1 * $pixw)-1, floor($t1 * $pixh)-1\r
57                         );\r
58                         checkmagick $magick->Annotate(\r
59                                 x => $s0 * $pixw + 2,\r
60                                 y => $t1 * $pixh - 2,\r
61                                 text => $i\r
62                         );\r
63                 }\r
64                 ++$i;\r
65         }\r
66 }\r
67 \r
68 $i = $beamoffset if $i < $beamoffset;\r
69 for my $beam(0..$beams-1)\r
70 {\r
71         my $s0 = 0;\r
72         my $s1 = 1;\r
73         my $row = $beam + $rows;\r
74         my $t0 = $row * $square_y + $dy;\r
75         my $t1 = ($row+1) * $square_y - $dy;\r
76         print "$i $s0 $t0 $s1 $t1\n";\r
77         if($magick)\r
78         {\r
79                 checkmagick $magick->Draw(\r
80                         fill => (($beam)%2 ? 'yellow' : 'red'),\r
81                         primitive => 'rectangle',\r
82                         points => sprintf "%d,%d %d,%d", ceil($s0 * $pixw), ceil($t0 * $pixh), floor($s1 * $pixw)-1, floor($t1 * $pixh)-1\r
83                 );\r
84                 checkmagick $magick->Annotate(\r
85                         x => $s0 * $pixw + 2,\r
86                         y => $t1 * $pixh - 2,\r
87                         text => $i\r
88                 );\r
89         }\r
90         ++$i;\r
91 }\r
92 \r
93 if($magick)\r
94 {\r
95         $magick->Write("particlefont-template.png");\r
96 }\r