Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | package Pastel::Font;\r |
2 | @ISA = qw (Pastel::Mixin::Mixin);\r | |
3 | use Pastel::Mixin::Mixin;\r | |
4 | use Carp;\r | |
5 | use strict;\r | |
6 | \r | |
7 | my $font_parser;\r | |
8 | \r | |
9 | {\r | |
10 | my $id;\r | |
11 | sub _id { return $id++;}\r | |
12 | }\r | |
13 | \r | |
14 | sub new {\r | |
15 | my $class = shift;\r | |
16 | my $self = {};\r | |
17 | bless $self, ref($class) || $class;\r | |
18 | $self->_init(@_);\r | |
19 | return $self;\r | |
20 | }\r | |
21 | \r | |
22 | sub _init {\r | |
23 | my ($self, @args) = @_;\r | |
24 | my ($family, $style, $size) = $self->_rearrange(["FAMILY","STYLE","SIZE"],\r | |
25 | @args );\r | |
26 | if ( defined ( $family) ){\r | |
27 | $self->{"family"} = $family;\r | |
28 | }\r | |
29 | \r | |
30 | if ( defined( $style ) ){\r | |
31 | if( ($style =~ /^bold$/i) || ($style =~ /^italic$/i) ||\r | |
32 | ($style =~ /^bolditalic$/i) || ($style =~ /^plain$/i)|| ($style =~ /^regular$/i) ){\r | |
33 | $self->{"style"} = $style;\r | |
34 | }\r | |
35 | else {\r | |
36 | croak "Illegal style parameter in Pastel::Font\n";\r | |
37 | }\r | |
38 | } else {\r | |
39 | $self->{"style"} = "REGULAR";\r | |
40 | }\r | |
41 | \r | |
42 | if ( defined( $size ) ){\r | |
43 | $self->{"size"} = $size;\r | |
44 | } else {\r | |
45 | $self->{"size"} = 10;\r | |
46 | }\r | |
47 | \r | |
48 | $self->{"id"} = $self->_id() ;\r | |
49 | return $self;\r | |
50 | }\r | |
51 | \r | |
52 | sub get_id {\r | |
53 | return $_[0]->{"id"};\r | |
54 | }\r | |
55 | \r | |
56 | sub get_family {\r | |
57 | return $_[0]->{"family"};\r | |
58 | }\r | |
59 | \r | |
60 | sub get_style {\r | |
61 | return $_[0]->{"style"};\r | |
62 | }\r | |
63 | \r | |
64 | sub get_size {\r | |
65 | return $_[0]->{"size"};\r | |
66 | }\r | |
67 | \r | |
68 | sub get_svg_string {\r | |
69 | my $self = shift;\r | |
70 | my $s = "";\r | |
71 | $s .= "font-family:".$self->get_family()."; "; \r | |
72 | $s .= "font-size:".$self->get_size()."pt;";\r | |
73 | if( $self->{"style"} =~ /^bold$/i ){\r | |
74 | $s .= "font-weight:bold;";\r | |
75 | }\r | |
76 | if( $self->{"style"} eq "bolditalic"){\r | |
77 | $s .= 'font-style:italic;font-weight:bold';\r | |
78 | }\r | |
79 | if( $self->{"style"} eq "italic"){\r | |
80 | $s .= 'font-style:italic';\r | |
81 | }\r | |
82 | return $s;\r | |
83 | }\r | |
84 | \r | |
85 | sub _fontify {\r | |
86 | my $self = shift;\r | |
87 | my $string_object = shift;\r | |
88 | $string_object->{"font"} = $self;\r | |
89 | return $string_object;\r | |
90 | }\r | |
91 | \r | |
92 | sub create_from_file {\r | |
93 | my ($self, @args) = @_;\r | |
94 | #my $font_parser;\r | |
95 | my ($filename, $type) = $self->_rearrange( ["FILE","TYPE"], @args );\r | |
96 | \r | |
97 | if ( defined ($type) ){\r | |
98 | \r | |
99 | if ($type =~ /^TTF$/i ){\r | |
100 | # $self->{"type"} = "TTF";\r | |
101 | $font_parser = Pastel::Font::TTF->create_from_file($filename);\r | |
102 | #print "Font created\n";\r | |
103 | return $self->new($font_parser->get_font_family(),$font_parser->get_subfamily());\r | |
104 | \r | |
105 | }\r | |
106 | \r | |
107 | } else {\r | |
108 | croak 'Error: Argument missing in Pastel::Font::create_from file()', "\n";\r | |
109 | }\r | |
110 | \r | |
111 | }\r | |
112 | 1;\r | |
113 | \r |