2011-12-12 23:24:16 +04:00
# include <stdio.h>
# include <SDL/SDL.h>
2014-10-06 16:20:53 +04:00
# ifdef __EMSCRIPTEN__
# include <emscripten.h>
# endif
2011-12-12 23:24:16 +04:00
2013-06-18 05:00:44 +04:00
extern " C " int main ( int argc , char * * argv ) {
2011-12-12 23:24:16 +04:00
printf ( " hello, world! \n " ) ;
SDL_Init ( SDL_INIT_VIDEO ) ;
SDL_Surface * screen = SDL_SetVideoMode ( 256 , 256 , 32 , SDL_SWSURFACE ) ;
2014-10-06 16:20:53 +04:00
# ifdef TEST_SDL_LOCK_OPTS
EM_ASM ( " SDL.defaults.copyOnLock = false; SDL.defaults.discardOnLock = true; SDL.defaults.opaqueFrontBuffer = false; " ) ;
# endif
2011-12-18 00:04:00 +04:00
if ( SDL_MUSTLOCK ( screen ) ) SDL_LockSurface ( screen ) ;
2011-12-12 23:24:16 +04:00
for ( int i = 0 ; i < 256 ; i + + ) {
for ( int j = 0 ; j < 256 ; j + + ) {
2014-10-06 16:20:53 +04:00
# ifdef TEST_SDL_LOCK_OPTS
// Alpha behaves like in the browser, so write proper opaque pixels.
int alpha = 255 ;
# else
// To emulate native behavior with blitting to screen, alpha component is ignored. Test that it is so by outputting
// data (and testing that it does get discarded)
int alpha = ( i + j ) % 255 ;
# endif
* ( ( Uint32 * ) screen - > pixels + i * 256 + j ) = SDL_MapRGBA ( screen - > format , i , j , 255 - i , alpha ) ;
2011-12-12 23:24:16 +04:00
}
}
2011-12-18 00:04:00 +04:00
if ( SDL_MUSTLOCK ( screen ) ) SDL_UnlockSurface ( screen ) ;
2011-12-12 23:24:16 +04:00
SDL_Flip ( screen ) ;
2012-03-28 03:21:44 +04:00
printf ( " you should see a smoothly-colored square - no sharp lines but the square borders! \n " ) ;
2012-03-06 02:25:06 +04:00
printf ( " and here is some text that should be HTML-friendly: amp: |&| double-quote: | \" | quote: |'| less-than, greater-than, html-like tags: |<cheez></cheez>| \n another line. \n " ) ;
2011-12-12 23:24:16 +04:00
2011-12-14 22:37:37 +04:00
SDL_Quit ( ) ;
2011-12-12 23:24:16 +04:00
return 0 ;
}