13 my $v = AA::NetV->new('v');
16 $v->Set('label', '1');
18 my $w = AA::NetV->new('w');
21 $w->Set('label', '2');
23 my $e = AA::Edge->new('e', $v, $w);
33 my $area = Gtk2::DrawingArea->new();
37 my ($lastw, $lasth, $lastd) = (-1, -1, -1);
38 my ($pixw, $pixh) = (-1, -1);
41 my $win = $area->window;
42 my $wgc = Gtk2::Gdk::GC->new($win);
43 my $alloc = $area->allocation;
44 my $w = $alloc->width;
45 my $h = $alloc->height;
46 my $d = $win->get_depth;
47 # print "Area $w x $h x $d, xx=$xx\n";
49 if (!defined($pixmap) || $lastw != $w || $lasth != $h || $lastd != $d) {
50 ($lastw, $lasth, $lastd) = ($w, $h, $d);
58 print "Resized to ${w}x${h}, pixmap size ${pixw}x${pixh}\n";
60 $pixmap = Gtk2::Gdk::Pixmap->new($win, $pixw, $pixh, $d);
61 $cairo = Gtk2::Gdk::Cairo::Context->create($pixmap);
62 $cairo->select_font_face('URW Palladio L', 'normal', 'normal');
63 my $scale = $pixw/1024;
64 $cairo->scale($scale, $scale);
68 $wgc->set_rgb_background(0);
69 $wgc->set_rgb_foreground(0);
70 $win->draw_rectangle($wgc, 1, 0, 0, $w, $h);
73 $cairo->rectangle(0, 0, 1024, 768);
74 $cairo->set_source_rgb(0, 0, 0);
79 $win->draw_drawable($wgc, $pixmap, 0, 0, 0, 0, $pixw, $pixh);
88 $area->signal_connect("expose-event" => sub {
90 if (!defined $timer) {
91 $timer = Glib::Timeout->add(30, sub { $stopped || step(); return 1; });
94 $area->set_flags('can-focus');
95 # $area->add_events('key-press-mask');
96 $area->signal_connect('key-press-event' => sub {
98 my $k = Gtk2::Gdk::keyval_name(0, $evt->keyval);
99 print "Pressed key $k\n";
100 if ($k eq "Escape") {
102 } elsif ($k eq "space") {
103 $stopped = !$stopped;
107 my $window = Gtk2::Window->new ('toplevel');
108 $window->signal_connect ("delete-event" => sub { Gtk2->main_quit });
109 $window->set_title("Brum");
110 $window->set_wmclass("brum", "Brum");
111 $window->set_default_size(640, 480);
112 $window->add ($area);
114 #$window->fullscreen;