On Dec 23, 2011 2:43 PM, "Jeffrey Palmer" <jeffrey.t.pal...@gmail.com> wrote: > > I just realized this was discussed on Github, so you can probably > ignore what I wrote. > > Regarding the surface, SDLx::App is a SDLx::Surface. That's what I > was referring to. I don't think it's safe to make any assumptions > about what's behind the text, so it should be the module user's > responsibility to clear whatever is behind it.
Hmm can we just not make the blit for clearing the text surface? Cause it wraps an sdl::surface. > > On Fri, Dec 23, 2011 at 2:39 PM, Kartik Thakore > <thakore.kar...@gmail.com> wrote: > > But the surface is not an SDLx::Surface ... maybe we should change that at > > least on the text surface. I think that once you decide to rewrite on the > > text surface it should do that. > > > > How about we add $text->clear(); ? > > > > On Fri, Dec 23, 2011 at 2:37 PM, Jeffrey Palmer < jeffrey.t.pal...@gmail.com> > > wrote: > >> > >> Hi Alex, > >> > >> This is actually the correct behavior. You need to redraw the > >> background before writing the new text. The easiest way to do that is > >> with: > >> $app->draw_rect( undef, 0x000000FF ); > >> > >> The undef there indicates that the entire surface should be used as > >> the rectangle. See draw_rect in SDLx::Surface for more information. > >> > >> Cheers, > >> Jeff > >> > >> On Wed, Dec 21, 2011 at 6:17 PM, Alex <cap...@gmx.de> wrote: > >> > Dear all! > >> > > >> > I want to replace an SDLx::Text by some other text. > >> > Do I have to redraw the whole surface that was covered by the old text > >> > in > >> > order to "replace" it by a new text? > >> > > >> > The following script demonstrates my problem: > >> > > >> > [code] > >> > #!perl > >> > > >> > use strict; > >> > use warnings; > >> > use SDL; > >> > > >> > use SDL; > >> > use SDLx::App; > >> > use SDLx::Text; > >> > > >> > my $app = SDLx::App->new( > >> > exit_on_quit => 1, > >> > ); > >> > > >> > my $message = SDLx::Text->new; > >> > > >> > $message->write_to( $app, "Hello, World!" ); > >> > $app->update; > >> > > >> > $message->text('Susan'); > >> > $message->write_to( $app ); > >> > $app->update(); > >> > > >> > $app->run(); > >> > [/code] > >> > > >> > First, the text "Hello World!" is drawn to the surface. Then, I alter > >> > the > >> > text and draw it again. But the old hello world text still remains on > >> > the > >> > surface. > >> > I don't want that. I want "Hello World!" to disappear and Susan so show > >> > up. > >> > > >> > How do I do that? > >> > > >> > Best regards, > >> > Alex > >> > > > > > > > > > -- > Jeffrey T. Palmer