diff options
Diffstat (limited to 'util/spritegen.pl')
-rwxr-xr-x | util/spritegen.pl | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/util/spritegen.pl b/util/spritegen.pl index c6f830f7..3b3c88c3 100755 --- a/util/spritegen.pl +++ b/util/spritegen.pl @@ -1,5 +1,7 @@ #!/usr/bin/perl +package VNDB; + use strict; use warnings; use Image::Magick; @@ -7,9 +9,11 @@ use Cwd 'abs_path'; our $ROOT; BEGIN { ($ROOT = abs_path $0) =~ s{/util/spritegen\.pl$}{}; } +require $ROOT.'/data/global.pl'; my $path = "$ROOT/data/icons"; my $icons = "$ROOT/static/f/icons.png"; +my $ticons = "$ROOT/static/f/icons~.png"; my $css = "$ROOT/data/icons/icons.css"; my @img = map { @@ -78,8 +82,8 @@ sub minstrip { my $optsize = 1e10; for my $w ($minwidth..$maxwidth) { my $size = genstrip($w)*$w; - # To optimize for file size, uncommment below line. It's slow, but saves about 150 bytes (while using pngcrush). - #$size = img(); + # Optimize for file size rather than pixel count if slow is set + $size = img() if $VNDB::SPRITEGEN{slow}; if($size < $optsize) { $optw = $w; $optsize = $size; @@ -108,12 +112,15 @@ sub img { for my $i (@img) { print $img->Composite(image => $i->{i}, x => $i->{x}, y => $i->{y}); } - print $img->Write($icons); + print $img->Write("png32:$ticons"); undef $img; - `pngcrush -q "$icons" "$icons~" 2>/dev/null && mv "$icons~" "$icons"`; + if($VNDB::SPRITEGEN{pngcrush}) { + `$VNDB::SPRITEGEN{pngcrush} -q "$ticons" "$ticons~"`; + rename "$ticons~", $ticons or die $!; + } - my $size = -s $icons; + my $size = -s $ticons; #printf "Dim: %dx%d, size: %d, pixels wasted: %d\n", $w, $h, $size, $w*$h-$minpixels; $size; } @@ -137,7 +144,7 @@ sub css { } -#genstrip 80; minstrip; img; css; +rename $ticons, $icons or die $!; |