ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Gtk2-GoBoard/GoBoard.pm
(Generate patch)

Comparing Gtk2-GoBoard/GoBoard.pm (file contents):
Revision 1.8 by root, Wed Jun 25 19:35:47 2008 UTC vs.
Revision 1.9 by root, Wed Jun 25 21:25:03 2008 UTC

144 @triangle_img, @square_img, @circle_img, @cross_img); 144 @triangle_img, @square_img, @circle_img, @cross_img);
145 145
146sub load_images { 146sub load_images {
147 $board_img = load_image "woodgrain-01.jpg"; 147 $board_img = load_image "woodgrain-01.jpg";
148 @black_img = load_image "b-01.png"; 148 @black_img = load_image "b-01.png";
149 @white_img = map +(load_image "w-0$_.png"), 1,2,3,4,5; 149 @white_img = map +(load_image "w-0$_.png"), 1 .. 5;
150 $shadow_img = load_image "shadow.png"; 150 $shadow_img = load_image "shadow.png"; # also used to fake hoshi points
151 @triangle_img = map +(load_image "triangle-$_.png"), qw(b w); 151 @triangle_img = map +(load_image "triangle-$_.png"), qw(b w);
152 @square_img = map +(load_image "square-$_.png" ), qw(b w); 152 @square_img = map +(load_image "square-$_.png" ), qw(b w);
153 @circle_img = map +(load_image "circle-$_.png" ), qw(b w); 153 @circle_img = map +(load_image "circle-$_.png" ), qw(b w);
154 @cross_img = map +(load_image "cross-$_.png" ), qw(b w); 154 @cross_img = map +(load_image "cross-$_.png" ), qw(b w);
155} 155}
447 $self->{draw_stone} = sub { 447 $self->{draw_stone} = sub {
448 my ($x, $y) = @_; 448 my ($x, $y) = @_;
449 449
450 @area = ($kx[$x] - $ofs, $ky[$y] - $ofs, 450 @area = ($kx[$x] - $ofs, $ky[$y] - $ofs,
451 $edge + $shadow, $edge + $shadow); 451 $edge + $shadow, $edge + $shadow);
452 @areai = ((ceil $area[0]), (ceil $area[1]), 452 @areai = map +(ceil $_), @area; # area, integer
453 (int $area[2]), (int $area[3])); # area, integer
454 453
455 $pb = new_pixbuf @areai[2,3]; 454 $pb = new_pixbuf @areai[2,3];
456 $self->{backgroundpb}->copy_area (@areai, $pb, 0, 0); 455 $self->{backgroundpb}->copy_area (@areai, $pb, 0, 0);
457 456
458 $put_stack->($x-1, $y, $kx[$x-1] - $kx[$x], 0, 0, 0) if $x > 1; 457 $put_stack->($x-1, $y, $kx[$x-1] - $kx[$x], 0, 0, 0) if $x > 1;
496 my @stack; 495 my @stack;
497 my $csize = ceil $size; 496 my $csize = ceil $size;
498 my $shadow = $size * SHADOW; 497 my $shadow = $size * SHADOW;
499 498
500 for my $stone ($mark & MARK_W ? @white_img : @black_img) { 499 for my $stone ($mark & MARK_W ? @white_img : @black_img) {
501 my $base = new_pixbuf +(ceil $size + $shadow) x2, 1, 0x00000000; 500 my $base = new_pixbuf +(ceil $csize + $shadow) x2, 1, 0x00000000;
502 501
503 # zeroeth the shadow 502 # zeroeth the shadow
504 if (~$mark & MARK_GRAYED and $mark & (MARK_B | MARK_W)) { 503 if (~$mark & MARK_GRAYED and $mark & (MARK_B | MARK_W)) {
505 $shadow_img->composite ( 504 $shadow_img->composite (
506 $base, $shadow, $shadow, $csize, $csize, $shadow, $shadow, 505 $base, ($shadow) x2, $csize, $csize, ($shadow) x2,
507 $size / $shadow_img->get_width, $size / $shadow_img->get_height, 506 $size / $shadow_img->get_width, $size / $shadow_img->get_height,
508 'bilinear', 128 507 'bilinear', 128
509 ); 508 );
510 } 509 }
511 510
512 for ([MARK_B, $mark & MARK_GRAYED ? 106 : 255, 1], 511 for ([MARK_B, $mark & MARK_GRAYED ? 106 : 255, 1],
513 [MARK_W, $mark & MARK_GRAYED ? 190 : 255, TRAD_SIZE_W / TRAD_SIZE_B]) { 512 [MARK_W, $mark & MARK_GRAYED ? 190 : 255, TRAD_SIZE_W / TRAD_SIZE_B]) {
514 my ($mask, $alpha, $scale) = @$_; 513 my ($mask, $alpha, $scale) = @$_;
515 if ($mark & $mask) { 514 if ($mark & $mask) {
516 $stone->composite ( 515 $stone->composite (
517 $base, 0, 0, $csize, $csize, ($size * (1 - $scale) * 0.5 ) x2, 516 $base, 0, 0, $csize, $csize, ($size * (1 - $scale) * 0.5) x2,
518 $size * $scale / $stone->get_width, $size * $scale / $stone->get_height, 517 $size * $scale / $stone->get_width, $size * $scale / $stone->get_height,
519 'bilinear', $alpha 518 'bilinear', $alpha
520 ); 519 );
521 } 520 }
522 } 521 }
525 for ([MARK_SMALL_B, $black_img[0]], 524 for ([MARK_SMALL_B, $black_img[0]],
526 [MARK_SMALL_W, $white_img[0]]) { 525 [MARK_SMALL_W, $white_img[0]]) {
527 my ($mask, $img) = @$_; 526 my ($mask, $img) = @$_;
528 if ($mark & $mask) { 527 if ($mark & $mask) {
529 $img->composite ( 528 $img->composite (
530 $base, (int $size / 4) x2, (ceil $size / 2 + 1) x2, ($size / 4) x2, 529 $base, ($size / 4) x2, (ceil $size / 2 + 1) x2, ($size / 4) x2,
531 $size / $img->get_width / 2, $size / $img->get_height / 2, 530 $size / $img->get_width / 2, $size / $img->get_height / 2,
532 'bilinear', 255 531 'bilinear', 255
533 ); 532 );
534 } 533 }
535 } 534 }
536 535
537 # and lastly any markers 536 # and finally any markers
538 my $dark_bg = ! ! ($mark & MARK_B); 537 my $dark_bg = ! ! ($mark & MARK_B);
539 538
540 for ([MARK_CIRCLE, $circle_img[$dark_bg]], 539 for ([MARK_CIRCLE, $circle_img [$dark_bg]],
541 [MARK_TRIANGLE, $triangle_img[$dark_bg]], 540 [MARK_TRIANGLE, $triangle_img[$dark_bg]],
542 [MARK_CROSS, $cross_img[$dark_bg]], 541 [MARK_CROSS, $cross_img [$dark_bg]],
543 [MARK_SQUARE, $square_img[$dark_bg]], 542 [MARK_SQUARE, $square_img [$dark_bg]],
544 [MARK_KO, $square_img[$dark_bg]]) { 543 [MARK_KO, $square_img [$dark_bg]]) {
545 my ($mask, $img) = @$_; 544 my ($mask, $img) = @$_;
546 if ($mark & $mask) { 545 if ($mark & $mask) {
547 $img->composite ( 546 $img->composite (
548 $base, 0, 0, $size, $size, 0, 0, 547 $base, 0, 0, $csize, $csize, 0, 0,
549 $size / $img->get_width, $size / $img->get_height, 548 $size / $img->get_width, $size / $img->get_height,
550 'bilinear', $dark_bg ? 176 : 190 549 'bilinear', $dark_bg ? 176 : 190
551 ); 550 );
552 } 551 }
553 } 552 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines