Added better error reporting and more tests for TTF Font size
Kartik Thakore [Tue, 25 Aug 2009 10:01:11 +0000 (06:01 -0400)]
src/SDL.xs
t/toolfontpm.t

index 5cebae7..806e609 100644 (file)
@@ -2979,10 +2979,19 @@ TTFSizeText ( font, text )
        CODE:
                int w,h;
                RETVAL = newAV();
-               TTF_SizeText(font,text,&w,&h);
-               av_push(RETVAL,newSViv(w));
-               av_push(RETVAL,newSViv(h));
-               sv_2mortal((SV*)RETVAL);
+               if(TTF_SizeText(font,text,&w,&h))
+               {
+                       av_push(RETVAL,newSViv(w));
+                       av_push(RETVAL,newSViv(h));
+                       sv_2mortal((SV*)RETVAL);
+               }
+               else
+               {
+                        printf("TTF error at TTFSizeText: %s \n", TTF_GetError()); 
+                        Perl_croak (aTHX_ "TTF error \n");     
+       
+               }
+               
        
        OUTPUT:
                RETVAL
@@ -2994,11 +3003,18 @@ TTFSizeUTF8 ( font, text )
        CODE:
                int w,h;
                RETVAL = newAV();
-               TTF_SizeUTF8(font,text,&w,&h);
+               if(TTF_SizeUTF8(font,text,&w,&h))
+               {
                        av_push(RETVAL,newSViv(w));
                        av_push(RETVAL,newSViv(h));
-               
-               sv_2mortal((SV*)RETVAL);
+                       sv_2mortal((SV*)RETVAL);
+
+               }
+               else
+               {
+                       printf("TTF error at TTFSizeUTF8 with : %s \n", TTF_GetError());
+                       Perl_croak (aTHX_ "TTF error \n");
+               }
                
        OUTPUT:
                RETVAL
@@ -3010,10 +3026,18 @@ TTFSizeUNICODE ( font, text )
        CODE:
                int w,h;
                RETVAL = newAV();
-               TTF_SizeUNICODE(font,text,&w,&h);
-               av_push(RETVAL,newSViv(w));
-               av_push(RETVAL,newSViv(h));
-               sv_2mortal((SV*)RETVAL);
+               if(TTF_SizeUNICODE(font,text,&w,&h))
+               {
+                       av_push(RETVAL,newSViv(w));
+                       av_push(RETVAL,newSViv(h));
+                       sv_2mortal((SV*)RETVAL);
+
+               }
+               else
+               {
+                       printf("TTF error at TTFSizeUNICODE : %s \n", TTF_GetError()); 
+                       Perl_croak (aTHX_ "TTF error \n");
+               }
 
        OUTPUT:
                RETVAL
index 5464c69..7856d05 100644 (file)
@@ -42,7 +42,7 @@ use Test::More;
 
 if ( SDL::Config->has('SDL_image') 
        && SDL::Config->has('SDL_ttf') ) {
-       plan ( tests => 3 );
+       plan ( tests => 6 );
 } else {
        plan ( skip_all => 
                ( SDL::Config->has('SDL_image') 
@@ -66,5 +66,15 @@ my $font = new SDL::Tool::Font
                -fg => $SDL::Color::black,
                -bg => $SDL::Color::black;
 
-ok( SDL::TTFSizeUTF8( $font, "Test"), "Test for SDL::TTFSizeUTF8." );
+use utf8;
+
+my $string = "Test";
+my $aref = SDL::TTFSizeText( $font, $string);
+ok( defined($$aref[0]), "Testi width for SDL::TTFSizeText." );
+ok( defined($$aref[1]), "Test height for SDL::TTFSizeText." );
+
+utf8::encode($string);
+my $bref =  SDL::TTFSizeUTF8( $font, $string);
+ok( defined($$bref[0]), "Test for width SDL::TTFSizeUTF8." );
+ok( defined($$bref[1]), "Test for height SDL::TTFSizeUTF8." );