/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1133 - (hide 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 dpavlin 829 package Frey::Cairo;
2     use Moose;
3    
4     extends 'Frey';
5     with 'Frey::Web';
6    
7     use Cairo;
8 dpavlin 1114 use Font::FreeType;
9 dpavlin 829
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 dpavlin 833 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 dpavlin 829 }
72 dpavlin 833 die "Can't find font $ttf_path" unless -r $ttf_path;
73 dpavlin 829
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 dpavlin 1133 __PACKAGE__->meta->make_immutable;
93     no Moose;
94    
95 dpavlin 829 1;

  ViewVC Help
Powered by ViewVC 1.1.26