]> icculus.org git repositories - divverent/nexuiz.git/blob - data/particles/particlefont.pl
compiled now. fixed #589, overcaulked lift on strength
[divverent/nexuiz.git] / data / particles / particlefont.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use POSIX qw/ceil floor/;
6
7 # particlefont.txt generator for DarkPlaces
8
9 # this is eval'ed to not fail if Image::Magick is not installed
10 my $magick =
11 eval q{
12         use Image::Magick;
13         Image::Magick->new();
14 }
15         or warn "Image::Magick not installed, not generating a TGA\n";
16
17 sub checkmagick($)
18 {
19         my ($e) = @_;
20         die $e if $e;
21         return $e;
22 }
23
24 my ($pixw, $pixh, $cols, $beamoffset, $beams) = @ARGV;
25 defined $beams
26         or die "Usage: $0 pixw pixh columns beamoffset beams\n";
27
28 if($magick)
29 {
30         checkmagick $magick->Set(size => "${pixw}x${pixh}");
31         checkmagick $magick->ReadImage("xc:white");
32 }
33
34 my $square = 1.0 / $cols;
35 my $rows = $cols - $beams;
36
37 my $dx = 1.0 / $pixw;
38 my $dy = 1.0 / $pixh;
39
40 my $i = 0;
41 for my $row(0..$rows-1)
42 {
43         for my $col(0..$cols-1)
44         {
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";
50                 if($magick)
51                 {
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
56                         );
57                         checkmagick $magick->Annotate(
58                                 x => $s0 * $pixw + 2,
59                                 y => $t1 * $pixh - 2,
60                                 text => $i
61                         );
62                 }
63                 ++$i;
64         }
65 }
66
67 $i = $beamoffset if $i < $beamoffset;
68 for my $beam(0..$beams-1)
69 {
70         my $s0 = 0;
71         my $s1 = 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";
76         if($magick)
77         {
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
82                 );
83                 checkmagick $magick->Annotate(
84                         x => $s0 * $pixw + 2,
85                         y => $t1 * $pixh - 2,
86                         text => $i
87                 );
88         }
89         ++$i;
90 }
91
92 if($magick)
93 {
94         $magick->Write("particlefont-template.png");
95 }