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