/usr/share/doc/libpango-perl/examples/cairo-simple.pl is in libpango-perl 1.227-1+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #!/usr/bin/perl
# This is adopted from the cairosimple.c example in the pango distribution
# written by Behdad Esfahbod.
use strict;
use warnings;
use Math::Trig qw(pi);
use Cairo;
use Glib qw(TRUE FALSE);
use Gtk2 -init;
use Gtk2::Pango;
use constant RADIUS => 150;
use constant N_WORDS => 10;
use constant FONT => "Sans Bold 27";
sub draw_text {
my ($cr) = @_;
$cr -> translate(RADIUS, RADIUS);
my $layout = Pango::Cairo::create_layout($cr);
$layout -> set_text("Text");
my $desc = Pango::FontDescription -> from_string(FONT);
$layout -> set_font_description($desc);
# Draw the layout N_WORDS times in a circle
foreach (0 .. N_WORDS) {
my $angle = (360. * $_) / N_WORDS;
$cr -> save();
# Gradient from red at angle == 60 to blue at angle == 300
my $red = (1 + cos(($angle - 60) * pi / 180.)) / 2;
$cr -> set_source_rgb($red, 0, 1.0 - $red);
$cr -> rotate($angle * pi / 180.);
# Inform Pango to re-layout the text with the new transformation
Pango::Cairo::update_layout($cr, $layout);
my ($width, $height) = $layout -> get_size();
$cr -> move_to(- ($width / PANGO_SCALE) / 2, - RADIUS);
Pango::Cairo::show_layout($cr, $layout);
$cr -> restore();
}
}
my $window = Gtk2::Window -> new();
$window -> signal_connect(delete_event => sub { Gtk2 -> main_quit(); });
my $area = Gtk2::DrawingArea -> new();
$area -> signal_connect(expose_event => sub {
my ($widget, $event) = @_;
my $cr = Gtk2::Gdk::Cairo::Context -> create($widget -> window());
$cr -> set_source_rgb(1.0, 1.0, 1.0);
$cr -> rectangle(0, 0, 2 * RADIUS, 2 * RADIUS);
$cr -> fill();
draw_text($cr);
return FALSE;
});
$window -> set_default_size(2 * RADIUS, 2 * RADIUS);
$window -> add($area);
$window -> show_all();
Gtk2 -> main();
|