Mercurial > sdl-ios-xcode
diff test/automated/surface/surface.c @ 3716:ac6bc19a2dfb gsoc2009_unit_tests
Added surfarce blend rendering functions testcase.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Wed, 01 Jul 2009 22:03:32 +0000 |
parents | 3c9d9c052c8f |
children | 9d71382713b5 |
line wrap: on
line diff
--- a/test/automated/surface/surface.c Wed Jul 01 10:22:28 2009 +0000 +++ b/test/automated/surface/surface.c Wed Jul 01 22:03:32 2009 +0000 @@ -36,6 +36,7 @@ * Pull in images for testcases. */ #include "primitives.c" +#include "blend.c" /** @@ -176,6 +177,90 @@ /** + * @brief Tests the SDL primitives with alpha for rendering. + */ +static void surface_testPrimitivesAlpha (void) +{ + int ret; + int i, j; + SDL_Rect rect; + SDL_Surface *testsur; + + SDL_ATbegin( "Primitives Alpha Test" ); + + /* Create the surface. */ + testsur = SDL_CreateRGBSurface( 0, 80, 60, 32, + RMASK, GMASK, BMASK, AMASK ); + + /* Create some rectangles for each blend mode. */ + ret = SDL_BlendRect( testsur, NULL, SDL_BLENDMODE_NONE, 255, 255, 255, 0 ); + if (SDL_ATassert( "SDL_BlendRect", ret == 0)) + return; + rect.x = 10; + rect.y = 25; + rect.w = 40; + rect.h = 25; + ret = SDL_BlendRect( testsur, &rect, SDL_BLENDMODE_ADD, 240, 10, 10, 75 ); + if (SDL_ATassert( "SDL_BlendRect", ret == 0)) + return; + rect.x = 30; + rect.y = 40; + rect.w = 45; + rect.h = 15; + ret = SDL_BlendRect( testsur, &rect, SDL_BLENDMODE_BLEND, 10, 240, 10, 100 ); + if (SDL_ATassert( "SDL_BlendRect", ret == 0)) + return; + rect.x = 25; + rect.y = 25; + rect.w = 25; + rect.h = 25; + ret = SDL_BlendRect( testsur, &rect, SDL_BLENDMODE_MOD, 10, 10, 240, 125 ); + if (SDL_ATassert( "SDL_BlendRect", ret == 0)) + return; + + /* Draw blended lines, lines for everyone. */ + for (i=0; i<testsur->w; i+=2) { + ret = SDL_BlendLine( testsur, 0, 0, i, 59, + (((i/2)%3)==0) ? SDL_BLENDMODE_BLEND : + (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD, + 60+2*j, 240-2*j, 50, 3*j ); + if (SDL_ATassert( "SDL_BlendLine", ret == 0)) + return; + } + for (i=0; i<testsur->h; i+=2) { + ret = SDL_BlendLine( testsur, 0, 0, 79, i, + (((i/2)%3)==0) ? SDL_BLENDMODE_BLEND : + (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD, + 60+2*j, 240-2*j, 50, 3*j ); + if (SDL_ATassert( "SDL_BlendLine", ret == 0)) + return; + } + + /* Draw points. */ + for (j=0; j<testsur->h; j+=3) { + for (i=0; i<testsur->w; i+=3) { + ret = SDL_BlendPoint( testsur, i, j, + ((((i+j)/3)%3)==0) ? SDL_BLENDMODE_BLEND : + ((((i+j)/3)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD, + j*4, i*3, j*4, i*3 ); + if (SDL_ATassert( "SDL_BlendPoint", ret == 0)) + return; + } + } + + /* See if it's the same. */ + if (SDL_ATassert( "Primitives output not the same.", + surface_compare( testsur, &img_blend )==0 )) + return; + + /* Clean up. */ + SDL_FreeSurface( testsur ); + + SDL_ATend(); +} + + +/** * @brief Entry point. */ int main( int argc, const char *argv[] ) @@ -186,7 +271,7 @@ SDL_Init(0); surface_testPrimitives(); - /*surface_testPrimitivesAlpha();*/ + surface_testPrimitivesAlpha(); /* Exit SDL. */ SDL_Quit();