ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/game.pl
(Generate patch)

Comparing kgsueme/kgsueme/game.pl (file contents):
Revision 1.18 by pcg, Sun Jun 1 04:52:16 2003 UTC vs.
Revision 1.19 by pcg, Sun Jun 1 05:18:15 2003 UTC

50 $self->{moveadj}->signal_connect (value_changed => sub { 50 $self->{moveadj}->signal_connect (value_changed => sub {
51 return unless $self->{path}; 51 return unless $self->{path};
52 52
53 my $move = int (@{$self->{path}} * $_[0]->get_value); 53 my $move = int (@{$self->{path}} * $_[0]->get_value);
54 54
55 $self->{board_label}->set_text ("Move $move");
56
55 $self->{board} = new KGS::Game::Board $self->{size}; 57 $self->{board} = new KGS::Game::Board $self->{size};
56 $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); 58 $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]);
57 59
58 $self->redraw ($self->repaint_board); 60 $self->redraw ($self->repaint_board);
59 61
60 $self->{text}->set_text(KGS::Listener::Debug::dumpval([$self->{board}{time},$self->{board}{captures}]). $self->{board}{comment}); 62 $self->{text}->set_text(KGS::Listener::Debug::dumpval([$self->{board}{time},$self->{board}{captures}]). $self->{board}{comment});
61 }); 63 });
62 } 64 }
63 65
64 $vbox->pack_start(($self->{canvas} = new Gtk2::DrawingArea), 1, 1, 0); 66 #d#TYPOE
67 $vbox->pack_start((my $aspect_frame = gtk_aspect_frame_new Gtk2::AspectFrame "", 0.5, 0.5, 1, 0), 1, 1, 0);
68 $aspect_frame->set (border_width => 0);
69 $aspect_frame->set (shadow_type => 'none');
70 $self->{board_label} = $aspect_frame->get_label_widget;
71
72 $aspect_frame->add($self->{canvas} = new Gtk2::DrawingArea);
73 $self->{canvas}->double_buffered (0);
65 74
66 $self->{canvas}->signal_connect(configure_event => \&configure_event, $self); 75 $self->{canvas}->signal_connect(configure_event => \&configure_event, $self);
67 $self->{canvas}->signal_connect(expose_event => \&expose_event, $self); 76 $self->{canvas}->signal_connect(expose_event => \&expose_event, $self);
68 77
69 $self->{hpane}->pack2(($self->{vpane} = new Gtk2::VPaned), 0, 0); 78 $self->{hpane}->pack2(($self->{vpane} = new Gtk2::VPaned), 0, 0);
126 my ($widget, $event, $self) = @_; 135 my ($widget, $event, $self) = @_;
127 136
128 $self->{pixbuf} or return; 137 $self->{pixbuf} or return;
129 138
130 my $area = $event->area; 139 my $area = $event->area;
131 my ($ox, $oy, $s) = @{$self->{offsets}};
132 140
133 $self->redraw ( 141 $self->redraw ($area);
134 (new Gtk2::Gdk::Rectangle $area->x - $ox, $area->y - $oy, $area->width, $area->height)
135 ->intersect(new Gtk2::Gdk::Rectangle 0, 0, $s, $s)
136 );
137 142
138 0; 143 0;
139} 144}
140 145
141# something Gtk2 fixed 146# something Gtk2 fixed
279 my $expose_area = undef; 284 my $expose_area = undef;
280 285
281 return $expose_area unless $self->{board}; 286 return $expose_area unless $self->{board};
282 287
283 my ($w, $h) = ($canvas->allocation->values)[2,3]; 288 my ($w, $h) = ($canvas->allocation->values)[2,3];
289
290 die "FATAL: board aspect ratio != 1" unless $w == $h;
284 291
285 my $s = $w > $h ? $h : $w; 292 my $s = $w;
286 293
287 return unless $s > 128; 294 return unless $s >= 200;
288 295
289 $self->{offsets} = [int (($w - $s) / 2), int (($h - $s) / 2), $s];
290
291 my $size = $self->{size}; 296 my $size = $self->{size};
292 297
293 # we leave enough space for the shadows.. I like smaller stones, and we 298 # 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 299 # do no need to do the nifty recursive screen updates that goban2 does
295 my $border = int ($s / ($size + 3) * 0.5); 300 my $border = int ($s / ($size + 3) * 0.5);
424sub redraw { 429sub redraw {
425 my ($self, $area) = @_; 430 my ($self, $area) = @_;
426 431
427 if ($area && $self->{pixbuf}) { 432 if ($area && $self->{pixbuf}) {
428 my ($x, $y, $w, $h) = $area->values; 433 my ($x, $y, $w, $h) = $area->values;
429 my ($ox, $oy, $s) = @{$self->{offsets}};
430 434
431 $self->{canvas}->window->draw_pixbuf ($self->{canvas}->style->white_gc, $self->{pixbuf}, 435 $self->{canvas}->window->draw_pixbuf ($self->{canvas}->style->white_gc, $self->{pixbuf},
432 $x, $y, $x + $ox, $y + $oy, $w, $h, 436 $x, $y, $x, $y, $w, $h,
433 "normal", 0, 0); 437 "normal", 0, 0);
434 $self->{canvas}->window->draw_rectangle ($self->{canvas}->style->black_gc, 0, 438 $self->{canvas}->window->draw_rectangle ($self->{canvas}->style->black_gc, 0,
435 $x + $ox - 1, $y + $oy - 1, $w + 2, $h + 2) if $::DEBUG_EXPOSE; 439 $x - 1, $y - 1, $w + 2, $h + 2) if $::DEBUG_EXPOSE;
436 } 440 }
437} 441}
438 442
439sub event_update_tree { 443sub event_update_tree {
440 my ($self) = @_; 444 my ($self) = @_;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines