5 use POSIX qw/ceil floor/;
7 # particlefont.txt generator for DarkPlaces
9 # this is eval'ed to not fail if Image::Magick is not installed
15 or warn "Image::Magick not installed, not generating a TGA\n";
24 my ($pixw, $pixh, $cols, $beamoffset, $beams) = @ARGV;
26 or die "Usage: $0 pixw pixh columns beamoffset beams\n";
30 checkmagick $magick->Set(size => "${pixw}x${pixh}");
31 checkmagick $magick->ReadImage("xc:white");
34 my $square = 1.0 / $cols;
35 my $rows = $cols - $beams;
41 for my $row(0..$rows-1)
43 for my $col(0..$cols-1)
45 my $s0 = $col * $square + $dx;
46 my $s1 = ($col+1) * $square - $dx;
47 my $t0 = $row * $square + $dy;
48 my $t1 = ($row+1) * $square - $dy;
49 print "$i $s0 $t0 $s1 $t1\n";
52 checkmagick $magick->Draw(
53 fill => (($row + $col)%2 ? 'green' : 'cyan'),
54 primitive => 'rectangle',
55 points => sprintf "%d,%d %d,%d", ceil($s0 * $pixw), ceil($t0 * $pixh), floor($s1 * $pixw)-1, floor($t1 * $pixh)-1
57 checkmagick $magick->Annotate(
67 $i = $beamoffset if $i < $beamoffset;
68 for my $beam(0..$beams-1)
72 my $row = $beam + $rows;
73 my $t0 = $row * $square + $dy;
74 my $t1 = ($row+1) * $square - $dy;
75 print "$i $s0 $t0 $s1 $t1\n";
78 checkmagick $magick->Draw(
79 fill => (($beam)%2 ? 'yellow' : 'red'),
80 primitive => 'rectangle',
81 points => sprintf "%d,%d %d,%d", ceil($s0 * $pixw), ceil($t0 * $pixh), floor($s1 * $pixw)-1, floor($t1 * $pixh)-1
83 checkmagick $magick->Annotate(
94 $magick->Write("particlefont-template.png");