… | |
… | |
28 | my %cache; |
28 | my %cache; |
29 | |
29 | |
30 | my $idx = 0; |
30 | my $idx = 0; |
31 | |
31 | |
32 | for my $name (sort keys %$tile) { |
32 | for my $name (sort keys %$tile) { |
33 | my $tile = $cache{$name} = {}; |
|
|
34 | |
|
|
35 | my ($fh, $filename) = File::Temp::tempfile; |
33 | my ($fh, $filename) = File::Temp::tempfile; |
36 | print $fh $tile->{$name}; |
34 | print $fh $tile->{$name}; |
37 | close $fh; |
35 | close $fh; |
38 | my $pb = new_from_file Gtk2::Gdk::Pixbuf $filename; |
36 | my $pb = new_from_file Gtk2::Gdk::Pixbuf $filename; |
39 | unlink $filename; |
37 | unlink $filename; |
40 | |
38 | |
41 | $tile->{pb} = $pb; |
39 | my $tile = $cache{$name} = { |
42 | $tile->{idx} = $idx; |
40 | pb => $pb, |
|
|
41 | idx => $idx, |
43 | $tile->{w} = int $pb->get_width / TILESIZE; |
42 | w => int $pb->get_width / TILESIZE, |
44 | $tile->{h} = int $pb->get_height / TILESIZE; |
43 | h => int $pb->get_height / TILESIZE, |
|
|
44 | }; |
|
|
45 | |
45 | |
46 | |
46 | $idx += $tile->{w} * $tile->{h}; |
47 | $idx += $tile->{w} * $tile->{h}; |
47 | } |
48 | } |
48 | |
49 | |
49 | my $pb = new Gtk2::Gdk::Pixbuf "rgb", 1, 8, 64 * TILESIZE, TILESIZE * int +($idx + 63) / 64; |
50 | my $pb = new Gtk2::Gdk::Pixbuf "rgb", 1, 8, 64 * TILESIZE, TILESIZE * int +($idx + 63) / 64; |