#!/usr/bin/perl
#
# Copyright (c) 2006 David Sheldon
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
#
use List::Util qw[min max];
use File::Copy;

my $scale = 1;

my $outdir = "scaled$scale";

if (! -d $outdir) {
    mkdir $outdir or die "Unable to create dir '$outdir'"
}

my @files = glob("*/tile-*.jpg");
my %tiles ;

my $minx, $miny, $maxx, $maxy;

foreach my $f (@files) {
  $f =~ m/-(\d+)-(\d+)\./;
  my ($x, $y) = ($1 +0, $2 +0);
  $tiles{$x} ||= {};
  $tiles{$x}{$y} = $f;

}


$maxx = max(keys %tiles);
$maxy = max(map { max(keys %{$tiles{$_}})} keys %tiles);

# start at 0, if there are any tiles in a WxW square, render a scale model 
# of it

foreach my $x (0..$maxx) {
    foreach my $y (0..$maxy) {
      my $filename = sprintf("%s/%03d-%03d.jpg", $outdir,$x,$y);
      if (! -f $filename) {

          if (defined($tiles{$x}{$y})) {
            copy($tiles{$x}{$y}, $filename) or die "Copy ($tiles{$x}{$y}, $filename) failed: $!";
          }
          print "($x,$y)\n";
      }
    }
}

print "($maxx, $maxy)\n";

