… | |
… | |
272 | $self->{stack}{$mark} ||= do { |
272 | $self->{stack}{$mark} ||= do { |
273 | my @stack; |
273 | my @stack; |
274 | my $csize = ceil $size; |
274 | my $csize = ceil $size; |
275 | my $shadow = $size * 0.05; |
275 | my $shadow = $size * 0.05; |
276 | |
276 | |
277 | for my $stone ($mark & (MARK_W | MARK_GRAY_W) ? @::white_img : @::black_img) { |
277 | for my $stone ($mark & MARK_W ? @::white_img : @::black_img) { |
278 | my $base = new_pixbuf +(ceil $size + $shadow) x2, 1, 0x00000000; |
278 | my $base = new_pixbuf +(ceil $size + $shadow) x2, 1, 0x00000000; |
279 | |
279 | |
280 | # zeroeth the shadow |
280 | # zeroeth the shadow |
281 | if ($mark & (MARK_B | MARK_W)) { |
281 | if (~$mark & MARK_GRAYED and $mark & (MARK_B | MARK_W)) { |
282 | $::shadow_img->composite ( |
282 | $::shadow_img->composite ( |
283 | $base, $shadow, $shadow, $csize, $csize, $shadow, $shadow, |
283 | $base, $shadow, $shadow, $csize, $csize, $shadow, $shadow, |
284 | $size / $::shadow_img->get_width, $size / $::shadow_img->get_height, |
284 | $size / $::shadow_img->get_width, $size / $::shadow_img->get_height, |
285 | 'bilinear', 128 |
285 | 'bilinear', 128 |
286 | ); |
286 | ); |
287 | } |
287 | } |
288 | |
288 | |
289 | # first the normal stones (handicap stones could be different) |
289 | for ([MARK_B, $mark & MARK_GRAYED ? 96 : 255, 1], |
290 | my $ws = $self->{traditional} ? TRAD_SIZE_W / TRAD_SIZE_B : 1; |
290 | [MARK_W, $mark & MARK_GRAYED ? 160 : 255, TRAD_SIZE_W / TRAD_SIZE_B]) { |
291 | for ([MARK_B, 255, 1], |
|
|
292 | [MARK_W, 255, $ws], |
|
|
293 | [MARK_GRAY_B, 96, 1], |
|
|
294 | [MARK_GRAY_W, 160, $ws]) { |
|
|
295 | my ($mask, $alpha, $scale) = @$_; |
291 | my ($mask, $alpha, $scale) = @$_; |
296 | if ($mark & $mask) { |
292 | if ($mark & $mask) { |
297 | $stone->composite ( |
293 | $stone->composite ( |
298 | $base, 0, 0, $csize, $csize, ($size * (1 - $scale) * 0.5 ) x2, |
294 | $base, 0, 0, $csize, $csize, ($size * (1 - $scale) * 0.5 ) x2, |
299 | $size * $scale / $stone->get_width, $size * $scale / $stone->get_height, |
295 | $size * $scale / $stone->get_width, $size * $scale / $stone->get_height, |