In Video.xs: removed use of goto. Added set_palette. In core_video.t tested set_palette
Kartik Thakore [Tue, 27 Oct 2009 19:30:36 +0000 (15:30 -0400)]
src/Core/Video.xs
t/core_video.t
tools/nopaste.pl

index a01aa2c..836fff1 100644 (file)
@@ -143,7 +143,9 @@ video_set_colors ( surface, start, ... )
        CODE:
                SDL_Color *colors,*temp;
                int i, length;
-               if ( items < 3 ) { RETVAL = 0;  goto all_done; }
+               if ( items < 3 ) { RETVAL = 0;}
+               else
+               {
                length = items - 2;
                colors = (SDL_Color *)safemalloc(sizeof(SDL_Color)*(length+1));
                for ( i = 0; i < length ; i++ ) {
@@ -154,9 +156,36 @@ video_set_colors ( surface, start, ... )
                }
                RETVAL = SDL_SetColors(surface, colors, start, length );
                safefree(colors);
+               }       
 
-       all_done:
        OUTPUT: 
                RETVAL
 
+int
+video_set_palette ( surface, flags, start, ... )
+       SDL_Surface *surface
+       int flags
+       int start
+
+       CODE:
+               SDL_Color *colors,*temp;
+               int i, length;
+               if ( items < 4 ) { 
+               RETVAL = 0;
+                       }
+               else
+               {               
+               length = items - 3;
+               colors = (SDL_Color *)safemalloc(sizeof(SDL_Color)*(length+1));
+               for ( i = 0; i < length ; i++ ){ 
+                       temp = (SDL_Color *)SvIV(ST(i+3));
+                       colors[i].r = temp->r;
+                       colors[i].g = temp->g;
+                       colors[i].b = temp->b;
+               }
+               RETVAL = SDL_SetPalette(surface, flags, colors, start, length );
+               safefree(colors);
+               }
+       OUTPUT: 
+               RETVAL
 
index 6379dfd..4c4e61d 100644 (file)
@@ -9,7 +9,7 @@ use Data::Dumper;
 use Test::More;
 use SDL::Rect;
 
-plan ( tests => 14 );
+plan ( tests => 17 );
 
 use_ok( 'SDL::Video' ); 
 
@@ -25,7 +25,9 @@ my @done =
        update_rects
        flip
        set_colors
+       set_palette
        /;
+
 can_ok ('SDL::Video', @done); 
 
 #testing get_video_surface
@@ -69,6 +71,12 @@ is( ($value == 0)  ||  ($value == -1), 1,  '[flip] returns 0 or -1'  );
 $value = SDL::Video::set_colors($display, 0, SDL::Color->new(0,0,0));
 is(  $value , 0,  '[set_colors] returns 0 trying to write to 32 bit display'  );
 
+$value = SDL::Video::set_palette($display, 0x01|0x02, 0);
+
+is(  $value , 0,  '[set_palette] returns 0 trying to write to 32 bit surface'  );
+
+
+
 my @b_w_colors;
 
 for(my $i=0;$i<256;$i++){
@@ -83,14 +91,23 @@ if(!$hwdisplay){
 $value = SDL::Video::set_colors($hwdisplay, 0);
 is(  $value , 0,  '[set_colors] returns 0 trying to send empty colors to 8 bit surface'  );
 
+$value = SDL::Video::set_palette($hwdisplay, 0x01|0x02, 0);
+
+is(  $value , 0,  '[set_palette] returns 0 trying to send empty colors to 8 bit surface'  );
 
 
 $value = SDL::Video::set_colors($hwdisplay, 0, @b_w_colors);
 is( $value , 1,  '[set_colors] returns '.$value  );
 
+$value = SDL::Video::set_palette($hwdisplay, 0x01|0x02, 0, @b_w_colors );
+
+is(  $value , 1,  '[set_palette] returns 1'  );
+
+
+
+
 
 my @left = qw/
-       set_palette
        set_gamma
        get_gamma_ramp
        set_gmmma_ramp
index 1c618bd..da8920e 100644 (file)
@@ -10,7 +10,7 @@ use warnings;
 use WWW::Mechanize;
 use Getopt::Std;
 use Pod::Usage;
-
+use Data::Dumper;
 
 my $server  = 'scsys.co.uk';
 my $url     = "http://$server:8001/paste";
@@ -37,10 +37,7 @@ $mech->get( $url );
 $mech->submit_form(
     form_name => 'pasteForm',
     fields    => {
-        (defined $opt->{c} ?
-        (channel => $opt->{c}) :
-        (channel => '#sdl'  )
-        ),
+        channel => $opt->{c},
         nick    => $opt->{n},
         summary => $opt->{t},
         paste   => $text,