use Xlib;

say 'Hello';

say 'Display: ', Xlib::DisplayName();

my $display = Xlib::OpenDisplay('');

say 'Default screen: ', $display.DefaultScreen();

$display.hello();

my $white = $display.WhitePixel(0); my $root = $display.RootWindow(); my $window = $display.CreateSimpleWindow($root, 0, 0, 600, 400, 0, 0, $white); $window.StoreName("Hello, perl6"); $window.SelectInput(163919); $window.Map();

# Get Escape keycode my $keysym = Xlib::StringToKeysym('Escape'); my $code_escape = $display.KeysymToKeycode($keysym);

my $event = Xlib::newEvent();

my $type = 0;

my $lastx = 0; my $lasty = 0; my $pressed = 0; my @listline; my @line;

while ($type != 17) { $display.NextEvent($event); $type = $event.type(); if ($type == 4) { my $x = $event.x(); my $y = $event.y(); $window.DrawPoint($x, $y); $lastx = $x; $lasty = $y; $pressed = 1; } if ($type == 5) { my @newline = @line; @listline.push(\@newline); @line = (); $pressed = 0; } if ($type == 6 && $pressed) { my $x = $event.x(); my $y = $event.y(); if (($x != $lastx) || ($y != $lasty)) { $window.DrawLine($lastx, $lasty, $x, $y); $lastx = $x; $lasty = $y; @line.push($x, $y); } } if ($type == 12) { #say 'Exposed. Lines: ', +@listline; for @listline -> $l { #say 'Points ', $l.elems; if ($l.elems > 0) { my $lx = $l[0]; my $ly = $l[1]; #say $lx, ' ', $ly; $window.DrawPoint($lx, $ly);

                loop (my $i = 2; $i < $l.elems ; $i += 2) {
                    my $x = $l[$i];
                    my $y = $l[$i+1]; 
                    $window.DrawLine($lx, $ly, $x, $y);
                    $lx = $x;
                    $ly = $y;
                    #say $lx, ' ', $ly;
                }
            }
        }
    }
    if ($type == 2) {
        my $code = $event.keycode();
        if ($code == $code_escape) {
            $window.Unmap();
            $window.Destroy();
        }
    }
    if ($type == 33) {
        $window.Unmap();
        $window.Destroy();
    }
}

$display.Close();

say 'Bye';

#----------------------------------------------------------------------- # Local Variables: # mode: pir # fill-column: 100 # End: # vim: expandtab shiftwidth=4 ft=perl6:


parrot