5 use POSIX qw/ceil floor/;
\r
7 # particlefont.txt generator for DarkPlaces
\r
9 # this is eval'ed to not fail if Image::Magick is not installed
\r
13 Image::Magick->new();
\r
15 or warn "Image::Magick not installed, not generating a TGA\n";
\r
24 my ($pixw, $pixh, $cols, $rows, $beamoffset, $beams) = @ARGV;
\r
26 or die "Usage: $0 pixw pixh columns rows beamoffset beams\n";
\r
30 checkmagick $magick->Set(size => "${pixw}x${pixh}");
\r
31 checkmagick $magick->ReadImage("xc:white");
\r
34 my $square_x = 1.0 / $cols;
\r
35 my $square_y = 1.0 / $rows;
\r
38 my $dx = 1.0 / $pixw;
\r
39 my $dy = 1.0 / $pixh;
\r
42 for my $row(0..$rows-1)
\r
44 for my $col(0..$cols-1)
\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
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
58 checkmagick $magick->Annotate(
\r
59 x => $s0 * $pixw + 2,
\r
60 y => $t1 * $pixh - 2,
\r
68 $i = $beamoffset if $i < $beamoffset;
\r
69 for my $beam(0..$beams-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
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
84 checkmagick $magick->Annotate(
\r
85 x => $s0 * $pixw + 2,
\r
86 y => $t1 * $pixh - 2,
\r
95 $magick->Write("particlefont-template.png");
\r