/[Frey]/trunk/lib/Frey/Cairo.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/lib/Frey/Cairo.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1133 - (show annotations)
Tue Jun 30 15:10:55 2009 UTC (14 years, 10 months ago) by dpavlin
File size: 1623 byte(s)
make classes immutable and remove moose droppings to make Perl::Critic::Moose happy
1 package Frey::Cairo;
2 use Moose;
3
4 extends 'Frey';
5 with 'Frey::Web';
6
7 use Cairo;
8 use Font::FreeType;
9
10 has path => (
11 is => 'rw',
12 isa => 'Str',
13 required => 1,
14 default => 'var/cairo/telop.png',
15 );
16
17 has width => (
18 is => 'rw',
19 isa => 'Int',
20 required => 1,
21 default => 200,
22 );
23
24 has height => (
25 is => 'rw',
26 isa => 'Int',
27 required => 1,
28 default => 40,
29 );
30
31 has font_size => (
32 is => 'rw',
33 isa => 'Int',
34 required => 1,
35 default => 23,
36 );
37
38 has x => (
39 is => 'rw',
40 isa => 'Int',
41 required => 1,
42 default => 20,
43 );
44
45 has y => (
46 is => 'rw',
47 isa => 'Int',
48 required => 1,
49 default => 25,
50 );
51
52 has text => (
53 is => 'rw',
54 isa => 'Str',
55 required => 1,
56 default => 'Hello, world!',
57 );
58
59 sub as_markup {
60 my ($self) = @_;
61
62 my @fonts = (
63 '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf',
64 '/usr/share/fonts/truetype/ttf-inconsolata/Inconsolata.otf',
65 '/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf',
66 );
67
68 my $ttf_path;
69 foreach my $font ( @fonts ) {
70 $ttf_path ||= $font if -e $font;
71 }
72 die "Can't find font $ttf_path" unless -r $ttf_path;
73
74 my $ft_face = Font::FreeType->new->face($ttf_path);
75 my $cr_face = Cairo::FtFontFace->create($ft_face);
76
77 my $surface = Cairo::ImageSurface->create('argb32', $self->width, $self->height);
78
79 my $cr = Cairo::Context->create($surface);
80 $cr->set_font_face($cr_face);
81 $cr->set_font_size( $self->font_size );
82 $cr->move_to( $self->x, $self->y );
83 $cr->show_text( $self->text );
84 $cr->show_page;
85
86 $self->mkbasepath( $self->path );
87 $surface->write_to_png( $self->path );
88
89 return qq|<img src="/| . $self->path . qq|">|;
90 }
91
92 __PACKAGE__->meta->make_immutable;
93 no Moose;
94
95 1;

  ViewVC Help
Powered by ViewVC 1.1.26