--- deliantra/Deliantra-Client/DC.pm 2006/04/07 20:13:13 1.5 +++ deliantra/Deliantra-Client/DC.pm 2006/04/07 20:34:44 1.6 @@ -112,15 +112,26 @@ ) } +sub new_from_ttf { + my ($class, $ttf, $text) = @_; + + utf8::upgrade $text; + + my $surface = SDL::TTFRenderUTF8Blended $ttf, $text, + (new SDL::Color -r => 255, -g => 255, -b => 255); + + $class->new_from_surface ($surface) +} + sub upload { my ($self) = @_; return unless $SDL::App::USING_OPENGL; - my ($data, $width, $height); + my $data; if (exists $self->{data}) { - ($data, $width, $height) = ($self->{data}, $self->{width}, $self->{height}); + $data = $self->{data}; } else { my $pb = new Gtk2::Gdk::PixbufLoader; $pb->write ($self->{image}); @@ -129,7 +140,10 @@ $pb = $pb->get_pixbuf; $pb = $pb->add_alpha (0, 0, 0, 0); - ($data, $width, $height) = ($pb->get_pixels, $pb->get_width, $pb->get_height); + $self->{width} = $pb->get_width; + $self->{height} = $pb->get_height; + + $data = $pb->get_pixels; } ($self->{name}) = @{glGenTextures 1}; @@ -143,7 +157,7 @@ glTexImage2D GL_TEXTURE_2D, 0, GL_RGBA8, - $width, $height, + $self->{width}, $self->{height}, 0, GL_RGBA, GL_UNSIGNED_BYTE,