… | |
… | |
253 | $x -= ($W * $s + $spacing * (@c - 1)) * 0.5; |
253 | $x -= ($W * $s + $spacing * (@c - 1)) * 0.5; |
254 | $y -= $height * 0.5; |
254 | $y -= $height * 0.5; |
255 | |
255 | |
256 | for (@c) { |
256 | for (@c) { |
257 | my $w = $_->get_width * $s; |
257 | my $w = $_->get_width * $s; |
|
|
258 | # +2 == don't fight the rounding |
258 | $_->composite ($pixbuf, |
259 | $_->composite ($pixbuf, |
259 | $x, $y, $w+1, $height+1, $x, $y, $s, $s, |
260 | $x, $y, $w+2, $height+2, $x, $y, $s, $s, |
260 | $::config->{speed} ? INTERP_NEAREST : INTERP_BILINEAR, 255); |
261 | $::config->{speed} ? INTERP_NEAREST : INTERP_BILINEAR, 255); |
261 | |
262 | |
262 | $x += $w + $spacing; |
263 | $x += $w + $spacing; |
263 | } |
264 | } |
264 | } |
265 | } |
… | |
… | |
287 | |
288 | |
288 | $self->{offsets} = [int (($w - $s) / 2), int (($h - $s) / 2), $s]; |
289 | $self->{offsets} = [int (($w - $s) / 2), int (($h - $s) / 2), $s]; |
289 | |
290 | |
290 | my $size = $self->{size}; |
291 | my $size = $self->{size}; |
291 | |
292 | |
|
|
293 | # we leave enough space for the shadows.. I like smaller stones, and we |
|
|
294 | # do no need to do the nifty recursive screen updates that goban2 does |
292 | my $border = int ($s / ($size + 3) * 0.5); |
295 | my $border = int ($s / ($size + 3) * 0.5); |
293 | my $s2 = $s - $border * 2; |
296 | my $s2 = $s - $border * 2; |
294 | my $edge = int ($s2 / ($size + 1) * 0.96) - ($::config->{randomize} ? 3 : 0); |
297 | my $edge = int ($s2 / ($size + 1) * 0.96) - ($::config->{randomize} ? 3 : 0); |
295 | my $ofs = int ($edge / 2); |
298 | my $ofs = int ($edge / 2); |
296 | |
299 | |