SDL::TTFont#print and blended mode

[email protected] ("Guillaume Cottenceau")
Newsgroups perl.sdl.devel
Message-ID <[email protected]>
I have noticed that using #print on an SDL::TTFont in blended mode
aborts with an empty error string. I don't understand why TTFPutString
considers a surface created with the text to be incorrect if it has no
palette, I think this is an error, hence my proposed (verified) patch
is attached. IMHO blended mode is really a minimum today and I would
then also propose blended rather than shaded mode by default in
SDL::TTFont (I doubt people are really using SDL::TTFont on anything
else than solid backgrounds because of this bug in blended mode).

I have another, more minor, problem with SDL::TTFont. Printing an
empty string aborts with an empty error; SFont (SDL::Font) which I was
using before didn't have this behaviour, and to be honest, I prefer
this situation or else I'll need to write a wrapper around #print
since what I print is dynamic and sometimes is empty. The following in
#print as first statement would seem to be enough:

        length(join('', @text)) > 0 or return;

-- 
Guillaume Cottenceau - http://zarb.org/~gc/
SDL_perl-fix-ttfputstring-blended.diff (text/x-patch, 960 B)
--- SDL_Perl-2.1.2/src/SDL_perl.xs	2005-10-02 17:33:28.000000000 +0200
+++ SDL_perl.xs	2006-05-23 20:30:23.000000000 +0200
@@ -3062,11 +3062,13 @@
 				dest.w = w;
 				dest.h = h;
 		}
-		if ( img && img->format && img->format->palette ) {
-			SDL_Color *c = &img->format->palette->colors[0];
-			Uint32 key = SDL_MapRGB( img->format, c->r, c->g, c->b );
-			SDL_SetColorKey(img,SDL_SRCCOLORKEY,key );
-			if (0 > SDL_BlitSurface(img,NULL,surface,&dest)) {
+		if ( img && img->format ) {
+                        if ( img->format->palette ) {
+                                SDL_Color *c = &img->format->palette->colors[0];
+                                Uint32 key = SDL_MapRGB( img->format, c->r, c->g, c->b );
+                                SDL_SetColorKey(img,SDL_SRCCOLORKEY,key );
+                        }
+                        if (0 > SDL_BlitSurface(img,NULL,surface,&dest)) {
 				SDL_FreeSurface(img);
 				RETVAL = NULL;	
 			} else {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.