Re: SDLx::Text - replace old text?

2011-12-25 Thread Dominique Dumont
Le Friday 23 December 2011 21:02:17, Kartik Thakore a écrit :
  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.

Don't go that way: next thing user will ask is to restore what was behind the 
text on the surface.

Dominique
--
http://config-model.wiki.sourceforge.net/ -o- http://search.cpan.org/~ddumont/
http://www.ohloh.net/accounts/ddumont -o- http://ddumont.wordpress.com/


signature.asc
Description: This is a digitally signed message part.


AW: SDLx::Text - replace old text?

2011-12-25 Thread Alex
So, when I have an application, that uses a background image (which is the
origincal background for my question), the appropriate way to redraw a
text would be:

- calculate the surface of a text one wants to draw
- store this specific piece of the old surface somewhere
- draw the text

now, when redrawing the text:
- blit the old surface over the text surface
- repeat the above 3 steps for the new text

Or is it done in another way? I'm not that familiar with SDL programming,
maybe I'm just doing it wrong.

Best regards  joyeux noel,
Alex

-Ursprüngliche Nachricht-
Von: Dominique Dumont [mailto:domi.dum...@free.fr] 
Gesendet: Sonntag, 25. Dezember 2011 10:24
An: sdl-devel@perl.org
Betreff: Re: SDLx::Text - replace old text?

Le Friday 23 December 2011 21:02:17, Kartik Thakore a écrit :
  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.

Don't go that way: next thing user will ask is to restore what was behind
the text on the surface.

Dominique
--
http://config-model.wiki.sourceforge.net/ -o-
http://search.cpan.org/~ddumont/
http://www.ohloh.net/accounts/ddumont -o- http://ddumont.wordpress.com/



Re: SDLx::Text - replace old text?

2011-12-24 Thread Dominique Dumont
Le Thursday 22 December 2011 00:17:07, Alex a écrit :
 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.

You have to draw a black rectangle on $app before writing Susan. I don't think 
there's another way.

HTH

Dominique
--
http://config-model.wiki.sourceforge.net/ -o- http://search.cpan.org/~ddumont/
http://www.ohloh.net/accounts/ddumont -o- http://ddumont.wordpress.com/


signature.asc
Description: This is a digitally signed message part.


Re: SDLx::Text - replace old text?

2011-12-23 Thread Jeffrey Palmer
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, 0x00FF );

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



Re: SDLx::Text - replace old text?

2011-12-23 Thread Kartik Thakore
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.comwrote:

 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, 0x00FF );

 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
 



Re: SDLx::Text - replace old text?

2011-12-23 Thread Jeffrey Palmer
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.

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, 0x00FF );

 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


Re: SDLx::Text - replace old text?

2011-12-23 Thread Kartik Thakore
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, 0x00FF );
 
  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


SDLx::Text - replace old text?

2011-12-21 Thread Alex
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