]> mj.ucw.cz Git - anim.git/blob - cairotest.pl
Clean up old cruft.
[anim.git] / cairotest.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Gtk2 -init;
7 use Cairo;
8
9 my $area = Gtk2::DrawingArea->new();
10 my $cairo;
11 my $xx=0;
12 sub draw() {
13         my $win = $area->window;
14         my $alloc = $area->allocation;
15         my $w = $alloc->width;
16         my $h = $alloc->height;
17         print "Area $w x $h, xx=$xx\n";
18
19         $cairo = Gtk2::Gdk::Cairo::Context->create($win);
20         $cairo->rectangle(0, 0, $w, $h);
21         $cairo->set_source_rgb(0, 0, 0);
22         $cairo->fill;
23
24         $cairo->rectangle($xx, 10, 40, 40);
25         $cairo->set_source_rgb(0, 0, 1);
26         $cairo->fill;
27
28         my $gc = Gtk2::Gdk::GC->new($win);
29         $gc->set_rgb_background(0x000000);
30         $gc->set_rgb_foreground(0x00ff00);
31         $win->draw_line($gc, $xx, 0, $w-1, $h-1);
32
33         $xx+=5;
34 }
35
36 my $timer;
37 $area->signal_connect("expose-event" => sub {
38         draw();
39         if (!defined $timer) {
40                 $timer = Glib::Timeout->add(10, sub { draw(); return 1; });
41         }
42 });
43
44 my $window = Gtk2::Window->new ('toplevel');
45 $window->signal_connect ("delete-event" => sub { Gtk2->main_quit });
46 $window->set_title("Brum");
47 $window->set_wmclass("anim", "Anim");
48 $window->set_default_size(640, 480);
49 $window->add ($area);
50 $window->show_all;
51 $window->fullscreen;
52
53 Gtk2->main;