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