5 # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
7 # ------------------------------------------------------------------------------
9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Lesser General Public
11 # License as published by the Free Software Foundation; either
12 # version 2.1 of the License, or (at your option) any later version.
14 # This library is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 # Lesser General Public License for more details.
19 # You should have received a copy of the GNU Lesser General Public
20 # License along with this library; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 # ------------------------------------------------------------------------------
25 # Please feel free to send questions, suggestions or improvements to:
41 @ISA = qw(SDL::Surface);
45 my $class = ref($proto) || $proto;
49 $self->{-mode} = $options{-mode} || $options{-m} || SDL::TEXT_SHADED();
50 $self->{-name} = $options{-name} || $options{-n};
51 $self->{-size} = $options{-size} || $options{-s};
52 $self->{-fg} = $options{-foreground} || $options{-fg} || $SDL::Color::black;
53 $self->{-bg} = $options{-background} || $options{-bg} || $SDL::Color::white;
55 croak "SDL::TTFont::new requires a -name\n"
56 unless ($$self{-name});
58 croak "SDL::TTFont::new requires a -size\n"
59 unless ($$self{-size});
61 $self->{-font} = SDL::TTFOpenFont($self->{-name},$self->{-size});
63 croak "Could not open font $$self{-name}, ", SDL::GetError(), "\n"
64 unless ($self->{-font});
72 SDL::FreeSurface($self->{-surface}) if (defined ($self->{-surface}));
73 SDL::TTFCloseFont($self->{-font}) if (defined ($self->{-font}));
77 my ($self,$surface,$x,$y,@text) = @_;
79 croak "Print requies an SDL::Surface"
80 unless( ref($surface) && $surface->isa("SDL::Surface") );
82 SDL::FreeSurface($self->{-surface}) if ($$self{-surface});
84 $$self{-surface} = SDL::TTFPutString($$self{-font},$$self{-mode},
85 $$surface,$x,$y,${$$self{-fg}},${$$self{-bg}},join("",@text));
87 croak "Could not print \"", join("",@text), "\" to surface, ",
88 SDL::GetError(), "\n" unless ($$self{-surface});
92 my ($self,@text) = @_;
93 my $aref = SDL::TTFSizeText($$self{-font},join(" ",@text));
99 SDL::TTFFontHeight($$self{-font});
104 SDL::TTFFontAscent($$self{-font});
109 SDL::TTFFontDescent($$self{-font});
114 SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_NORMAL());
119 SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_BOLD());
124 SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_ITALIC());
130 SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_UNDERLINE());
135 $$self{-mode} = SDL::TEXT_SHADED();
140 $$self{-mode} = SDL::TEXT_SOLID();
145 $$self{-mode} = SDL::TEXT_BLENDED();
150 $$self{-mode} = SDL::UTF8_SHADED();
155 $$self{-mode} = SDL::UTF8_SOLID();
160 $$self{-mode} = SDL::UTF8_BLENDED();
165 $$self{-mode} = SDL::UNICODE_SHADED();
170 $$self{-mode} = SDL::UNICODE_SOLID();
173 sub unicode_blended {
175 $$self{-mode} = SDL::UNICODE_BLENDED();
178 croak "Could not initialize True Type Fonts\n"
179 if ( SDL::TTFInit() < 0);
189 SDL::TTFont - a SDL perl extension
193 $font = new TTFont -name => "Utopia.ttf", -size => 18;
197 L<SDL::TTFont> is a module for applying true type fonts to L<SDL::Surface>.
205 L<perl> L<SDL::Surface>