Added better error reporting and more tests for TTF Font size
[sdlgit/SDL_perl.git] / src / SDL.xs
index f6660fa..806e609 100644 (file)
@@ -1323,6 +1323,21 @@ ColorB ( color, ... )
        OUTPUT:
                RETVAL
 
+
+void
+ColorRGB ( color, ... )
+ SDL_Color *color
+ PPCODE:
+ if (items > 1 ) {
+ color->r = SvIV(ST(1));
+ color->g = SvIV(ST(2));
+ color->b = SvIV(ST(3));
+ }
+ mXPUSHi( color->r );
+ mXPUSHi( color->g );
+ mXPUSHi( color->b );
+ XSRETURN(3);
+
 void
 FreeColor ( color )
        SDL_Color *color
@@ -2964,9 +2979,20 @@ 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));
+               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
 
@@ -2977,9 +3003,19 @@ TTFSizeUTF8 ( font, text )
        CODE:
                int w,h;
                RETVAL = newAV();
-               TTF_SizeUTF8(font,text,&w,&h);
-               av_push(RETVAL,newSViv(w));
-               av_push(RETVAL,newSViv(h));
+               if(TTF_SizeUTF8(font,text,&w,&h))
+               {
+                       av_push(RETVAL,newSViv(w));
+                       av_push(RETVAL,newSViv(h));
+                       sv_2mortal((SV*)RETVAL);
+
+               }
+               else
+               {
+                       printf("TTF error at TTFSizeUTF8 with : %s \n", TTF_GetError());
+                       Perl_croak (aTHX_ "TTF error \n");
+               }
+               
        OUTPUT:
                RETVAL
 
@@ -2990,9 +3026,19 @@ 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));
+               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