Added CreateRGBSurfaceFrom as an new constructor of SDL::Surface. Need to test it
[sdlgit/SDL_perl.git] / t / core_surface.t
index 6b931b4..e006f60 100644 (file)
@@ -15,10 +15,13 @@ use SDL::Surface;
 use SDL::App;
 use SDL::Rect;
 use SDL::Color;
-use Test::More tests => 17;
+use SDL::Video;
+use SDL::PixelFormat;
+use Test::More tests => 35;
 
 my $surface
     = SDL::Surface->new( SDL::SDL_ANYFORMAT(), 640, 320, 8, 0, 0, 0, 0 );
+    #TODO: test SDL::Surface->new_from
 isa_ok( $surface, 'SDL::Surface' );
 is( $surface->w,     640, 'surface has width' );
 is( $surface->h,     320, 'surface has height' );
@@ -31,16 +34,36 @@ is( $clip_rect->y, 0,   'clip_rect has y' );
 is( $clip_rect->w, 640, 'clip_rect has width' );
 is( $clip_rect->h, 320, 'clip_rect has height' );
 
-my $image = SDL::Surface->load('test/data/logo.png');
+my $image = SDL::IMG_Load('test/data/logo.png');
 is( $image->w, 608, 'image has width' );
 is( $image->h, 126, 'image has height' );
 
-$surface->fill_rect( SDL::Rect->new( 0, 0, 32, 32 ),
-    SDL::Color->new( 200, 200, 200 ) );
+my $pixel_format = $image->format;
+isa_ok( $pixel_format, 'SDL::PixelFormat' );
+is( $pixel_format->BitsPerPixel,  24,       '24 BitsPerPixel' );
+is( $pixel_format->BytesPerPixel, 3,        '3 BytesPerPixel' );
+is( $pixel_format->Rloss,         0,        '0 Rloss' );
+is( $pixel_format->Gloss,         0,        '0 Gloss' );
+is( $pixel_format->Bloss,         0,        '0 Bloss' );
+is( $pixel_format->Aloss,         8,        '8 Aloss' );
+is( $pixel_format->Rshift,        0,        '0 Rshift' );
+is( $pixel_format->Gshift,        8,        '8 Gshift' );
+is( $pixel_format->Bshift,        16,       '16 Bshift' );
+is( $pixel_format->Ashift,        0,        '0 Ashift' );
+is( $pixel_format->Rmask,         255,      '255 Rmask' );
+is( $pixel_format->Gmask,         65280,    '65280 Gmask' );
+is( $pixel_format->Bmask,         16711680, '16711680 Bmask' );
+is( $pixel_format->Amask,         0,        '0 Amask' );
+is( $pixel_format->colorkey,      0,        '0 colorkey' );
+is( $pixel_format->alpha,         255,      '255 alpha' );
+
+my $pixel = SDL::MapRGB( $pixel_format, 255, 127, 0 );
+is( $pixel, 32767, '32767 pixel' );
+SDL::FillRect( $surface, SDL::Rect->new( 0, 0, 32, 32 ), $pixel );
 ok( 1, 'Managed to fill_rect' );
 
 my $small_rect = SDL::Rect->new( 0, 0, 64, 64 );
-$image->blit( $small_rect, $surface, $small_rect );
+SDL::BlitSurface( $image, $small_rect, $surface, $small_rect );
 ok( 1, 'Managed to blit' );
 
 #my $image_format = $surface->display;
@@ -58,19 +81,23 @@ my $app = SDL::App->new(
 
 pass 'did this pass';
 
-my $image_format = $image->display;
+my $image_format = SDL::DisplayFormat($image);
 isa_ok( $image_format, 'SDL::Surface' );
 
-my $image_format_alpha = $image->display_alpha;
+my $image_format_alpha = SDL::DisplayFormatAlpha($image);
 isa_ok( $image_format_alpha, 'SDL::Surface' );
 
-my $rect = SDL::Rect->new( 0, 0, $app->w, $app->h );
+my $app_pixel_format = $app->format;
 
-my $blue = SDL::Color->new( 0x00, 0x00, 0xff, );
+my $rect = SDL::Rect->new( 0, 0, $app->w, $app->h );
 
-$app->fill_rect( $rect, $blue );
+my $blue_pixel = SDL::MapRGB( $app_pixel_format, 0x00, 0x00, 0xff );
+SDL::FillRect( $app, $rect, $blue_pixel );
+SDL::Video::update_rect( $app, 0, 0, 0, 0 );
+SDL::Video::update_rects( $app, $small_rect );
 
 diag( 'This is in surface : ' . SDL::Surface::get_pixels($app) );
 
 pass 'did this pass';
 
+SDL::delay(100);