In Video.xs: removed use of goto. Added set_palette. In core_video.t tested set_palette
[sdlgit/SDL_perl.git] / src / Core / Video.xs
index a7a6b34..836fff1 100644 (file)
@@ -87,6 +87,21 @@ video_video_mode_ok ( width, height, bpp, flags )
        OUTPUT:
                RETVAL
 
+
+SDL_Surface *
+video_set_video_mode ( width, height, bpp, flags )
+       int width
+       int height
+       int bpp
+       Uint32 flags
+       PREINIT:
+               char* CLASS = "SDL::Surface";
+       CODE:
+               RETVAL = SDL_SetVideoMode(width,height,bpp,flags);
+       OUTPUT:
+               RETVAL
+
+
 void
 video_update_rect ( surface, x, y, w ,h )
        SDL_Surface *surface
@@ -113,3 +128,64 @@ video_update_rects ( surface, ... )
                safefree(rects);
 
 
+int
+video_flip ( surface )
+       SDL_Surface *surface
+       CODE:
+               RETVAL = SDL_Flip(surface);
+       OUTPUT:
+               RETVAL
+
+int
+video_set_colors ( surface, start, ... )
+       SDL_Surface *surface
+       int start
+       CODE:
+               SDL_Color *colors,*temp;
+               int i, length;
+               if ( items < 3 ) { RETVAL = 0;}
+               else
+               {
+               length = items - 2;
+               colors = (SDL_Color *)safemalloc(sizeof(SDL_Color)*(length+1));
+               for ( i = 0; i < length ; i++ ) {
+                       temp = (SDL_Color *)SvIV(ST(i+2));
+                       colors[i].r = temp->r;
+                       colors[i].g = temp->g;
+                       colors[i].b = temp->b;
+               }
+               RETVAL = SDL_SetColors(surface, colors, start, length );
+               safefree(colors);
+               }       
+
+       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
+