#!/usr/bin/perl # rects.pl: Example of actors API in Clutter # Copyright (C) 2007 OpenedHand, Ltd. # Author: Emmanuele Bassi # # This is free software. Permission to redistribute and/or modify it under # the same terms of Perl itself. use Glib; use Clutter '-init'; use Data::Dumper; use strict; use warnings; sub button_press_event_cb { my ($stage, $event) = @_; print Dumper($stage); print Dumper($event); print "*** Button press\n", "*** coordinates: (", $event->x, ", ", $event->y, ")\n", "*** button: ", $event->button, "\n"; # Clutter->main_quit() if $event->button eq 1; } sub key_press_event_cb { Clutter->main_quit(); } sub main { my $stage = Clutter::Stage->get_default(); $stage->set_size(800, 600); $stage->set_color(Clutter::Color->new(0x6d, 0x6d, 0x70, 0xff)); $stage->signal_connect(button_press_event => \&button_press_event_cb); $stage->signal_connect(key_press_event => \&key_press_event_cb); $stage->signal_connect(actor_added => sub { my ($container, $actor) = @_; print "Added actor: $actor\n"; }); for my $i (1 .. 10) { my $rect = Clutter::Rectangle->new(); $rect->set_color(Clutter::Color->new(0x35, 0x99, 0x2a, 0x66)); $rect->set_border_width(6); $rect->set_border_color(Clutter::Color->new(0x00, 0x00, 0x00, 0x33)); $rect->set_position((800 - (80 * $i)) / 2, (600 - (60 * $i)) / 2); $rect->set_size(80 * $i, 60 * $i); $stage->add($rect); $rect->show(); } $stage->show(); Clutter->main(); } main(); 0;