diff --git a/3rdparty/SDL-1.3.0-5387/test/.gdbinit b/3rdparty/SDL-1.3.0-5387/test/.gdbinit deleted file mode 100644 index 63ebf2cbf2..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/.gdbinit +++ /dev/null @@ -1,3 +0,0 @@ -handle SIGUSR1 pass noprint -handle SIGUSR2 pass noprint -break main diff --git a/3rdparty/SDL-1.3.0-5387/test/COPYING b/3rdparty/SDL-1.3.0-5387/test/COPYING deleted file mode 100644 index c4c27e0968..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/COPYING +++ /dev/null @@ -1,8 +0,0 @@ - -The test programs in this directory tree are for demonstrating and -testing the functionality of the SDL library, and are placed in the -public domain. - -October 28, 1997 --- - Sam Lantinga (slouken@libsdl.org) diff --git a/3rdparty/SDL-1.3.0-5387/test/Makefile.in b/3rdparty/SDL-1.3.0-5387/test/Makefile.in deleted file mode 100644 index 1a9949a1d7..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/Makefile.in +++ /dev/null @@ -1,227 +0,0 @@ -# Makefile to build the SDL tests - -srcdir = @srcdir@ - -CC = @CC@ -EXE = @EXE@ -CFLAGS = @CFLAGS@ -LIBS = @LIBS@ - -TARGETS = \ - checkkeys$(EXE) \ - graywin$(EXE) \ - loopwave$(EXE) \ - testalpha$(EXE) \ - testatomic$(EXE) \ - testaudioinfo$(EXE) \ - testbitmap$(EXE) \ - testblitspeed$(EXE) \ - testcursor$(EXE) \ - testdraw2$(EXE) \ - testdyngl$(EXE) \ - testdyngles$(EXE) \ - testerror$(EXE) \ - testfile$(EXE) \ - testfill$(EXE) \ - testgesture$(EXE) \ - testgl$(EXE) \ - testgl2$(EXE) \ - testgles$(EXE) \ - testhaptic$(EXE) \ - testrumble$(EXE) \ - testhread$(EXE) \ - testiconv$(EXE) \ - testime$(EXE) \ - testintersections$(EXE) \ - testjoystick$(EXE) \ - testkeys$(EXE) \ - testloadso$(EXE) \ - testlock$(EXE) \ - testmultiaudio$(EXE) \ - testoverlay$(EXE) \ - testoverlay2$(EXE) \ - testplatform$(EXE) \ - testpower$(EXE) \ - testresample$(EXE) \ - testscale$(EXE) \ - testsem$(EXE) \ - testshader$(EXE) \ - testshape$(EXE) \ - testsprite$(EXE) \ - testsprite2$(EXE) \ - testspriteminimal$(EXE) \ - teststreaming$(EXE) \ - testtimer$(EXE) \ - testver$(EXE) \ - testvidinfo$(EXE) \ - testwin$(EXE) \ - testwm$(EXE) \ - testwm2$(EXE) \ - threadwin$(EXE) \ - torturethread$(EXE) \ - -all: Makefile $(TARGETS) - -Makefile: $(srcdir)/Makefile.in - $(SHELL) config.status $@ - -checkkeys$(EXE): $(srcdir)/checkkeys.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -graywin$(EXE): $(srcdir)/graywin.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -loopwave$(EXE): $(srcdir)/loopwave.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testresample$(EXE): $(srcdir)/testresample.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testaudioinfo$(EXE): $(srcdir)/testaudioinfo.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testmultiaudio$(EXE): $(srcdir)/testmultiaudio.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testalpha$(EXE): $(srcdir)/testalpha.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@ - -testatomic$(EXE): $(srcdir)/testatomic.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testbitmap$(EXE): $(srcdir)/testbitmap.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testblitspeed$(EXE): $(srcdir)/testblitspeed.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testcursor$(EXE): $(srcdir)/testcursor.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testintersections$(EXE): $(srcdir)/testintersections.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testintersections.c $(srcdir)/common.c $(CFLAGS) $(LIBS) - -testdraw2$(EXE): $(srcdir)/testdraw2.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testdraw2.c $(srcdir)/common.c $(CFLAGS) $(LIBS) - -testdyngl$(EXE): $(srcdir)/testdyngl.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testdyngles$(EXE): $(srcdir)/testdyngles.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testerror$(EXE): $(srcdir)/testerror.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testfile$(EXE): $(srcdir)/testfile.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testfill$(EXE): $(srcdir)/testfill.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testgesture$(EXE): $(srcdir)/testgesture.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@ - -testgl$(EXE): $(srcdir)/testgl.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@ - -testgl2$(EXE): $(srcdir)/testgl2.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testgl2.c $(srcdir)/common.c $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@ - -testgles$(EXE): $(srcdir)/testgles.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testgles.c $(srcdir)/common.c $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@ - -testhaptic$(EXE): $(srcdir)/testhaptic.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testrumble$(EXE): $(srcdir)/testrumble.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testhread$(EXE): $(srcdir)/testhread.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testiconv$(EXE): $(srcdir)/testiconv.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testime$(EXE): $(srcdir)/testime.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @SDL_TTF_LIB@ - -testjoystick$(EXE): $(srcdir)/testjoystick.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testkeys$(EXE): $(srcdir)/testkeys.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testloadso$(EXE): $(srcdir)/testloadso.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testlock$(EXE): $(srcdir)/testlock.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testoverlay2$(EXE): $(srcdir)/testoverlay2.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testoverlay$(EXE): $(srcdir)/testoverlay.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testplatform$(EXE): $(srcdir)/testplatform.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testpower$(EXE): $(srcdir)/testpower.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testscale$(EXE): $(srcdir)/testscale.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testscale.c $(srcdir)/common.c $(CFLAGS) $(LIBS) - -testsem$(EXE): $(srcdir)/testsem.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testshader$(EXE): $(srcdir)/testshader.c - $(CC) -o $@ $(srcdir)/testshader.c $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@ - -testshape$(EXE): $(srcdir)/testshape.c - $(CC) -o $@ $? -std=c99 $(CFLAGS) $(LIBS) - -testsprite$(EXE): $(srcdir)/testsprite.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@ - -testsprite2$(EXE): $(srcdir)/testsprite2.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testsprite2.c $(srcdir)/common.c $(CFLAGS) $(LIBS) @MATHLIB@ - -testspriteminimal$(EXE): $(srcdir)/testspriteminimal.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@ - -teststreaming$(EXE): $(srcdir)/teststreaming.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@ - -testtimer$(EXE): $(srcdir)/testtimer.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testver$(EXE): $(srcdir)/testver.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testvidinfo$(EXE): $(srcdir)/testvidinfo.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testwin$(EXE): $(srcdir)/testwin.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testwm$(EXE): $(srcdir)/testwm.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -testwm2$(EXE): $(srcdir)/testwm2.c $(srcdir)/common.c - $(CC) -o $@ $(srcdir)/testwm2.c $(srcdir)/common.c $(CFLAGS) $(LIBS) - -threadwin$(EXE): $(srcdir)/threadwin.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -torturethread$(EXE): $(srcdir)/torturethread.c - $(CC) -o $@ $? $(CFLAGS) $(LIBS) - -clean: - rm -f $(TARGETS) - -distclean: clean - rm -f Makefile - rm -f config.status config.cache config.log - rm -rf $(srcdir)/autom4te* diff --git a/3rdparty/SDL-1.3.0-5387/test/README b/3rdparty/SDL-1.3.0-5387/test/README deleted file mode 100644 index 38874f7941..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/README +++ /dev/null @@ -1,41 +0,0 @@ - -These are test programs for the SDL library: - - checkkeys Watch the key events to check the keyboard - graywin Display a gray gradient and center mouse on spacebar - loopwave Audio test -- loop playing a WAV file - testalpha Display an alpha faded icon -- paint with mouse - testaudioinfo Lists audio device capabilities - testbitmap Test displaying 1-bit bitmaps - testblitspeed Tests performance of SDL's blitters and converters. - testcdrom Sample audio CD control program - testcursor Tests custom mouse cursor - testdyngl Tests dynamically loading OpenGL library - testerror Tests multi-threaded error handling - testfile Tests RWops layer - testgamma Tests video device gamma ramp - testgl A very simple example of using OpenGL with SDL - testgl2 An even simpler example using the SDL 1.3 API - testhread Hacked up test of multi-threading - testiconv Tests international string conversion - testjoystick List joysticks and watch joystick events - testkeys List the available keyboard keys - testloadso Tests the loadable library layer - testlock Hacked up test of multi-threading and locking - testmultiaudio Tests using several audio devices - testoverlay Tests the software/hardware overlay functionality. - testoverlay2 Tests the overlay flickering/scaling during playback. - testpalette Tests palette color cycling - testplatform Tests types, endianness and cpu capabilities - testsem Tests SDL's semaphore implementation - testshape Tests shaped windows - testsprite Example of fast sprite movement on the screen - testsprite2 Improved version of testsprite - testtimer Test the timer facilities - testver Check the version and dynamic loading and endianness - testvidinfo Show the pixel format of the display and perfom the benchmark - testwin Display a BMP image at various depths - testwm Test window manager -- title, icon, events - testwm2 Improved version of testwm - threadwin Test multi-threaded event handling - torturethread Simple test for thread creation/destruction diff --git a/3rdparty/SDL-1.3.0-5387/test/acinclude.m4 b/3rdparty/SDL-1.3.0-5387/test/acinclude.m4 deleted file mode 100644 index b6df43f080..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/acinclude.m4 +++ /dev/null @@ -1,181 +0,0 @@ -# Configure paths for SDL -# Sam Lantinga 9/21/99 -# stolen from Manish Singh -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS -dnl -AC_DEFUN([AM_PATH_SDL], -[dnl -dnl Get the cflags and libraries from the sdl-config script -dnl -AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], - sdl_prefix="$withval", sdl_prefix="") -AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], - sdl_exec_prefix="$withval", sdl_exec_prefix="") -AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], - , enable_sdltest=yes) - - if test x$sdl_exec_prefix != x ; then - sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config - fi - fi - if test x$sdl_prefix != x ; then - sdl_args="$sdl_args --prefix=$sdl_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_prefix/bin/sdl-config - fi - fi - - if test "x$prefix" != xNONE; then - PATH="$prefix/bin:$prefix/usr/bin:$PATH" - fi - AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) - min_sdl_version=ifelse([$1], ,0.11.0,$1) - AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) - no_sdl="" - if test "$SDL_CONFIG" = "no" ; then - no_sdl=yes - else - SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` - SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` - - sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_sdltest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS" -dnl -dnl Now check if the installed SDL is sufficiently new. (Also sanity -dnl checks the results of sdl-config to some extent -dnl - rm -f conf.sdltest - AC_TRY_RUN([ -#include -#include -#include -#include "SDL.h" - -char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main (int argc, char *argv[]) -{ - int major, minor, micro; - char *tmp_version; - - /* This hangs on some systems (?) - system ("touch conf.sdltest"); - */ - { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = my_strdup("$min_sdl_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_sdl_version"); - exit(1); - } - - if (($sdl_major_version > major) || - (($sdl_major_version == major) && ($sdl_minor_version > minor)) || - (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); - printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); - printf("*** best to upgrade to the required version.\n"); - printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); - printf("*** to point to the correct copy of sdl-config, and remove the file\n"); - printf("*** config.cache before re-running configure\n"); - return 1; - } -} - -],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - CXXFLAGS="$ac_save_CXXFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_sdl" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$SDL_CONFIG" = "no" ; then - echo "*** The sdl-config script installed by SDL could not be found" - echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the SDL_CONFIG environment variable to the" - echo "*** full path to sdl-config." - else - if test -f conf.sdltest ; then - : - else - echo "*** Could not run SDL test program, checking why..." - CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS" - AC_TRY_LINK([ -#include -#include "SDL.h" - -int main(int argc, char *argv[]) -{ return 0; } -#undef main -#define main K_and_R_C_main -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding SDL or finding the wrong" - echo "*** version of SDL. If it is not finding SDL, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means SDL was incorrectly installed" - echo "*** or that you have moved SDL since it was installed. In the latter case, you" - echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - CXXFLAGS="$ac_save_CXXFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - SDL_CFLAGS="" - SDL_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(SDL_CFLAGS) - AC_SUBST(SDL_LIBS) - rm -f conf.sdltest -]) diff --git a/3rdparty/SDL-1.3.0-5387/test/aclocal.m4 b/3rdparty/SDL-1.3.0-5387/test/aclocal.m4 deleted file mode 100644 index b6df43f080..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/aclocal.m4 +++ /dev/null @@ -1,181 +0,0 @@ -# Configure paths for SDL -# Sam Lantinga 9/21/99 -# stolen from Manish Singh -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS -dnl -AC_DEFUN([AM_PATH_SDL], -[dnl -dnl Get the cflags and libraries from the sdl-config script -dnl -AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], - sdl_prefix="$withval", sdl_prefix="") -AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], - sdl_exec_prefix="$withval", sdl_exec_prefix="") -AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], - , enable_sdltest=yes) - - if test x$sdl_exec_prefix != x ; then - sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config - fi - fi - if test x$sdl_prefix != x ; then - sdl_args="$sdl_args --prefix=$sdl_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_prefix/bin/sdl-config - fi - fi - - if test "x$prefix" != xNONE; then - PATH="$prefix/bin:$prefix/usr/bin:$PATH" - fi - AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) - min_sdl_version=ifelse([$1], ,0.11.0,$1) - AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) - no_sdl="" - if test "$SDL_CONFIG" = "no" ; then - no_sdl=yes - else - SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` - SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` - - sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_sdltest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS" -dnl -dnl Now check if the installed SDL is sufficiently new. (Also sanity -dnl checks the results of sdl-config to some extent -dnl - rm -f conf.sdltest - AC_TRY_RUN([ -#include -#include -#include -#include "SDL.h" - -char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main (int argc, char *argv[]) -{ - int major, minor, micro; - char *tmp_version; - - /* This hangs on some systems (?) - system ("touch conf.sdltest"); - */ - { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = my_strdup("$min_sdl_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_sdl_version"); - exit(1); - } - - if (($sdl_major_version > major) || - (($sdl_major_version == major) && ($sdl_minor_version > minor)) || - (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); - printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); - printf("*** best to upgrade to the required version.\n"); - printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); - printf("*** to point to the correct copy of sdl-config, and remove the file\n"); - printf("*** config.cache before re-running configure\n"); - return 1; - } -} - -],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - CXXFLAGS="$ac_save_CXXFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_sdl" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$SDL_CONFIG" = "no" ; then - echo "*** The sdl-config script installed by SDL could not be found" - echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the SDL_CONFIG environment variable to the" - echo "*** full path to sdl-config." - else - if test -f conf.sdltest ; then - : - else - echo "*** Could not run SDL test program, checking why..." - CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS" - AC_TRY_LINK([ -#include -#include "SDL.h" - -int main(int argc, char *argv[]) -{ return 0; } -#undef main -#define main K_and_R_C_main -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding SDL or finding the wrong" - echo "*** version of SDL. If it is not finding SDL, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means SDL was incorrectly installed" - echo "*** or that you have moved SDL since it was installed. In the latter case, you" - echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - CXXFLAGS="$ac_save_CXXFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - SDL_CFLAGS="" - SDL_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(SDL_CFLAGS) - AC_SUBST(SDL_LIBS) - rm -f conf.sdltest -]) diff --git a/3rdparty/SDL-1.3.0-5387/test/autogen.sh b/3rdparty/SDL-1.3.0-5387/test/autogen.sh deleted file mode 100755 index 939f34c0f3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/autogen.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# -# Regenerate configuration files -cp acinclude.m4 aclocal.m4 -found=false -for autoconf in autoconf autoconf259 autoconf-2.59 -do if which $autoconf >/dev/null 2>&1; then $autoconf && found=true; break; fi -done -if test x$found = xfalse; then - echo "Couldn't find autoconf, aborting" - exit 1 -fi diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/Makefile b/3rdparty/SDL-1.3.0-5387/test/automated/Makefile deleted file mode 100644 index d7c8dbedd5..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/Makefile +++ /dev/null @@ -1,60 +0,0 @@ - - -CFLAGS := -W -Wall -Wextra -g `sdl-config --cflags` -DSDL_NO_COMPAT -LDFLAGS := `sdl-config --libs` - -# If it doesn't pick up defaults -#CFLAGS := -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include/SDL -#LDFLAGS := -lm -ldl -lesd -lpthread - -SRC := testsdl.c \ - platform/platform.c \ - rect/rect.c \ - surface/surface.c \ - render/render.c \ - audio/audio.c -COMMON_SRC := SDL_at.c common/common.c -COMMON_INCLUDE := SDL_at.h - -RWOPS_SRC := rwops/rwops.c rwops/TestSupportRWops_Generic.c - -TESTS_ALL := testsdl \ - platform/platform \ - rwops/rwops \ - rect/rect \ - surface/surface \ - render/render \ - audio/audio - - -.PHONY: all clean test - - -all: $(TESTS_ALL) - -test: all - @./testsdl - -testsdl: $(SRC) $(RWOPS_SRC) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) $(RWOPS_SRC) $(COMMON_SRC) - -platform/platform: platform/platform.c $(COMMON_INCLUDE) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ platform/platform.c $(COMMON_SRC) -DTEST_STANDALONE - -rwops/rwops: $(RWOPS_SRC) $(COMMON_INCLUDE) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(RWOPS_SRC) $(COMMON_SRC) -DTEST_STANDALONE - -rect/rect: rect/rect.c $(COMMON_INCLUDE) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rect/rect.c $(COMMON_SRC) -DTEST_STANDALONE - -surface/surface: surface/surface.c $(COMMON_INCLUDE) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ surface/surface.c $(COMMON_SRC) -DTEST_STANDALONE - -render/render: render/render.c $(COMMON_INCLUDE) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ render/render.c $(COMMON_SRC) -DTEST_STANDALONE - -audio/audio: audio/audio.c $(COMMON_INCLUDE) $(COMMON_SRC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ audio/audio.c $(COMMON_SRC) -DTEST_STANDALONE - -clean: - $(RM) $(TESTS_ALL) diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/README b/3rdparty/SDL-1.3.0-5387/test/automated/README deleted file mode 100644 index e6984a12b5..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/README +++ /dev/null @@ -1,59 +0,0 @@ - - - SDL Automated Testing Framework User Documentation - by Edgar Simo Serra - - - - Abstract - - The SDL Automated Testing Framework, hereby after called SDL_AT, is a meant -to test the SDL code for regressions and other possible failures. It can also -be used to display what your SDL set up supports. - - - - Basics - - The main way to use the framework is to compile it and run it, that can be -done with the following command: - - $> make test - - It should then display something like: - - Platform : All tests successful (2) - SDL_RWops : All tests successful (5) - SDL_Surface : All tests successful (6) - Rendering with x11 driver : All tests successful (4) - - Indicating that all tests were successful. If however a test fails output it -will report the failure to stderr indicating where and why it happened. This -output can then be sent to the developers so they can attempt to fix the -problem. - - - - Advanced - - By passing the "-h" or "--help" parameter to testsdl you can get an overview -of all the possible options you can set to furthur tweak the testing. A sample -of the options would be the following: - - Usage: ./testsdl [OPTIONS] - Options are: - -m, --manual enables tests that require user interaction - --noplatform do not run the platform tests - --norwops do not run the rwops tests - --nosurface do not run the surface tests - --norender do not run the render tests - -v, --verbose increases verbosity level by 1 for each -v - -q, --quiet only displays errors - -h, --help display this message and exit - - - - Developers - - See SDL_at.h for developer information. - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/SDL_at.c b/3rdparty/SDL-1.3.0-5387/test/automated/SDL_at.c deleted file mode 100644 index 97cd92d513..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/SDL_at.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Common code for automated test suite. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#include "SDL_at.h" -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include /* printf/fprintf */ -#include /* va_list */ - - -/* - * Internal usage SDL_AT variables. - */ -static char *at_suite_msg = NULL; /**< Testsuite message. */ -static char *at_test_msg = NULL; /**< Testcase message. */ -static int at_success = 0; /**< Number of successful testcases. */ -static int at_failure = 0; /**< Number of failed testcases. */ - - -/* - * Global properties. - */ -static int at_verbose = 0; /**< Verbosity. */ -static int at_quiet = 0; /**< Quietness. */ - - -/* - * Prototypes. - */ -static void SDL_ATcleanup (void); -static void SDL_ATendWith( int success ); -static void SDL_ATassertFailed( const char *msg ); - - -/** - * @brief Cleans up the automated testsuite state. - */ -static void SDL_ATcleanup (void) -{ - if (at_suite_msg != NULL) - SDL_free(at_suite_msg); - at_suite_msg = NULL; - if (at_test_msg != NULL) - SDL_free(at_test_msg); - at_test_msg = NULL; - at_success = 0; - at_failure = 0; -} - - -/** - * @brief Begin testsuite. - */ -void SDL_ATinit( const char *suite ) -{ - /* Do not open twice. */ - if (at_suite_msg) { - SDL_ATprintErr( "AT suite '%s' not closed before opening suite '%s'\n", - at_suite_msg, suite ); - } - /* Must have a name. */ - if (suite == NULL) { - SDL_ATprintErr( "AT testsuite does not have a name.\n"); - } - SDL_ATcleanup(); - at_suite_msg = SDL_strdup(suite); - - /* Verbose message. */ - SDL_ATprintVerbose( 2, "--+---> Started Test Suite '%s'\n", at_suite_msg ); -} - - -/** - * @brief Finish testsuite. - */ -int SDL_ATfinish (void) -{ - int failed; - - /* Make sure initialized. */ - if (at_suite_msg == NULL) { - SDL_ATprintErr("Ended testcase without initializing.\n"); - return 1; - } - - /* Finished without closing testcase. */ - if (at_test_msg) { - SDL_ATprintErr( "AT suite '%s' finished without closing testcase '%s'\n", - at_suite_msg, at_test_msg ); - } - - /* Verbose message. */ - SDL_ATprintVerbose( 2, "<-+---- Finished Test Suite '%s'\n", at_suite_msg ); - - /* Display message if verbose on failed. */ - failed = at_failure; - if (at_failure > 0) { - SDL_ATprintErr( "%s : Failed %d out of %d testcases!\n", - at_suite_msg, at_failure, at_failure+at_success ); - } - else { - SDL_ATprint( "%s : All tests successful (%d)\n", - at_suite_msg, at_success ); - } - - /* Clean up. */ - SDL_ATcleanup(); - - /* Return failed. */ - return failed; -} - - -/** - * @brief Sets a property. - */ -void SDL_ATseti( int property, int value ) -{ - switch (property) { - case SDL_AT_VERBOSE: - at_verbose = value; - break; - - case SDL_AT_QUIET: - at_quiet = value; - break; - } -} - - -/** - * @brief Gets a property. - */ -void SDL_ATgeti( int property, int *value ) -{ - switch (property) { - case SDL_AT_VERBOSE: - *value = at_verbose; - break; - - case SDL_AT_QUIET: - *value = at_quiet; - break; - } -} - - -/** - * @brief Begin testcase. - */ -void SDL_ATbegin( const char *testcase ) -{ - /* Do not open twice. */ - if (at_test_msg) { - SDL_ATprintErr( "AT testcase '%s' not closed before opening testcase '%s'\n", - at_test_msg, testcase ); - } - /* Must have a name. */ - if (testcase == NULL) { - SDL_ATprintErr( "AT testcase does not have a name.\n"); - } - at_test_msg = SDL_strdup(testcase); - - /* Verbose message. */ - SDL_ATprintVerbose( 2, " +---> StartedTest Case '%s'\n", testcase ); -} - - -/** - * @brief Ends the testcase with a succes or failure. - */ -static void SDL_ATendWith( int success ) -{ - /* Make sure initialized. */ - if (at_test_msg == NULL) { - SDL_ATprintErr("Ended testcase without initializing.\n"); - return; - } - - /* Mark as success or failure. */ - if (success) - at_success++; - else - at_failure++; - - /* Verbose message. */ - SDL_ATprintVerbose( 2, " +---- Finished Test Case '%s'\n", at_test_msg ); - - /* Clean up. */ - if (at_test_msg != NULL) - SDL_free(at_test_msg); - at_test_msg = NULL; -} - - -/** - * @brief Display failed assert message. - */ -static void SDL_ATassertFailed( const char *msg ) -{ - /* Print. */ - SDL_ATprintErr( "Assert Failed!\n" ); - SDL_ATprintErr( " %s\n", msg ); - SDL_ATprintErr( " Test Case '%s'\n", at_test_msg ); - SDL_ATprintErr( " Test Suite '%s'\n", at_suite_msg ); - SDL_ATprintErr( " Last SDL error '%s'\n", SDL_GetError() ); - /* End. */ - SDL_ATendWith(0); -} - - -/** - * @brief Testcase test. - */ -int SDL_ATassert( const char *msg, int condition ) -{ - /* Condition failed. */ - if (!condition) { - /* Failed message. */ - SDL_ATassertFailed(msg); - } - return !condition; -} - - -/** - * @brief Testcase test. - */ -int SDL_ATvassert( int condition, const char *msg, ... ) -{ - va_list args; - char buf[256]; - - /* Condition failed. */ - if (!condition) { - /* Get message. */ - va_start( args, msg ); - SDL_vsnprintf( buf, sizeof(buf), msg, args ); - va_end( args ); - /* Failed message. */ - SDL_ATassertFailed( buf ); - } - return !condition; -} - - -/** - * @brief End testcase. - */ -void SDL_ATend (void) -{ - SDL_ATendWith(1); -} - - -/** - * @brief Displays an error. - */ -int SDL_ATprintErr( const char *msg, ... ) -{ - va_list ap; - int ret; - - /* Make sure there is something to print. */ - if (msg == NULL) - return 0; - else { - va_start(ap, msg); - ret = vfprintf( stderr, msg, ap ); - va_end(ap); - } - - return ret; -} - - -/** - * @brief Displays a message. - */ -int SDL_ATprint( const char *msg, ... ) -{ - va_list ap; - int ret; - - /* Only print if not quiet. */ - if (at_quiet) - return 0; - - /* Make sure there is something to print. */ - if (msg == NULL) - return 0; - else { - va_start(ap, msg); - ret = vfprintf( stdout, msg, ap ); - va_end(ap); - } - - return ret; -} - - -/** - * @brief Displays a verbose message. - */ -int SDL_ATprintVerbose( int level, const char *msg, ... ) -{ - va_list ap; - int ret; - - /* Only print if not quiet. */ - if (at_quiet || (at_verbose < level)) - return 0; - - /* Make sure there is something to print. */ - if (msg == NULL) - return 0; - else { - va_start(ap, msg); - ret = vfprintf( stdout, msg, ap ); - va_end(ap); - } - - return ret; -} diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/SDL_at.h b/3rdparty/SDL-1.3.0-5387/test/automated/SDL_at.h deleted file mode 100644 index 6bd9680bdf..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/SDL_at.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Common code for automated test suite. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -/** - * @file SDL_at.h - * - * @brief Handles automatic testing functionality. - * - * The basic approach with SDL_AT is to divide the tests into what are called - * test suites and test cases. Each test suite should have multiple test - * cases, each test case can have multiple asserts. - * - * To actually test for conditions within the testcase you check asserts, if - * the asserts fail the failures will be logged in the testsuite and - * displayed. - * - * Syntax is similar to OpenGL. An example would be: - * - * @code - * int f; // Number failed - * SDL_ATinit( "My testsuite" ); - * - * SDL_ATbegin( "My first testcase" ); - * if (!SDL_ATassert( (1+1)==2, "Trying '1+1=2'.")) - * return; // Implicitly calls SDL_ATend if assert fails - * SDL_ATend(); // Finish testcase - * - * SDL_ATbegin( "My second testcase" ); - * if (!SDL_ATassert( (4/2)==2, "Trying '4/2=2'.")) - * return; // Implicitly calls SDL_ATend if assert fails - * SDL_ATend(); // Finish testcase - * - * f = SDL_ATfinish(); - * @endcode - * - * @author Edgar Simo "bobbens" - */ - - -#ifndef _SDL_AT_H -# define _SDL_AT_H - - - -enum { - SDL_AT_VERBOSE, /**< Sets the verbose level. */ - SDL_AT_QUIET /**< Sets quietness. */ -}; - - -/* - * Suite level actions. - */ -/** - * @brief Starts the testsuite. - * - * @param suite Name of the suite to start testing. - */ -void SDL_ATinit( const char *suite ); -/** - * @brief Finishes the testsuite printing out global results if verbose. - * - * @return 0 if no errors occurred, otherwise number of failures. - */ -int SDL_ATfinish (void); -/** - * @brief Sets a global property value. - * - * @param property Property to set. - * @param value Value to set property to. - */ -void SDL_ATseti( int property, int value ); -/** - * @brief Gets a global property value. - * - * @param property Property to get. - * @param[out] value Value of the property. - */ -void SDL_ATgeti( int property, int *value ); - - -/* - * Testcase level actions. - */ -/** - * @brief Begins a testcase. - * - * @param testcase Name of the testcase to begin. - */ -void SDL_ATbegin( const char *testcase ); -/** - * @brief Checks a condition in the testcase. - * - * Will automatically call SDL_ATend if the condition isn't met. - * - * @param condition Condition to make sure is true. - * @param msg Message to display for failure. - * @return Returns 1 if the condition isn't met. - */ -int SDL_ATassert( const char *msg, int condition ); -/** - * @brief Checks a condition in the testcase. - * - * Will automatically call SDL_ATend if the condition isn't met. - * - * @param condition Condition to make sure is true. - * @param msg Message to display for failure with printf style formatting. - * @return Returns 1 if the condition isn't met. - */ -int SDL_ATvassert( int condition, const char *msg, ... ); -/** - * @brief Ends a testcase. - */ -void SDL_ATend (void); - - -/* - * Misc functions. - */ -/** - * @brief Prints an error. - * - * @param msg printf formatted string to display. - * @return Number of character printed. - */ -int SDL_ATprintErr( const char *msg, ... ); -/** - * @brief Prints some text. - * - * @param msg printf formatted string to display. - * @return Number of character printed. - */ -int SDL_ATprint( const char *msg, ... ); -/** - * @brief Prints some verbose text. - * - * Verbosity levels are as follows: - * - * - 0 standard stdout, enabled by default - * - 1 additional information - * - 2 detailed information (spammy) - * - * @param level Level of verbosity to print at. - * @param msg printf formatted string to display. - * @return Number of character printed. - */ -int SDL_ATprintVerbose( int level, const char *msg, ... ); - - -#endif /* _SDL_AT_H */ - - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/audio/audio.c b/3rdparty/SDL-1.3.0-5387/test/automated/audio/audio.c deleted file mode 100644 index 0712c396de..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/audio/audio.c +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Automated SDL_RWops test. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#include "SDL.h" -#include "../SDL_at.h" - - -/** - * @brief Prints available devices. - */ -static int audio_printDevices( int iscapture ) -{ - int i, n; - - /* Get number of devices. */ - n = SDL_GetNumAudioDevices(iscapture); - SDL_ATprintVerbose( 1, "%d %s Audio Devices\n", - n, iscapture ? "Capture" : "Output" ); - - /* List devices. */ - for (i=0; iw != img->width) || (sur->h != img->height)) - return -1; - - SDL_LockSurface( sur ); - - ret = 0; - bpp = sur->format->BytesPerPixel; - - /* Compare image - should be same format. */ - for (j=0; jh; j++) { - for (i=0; iw; i++) { - p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp; - pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel; - switch (bpp) { - case 1: - case 2: - case 3: - ret += 1; - /*printf("%d BPP not supported yet.\n",bpp);*/ - break; - - case 4: - { - int dist = 0; - Uint8 R, G, B, A; - - SDL_GetRGBA(*(Uint32*)p, sur->format, &R, &G, &B, &A); - - if (img->bytes_per_pixel == 3) { - dist += (R-pd[0])*(R-pd[0]); - dist += (G-pd[1])*(G-pd[1]); - dist += (B-pd[2])*(B-pd[2]); - } else { - dist += (R-pd[0])*(R-pd[0]); - dist += (G-pd[1])*(G-pd[1]); - dist += (B-pd[2])*(B-pd[2]); - dist += (A-pd[3])*(A-pd[3]); - } - /* Allow some difference in blending accuracy */ - if (dist > allowable_error) { - /*printf("pixel %d,%d varies by %d\n", i, j, dist);*/ - ++ret; - } - } - break; - } - } - } - - SDL_UnlockSurface( sur ); - - if (ret) { - SDL_SaveBMP(sur, "fail.bmp"); - - SDL_LockSurface( sur ); - - bpp = sur->format->BytesPerPixel; - - if (bpp == 4) { - for (j=0; jh; j++) { - for (i=0; iw; i++) { - Uint8 R, G, B, A; - p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp; - pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel; - - R = pd[0]; - G = pd[1]; - B = pd[2]; - if (img->bytes_per_pixel == 4) { - A = pd[3]; - } else { - A = 0; - } - *(Uint32*)p = (A << 24) | (R << 16) | (G << 8) | B; - } - } - } - - SDL_UnlockSurface( sur ); - - SDL_SaveBMP(sur, "good.bmp"); - } - return ret; -} diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/common.h b/3rdparty/SDL-1.3.0-5387/test/automated/common/common.h deleted file mode 100644 index d80d8186e2..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/common.h +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Automated SDL test common framework. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#ifndef COMMON_H -# define COMMON_H - - -# define FORMAT SDL_PIXELFORMAT_ARGB8888 -# define AMASK 0xff000000 /**< Alpha bit mask. */ -# define RMASK 0x00ff0000 /**< Red bit mask. */ -# define GMASK 0x0000ff00 /**< Green bit mask. */ -# define BMASK 0x000000ff /**< Blue bit mask. */ - - -typedef struct SurfaceImage_s { - int width; - int height; - unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ - const unsigned char pixel_data[]; -} SurfaceImage_t; - -#define ALLOWABLE_ERROR_OPAQUE 0 -#define ALLOWABLE_ERROR_BLENDED 64 - -/** - * @brief Compares a surface and a surface image for equality. - * - * @param sur Surface to compare. - * @param img Image to compare against. - * @return 0 if they are the same, -1 on error and positive if different. - */ -int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error ); - - -#endif /* COMMON_H */ - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/images.h b/3rdparty/SDL-1.3.0-5387/test/automated/common/images.h deleted file mode 100644 index 4ee3a94fd9..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/images.h +++ /dev/null @@ -1,22 +0,0 @@ - - -#ifndef IMAGES_H -# define IMAGES_H - - -#include "common.h" - - -/* - * Pull in images for testcases. - */ -#include "img_primitives.c" -#include "img_primitivesblend.c" -#include "img_face.c" -#include "img_blit.c" -#include "img_blitblend.c" - - -#endif /* IMAGES_H */ - - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_blit.c b/3rdparty/SDL-1.3.0-5387/test/automated/common/img_blit.c deleted file mode 100644 index 85a1c7a0c5..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_blit.c +++ /dev/null @@ -1,1454 +0,0 @@ -/* GIMP RGB C-Source image dump (blit.c) */ - -static const SurfaceImage_t img_blit = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377" - "\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0" - "\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0" - "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\0\0\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377" - "\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0" - "\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377" - "\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377" - "\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0", -}; -static const SurfaceImage_t img_blitColour = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\24\0\0\0\0\0\0" - "\0\0(\0\0(\0\0\0\0\0\0\0\0<\0\0<\0\0\0\0\0\0\0\0P\0\0P\0\0\0\0\0\0\0\0d\0" - "\0d\0\0\0\0\0\0\0\0x\0\0x\0\0\0\0\0\0\0\0\214\0\0\214\0\0\0\0\0\0\0\0\240" - "\0\0\240\0\0\0\0\0\0\0\0\264\0\0\264\0\0\0\0\0\0\0\0\310\0\0\310\0\0\0\0" - "\0\0\0\0\334\0\0\334\0\0\0\0\0\0\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360" - "\0\0\360\0\0\360\0\0\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\24\0\0\24\0\0\0\0\0(\0\0" - "(\0\0(\0\0\0\0\0<\0\0<\0\0<\0\0\0\0\0P\0\0P\0\0P\0\0\0\0\0d\0\0d\0\0d\0\0" - "\0\0\0x\0\0x\0\0x\0\0\0\0\0\214\0\0\214\0\0\214\0\0\0\0\0\240\0\0\240\0\0" - "\240\0\0\0\0\0\264\0\0\264\0\0\264\0\0\0\0\0\310\0\0\310\0\0\310\0\0\0\0" - "\0\334\0\0\334\0\0\334\0\0\0\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0" - "\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\24\0\0\24\0\0\0" - "\0\0(\0\0(\0\0(\0\0\0\0\0<\0\0<\0\0<\0\0\0\0\0P\0\0P\0\0P\0\0\0\0\0d\0\0" - "d\0\0d\0\0\0\0\0x\0\0x\0\0x\0\0\0\0\0\214\0\0\214\0\0\214\0\0\0\0\0\240\0" - "\0\240\0\0\240\0\0\0\0\0\264\0\0\264\0\0\264\0\0\0\0\0\310\0\0\310\0\0\310" - "\0\0\0\0\0\334\0\0\334\0\0\334\0\0\0\0\0\360\0\0\360\0\0\360\0\0\360\0\0" - "\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0\360\0\0" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\360\0\0\360\0\0\360\0\0\360\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0$\0\0\0\0\0\0\0\0$\24\0" - "$\24\0\0\0\0\0\0\0$(\0$(\0\0\0\0\0\0\0$<\0$<\0\0\0\0\0\0\0$P\0$P\0\0\0\0" - "\0\0\0$d\0$d\0\0\0\0\0\0\0$x\0$x\0\0\0\0\0\0\0$\214\0$\214\0\0\0\0\0\0\0" - "$\240\0$\240\0\0\0\0\0\0\0$\264\0$\264\0\0\0\0\0\0\0$\310\0$\310\0\0\0\0" - "\0\0\0$\334\0$\334\0\0\0\0\0\0\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360" - "\0$\360\0$\360\0\0\0\0\0\0\0\0\360\0\0\360\0\0\360\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0$\0\0$\0\0$\0\0\0\0\0$\24\0$\24\0$\24\0\0\0\0$(\0$(\0$(\0\0\0\0" - "$<\0$<\0$<\0\0\0\0$P\0$P\0$P\0\0\0\0$d\0$d\0$d\0\0\0\0$x\0$x\0$x\0\0\0\0" - "$\214\0$\214\0$\214\0\0\0\0$\240\0$\240\0$\240\0\0\0\0$\264\0$\264\0$\264" - "\0\0\0\0$\310\0$\310\0$\310\0\0\0\0$\334\0$\334\0$\334\0\0\0\0$\360\0$\360" - "\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0" - "\0\0\0\0\360\0\0\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0$\0\0$\0\0\0\0\0$\24\0" - "$\24\0$\24\0\0\0\0$(\0$(\0$(\0\0\0\0$<\0$<\0$<\0\0\0\0$P\0$P\0$P\0\0\0\0" - "$d\0$d\0$d\0\0\0\0$x\0$x\0$x\0\0\0\0$\214\0$\214\0$\214\0\0\0\0$\240\0$\240" - "\0$\240\0\0\0\0$\264\0$\264\0$\264\0\0\0\0$\310\0$\310\0$\310\0\0\0\0$\334" - "\0$\334\0$\334\0\0\0\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$" - "\360\0$\360\0$\360\0$\360\0$\360\0$\360\0$\360\0\0\0\0\0\360\0\0\360\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0$\0\0$\0\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0$\360\0$\360\0$\360\0$\360\0\0\0\0\0\360\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0$\0\0$\0\0\0\0" - "\0\0\0\0H\0\0H\0\0\0\0\0\0\0\0H\24\0H\24\0\0\0\0\0\0\0H(\0H(\0\0\0\0\0\0" - "\0H<\0H<\0\0\0\0\0\0\0HP\0HP\0\0\0\0\0\0\0Hd\0Hd\0\0\0\0\0\0\0Hx\0Hx\0\0" - "\0\0\0\0\0H\214\0H\214\0\0\0\0\0\0\0H\240\0H\240\0\0\0\0\0\0\0H\264\0H\264" - "\0\0\0\0\0\0\0H\310\0H\310\0\0\0\0\0\0\0H\334\0H\334\0\0\0\0\0\0\0H\360\0" - "H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0\0\0\0\0\0\0$\360\0$\360" - "\0$\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0$\0\0$\0\0\0\0\0H\0\0H\0\0H\0\0\0\0\0H\24\0H\24\0H\24" - "\0\0\0\0H(\0H(\0H(\0\0\0\0H<\0H<\0H<\0\0\0\0HP\0HP\0HP\0\0\0\0Hd\0Hd\0Hd" - "\0\0\0\0Hx\0Hx\0Hx\0\0\0\0H\214\0H\214\0H\214\0\0\0\0H\240\0H\240\0H\240" - "\0\0\0\0H\264\0H\264\0H\264\0\0\0\0H\310\0H\310\0H\310\0\0\0\0H\334\0H\334" - "\0H\334\0\0\0\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H" - "\360\0H\360\0H\360\0H\360\0\0\0\0$\360\0$\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0$\0\0\0\0\0H\0\0" - "H\0\0H\0\0\0\0\0H\24\0H\24\0H\24\0\0\0\0H(\0H(\0H(\0\0\0\0H<\0H<\0H<\0\0" - "\0\0HP\0HP\0HP\0\0\0\0Hd\0Hd\0Hd\0\0\0\0Hx\0Hx\0Hx\0\0\0\0H\214\0H\214\0" - "H\214\0\0\0\0H\240\0H\240\0H\240\0\0\0\0H\264\0H\264\0H\264\0\0\0\0H\310" - "\0H\310\0H\310\0\0\0\0H\334\0H\334\0H\334\0\0\0\0H\360\0H\360\0H\360\0H\360" - "\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0H\360\0" - "\0\0\0$\360\0$\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0H\0\0H\0\0H\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\360\0H\360\0H\360\0H\360\0\0\0\0$\360\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0H\0\0H\0\0H\0\0\0\0\0\0\0\0l\0\0l\0\0\0\0\0\0\0\0l\24\0l\24\0\0\0\0\0\0" - "\0l(\0l(\0\0\0\0\0\0\0l<\0l<\0\0\0\0\0\0\0lP\0lP\0\0\0\0\0\0\0ld\0ld\0\0" - "\0\0\0\0\0lx\0lx\0\0\0\0\0\0\0l\214\0l\214\0\0\0\0\0\0\0l\240\0l\240\0\0" - "\0\0\0\0\0l\264\0l\264\0\0\0\0\0\0\0l\310\0l\310\0\0\0\0\0\0\0l\334\0l\334" - "\0\0\0\0\0\0\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0\0" - "\0\0\0\0\0H\360\0H\360\0H\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0H\0\0\0\0\0l\0\0l\0\0l\0\0" - "\0\0\0l\24\0l\24\0l\24\0\0\0\0l(\0l(\0l(\0\0\0\0l<\0l<\0l<\0\0\0\0lP\0lP" - "\0lP\0\0\0\0ld\0ld\0ld\0\0\0\0lx\0lx\0lx\0\0\0\0l\214\0l\214\0l\214\0\0\0" - "\0l\240\0l\240\0l\240\0\0\0\0l\264\0l\264\0l\264\0\0\0\0l\310\0l\310\0l\310" - "\0\0\0\0l\334\0l\334\0l\334\0\0\0\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360" - "\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0\0\0\0H\360\0H\360\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0" - "\0H\0\0\0\0\0l\0\0l\0\0l\0\0\0\0\0l\24\0l\24\0l\24\0\0\0\0l(\0l(\0l(\0\0" - "\0\0l<\0l<\0l<\0\0\0\0lP\0lP\0lP\0\0\0\0ld\0ld\0ld\0\0\0\0lx\0lx\0lx\0\0" - "\0\0l\214\0l\214\0l\214\0\0\0\0l\240\0l\240\0l\240\0\0\0\0l\264\0l\264\0" - "l\264\0\0\0\0l\310\0l\310\0l\310\0\0\0\0l\334\0l\334\0l\334\0\0\0\0l\360" - "\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0l\360\0" - "l\360\0l\360\0l\360\0\0\0\0H\360\0H\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0\0\0\0l\0\0l\0\0l\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\360\0l\360\0l\360\0l\360" - "\0\0\0\0H\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0l\0\0l\0\0l\0\0\0\0\0\0\0\0\220\0\0\220\0\0\0\0\0\0\0" - "\0\220\24\0\220\24\0\0\0\0\0\0\0\220(\0\220(\0\0\0\0\0\0\0\220<\0\220<\0" - "\0\0\0\0\0\0\220P\0\220P\0\0\0\0\0\0\0\220d\0\220d\0\0\0\0\0\0\0\220x\0\220" - "x\0\0\0\0\0\0\0\220\214\0\220\214\0\0\0\0\0\0\0\220\240\0\220\240\0\0\0\0" - "\0\0\0\220\264\0\220\264\0\0\0\0\0\0\0\220\310\0\220\310\0\0\0\0\0\0\0\220" - "\334\0\220\334\0\0\0\0\0\0\0\220\360\0\220\360\0\220\360\0\220\360\0\220" - "\360\0\220\360\0\220\360\0\220\360\0\0\0\0\0\0\0l\360\0l\360\0l\360\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0l\0\0l\0\0\0\0\0\220\0\0\220\0\0\220\0\0\0\0\0\220\24\0\220\24\0" - "\220\24\0\0\0\0\220(\0\220(\0\220(\0\0\0\0\220<\0\220<\0\220<\0\0\0\0\220" - "P\0\220P\0\220P\0\0\0\0\220d\0\220d\0\220d\0\0\0\0\220x\0\220x\0\220x\0\0" - "\0\0\220\214\0\220\214\0\220\214\0\0\0\0\220\240\0\220\240\0\220\240\0\0" - "\0\0\220\264\0\220\264\0\220\264\0\0\0\0\220\310\0\220\310\0\220\310\0\0" - "\0\0\220\334\0\220\334\0\220\334\0\0\0\0\220\360\0\220\360\0\220\360\0\220" - "\360\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360" - "\0\220\360\0\0\0\0l\360\0l\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\0\0l\0\0\0\0\0\220\0\0\220\0\0\220" - "\0\0\0\0\0\220\24\0\220\24\0\220\24\0\0\0\0\220(\0\220(\0\220(\0\0\0\0\220" - "<\0\220<\0\220<\0\0\0\0\220P\0\220P\0\220P\0\0\0\0\220d\0\220d\0\220d\0\0" - "\0\0\220x\0\220x\0\220x\0\0\0\0\220\214\0\220\214\0\220\214\0\0\0\0\220\240" - "\0\220\240\0\220\240\0\0\0\0\220\264\0\220\264\0\220\264\0\0\0\0\220\310" - "\0\220\310\0\220\310\0\0\0\0\220\334\0\220\334\0\220\334\0\0\0\0\220\360" - "\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0" - "\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0\220\360\0\0\0\0l\360\0" - "l\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0l\0\0\0\0\0\220\0\0\220\0\0\220\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\220\360\0\220\360\0\220\360\0\220\360\0\0\0\0l\360" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\220\0\0\220\0\0\220\0\0\0\0\0\0\0\0\264\0\0\264\0\0\0\0\0\0\0\0" - "\264\24\0\264\24\0\0\0\0\0\0\0\264(\0\264(\0\0\0\0\0\0\0\264<\0\264<\0\0" - "\0\0\0\0\0\264P\0\264P\0\0\0\0\0\0\0\264d\0\264d\0\0\0\0\0\0\0\264x\0\264" - "x\0\0\0\0\0\0\0\264\214\0\264\214\0\0\0\0\0\0\0\264\240\0\264\240\0\0\0\0" - "\0\0\0\264\264\0\264\264\0\0\0\0\0\0\0\264\310\0\264\310\0\0\0\0\0\0\0\264" - "\334\0\264\334\0\0\0\0\0\0\0\264\360\0\264\360\0\264\360\0\264\360\0\264" - "\360\0\264\360\0\264\360\0\264\360\0\0\0\0\0\0\0\220\360\0\220\360\0\220" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\220\0\0\220\0\0\0\0\0\264\0\0\264\0\0\264\0\0\0\0\0\264" - "\24\0\264\24\0\264\24\0\0\0\0\264(\0\264(\0\264(\0\0\0\0\264<\0\264<\0\264" - "<\0\0\0\0\264P\0\264P\0\264P\0\0\0\0\264d\0\264d\0\264d\0\0\0\0\264x\0\264" - "x\0\264x\0\0\0\0\264\214\0\264\214\0\264\214\0\0\0\0\264\240\0\264\240\0" - "\264\240\0\0\0\0\264\264\0\264\264\0\264\264\0\0\0\0\264\310\0\264\310\0" - "\264\310\0\0\0\0\264\334\0\264\334\0\264\334\0\0\0\0\264\360\0\264\360\0" - "\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0\264" - "\360\0\264\360\0\264\360\0\0\0\0\220\360\0\220\360\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\220\0\0\220\0" - "\0\0\0\0\264\0\0\264\0\0\264\0\0\0\0\0\264\24\0\264\24\0\264\24\0\0\0\0\264" - "(\0\264(\0\264(\0\0\0\0\264<\0\264<\0\264<\0\0\0\0\264P\0\264P\0\264P\0\0" - "\0\0\264d\0\264d\0\264d\0\0\0\0\264x\0\264x\0\264x\0\0\0\0\264\214\0\264" - "\214\0\264\214\0\0\0\0\264\240\0\264\240\0\264\240\0\0\0\0\264\264\0\264" - "\264\0\264\264\0\0\0\0\264\310\0\264\310\0\264\310\0\0\0\0\264\334\0\264" - "\334\0\264\334\0\0\0\0\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0" - "\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0\264\360\0\264" - "\360\0\264\360\0\0\0\0\220\360\0\220\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\220\0\0\0\0\0\264\0\0\264\0\0" - "\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\264\360\0" - "\264\360\0\264\360\0\264\360\0\0\0\0\220\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\264\0\0\264\0\0\264" - "\0\0\0\0\0\0\0\0\330\0\0\330\0\0\0\0\0\0\0\0\330\24\0\330\24\0\0\0\0\0\0" - "\0\330(\0\330(\0\0\0\0\0\0\0\330<\0\330<\0\0\0\0\0\0\0\330P\0\330P\0\0\0" - "\0\0\0\0\330d\0\330d\0\0\0\0\0\0\0\330x\0\330x\0\0\0\0\0\0\0\330\214\0\330" - "\214\0\0\0\0\0\0\0\330\240\0\330\240\0\0\0\0\0\0\0\330\264\0\330\264\0\0" - "\0\0\0\0\0\330\310\0\330\310\0\0\0\0\0\0\0\330\334\0\330\334\0\0\0\0\0\0" - "\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0" - "\330\360\0\0\0\0\0\0\0\264\360\0\264\360\0\264\360\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\264\0\0" - "\264\0\0\0\0\0\330\0\0\330\0\0\330\0\0\0\0\0\330\24\0\330\24\0\330\24\0\0" - "\0\0\330(\0\330(\0\330(\0\0\0\0\330<\0\330<\0\330<\0\0\0\0\330P\0\330P\0" - "\330P\0\0\0\0\330d\0\330d\0\330d\0\0\0\0\330x\0\330x\0\330x\0\0\0\0\330\214" - "\0\330\214\0\330\214\0\0\0\0\330\240\0\330\240\0\330\240\0\0\0\0\330\264" - "\0\330\264\0\330\264\0\0\0\0\330\310\0\330\310\0\330\310\0\0\0\0\330\334" - "\0\330\334\0\330\334\0\0\0\0\330\360\0\330\360\0\330\360\0\330\360\0\330" - "\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360" - "\0\0\0\0\264\360\0\264\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\264\0\0\264\0\0\0\0\0\330\0\0\330\0\0" - "\330\0\0\0\0\0\330\24\0\330\24\0\330\24\0\0\0\0\330(\0\330(\0\330(\0\0\0" - "\0\330<\0\330<\0\330<\0\0\0\0\330P\0\330P\0\330P\0\0\0\0\330d\0\330d\0\330" - "d\0\0\0\0\330x\0\330x\0\330x\0\0\0\0\330\214\0\330\214\0\330\214\0\0\0\0" - "\330\240\0\330\240\0\330\240\0\0\0\0\330\264\0\330\264\0\330\264\0\0\0\0" - "\330\310\0\330\310\0\330\310\0\0\0\0\330\334\0\330\334\0\330\334\0\0\0\0" - "\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330" - "\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\330\360\0\0\0\0" - "\264\360\0\264\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\264\0\0\0\0\0\330\0\0\330\0\0\330\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\330\360\0\330\360\0\330\360\0\330" - "\360\0\0\0\0\264\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\330\0\0\330\0\0\330\0\0\0\0\0\0\0\0\374\0\0" - "\374\0\0\0\0\0\0\0\0\374\24\0\374\24\0\0\0\0\0\0\0\374(\0\374(\0\0\0\0\0" - "\0\0\374<\0\374<\0\0\0\0\0\0\0\374P\0\374P\0\0\0\0\0\0\0\374d\0\374d\0\0" - "\0\0\0\0\0\374x\0\374x\0\0\0\0\0\0\0\374\214\0\374\214\0\0\0\0\0\0\0\374" - "\240\0\374\240\0\0\0\0\0\0\0\374\264\0\374\264\0\0\0\0\0\0\0\374\310\0\374" - "\310\0\0\0\0\0\0\0\374\334\0\374\334\0\0\0\0\0\0\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\330" - "\360\0\330\360\0\330\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\330\0\0\330\0\0\0\0\0\374\0\0\374" - "\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0" - "\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d" - "\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0" - "\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0" - "\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0" - "\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\330\360\0\330" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\330\0\0\330\0\0\0\0\0\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0" - "\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0\0\0\0\374<\0\374<\0\374<\0" - "\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d\0\374d\0\0\0\0\374x\0\374x" - "\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0\0\0\0\374\240\0\374\240\0\374" - "\240\0\0\0\0\374\264\0\374\264\0\374\264\0\0\0\0\374\310\0\374\310\0\374" - "\310\0\0\0\0\374\334\0\374\334\0\374\334\0\0\0\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\330\360\0\330\360\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\330" - "\0\0\0\0\0\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0" - "\374(\0\374(\0\374(\0\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374" - "P\0\0\0\0\374d\0\374d\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0" - "\374\214\0\374\214\0\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0" - "\374\264\0\374\264\0\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0" - "\374\334\0\374\334\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\330\360\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374" - "\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0" - "\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d" - "\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0" - "\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0" - "\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0" - "\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\374" - "\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0\0\0\0\374" - "<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d\0\374d\0\0" - "\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0\0\0\0\374\240" - "\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0\0\0\0\374\310" - "\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0\0\0\0\374\360" - "\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374" - "(\0\374(\0\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374" - "d\0\374d\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374" - "\214\0\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374" - "\264\0\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374" - "\334\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\374\334" - "\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\374\334\0\0" - "\0\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\374\0\0\0\0" - "\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0\0\0\0\374<\0\374" - "<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d\0\374d\0\0\0\0\374" - "x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0\0\0\0\374\240\0\374" - "\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0\0\0\0\374\310\0\374" - "\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0\0\0\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374" - "(\0\374(\0\374(\0\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0" - "\0\0\374d\0\374d\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374" - "\214\0\374\214\0\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374" - "\264\0\374\264\0\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374" - "\334\0\374\334\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0" - "\374(\0\374(\0\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0" - "\0\374d\0\374d\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214" - "\0\374\214\0\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264" - "\0\374\264\0\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334" - "\0\374\334\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374" - "(\0\374(\0\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374" - "d\0\374d\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374" - "\214\0\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374" - "\264\0\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374" - "\334\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374" - "\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0" - "\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d" - "\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0" - "\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0" - "\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0" - "\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\374" - "\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0\0\0\0\374" - "<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d\0\374d\0\0" - "\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0\0\0\0\374\240" - "\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0\0\0\0\374\310" - "\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0\0\0\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\374" - "\0\0\0\0\0\374\24\0\374\24\0\374\24\0\0\0\0\374(\0\374(\0\374(\0\0\0\0\374" - "<\0\374<\0\374<\0\0\0\0\374P\0\374P\0\374P\0\0\0\0\374d\0\374d\0\374d\0\0" - "\0\0\374x\0\374x\0\374x\0\0\0\0\374\214\0\374\214\0\374\214\0\0\0\0\374\240" - "\0\374\240\0\374\240\0\0\0\0\374\264\0\374\264\0\374\264\0\0\0\0\374\310" - "\0\374\310\0\374\310\0\0\0\0\374\334\0\374\334\0\374\334\0\0\0\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\0\0\0\0\0\0\374\24" - "\0\374\24\0\0\0\0\0\0\0\374(\0\374(\0\0\0\0\0\0\0\374<\0\374<\0\0\0\0\0\0" - "\0\374P\0\374P\0\0\0\0\0\0\0\374d\0\374d\0\0\0\0\0\0\0\374x\0\374x\0\0\0" - "\0\0\0\0\374\214\0\374\214\0\0\0\0\0\0\0\374\240\0\374\240\0\0\0\0\0\0\0" - "\374\264\0\374\264\0\0\0\0\0\0\0\374\310\0\374\310\0\0\0\0\0\0\0\374\334" - "\0\374\334\0\0\0\0\0\0\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0" - "\0\0\0\0\0\0\0\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\0" - "\0\0\0\0\0\374\24\0\374\24\0\0\0\0\0\0\0\374(\0\374(\0\0\0\0\0\0\0\374<\0" - "\374<\0\0\0\0\0\0\0\374P\0\374P\0\0\0\0\0\0\0\374d\0\374d\0\0\0\0\0\0\0\374" - "x\0\374x\0\0\0\0\0\0\0\374\214\0\374\214\0\0\0\0\0\0\0\374\240\0\374\240" - "\0\0\0\0\0\0\0\374\264\0\374\264\0\0\0\0\0\0\0\374\310\0\374\310\0\0\0\0" - "\0\0\0\374\334\0\374\334\0\0\0\0\0\0\0\374\360\0\374\360\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\0\0\0\0\0\0\374\24\0" - "\374\24\0\0\0\0\0\0\0\374(\0\374(\0\0\0\0\0\0\0\374<\0\374<\0\0\0\0\0\0\0" - "\374P\0\374P\0\0\0\0\0\0\0\374d\0\374d\0\0\0\0\0\0\0\374x\0\374x\0\0\0\0" - "\0\0\0\374\214\0\374\214\0\0\0\0\0\0\0\374\240\0\374\240\0\0\0\0\0\0\0\374" - "\264\0\374\264\0\0\0\0\0\0\0\374\310\0\374\310\0\0\0\0\0\0\0\374\334\0\374" - "\334\0\0\0\0\0\0\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\374\0\0\374\0\0\374\0\0\0\0\0\374\24\0\374\24\0\374\24\0" - "\0\0\0\374(\0\374(\0\374(\0\0\0\0\374<\0\374<\0\374<\0\0\0\0\374P\0\374P" - "\0\374P\0\0\0\0\374d\0\374d\0\374d\0\0\0\0\374x\0\374x\0\374x\0\0\0\0\374" - "\214\0\374\214\0\374\214\0\0\0\0\374\240\0\374\240\0\374\240\0\0\0\0\374" - "\264\0\374\264\0\374\264\0\0\0\0\374\310\0\374\310\0\374\310\0\0\0\0\374" - "\334\0\374\334\0\374\334\0\0\0\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\0\0\374\0\0\0\0\0\0\0\0" - "\374\24\0\374\24\0\0\0\0\0\0\0\374(\0\374(\0\0\0\0\0\0\0\374<\0\374<\0\0" - "\0\0\0\0\0\374P\0\374P\0\0\0\0\0\0\0\374d\0\374d\0\0\0\0\0\0\0\374x\0\374" - "x\0\0\0\0\0\0\0\374\214\0\374\214\0\0\0\0\0\0\0\374\240\0\374\240\0\0\0\0" - "\0\0\0\374\264\0\374\264\0\0\0\0\0\0\0\374\310\0\374\310\0\0\0\0\0\0\0\374" - "\334\0\374\334\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", -}; -static const SurfaceImage_t img_blitAlpha = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0\20\20\0" - "\20\20\0""88\0""88\0**\0**\0ZZ\0ZZ\0==\0==\0yy\0yy\0II\0II\0\224\224\0\224" - "\224\0NN\0NN\0\254\254\0\254\254\0MM\0MM\0\302\302\0\302\302\0HH\0HH\0\324" - "\324\0\324\324\0>>\0>>\0\343\343\0\343\343\0""00\0""00\0\356\356\0\356\356" - "\0\40\40\0\40\40\0\367\367\0\367\367\0\16\16\0\16\16\0\374\374\0\374\374" - "\0\374\374\0\374\374\0\360\360\0\360\360\0\360\360\0\360\360\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\24\24\0\24\24\0\24\24\0\20\20\0""88\0""88\0""88\0**\0ff\0ff\0ff\0FF\0" - "\215\215\0\215\215\0\215\215\0UU\0\255\255\0\255\255\0\255\255\0[[\0\306" - "\306\0\306\306\0\306\306\0YY\0\331\331\0\331\331\0\331\331\0PP\0\350\350" - "\0\350\350\0\350\350\0DD\0\362\362\0\362\362\0\362\362\0""44\0\370\370\0" - "\370\370\0\370\370\0\"\"\0\374\374\0\374\374\0\374\374\0\16\16\0\376\376" - "\0\376\376\0\376\376\0\376\376\0\374\374\0\374\374\0\374\374\0\374\374\0" - "\360\360\0\360\360\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0\24\24\0\20\20\0""88\0" - """88\0""88\0**\0ff\0ff\0ff\0FF\0\226\226\0\226\226\0\215\215\0UU\0\271\271" - "\0\271\271\0\255\255\0[[\0\323\323\0\323\323\0\306\306\0YY\0\345\345\0\345" - "\345\0\331\331\0PP\0\360\360\0\360\360\0\350\350\0DD\0\370\370\0\370\370" - "\0\362\362\0""44\0\374\374\0\374\374\0\370\370\0\"\"\0\376\376\0\376\376" - "\0\374\374\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\374\374\0\374\374\0\374\374\0\374\374\0\360\360\0\360\360\0\360\360" - "\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24" - "\0\24\24\0\24\24\0\20\20\0""33\0""33\0""33\0&&\0OO\0OO\0OO\0""55\0``\0``" - "\0``\0::\0``\0``\0``\0""22\0WW\0WW\0WW\0''\0II\0II\0II\0\33\33\0""99\0""9" - "9\0""99\0\20\20\0))\0))\0))\0\10\10\0\33\33\0\33\33\0\33\33\0\3\3\0\17\17" - "\0\17\17\0\17\17\0\0\0\0\7\7\0\7\7\0\7\7\0\7\7\0\2\2\0\2\2\0\2\2\0\2\2\0" - "\16\16\0\16\16\0\16\16\0\16\16\0\360\360\0\360\360\0\360\360\0\360\360\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0\24\24\0\16\16" - "\0""33\0GG\0GG\0""00\0``\0\210\210\0\210\210\0TT\0\204\204\0\263\263\0\263" - "\263\0ee\0\222\222\0\315\315\0\312\312\0gg\0\216\216\0\331\331\0\327\327" - "\0cc\0\202\202\0\340\340\0\337\337\0YY\0qq\0\345\345\0\344\344\0NN\0^^\0" - "\352\352\0\352\352\0@@\0JJ\0\357\357\0\357\357\0""11\0""66\0\364\364\0\364" - "\364\0\40\40\0\"\"\0\371\371\0\371\371\0\16\16\0\16\16\0\375\375\0\375\375" - "\0\376\376\0\376\376\0\362\362\0\362\362\0\376\376\0\376\376\0\16\16\0\16" - "\16\0\360\360\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24" - "\24\0\24\24\0\22\22\0\24\24\0""88\0""88\0//\0BB\0pp\0pp\0UU\0ss\0\242\242" - "\0\242\242\0oo\0\230\230\0\306\306\0\306\306\0ww\0\265\265\0\335\335\0\335" - "\335\0ss\0\313\313\0\353\353\0\353\353\0ii\0\333\333\0\364\364\0\364\364" - "\0ZZ\0\351\351\0\371\371\0\371\371\0II\0\362\362\0\374\374\0\374\374\0""6" - "6\0\370\370\0\376\376\0\376\376\0\"\"\0\374\374\0\376\376\0\376\376\0\16" - "\16\0\376\376\0\376\376\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376" - "\0\376\376\0\360\360\0\360\360\0\360\360\0\360\360\0\16\16\0\360\360\0\360" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0\22\22\0\"\"\0""88\0" - """88\0//\0OO\0pp\0pp\0WW\0\203\203\0\242\242\0\242\242\0qq\0\256\256\0\312" - "\312\0\301\301\0||\0\313\313\0\342\342\0\325\325\0yy\0\336\336\0\360\360" - "\0\342\342\0mm\0\353\353\0\367\367\0\354\354\0\\\\\0\363\363\0\373\373\0" - "\362\362\0JJ\0\371\371\0\375\375\0\367\367\0""66\0\374\374\0\376\376\0\373" - "\373\0\"\"\0\376\376\0\376\376\0\375\375\0\16\16\0\376\376\0\376\376\0\376" - "\376\0\376\376\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0\375\375" - "\0\360\360\0\374\374\0\360\360\0\376\376\0\16\16\0\360\360\0\360\360\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\24\24\0\22\22\0&&\0\"\"\0""88\0//\0PP\0HH\0gg\0NN" - "\0pp\0ee\0}}\0VV\0{{\0oo\0\202\202\0NN\0qq\0jj\0vv\0>>\0``\0\\\\\0cc\0,," - "\0MM\0KK\0OO\0\35\35\0::\0""99\0;;\0\21\21\0**\0))\0**\0\10\10\0\33\33\0" - "\33\33\0\33\33\0\3\3\0\17\17\0\17\17\0\17\17\0\0\0\0\7\7\0\7\7\0\7\7\0\7" - "\7\0\2\2\0\2\2\0\2\2\0\2\2\0\16\16\0\16\16\0\16\16\0\16\16\0\360\360\0\360" - "\360\0\376\376\0\376\376\0\16\16\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22" - "\0&&\0&&\0\"\"\0""66\0[[\0oo\0ee\0``\0\220\220\0\270\270\0\250\250\0xx\0" - "\250\250\0\327\327\0\311\311\0zz\0\246\246\0\341\341\0\325\325\0rr\0\230" - "\230\0\343\343\0\334\334\0gg\0\205\205\0\344\344\0\340\340\0[[\0rr\0\346" - "\346\0\344\344\0NN\0^^\0\352\352\0\352\352\0AA\0JJ\0\357\357\0\357\357\0" - """11\0""66\0\364\364\0\364\364\0\40\40\0\"\"\0\371\371\0\371\371\0\16\16" - "\0\16\16\0\375\375\0\375\375\0\376\376\0\376\376\0\362\362\0\362\362\0\376" - "\376\0\376\376\0\16\16\0\16\16\0\376\376\0\376\376\0\376\376\0\16\16\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\22\22\0&&\0&&\0\37\37\0;;\0``\0``\0HH\0qq\0\237\237" - "\0\237\237\0nn\0\227\227\0\306\306\0\306\306\0}}\0\254\254\0\334\334\0\334" - "\334\0}}\0\275\275\0\347\347\0\347\347\0vv\0\316\316\0\357\357\0\357\357" - "\0ii\0\334\334\0\365\365\0\365\365\0ZZ\0\351\351\0\371\371\0\371\371\0II" - "\0\362\362\0\374\374\0\374\374\0""66\0\370\370\0\376\376\0\376\376\0\"\"" - "\0\374\374\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\375\375\0\376\376\0\376\376\0\376\376\0\360\360\0\360\360\0\360\360" - "\0\360\360\0\16\16\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "&&\0&&\0##\0--\0``\0``\0TT\0cc\0\237\237\0\231\231\0||\0\223\223\0\306\306" - "\0\301\301\0\217\217\0\267\267\0\336\336\0\322\322\0\220\220\0\317\317\0" - "\352\352\0\334\334\0\202\202\0\337\337\0\362\362\0\345\345\0qq\0\353\353" - "\0\370\370\0\354\354\0^^\0\363\363\0\373\373\0\362\362\0JJ\0\371\371\0\375" - "\375\0\367\367\0""66\0\374\374\0\376\376\0\373\373\0\"\"\0\376\376\0\376" - "\376\0\375\375\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376" - "\0\376\376\0\375\375\0\376\376\0\376\376\0\375\375\0\360\360\0\376\376\0" - "\360\360\0\376\376\0\16\16\0\376\376\0\376\376\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "&&\0##\0""77\0--\0``\0PP\0nn\0[[\0\222\222\0kk\0\211\211\0qq\0\231\231\0" - "ff\0\210\210\0uu\0\217\217\0UU\0vv\0ll\0zz\0@@\0aa\0]]\0dd\0,,\0MM\0KK\0" - "OO\0\35\35\0::\0""99\0;;\0\21\21\0**\0))\0**\0\10\10\0\33\33\0\33\33\0\33" - "\33\0\3\3\0\17\17\0\17\17\0\17\17\0\0\0\0\7\7\0\7\7\0\7\7\0\7\7\0\2\2\0\2" - "\2\0\2\2\0\2\2\0\16\16\0\16\16\0\16\16\0\16\16\0\360\360\0\360\360\0\376" - "\376\0\376\376\0\16\16\0\376\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0##\0""77\0""77" - "\0--\0UU\0zz\0\216\216\0ww\0}}\0\254\254\0\324\324\0\264\264\0\207\207\0" - "\266\266\0\345\345\0\316\316\0\177\177\0\254\254\0\346\346\0\326\326\0rr" - "\0\231\231\0\344\344\0\334\334\0gg\0\206\206\0\344\344\0\340\340\0[[\0rr" - "\0\346\346\0\344\344\0NN\0^^\0\352\352\0\352\352\0AA\0JJ\0\357\357\0\357" - "\357\0""11\0""66\0\364\364\0\364\364\0\40\40\0\"\"\0\371\371\0\371\371\0" - "\16\16\0\16\16\0\375\375\0\375\375\0\376\376\0\376\376\0\362\362\0\362\362" - "\0\376\376\0\376\376\0\16\16\0\16\16\0\376\376\0\376\376\0\376\376\0\16\16" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22\0""77\0""77\0--\0CC\0~~\0~~\0\\\\\0||\0" - "\274\274\0\274\274\0||\0\235\235\0\325\325\0\325\325\0\204\204\0\256\256" - "\0\340\340\0\340\340\0\177\177\0\275\275\0\351\351\0\351\351\0vv\0\316\316" - "\0\360\360\0\360\360\0ii\0\334\334\0\365\365\0\365\365\0ZZ\0\351\351\0\371" - "\371\0\371\371\0II\0\362\362\0\374\374\0\374\374\0""66\0\370\370\0\376\376" - "\0\376\376\0\"\"\0\374\374\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0\376\376\0\360\360\0" - "\360\360\0\360\360\0\360\360\0\16\16\0\376\376\0\376\376\0\16\16\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0&&\0""77\0""22\0--\0``\0vv\0pp\0gg\0\243\243\0\255\255" - "\0\225\225\0\231\231\0\311\311\0\314\314\0\235\235\0\271\271\0\337\337\0" - "\326\326\0\224\224\0\320\320\0\352\352\0\336\336\0\204\204\0\337\337\0\362" - "\362\0\345\345\0qq\0\353\353\0\370\370\0\354\354\0^^\0\363\363\0\373\373" - "\0\362\362\0JJ\0\371\371\0\375\375\0\367\367\0""66\0\374\374\0\376\376\0" - "\373\373\0\"\"\0\376\376\0\376\376\0\375\375\0\16\16\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0" - "\375\375\0\360\360\0\376\376\0\360\360\0\376\376\0\16\16\0\376\376\0\376" - "\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&&\0##\0FF\0""99\0``\0PP\0\200\200\0dd\0\222" - "\222\0kk\0\222\222\0vv\0\231\231\0ff\0\213\213\0ww\0\217\217\0UU\0xx\0mm" - "\0zz\0@@\0bb\0]]\0dd\0,,\0MM\0KK\0OO\0\35\35\0::\0""99\0;;\0\21\21\0**\0" - "))\0**\0\10\10\0\33\33\0\33\33\0\33\33\0\3\3\0\17\17\0\17\17\0\17\17\0\0" - "\0\0\7\7\0\7\7\0\7\7\0\7\7\0\2\2\0\2\2\0\2\2\0\2\2\0\16\16\0\16\16\0\16\16" - "\0\16\16\0\360\360\0\360\360\0\376\376\0\376\376\0\16\16\0\376\376\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0##\0""77\0""77\0""99\0^^\0zz\0\216\216\0\201\201\0\203" - "\203\0\254\254\0\324\324\0\271\271\0\211\211\0\266\266\0\345\345\0\317\317" - "\0\200\200\0\254\254\0\346\346\0\326\326\0ss\0\231\231\0\344\344\0\334\334" - "\0gg\0\206\206\0\344\344\0\340\340\0[[\0rr\0\346\346\0\344\344\0NN\0^^\0" - "\352\352\0\352\352\0AA\0JJ\0\357\357\0\357\357\0""11\0""66\0\364\364\0\364" - "\364\0\40\40\0\"\"\0\371\371\0\371\371\0\16\16\0\16\16\0\375\375\0\375\375" - "\0\376\376\0\376\376\0\362\362\0\362\362\0\376\376\0\376\376\0\16\16\0\16" - "\16\0\376\376\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22" - "\0""77\0""77\0--\0MM\0\210\210\0\210\210\0\\\\\0\202\202\0\302\302\0\302" - "\302\0||\0\240\240\0\330\330\0\330\330\0\204\204\0\257\257\0\341\341\0\341" - "\341\0\177\177\0\275\275\0\351\351\0\351\351\0vv\0\316\316\0\360\360\0\360" - "\360\0ii\0\334\334\0\365\365\0\365\365\0ZZ\0\351\351\0\371\371\0\371\371" - "\0II\0\362\362\0\374\374\0\374\374\0""66\0\370\370\0\376\376\0\376\376\0" - "\"\"\0\374\374\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376" - "\0\376\376\0\375\375\0\376\376\0\376\376\0\376\376\0\360\360\0\360\360\0" - "\360\360\0\360\360\0\16\16\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0&&\0""77\0""22\0--\0``\0vv\0xx\0kk\0\245\245\0\257\257\0\235\235" - "\0\234\234\0\312\312\0\315\315\0\241\241\0\272\272\0\337\337\0\326\326\0" - "\225\225\0\320\320\0\352\352\0\336\336\0\204\204\0\337\337\0\362\362\0\345" - "\345\0qq\0\353\353\0\370\370\0\354\354\0^^\0\363\363\0\373\373\0\362\362" - "\0JJ\0\371\371\0\375\375\0\367\367\0""66\0\374\374\0\376\376\0\373\373\0" - "\"\"\0\376\376\0\376\376\0\375\375\0\16\16\0\376\376\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0\375\375\0" - "\360\360\0\376\376\0\360\360\0\376\376\0\16\16\0\376\376\0\376\376\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0&&\0##\0FF\0""99\0``\0PP\0\200\200\0dd\0\222\222\0kk" - "\0\222\222\0vv\0\231\231\0ff\0\213\213\0ww\0\217\217\0UU\0xx\0mm\0zz\0@@" - "\0bb\0]]\0dd\0,,\0MM\0KK\0OO\0\35\35\0::\0""99\0;;\0\21\21\0**\0))\0**\0" - "\10\10\0\33\33\0\33\33\0\33\33\0\3\3\0\17\17\0\17\17\0\17\17\0\0\0\0\7\7" - "\0\7\7\0\7\7\0\7\7\0\2\2\0\2\2\0\2\2\0\2\2\0\16\16\0\16\16\0\16\16\0\16\16" - "\0\360\360\0\360\360\0\376\376\0\376\376\0\16\16\0\376\376\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0##\0""77\0""77\0""99\0^^\0zz\0\216\216\0\201\201\0\203\203\0" - "\254\254\0\324\324\0\271\271\0\211\211\0\266\266\0\345\345\0\317\317\0\200" - "\200\0\254\254\0\346\346\0\326\326\0ss\0\231\231\0\344\344\0\334\334\0gg" - "\0\206\206\0\344\344\0\340\340\0[[\0rr\0\346\346\0\344\344\0NN\0^^\0\352" - "\352\0\352\352\0AA\0JJ\0\357\357\0\357\357\0""11\0""66\0\364\364\0\364\364" - "\0\40\40\0\"\"\0\371\371\0\371\371\0\16\16\0\16\16\0\375\375\0\375\375\0" - "\376\376\0\376\376\0\362\362\0\362\362\0\376\376\0\376\376\0\16\16\0\16\16" - "\0\376\376\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22\0" - """77\0""77\0--\0MM\0\210\210\0\210\210\0\\\\\0\202\202\0\302\302\0\302\302" - "\0||\0\240\240\0\330\330\0\330\330\0\204\204\0\257\257\0\341\341\0\341\341" - "\0\177\177\0\275\275\0\351\351\0\351\351\0vv\0\316\316\0\360\360\0\360\360" - "\0ii\0\334\334\0\365\365\0\365\365\0ZZ\0\351\351\0\371\371\0\371\371\0II" - "\0\362\362\0\374\374\0\374\374\0""66\0\370\370\0\376\376\0\376\376\0\"\"" - "\0\374\374\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\375\375\0\376\376\0\376\376\0\376\376\0\360\360\0\360\360\0\360\360" - "\0\360\360\0\16\16\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "&&\0""77\0""22\0--\0``\0vv\0xx\0kk\0\245\245\0\257\257\0\235\235\0\234\234" - "\0\312\312\0\315\315\0\241\241\0\272\272\0\337\337\0\326\326\0\225\225\0" - "\320\320\0\352\352\0\336\336\0\204\204\0\337\337\0\362\362\0\345\345\0qq" - "\0\353\353\0\370\370\0\354\354\0^^\0\363\363\0\373\373\0\362\362\0JJ\0\371" - "\371\0\375\375\0\367\367\0""66\0\374\374\0\376\376\0\373\373\0\"\"\0\376" - "\376\0\376\376\0\375\375\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0\375\375\0\360\360\0" - "\376\376\0\360\360\0\376\376\0\16\16\0\376\376\0\376\376\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0&&\0##\0FF\0""99\0``\0PP\0\200\200\0dd\0\222\222\0kk\0\222\222" - "\0vv\0\231\231\0ff\0\213\213\0ww\0\217\217\0UU\0xx\0mm\0zz\0@@\0bb\0]]\0" - "dd\0,,\0MM\0KK\0OO\0\35\35\0::\0""99\0;;\0\21\21\0**\0))\0**\0\10\10\0\33" - "\33\0\33\33\0\33\33\0\3\3\0\17\17\0\17\17\0\17\17\0\0\0\0\7\7\0\7\7\0\7\7" - "\0\7\7\0\2\2\0\2\2\0\2\2\0\2\2\0\16\16\0\16\16\0\16\16\0\16\16\0\360\360" - "\0\360\360\0\376\376\0\376\376\0\16\16\0\376\376\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0##\0""77\0""77\0""99\0^^\0zz\0\216\216\0\201\201\0\203\203\0\254\254\0" - "\324\324\0\271\271\0\211\211\0\266\266\0\345\345\0\317\317\0\200\200\0\254" - "\254\0\346\346\0\326\326\0ss\0\231\231\0\344\344\0\334\334\0gg\0\206\206" - "\0\344\344\0\340\340\0[[\0rr\0\346\346\0\344\344\0NN\0^^\0\352\352\0\352" - "\352\0AA\0JJ\0\357\357\0\357\357\0""11\0""66\0\364\364\0\364\364\0\40\40" - "\0\"\"\0\371\371\0\371\371\0\16\16\0\16\16\0\375\375\0\375\375\0\376\376" - "\0\376\376\0\362\362\0\362\362\0\376\376\0\376\376\0\16\16\0\16\16\0\376" - "\376\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22\0""77\0" - """77\0--\0MM\0\210\210\0\210\210\0\\\\\0\202\202\0\302\302\0\302\302\0||" - "\0\240\240\0\330\330\0\330\330\0\204\204\0\257\257\0\341\341\0\341\341\0" - "\177\177\0\275\275\0\351\351\0\351\351\0vv\0\316\316\0\360\360\0\360\360" - "\0ii\0\334\334\0\365\365\0\365\365\0ZZ\0\351\351\0\371\371\0\371\371\0II" - "\0\362\362\0\374\374\0\374\374\0""66\0\370\370\0\376\376\0\376\376\0\"\"" - "\0\374\374\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\375\375\0\376\376\0\376\376\0\376\376\0\360\360\0\360\360\0\360\360" - "\0\360\360\0\16\16\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "&&\0""77\0""22\0--\0``\0vv\0xx\0kk\0\245\245\0\257\257\0\235\235\0\234\234" - "\0\312\312\0\315\315\0\241\241\0\272\272\0\337\337\0\326\326\0\225\225\0" - "\320\320\0\352\352\0\336\336\0\204\204\0\337\337\0\362\362\0\345\345\0qq" - "\0\353\353\0\370\370\0\354\354\0^^\0\363\363\0\373\373\0\362\362\0JJ\0\371" - "\371\0\375\375\0\367\367\0""66\0\374\374\0\376\376\0\373\373\0\"\"\0\376" - "\376\0\376\376\0\375\375\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0\375\375\0\360\360\0" - "\376\376\0\360\360\0\376\376\0\16\16\0\376\376\0\376\376\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0&&\0##\0FF\0""99\0``\0PP\0\200\200\0dd\0\222\222\0kk\0\222\222" - "\0vv\0\231\231\0ff\0\213\213\0ww\0\217\217\0UU\0xx\0mm\0zz\0@@\0bb\0]]\0" - "dd\0,,\0MM\0KK\0OO\0\35\35\0::\0""99\0;;\0\21\21\0**\0))\0**\0\10\10\0\33" - "\33\0\33\33\0\33\33\0\3\3\0\17\17\0\17\17\0\17\17\0\0\0\0\7\7\0\7\7\0\7\7" - "\0\7\7\0\2\2\0\2\2\0\2\2\0\2\2\0\16\16\0\16\16\0\16\16\0\16\16\0\360\360" - "\0\360\360\0\376\376\0\376\376\0\16\16\0\376\376\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0##\0""77\0""77\0""99\0^^\0zz\0\216\216\0\201\201\0\203\203\0\254\254\0" - "\324\324\0\271\271\0\211\211\0\266\266\0\345\345\0\317\317\0\200\200\0\254" - "\254\0\346\346\0\326\326\0ss\0\231\231\0\344\344\0\334\334\0gg\0\206\206" - "\0\344\344\0\340\340\0[[\0rr\0\346\346\0\344\344\0NN\0^^\0\352\352\0\352" - "\352\0AA\0JJ\0\357\357\0\357\357\0""11\0""66\0\364\364\0\364\364\0\40\40" - "\0\"\"\0\371\371\0\371\371\0\16\16\0\16\16\0\375\375\0\375\375\0\376\376" - "\0\376\376\0\362\362\0\362\362\0\376\376\0\376\376\0\16\16\0\16\16\0\376" - "\376\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22\0""77\0" - """77\0--\0MM\0\210\210\0\210\210\0\\\\\0\202\202\0\302\302\0\302\302\0||" - "\0\240\240\0\330\330\0\330\330\0\204\204\0\257\257\0\341\341\0\341\341\0" - "\177\177\0\275\275\0\351\351\0\351\351\0vv\0\316\316\0\360\360\0\360\360" - "\0ii\0\334\334\0\365\365\0\365\365\0ZZ\0\351\351\0\371\371\0\371\371\0II" - "\0\362\362\0\374\374\0\374\374\0""66\0\370\370\0\376\376\0\376\376\0\"\"" - "\0\374\374\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\375\375\0\376\376\0\376\376\0\376\376\0\360\360\0\360\360\0\360\360" - "\0\360\360\0\16\16\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "&&\0""77\0""22\0--\0``\0vv\0xx\0kk\0\245\245\0\257\257\0\235\235\0\234\234" - "\0\312\312\0\315\315\0\241\241\0\272\272\0\337\337\0\326\326\0\225\225\0" - "\320\320\0\352\352\0\336\336\0\204\204\0\337\337\0\362\362\0\345\345\0qq" - "\0\353\353\0\370\370\0\354\354\0^^\0\363\363\0\373\373\0\362\362\0JJ\0\371" - "\371\0\375\375\0\367\367\0""66\0\374\374\0\376\376\0\373\373\0\"\"\0\376" - "\376\0\376\376\0\375\375\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\375\375\0\376\376\0\376\376\0\375\375\0\360\360\0" - "\376\376\0\360\360\0\376\376\0\16\16\0\376\376\0\376\376\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0&&\0##\0FF\0""99\0``\0PP\0\213\213\0mm\0\237\237\0uu\0\275\275" - "\0\232\232\0\306\306\0\204\204\0\331\331\0\272\272\0\336\336\0\205\205\0" - "\345\345\0\320\320\0\352\352\0{{\0\355\355\0\337\337\0\362\362\0mm\0\363" - "\363\0\353\353\0\370\370\0\\\\\0\367\367\0\363\363\0\373\373\0II\0\373\373" - "\0\371\371\0\375\375\0""66\0\375\375\0\374\374\0\376\376\0\"\"\0\376\376" - "\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\376\376\0\376\376\0\376\376\0\375\375\0\376\376\0\375\375\0\375\375" - "\0\360\360\0\360\360\0\376\376\0\376\376\0\16\16\0\376\376\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0##\0""77\0""77\0""99\0gg\0\205\205\0\205\205\0ww\0\224\224\0" - "\310\310\0\310\310\0\247\247\0\240\240\0\354\354\0\354\354\0\306\306\0\227" - "\227\0\372\372\0\372\372\0\325\325\0\205\205\0\375\375\0\375\375\0\342\342" - "\0rr\0\376\376\0\376\376\0\354\354\0^^\0\376\376\0\376\376\0\363\363\0JJ" - "\0\376\376\0\376\376\0\370\370\0""66\0\376\376\0\376\376\0\374\374\0\"\"" - "\0\376\376\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\375\375" - "\0\376\376\0\376\376\0\376\376\0\362\362\0\376\376\0\376\376\0\376\376\0" - "\16\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22\0""77\0""77\0""11\0>>\0~~\0~~\0bb" - "\0__\0\261\261\0\261\261\0\212\212\0``\0\277\277\0\277\277\0\230\230\0SS" - "\0\275\275\0\275\275\0\233\233\0@@\0\273\273\0\273\273\0\240\240\0//\0\274" - "\274\0\274\274\0\252\252\0!!\0\301\301\0\301\301\0\266\266\0\25\25\0\311" - "\311\0\311\311\0\303\303\0\14\14\0\324\324\0\324\324\0\322\322\0\6\6\0\342" - "\342\0\342\342\0\341\341\0\1\1\0\361\361\0\361\361\0\361\361\0\15\15\0\15" - "\15\0\15\15\0\15\15\0\362\362\0\362\362\0\362\362\0\360\360\0\16\16\0\16" - "\16\0\16\16\0\2\2\0\376\376\0\376\376\0\376\376\0\16\16\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0&&\0""77\0""77\0\34\34\0SS\0kk\0\206\206\0BB\0\214\214\0\232\232" - "\0\302\302\0YY\0\250\250\0\255\255\0\340\340\0XX\0\264\264\0\264\264\0\355" - "\355\0SS\0\265\265\0\266\266\0\364\364\0JJ\0\270\270\0\272\272\0\371\371" - "\0AA\0\277\277\0\300\300\0\374\374\0""66\0\310\310\0\311\311\0\375\375\0" - "**\0\324\324\0\324\324\0\376\376\0\34\34\0\341\341\0\342\342\0\376\376\0" - "\15\15\0\361\361\0\361\361\0\376\376\0\361\361\0\15\15\0\15\15\0\376\376" - "\0\15\15\0\361\361\0\361\361\0\373\373\0\362\362\0\15\15\0\16\16\0\376\376" - "\0\16\16\0\361\361\0\376\376\0\376\376\0\376\376\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0&&\0&&\0""77\0))\0SS\0SS\0kk\0DD\0\205\205\0}}\0\222\222\0WW\0\241\241" - "\0\230\230\0\245\245\0XX\0\261\261\0\252\252\0\261\261\0SS\0\264\264\0\263" - "\263\0\265\265\0JJ\0\270\270\0\271\271\0\272\272\0AA\0\276\276\0\300\300" - "\0\300\300\0""66\0\310\310\0\311\311\0\311\311\0**\0\324\324\0\324\324\0" - "\324\324\0\34\34\0\341\341\0\342\342\0\342\342\0\15\15\0\361\361\0\361\361" - "\0\361\361\0\361\361\0\15\15\0\15\15\0\15\15\0\15\15\0\361\361\0\361\361" - "\0\361\361\0\362\362\0\15\15\0\16\16\0\16\16\0\16\16\0\361\361\0\376\376" - "\0\376\376\0\376\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&&\0&&\0&&\0))\0pp\0cc\0cc" - "\0QQ\0\261\261\0\244\244\0\244\244\0ll\0\335\335\0\323\323\0\323\323\0ww" - "\0\364\364\0\356\356\0\356\356\0ss\0\370\370\0\371\371\0\371\371\0ii\0\372" - "\372\0\375\375\0\375\375\0YY\0\374\374\0\376\376\0\376\376\0HH\0\375\375" - "\0\376\376\0\376\376\0""66\0\376\376\0\376\376\0\376\376\0\"\"\0\376\376" - "\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376" - "\0\375\375\0\376\376\0\376\376\0\376\376\0\361\361\0\376\376\0\376\376\0" - "\376\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0&&\0&&\0\40\40\0QQ\0pp\0pp\0KK" - "\0\215\215\0\261\261\0\261\261\0pp\0\274\274\0\337\337\0\337\337\0\200\200" - "\0\332\332\0\364\364\0\364\364\0}}\0\350\350\0\373\373\0\373\373\0oo\0\361" - "\361\0\375\375\0\375\375\0]]\0\367\367\0\376\376\0\376\376\0JJ\0\373\373" - "\0\376\376\0\376\376\0""66\0\375\375\0\376\376\0\376\376\0\"\"\0\376\376" - "\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376\0\376\376\0\376\376\0\376" - "\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376" - "\0\375\375\0\376\376\0\376\376\0\376\376\0\361\361\0\376\376\0\376\376\0" - "\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0&&\0&&\0\20\20\0""88\0WW\0pp\0" - "==\0ss\0\212\212\0\252\252\0dd\0\250\250\0\264\264\0\312\312\0rr\0\313\313" - "\0\315\315\0\331\331\0rr\0\340\340\0\331\331\0\340\340\0hh\0\355\355\0\341" - "\341\0\345\345\0YY\0\366\366\0\350\350\0\352\352\0HH\0\372\372\0\356\356" - "\0\357\357\0""66\0\375\375\0\364\364\0\364\364\0\"\"\0\376\376\0\371\371" - "\0\371\371\0\16\16\0\376\376\0\375\375\0\375\375\0\376\376\0\376\376\0\361" - "\361\0\362\362\0\376\376\0\376\376\0\16\16\0\16\16\0\376\376\0\375\375\0" - "\376\376\0\375\375\0\374\374\0\360\360\0\376\376\0\376\376\0\360\360\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0&&\0\40\40\0""88\0""88\0WW\0BB\0ff" - "\0ZZ\0}}\0^^\0\226\226\0\201\201\0\241\241\0nn\0\301\301\0\246\246\0\277" - "\277\0rr\0\333\333\0\301\301\0\321\321\0ii\0\353\353\0\323\323\0\335\335" - "\0[[\0\365\365\0\341\341\0\346\346\0II\0\372\372\0\353\353\0\356\356\0""6" - "6\0\375\375\0\363\363\0\364\364\0\"\"\0\376\376\0\371\371\0\371\371\0\16" - "\16\0\376\376\0\375\375\0\375\375\0\376\376\0\376\376\0\361\361\0\361\361" - "\0\376\376\0\376\376\0\16\16\0\16\16\0\376\376\0\374\374\0\375\375\0\374" - "\374\0\374\374\0\361\361\0\376\376\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\24\24\0\24\24\0\24\24\0\40\40\0HH\0""88\0""88\0BB\0~~\0ff\0ff\0" - "^^\0\256\256\0\226\226\0\226\226\0qq\0\325\325\0\277\277\0\277\277\0ss\0" - "\350\350\0\331\331\0\331\331\0jj\0\363\363\0\353\353\0\353\353\0[[\0\371" - "\371\0\365\365\0\365\365\0II\0\374\374\0\372\372\0\372\372\0""66\0\375\375" - "\0\375\375\0\375\375\0\"\"\0\376\376\0\376\376\0\376\376\0\16\16\0\376\376" - "\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0" - "\376\376\0\376\376\0\376\376\0\376\376\0\374\374\0\374\374\0\374\374\0\376" - "\376\0\361\361\0\360\360\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\24\24\0\24\24\0\24\24\0\40\40\0HH\0HH\0""88\0BB\0~~\0~~\0ff\0^^\0\263" - "\263\0\263\263\0\231\231\0nn\0\330\330\0\330\330\0\274\274\0pp\0\353\353" - "\0\353\353\0\324\324\0hh\0\365\365\0\365\365\0\345\345\0ZZ\0\373\373\0\373" - "\373\0\361\361\0II\0\375\375\0\375\375\0\370\370\0""66\0\376\376\0\376\376" - "\0\374\374\0\"\"\0\376\376\0\376\376\0\376\376\0\16\16\0\376\376\0\376\376" - "\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0\376\376\0" - "\376\376\0\374\374\0\374\374\0\376\376\0\376\376\0\361\361\0\360\360\0\360" - "\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0\0\0" - "\0\0\0\0((\0HH\0\40\40\0\25\25\0QQ\0\207\207\0KK\0--\0}}\0\262\262\0bb\0" - """44\0\235\235\0\320\320\0ff\0""00\0\257\257\0\341\341\0cc\0))\0\272\272" - "\0\354\354\0ZZ\0\37\37\0\303\303\0\363\363\0OO\0\26\26\0\314\314\0\370\370" - "\0AA\0\15\15\0\326\326\0\373\373\0""22\0\6\6\0\343\343\0\375\375\0!!\0\1" - "\1\0\362\362\0\376\376\0\16\16\0\16\16\0\16\16\0\375\375\0\375\375\0\375" - "\375\0\376\376\0\362\362\0\360\360\0\361\361\0\376\376\0\14\14\0\0\0\0\0" - "\0\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24" - "\0\24\24\0\0\0\0\0\0\0((\0((\0\0\0\0\0\0\0<<\0<<\0\0\0\0\0\0\0PP\0PP\0\10" - "\10\0\4\4\0dd\0dd\0\14\14\0\6\6\0xx\0xx\0\14\14\0\5\5\0\214\214\0\214\214" - "\0\13\13\0\4\4\0\240\240\0\240\240\0\10\10\0\2\2\0\264\264\0\264\264\0\5" - "\5\0\1\1\0\310\310\0\310\310\0\3\3\0\0\0\0\334\334\0\334\334\0\1\1\0\0\0" - "\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\0\0\0\0\0\14" - "\14\0\14\14\0\0\0\0\0\0\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0\24\24\0\0\0\0\0\0\0((\0((\0\0\0\0\0\0" - "\0<<\0<<\0\0\0\0\0\0\0XX\0XX\0\0\0\0\0\0\0pp\0pp\0\0\0\0\0\0\0\204\204\0" - "\204\204\0\0\0\0\0\0\0\227\227\0\227\227\0\0\0\0\0\0\0\250\250\0\250\250" - "\0\0\0\0\0\0\0\271\271\0\271\271\0\0\0\0\0\0\0\313\313\0\313\313\0\0\0\0" - "\0\0\0\335\335\0\335\335\0\0\0\0\0\0\0\360\360\0\360\360\0\0\0\0\0\0\0\1" - "\1\0\1\1\0\0\0\0\0\0\0\14\14\0\14\14\0\0\0\0\0\0\0\360\360\0\360\360\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0" - "\24\24\0\24\24\0\0\0\0((\0((\0((\0\0\0\0<<\0HH\0HH\0\10\10\0PP\0dd\0dd\0" - "\14\14\0dd\0||\0||\0\14\14\0xx\0\221\221\0\221\221\0\13\13\0\214\214\0\243" - "\243\0\243\243\0\10\10\0\240\240\0\264\264\0\264\264\0\5\5\0\264\264\0\303" - "\303\0\303\303\0\3\3\0\310\310\0\322\322\0\322\322\0\1\1\0\334\334\0\341" - "\341\0\341\341\0\0\0\0\360\360\0\361\361\0\361\361\0\1\1\0\0\0\0\14\14\0" - "\14\14\0\14\14\0\0\0\0\360\360\0\360\360\0\360\360\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\24\0" - "\24\24\0\20\20\0\20\20\0""88\0""88\0**\0**\0ZZ\0ZZ\0==\0==\0yy\0yy\0II\0" - "II\0\224\224\0\224\224\0NN\0NN\0\254\254\0\254\254\0MM\0MM\0\302\302\0\302" - "\302\0HH\0HH\0\324\324\0\324\324\0>>\0>>\0\343\343\0\343\343\0""00\0""00" - "\0\356\356\0\356\356\0\40\40\0\40\40\0\367\367\0\367\367\0\16\16\0\16\16" - "\0\374\374\0\374\374\0\374\374\0\374\374\0\360\360\0\360\360\0\360\360\0" - "\360\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", -}; - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_blitblend.c b/3rdparty/SDL-1.3.0-5387/test/automated/common/img_blitblend.c deleted file mode 100644 index 4f13de18e3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_blitblend.c +++ /dev/null @@ -1,2690 +0,0 @@ -/* GIMP RGB C-Source image dump (alpha.c) */ - -static const SurfaceImage_t img_blendAdd = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0dd\0\310\310\0\310\310\0\310\310\0\310" - "\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310" - "\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0" - "\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310" - "\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310" - "\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0" - "\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310" - "\310\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0dd\0dd\0dd\0dd\0\310\310\0\310\310\0\310\310\0\310\310\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310" - "\0\310\310\0\310\310\0\310\310\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0dd\0\310\310\0\310\310\0\310\310\0\310\310" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\310\310\0\310\310\0\310\310\0\310\310\0dd\0dd\0dd" - "\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0dd\0\310\310\0\310\310\0" - "\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\310" - "\310\0\310\310\0\310\310\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0" - "dd\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0" - "dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0dd\0\310\310\0\310\310\0\310\310" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\310\310\0\310\310\0\310\310\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd" - "\0\310\310\0\310\310\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310" - "\310\0\310\310\0\310\310\0\310\310\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\310\310\0\310\310" - "\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310" - "\310\0\310\310\0\310\310\0\310\310\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\310\310\0\310\310\0\310" - "\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\310\310\0\310\310\0\310\310\0dd\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\310\310\0\310" - "\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\310\310\0\310\310\0\310\310\0dd\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310" - "\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\310\310" - "\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\310\310\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0dd\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310" - "\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\310\310\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0dd\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\310\310\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0dd\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310" - "\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310" - "\310\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310" - "\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310" - "\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\310" - "\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\310" - "\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\377\377\0\377\377\0\310\310" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\310\310\0\377\377\0\377\377\0\310\310\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\0\310\310" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0\310\310" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\310\310\0\310\310\0\310\310\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310" - "\0\310\310\0\310\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0dd\0\310\310\0\310\310\0\310\310\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310" - "\310\0\310\310\0\310\310\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\310\310\0\310\310\0dd\0\310\310\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\310\310\0" - "dd\0\310\310\0\310\310\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\310\310\0\310\310\0\310\310\0\310\310" - "\0\377\377\0\377\377\0\377\377\0\310\310\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\310\310\0\377\377\0\377\377\0\377\377\0\310\310\0\310\310\0\310" - "\310\0\310\310\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0\310\310\0\377\377\0\310\310\0\310\310" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\310\310\0\310\310\0\377\377\0\310\310\0dd" - "\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0dd\0dd\0dd\0\310\310\0\377\377\0\377\377\0\310\310\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\310\310\0\377\377\0\377\377\0\310\310\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd" - "\0\0\0\0\0\0\0dd\0\377\377\0\310\310\0\310\310\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\310\310\0\310\310\0\377\377\0dd\0\0" - "\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0" - "\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0" - "dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0" - "dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0" - "dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\0\0\0" - "\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0\310\310\0\310\310\0\0\0\0" - "\0\0\0\310\310\0\310\310\0\0\0\0\0\0\0\310\310\0\310\310\0\0\0\0\0\0\0\310" - "\310\0\310\310\0\0\0\0\0\0\0\310\310\0\310\310\0\0\0\0\0\0\0\310\310\0\310" - "\310\0\0\0\0\0\0\0\310\310\0\310\310\0\0\0\0\0\0\0\310\310\0\310\310\0\0" - "\0\0\0\0\0\310\310\0\310\310\0\0\0\0\0\0\0\310\310\0\310\310\0\0\0\0\0\0" - "\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0\0\0\0dd\0dd\0dd\0\0\0\0dd\0\310\310\0\310" - "\310\0dd\0dd\0\310\310\0\310\310\0dd\0dd\0\310\310\0\310\310\0dd\0dd\0\310" - "\310\0\310\310\0dd\0dd\0\310\310\0\310\310\0dd\0dd\0\310\310\0\310\310\0" - "dd\0dd\0\310\310\0\310\310\0dd\0dd\0\310\310\0\310\310\0dd\0dd\0\310\310" - "\0\310\310\0dd\0dd\0\310\310\0\310\310\0dd\0dd\0\310\310\0\310\310\0dd\0" - "\0\0\0dd\0dd\0dd\0\0\0\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0dd\0\310\310\0\310\310\0\310\310\0\310" - "\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310" - "\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0" - "\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310" - "\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310" - "\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0" - "\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310\310\0\310" - "\310\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", -}; - -static const SurfaceImage_t img_blendBlend = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0<<\0<<\0\240\240\0\240\240\0aa\0aa\0\240" - "\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0" - "aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240" - "\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0" - "aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240" - "\240\0\240\240\0\240\240\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0<<\0\240\240\0\240\240\0\240\240" - "\0aa\0\305\305\0\305\305\0\305\305\0ww\0\305\305\0\305\305\0\305\305\0ww" - "\0\305\305\0\305\305\0\305\305\0ww\0\305\305\0\305\305\0\305\305\0ww\0\305" - "\305\0\305\305\0\305\305\0ww\0\305\305\0\305\305\0\305\305\0ww\0\305\305" - "\0\305\305\0\305\305\0ww\0\305\305\0\305\305\0\305\305\0ww\0\305\305\0\305" - "\305\0\305\305\0ww\0\305\305\0\305\305\0\305\305\0ww\0\305\305\0\305\305" - "\0\305\305\0\305\305\0\240\240\0\240\240\0\240\240\0\240\240\0dd\0dd\0dd" - "\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0<<\0\240\240" - "\0\240\240\0\240\240\0aa\0\305\305\0\305\305\0\305\305\0ww\0\333\333\0\333" - "\333\0\305\305\0ww\0\333\333\0\333\333\0\305\305\0ww\0\333\333\0\333\333" - "\0\305\305\0ww\0\333\333\0\333\333\0\305\305\0ww\0\333\333\0\333\333\0\305" - "\305\0ww\0\333\333\0\333\333\0\305\305\0ww\0\333\333\0\333\333\0\305\305" - "\0ww\0\333\333\0\333\333\0\305\305\0ww\0\333\333\0\333\333\0\305\305\0ww" - "\0\333\333\0\333\333\0\305\305\0\305\305\0\305\305\0\305\305\0\240\240\0" - "\240\240\0\240\240\0\240\240\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0dd\0dd\0dd\0<<\0aa\0aa\0aa\0::\0HH\0HH\0HH\0++\0PP\0PP\0PP\0""00\0PP" - "\0PP\0PP\0""00\0PP\0PP\0PP\0""00\0PP\0PP\0PP\0""00\0PP\0PP\0PP\0""00\0PP" - "\0PP\0PP\0""00\0PP\0PP\0PP\0""00\0PP\0PP\0PP\0""00\0PP\0PP\0PP\0""00\0PP" - "\0PP\0PP\0PP\0HH\0HH\0HH\0HH\0aa\0aa\0aa\0aa\0dd\0dd\0dd\0dd\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0dd\0dd\0dd\0$$\0aa\0\305\305\0\305\305\0``\0\205\205\0\351\351\0" - "\351\351\0||\0\222\222\0\321\321\0\321\321\0\177\177\0\225\225\0\324\324" - "\0\321\321\0\177\177\0\225\225\0\324\324\0\321\321\0\177\177\0\225\225\0" - "\324\324\0\321\321\0\177\177\0\225\225\0\324\324\0\321\321\0\177\177\0\225" - "\225\0\324\324\0\321\321\0\177\177\0\225\225\0\324\324\0\321\321\0\177\177" - "\0\225\225\0\324\324\0\321\321\0\177\177\0\225\225\0\324\324\0\321\321\0" - "\177\177\0\225\225\0\324\324\0\321\321\0\222\222\0\222\222\0\321\321\0\314" - "\314\0\351\351\0\351\351\0\254\254\0\236\236\0\305\305\0\305\305\0aa\0<<" - "\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0<<\0dd\0\240\240\0\240\240\0aa\0\255\255" - "\0\322\322\0\322\322\0\177\177\0\315\315\0\343\343\0\343\343\0\211\211\0" - "\313\313\0\346\346\0\346\346\0\211\211\0\313\313\0\346\346\0\346\346\0\211" - "\211\0\313\313\0\346\346\0\346\346\0\211\211\0\313\313\0\346\346\0\346\346" - "\0\211\211\0\313\313\0\346\346\0\346\346\0\211\211\0\313\313\0\346\346\0" - "\346\346\0\211\211\0\313\313\0\346\346\0\346\346\0\211\211\0\313\313\0\346" - "\346\0\346\346\0\211\211\0\313\313\0\346\346\0\346\346\0\211\211\0\320\320" - "\0\327\327\0\327\327\0\322\322\0\276\276\0\322\322\0\322\322\0\305\305\0" - "yy\0\210\210\0\210\210\0dd\0<<\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0<<\0\210\210\0\240" - "\240\0\240\240\0aa\0\266\266\0\322\322\0\322\322\0\205\205\0\327\327\0\343" - "\343\0\343\343\0\215\215\0\346\346\0\357\357\0\331\331\0\222\222\0\347\347" - "\0\357\357\0\331\331\0\222\222\0\347\347\0\357\357\0\331\331\0\222\222\0" - "\347\347\0\357\357\0\331\331\0\222\222\0\347\347\0\357\357\0\331\331\0\222" - "\222\0\347\347\0\357\357\0\331\331\0\222\222\0\347\347\0\357\357\0\331\331" - "\0\222\222\0\347\347\0\357\357\0\331\331\0\222\222\0\347\347\0\357\357\0" - "\331\331\0\222\222\0\357\357\0\346\346\0\320\320\0\351\351\0\327\327\0\343" - "\343\0\276\276\0\333\333\0\322\322\0\266\266\0yy\0\240\240\0\210\210\0\240" - "\240\0<<\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0dd\0<<\0\240\240\0\210\210\0\240\240\0aa\0ww\0nn\0\177" - "\177\0MM\0SS\0OO\0SS\0""22\0WW\0TT\0XX\0""55\0UU\0UU\0XX\0""55\0UU\0UU\0" - "XX\0""55\0UU\0UU\0XX\0""55\0UU\0UU\0XX\0""55\0UU\0UU\0XX\0""55\0UU\0UU\0" - "XX\0""55\0UU\0UU\0XX\0""55\0UU\0UU\0XX\0""55\0UU\0XX\0TT\0TT\0LL\0OO\0SS" - "\0SS\0ss\0\177\177\0nn\0nn\0yy\0\210\210\0\240\240\0\240\240\0<<\0dd\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<" - "\0\240\240\0\240\240\0\210\210\0HH\0\205\205\0\351\351\0\333\333\0pp\0\225" - "\225\0\371\371\0\363\363\0\202\202\0\231\231\0\330\330\0\325\325\0\203\203" - "\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0" - "\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324" - "\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331" - "\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0" - "\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\325\325\0\231\231\0\231" - "\231\0\330\330\0\323\323\0\371\371\0\371\371\0\274\274\0\257\257\0\351\351" - "\0\351\351\0\205\205\0``\0\240\240\0\240\240\0\240\240\0<<\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<\0\240\240" - "\0\240\240\0RR\0\207\207\0\304\304\0\304\304\0nn\0\275\275\0\343\343\0\343" - "\343\0\205\205\0\324\324\0\352\352\0\352\352\0\214\214\0\316\316\0\352\352" - "\0\352\352\0\213\213\0\316\316\0\352\352\0\352\352\0\213\213\0\316\316\0" - "\352\352\0\352\352\0\213\213\0\316\316\0\352\352\0\352\352\0\213\213\0\316" - "\316\0\352\352\0\352\352\0\213\213\0\316\316\0\352\352\0\352\352\0\213\213" - "\0\316\316\0\352\352\0\352\352\0\213\213\0\316\316\0\352\352\0\352\352\0" - "\213\213\0\316\316\0\352\352\0\352\352\0\214\214\0\324\324\0\336\336\0\336" - "\336\0\331\331\0\310\310\0\343\343\0\343\343\0\325\325\0\217\217\0\254\254" - "\0\254\254\0\207\207\0aa\0\240\240\0\240\240\0<<\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\240\240\0aa" - "\0\225\225\0\304\304\0\304\304\0\205\205\0\276\276\0\343\343\0\340\340\0" - "\222\222\0\333\333\0\352\352\0\351\351\0\226\226\0\347\347\0\362\362\0\333" - "\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361" - "\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0" - "\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351" - "\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230" - "\0\351\351\0\361\361\0\333\333\0\230\230\0\362\362\0\351\351\0\323\323\0" - "\366\366\0\336\336\0\351\351\0\304\304\0\351\351\0\343\343\0\304\304\0\217" - "\217\0\333\333\0\254\254\0\266\266\0aa\0\240\240\0\240\240\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0aa" - "\0\305\305\0\225\225\0\304\304\0ww\0\205\205\0ss\0\211\211\0RR\0VV\0PP\0" - "VV\0""33\0XX\0UU\0YY\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0YY\0UU\0UU\0MM\0QQ\0UU\0UU\0ww\0\211\211" - "\0ww\0||\0\217\217\0\254\254\0\266\266\0\305\305\0aa\0\240\240\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aa\0\305" - "\305\0\305\305\0\225\225\0UU\0\222\222\0\366\366\0\340\340\0tt\0\231\231" - "\0\375\375\0\364\364\0\203\203\0\231\231\0\331\331\0\326\326\0\203\203\0" - "\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203" - "\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324" - "\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0" - "\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331" - "\331\0\324\324\0\203\203\0\231\231\0\331\331\0\326\326\0\231\231\0\231\231" - "\0\331\331\0\324\324\0\373\373\0\375\375\0\300\300\0\263\263\0\361\361\0" - "\366\366\0\222\222\0mm\0\266\266\0\305\305\0\305\305\0aa\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<\0\305\305\0" - "\305\305\0``\0\214\214\0\321\321\0\321\321\0rr\0\277\277\0\346\346\0\346" - "\346\0\206\206\0\324\324\0\353\353\0\353\353\0\215\215\0\316\316\0\353\353" - "\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0" - "\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316" - "\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213" - "\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0" - "\213\213\0\316\316\0\353\353\0\353\353\0\215\215\0\324\324\0\337\337\0\337" - "\337\0\331\331\0\312\312\0\346\346\0\346\346\0\330\330\0\224\224\0\271\271" - "\0\271\271\0\217\217\0nn\0\305\305\0\305\305\0<<\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\305\305\0ww" - "\0\225\225\0\304\304\0\314\314\0\222\222\0\277\277\0\343\343\0\342\342\0" - "\226\226\0\333\333\0\352\352\0\351\351\0\227\227\0\350\350\0\362\362\0\333" - "\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361" - "\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0" - "\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351" - "\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230" - "\0\351\351\0\361\361\0\333\333\0\230\230\0\362\362\0\351\351\0\323\323\0" - "\370\370\0\336\336\0\352\352\0\306\306\0\354\354\0\344\344\0\305\305\0\227" - "\227\0\343\343\0\254\254\0\266\266\0ww\0\305\305\0\240\240\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0aa" - "\0\333\333\0\236\236\0\304\304\0ww\0\210\210\0tt\0\211\211\0RR\0VV\0PP\0" - "VV\0""33\0XX\0UU\0YY\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0YY\0UU\0UU\0MM\0QQ\0UU\0UU\0ww\0\211\211" - "\0ww\0}}\0\217\217\0\254\254\0\276\276\0\333\333\0aa\0\240\240\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aa\0\305" - "\305\0\305\305\0\236\236\0XX\0\222\222\0\366\366\0\341\341\0tt\0\231\231" - "\0\375\375\0\364\364\0\203\203\0\231\231\0\331\331\0\326\326\0\203\203\0" - "\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203" - "\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324" - "\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0" - "\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331" - "\331\0\324\324\0\203\203\0\231\231\0\331\331\0\326\326\0\231\231\0\231\231" - "\0\331\331\0\324\324\0\373\373\0\375\375\0\300\300\0\263\263\0\361\361\0" - "\366\366\0\222\222\0pp\0\276\276\0\305\305\0\305\305\0aa\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<\0\305\305\0" - "\305\305\0``\0\217\217\0\324\324\0\324\324\0rr\0\300\300\0\347\347\0\347" - "\347\0\206\206\0\324\324\0\353\353\0\353\353\0\215\215\0\316\316\0\353\353" - "\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0" - "\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316" - "\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213" - "\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0" - "\213\213\0\316\316\0\353\353\0\353\353\0\215\215\0\324\324\0\337\337\0\337" - "\337\0\332\332\0\312\312\0\347\347\0\347\347\0\330\330\0\224\224\0\274\274" - "\0\274\274\0\222\222\0nn\0\305\305\0\305\305\0<<\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\305\305\0ww" - "\0\225\225\0\304\304\0\314\314\0\225\225\0\300\300\0\344\344\0\342\342\0" - "\226\226\0\333\333\0\352\352\0\351\351\0\227\227\0\350\350\0\362\362\0\333" - "\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361" - "\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0" - "\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351" - "\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230" - "\0\351\351\0\361\361\0\333\333\0\230\230\0\362\362\0\351\351\0\323\323\0" - "\370\370\0\337\337\0\352\352\0\306\306\0\355\355\0\345\345\0\306\306\0\231" - "\231\0\343\343\0\254\254\0\266\266\0ww\0\305\305\0\240\240\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0aa" - "\0\333\333\0\236\236\0\304\304\0ww\0\210\210\0tt\0\211\211\0RR\0VV\0PP\0" - "VV\0""33\0XX\0UU\0YY\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0YY\0UU\0UU\0MM\0QQ\0UU\0UU\0ww\0\211\211" - "\0ww\0}}\0\217\217\0\254\254\0\276\276\0\333\333\0aa\0\240\240\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aa\0\305" - "\305\0\305\305\0\236\236\0XX\0\222\222\0\366\366\0\341\341\0tt\0\231\231" - "\0\375\375\0\364\364\0\203\203\0\231\231\0\331\331\0\326\326\0\203\203\0" - "\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203" - "\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324" - "\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0" - "\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331" - "\331\0\324\324\0\203\203\0\231\231\0\331\331\0\326\326\0\231\231\0\231\231" - "\0\331\331\0\324\324\0\373\373\0\375\375\0\300\300\0\263\263\0\361\361\0" - "\366\366\0\222\222\0pp\0\276\276\0\305\305\0\305\305\0aa\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<\0\305\305\0" - "\305\305\0``\0\217\217\0\324\324\0\324\324\0rr\0\300\300\0\347\347\0\347" - "\347\0\206\206\0\324\324\0\353\353\0\353\353\0\215\215\0\316\316\0\353\353" - "\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0" - "\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316" - "\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213" - "\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0" - "\213\213\0\316\316\0\353\353\0\353\353\0\215\215\0\324\324\0\337\337\0\337" - "\337\0\332\332\0\312\312\0\347\347\0\347\347\0\330\330\0\224\224\0\274\274" - "\0\274\274\0\222\222\0nn\0\305\305\0\305\305\0<<\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\305\305\0ww" - "\0\225\225\0\304\304\0\314\314\0\225\225\0\300\300\0\344\344\0\342\342\0" - "\226\226\0\333\333\0\352\352\0\351\351\0\227\227\0\350\350\0\362\362\0\333" - "\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361" - "\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0" - "\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351" - "\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230" - "\0\351\351\0\361\361\0\333\333\0\230\230\0\362\362\0\351\351\0\323\323\0" - "\370\370\0\337\337\0\352\352\0\306\306\0\355\355\0\345\345\0\306\306\0\231" - "\231\0\343\343\0\254\254\0\266\266\0ww\0\305\305\0\240\240\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0aa" - "\0\333\333\0\236\236\0\304\304\0ww\0\210\210\0tt\0\211\211\0RR\0VV\0PP\0" - "VV\0""33\0XX\0UU\0YY\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0YY\0UU\0UU\0MM\0QQ\0UU\0UU\0ww\0\211\211" - "\0ww\0}}\0\217\217\0\254\254\0\276\276\0\333\333\0aa\0\240\240\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aa\0\305" - "\305\0\305\305\0\236\236\0XX\0\222\222\0\366\366\0\341\341\0tt\0\231\231" - "\0\375\375\0\364\364\0\203\203\0\231\231\0\331\331\0\326\326\0\203\203\0" - "\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203" - "\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324" - "\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0" - "\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331" - "\331\0\324\324\0\203\203\0\231\231\0\331\331\0\326\326\0\231\231\0\231\231" - "\0\331\331\0\324\324\0\373\373\0\375\375\0\300\300\0\263\263\0\361\361\0" - "\366\366\0\222\222\0pp\0\276\276\0\305\305\0\305\305\0aa\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<\0\305\305\0" - "\305\305\0``\0\217\217\0\324\324\0\324\324\0rr\0\300\300\0\347\347\0\347" - "\347\0\206\206\0\324\324\0\353\353\0\353\353\0\215\215\0\316\316\0\353\353" - "\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0" - "\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316" - "\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213" - "\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0" - "\213\213\0\316\316\0\353\353\0\353\353\0\215\215\0\324\324\0\337\337\0\337" - "\337\0\332\332\0\312\312\0\347\347\0\347\347\0\330\330\0\224\224\0\274\274" - "\0\274\274\0\222\222\0nn\0\305\305\0\305\305\0<<\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\305\305\0ww" - "\0\225\225\0\304\304\0\314\314\0\225\225\0\300\300\0\344\344\0\342\342\0" - "\226\226\0\333\333\0\352\352\0\351\351\0\227\227\0\350\350\0\362\362\0\333" - "\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361" - "\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0" - "\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351" - "\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230" - "\0\351\351\0\361\361\0\333\333\0\230\230\0\362\362\0\351\351\0\323\323\0" - "\370\370\0\337\337\0\352\352\0\306\306\0\355\355\0\345\345\0\306\306\0\231" - "\231\0\343\343\0\254\254\0\266\266\0ww\0\305\305\0\240\240\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0aa" - "\0\333\333\0\236\236\0\304\304\0ww\0\210\210\0tt\0\211\211\0RR\0VV\0PP\0" - "VV\0""33\0XX\0UU\0YY\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0XX\0""66\0UU\0UU\0" - "XX\0""66\0UU\0UU\0XX\0""66\0UU\0YY\0UU\0UU\0MM\0QQ\0UU\0UU\0ww\0\211\211" - "\0ww\0}}\0\217\217\0\254\254\0\276\276\0\333\333\0aa\0\240\240\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aa\0\305" - "\305\0\305\305\0\236\236\0XX\0\222\222\0\366\366\0\341\341\0tt\0\231\231" - "\0\375\375\0\364\364\0\203\203\0\231\231\0\331\331\0\326\326\0\203\203\0" - "\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203" - "\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0\324\324" - "\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331\331\0" - "\324\324\0\203\203\0\231\231\0\331\331\0\324\324\0\203\203\0\231\231\0\331" - "\331\0\324\324\0\203\203\0\231\231\0\331\331\0\326\326\0\231\231\0\231\231" - "\0\331\331\0\324\324\0\373\373\0\375\375\0\300\300\0\263\263\0\361\361\0" - "\366\366\0\222\222\0pp\0\276\276\0\305\305\0\305\305\0aa\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<<\0\305\305\0" - "\305\305\0``\0\217\217\0\324\324\0\324\324\0rr\0\300\300\0\347\347\0\347" - "\347\0\206\206\0\324\324\0\353\353\0\353\353\0\215\215\0\316\316\0\353\353" - "\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0" - "\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213\0\316" - "\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0\213\213" - "\0\316\316\0\353\353\0\353\353\0\213\213\0\316\316\0\353\353\0\353\353\0" - "\213\213\0\316\316\0\353\353\0\353\353\0\215\215\0\324\324\0\337\337\0\337" - "\337\0\332\332\0\312\312\0\347\347\0\347\347\0\330\330\0\224\224\0\274\274" - "\0\274\274\0\222\222\0nn\0\305\305\0\305\305\0<<\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\305\305\0ww" - "\0\225\225\0\304\304\0\314\314\0\225\225\0\300\300\0\344\344\0\342\342\0" - "\226\226\0\333\333\0\352\352\0\351\351\0\227\227\0\350\350\0\362\362\0\333" - "\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361" - "\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351\351\0" - "\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230\0\351" - "\351\0\361\361\0\333\333\0\230\230\0\351\351\0\361\361\0\333\333\0\230\230" - "\0\351\351\0\361\361\0\333\333\0\230\230\0\362\362\0\351\351\0\323\323\0" - "\370\370\0\337\337\0\352\352\0\306\306\0\355\355\0\345\345\0\306\306\0\231" - "\231\0\343\343\0\254\254\0\266\266\0ww\0\305\305\0\240\240\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0aa" - "\0\333\333\0\236\236\0\304\304\0ww\0\340\340\0\300\300\0\343\343\0\210\210" - "\0\354\354\0\333\333\0\352\352\0\215\215\0\361\361\0\350\350\0\362\362\0" - "\223\223\0\351\351\0\351\351\0\361\361\0\223\223\0\351\351\0\351\351\0\361" - "\361\0\223\223\0\351\351\0\351\351\0\361\361\0\223\223\0\351\351\0\351\351" - "\0\361\361\0\223\223\0\351\351\0\351\351\0\361\361\0\223\223\0\351\351\0" - "\351\351\0\361\361\0\223\223\0\351\351\0\351\351\0\361\361\0\223\223\0\351" - "\351\0\351\351\0\361\361\0\223\223\0\351\351\0\362\362\0\351\351\0\351\351" - "\0\323\323\0\336\336\0\351\351\0\351\351\0\304\304\0\343\343\0\305\305\0" - "\317\317\0\217\217\0\254\254\0\276\276\0\333\333\0aa\0\240\240\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aa\0\305" - "\305\0\305\305\0\236\236\0\222\222\0\361\361\0\361\361\0\316\316\0\230\230" - "\0\373\373\0\373\373\0\344\344\0\231\231\0\375\375\0\375\375\0\357\357\0" - "\231\231\0\375\375\0\375\375\0\347\347\0\231\231\0\375\375\0\375\375\0\347" - "\347\0\231\231\0\375\375\0\375\375\0\347\347\0\231\231\0\375\375\0\375\375" - "\0\347\347\0\231\231\0\375\375\0\375\375\0\347\347\0\231\231\0\375\375\0" - "\375\375\0\347\347\0\231\231\0\375\375\0\375\375\0\347\347\0\231\231\0\375" - "\375\0\375\375\0\347\347\0\231\231\0\375\375\0\375\375\0\360\360\0\373\373" - "\0\375\375\0\375\375\0\347\347\0\367\367\0\373\373\0\373\373\0\326\326\0" - "\351\351\0\361\361\0\361\361\0\271\271\0\276\276\0\305\305\0\305\305\0aa" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0<<\0\305\305\0\305\305\0\236\236\0HH\0\271\271\0\271\271\0\224\224\0VV" - "\0\277\277\0\277\277\0\251\251\0DD\0\252\252\0\252\252\0\235\235\0FF\0\253" - "\253\0\253\253\0\224\224\0EE\0\253\253\0\253\253\0\224\224\0EE\0\253\253" - "\0\253\253\0\224\224\0EE\0\253\253\0\253\253\0\224\224\0EE\0\253\253\0\253" - "\253\0\224\224\0EE\0\253\253\0\253\253\0\224\224\0EE\0\253\253\0\253\253" - "\0\224\224\0EE\0\253\253\0\253\253\0\224\224\0EE\0\253\253\0\253\253\0\235" - "\235\0rr\0uu\0uu\0^^\0\272\272\0\277\277\0\277\277\0\230\230\0\205\205\0" - "\222\222\0\222\222\0MM\0\266\266\0\305\305\0\305\305\0<<\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\305" - "\305\0\305\305\0RR\0\236\236\0\254\254\0\361\361\0VV\0\267\267\0\263\263" - "\0\356\356\0ee\0\247\247\0\244\244\0\356\356\0^^\0\251\251\0\247\247\0\365" - "\365\0bb\0\242\242\0\247\247\0\365\365\0bb\0\242\242\0\247\247\0\365\365" - "\0bb\0\242\242\0\247\247\0\365\365\0bb\0\242\242\0\247\247\0\365\365\0bb" - "\0\242\242\0\247\247\0\365\365\0bb\0\242\242\0\247\247\0\365\365\0bb\0\242" - "\242\0\247\247\0\365\365\0bb\0\242\242\0\247\247\0\365\365\0\252\252\0ee" - "\0jj\0\345\345\0tt\0\246\246\0\251\251\0\321\321\0\272\272\0ff\0\222\222" - "\0\322\322\0ww\0\210\210\0\305\305\0\305\305\0\240\240\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\240\240" - "\0\305\305\0``\0\236\236\0\236\236\0\254\254\0VV\0\264\264\0\254\254\0\261" - "\261\0dd\0\246\246\0\240\240\0\243\243\0^^\0\251\251\0\246\246\0\246\246" - "\0bb\0\242\242\0\246\246\0\246\246\0bb\0\242\242\0\246\246\0\246\246\0bb" - "\0\242\242\0\246\246\0\246\246\0bb\0\242\242\0\246\246\0\246\246\0bb\0\242" - "\242\0\246\246\0\246\246\0bb\0\242\242\0\246\246\0\246\246\0bb\0\242\242" - "\0\246\246\0\246\246\0bb\0\242\242\0\246\246\0\246\246\0\251\251\0dd\0hh" - "\0hh\0pp\0\243\243\0\240\240\0\236\236\0\264\264\0cc\0\177\177\0ww\0ww\0" - "\225\225\0\305\305\0\240\240\0\240\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\240\0\240\240\0\240\240\0``" - "\0\351\351\0\333\333\0\333\333\0||\0\366\366\0\361\361\0\361\361\0\211\211" - "\0\373\373\0\371\371\0\371\371\0\221\221\0\375\375\0\374\374\0\374\374\0" - "\224\224\0\365\365\0\374\374\0\374\374\0\224\224\0\365\365\0\374\374\0\374" - "\374\0\224\224\0\365\365\0\374\374\0\374\374\0\224\224\0\365\365\0\374\374" - "\0\374\374\0\224\224\0\365\365\0\374\374\0\374\374\0\224\224\0\365\365\0" - "\374\374\0\374\374\0\224\224\0\365\365\0\374\374\0\374\374\0\224\224\0\365" - "\365\0\374\374\0\374\374\0\375\375\0\356\356\0\371\371\0\371\371\0\372\372" - "\0\340\340\0\361\361\0\361\361\0\364\364\0\307\307\0\333\333\0\333\333\0" - "\351\351\0\225\225\0\240\240\0\240\240\0\240\240\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\240\240\0\240\240" - "\0aa\0\304\304\0\351\351\0\351\351\0\205\205\0\340\340\0\366\366\0\366\366" - "\0\222\222\0\355\355\0\373\373\0\373\373\0\227\227\0\364\364\0\375\375\0" - "\375\375\0\230\230\0\360\360\0\375\375\0\375\375\0\230\230\0\360\360\0\375" - "\375\0\375\375\0\230\230\0\360\360\0\375\375\0\375\375\0\230\230\0\360\360" - "\0\375\375\0\375\375\0\230\230\0\360\360\0\375\375\0\375\375\0\230\230\0" - "\360\360\0\375\375\0\375\375\0\230\230\0\360\360\0\375\375\0\375\375\0\230" - "\230\0\360\360\0\375\375\0\375\375\0\373\373\0\356\356\0\373\373\0\373\373" - "\0\367\367\0\340\340\0\364\364\0\364\364\0\354\354\0\304\304\0\351\351\0" - "\351\351\0\322\322\0\210\210\0\240\240\0\240\240\0dd\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0\240\240\0\240" - "\240\0<<\0\240\240\0\305\305\0\351\351\0ww\0\320\320\0\301\301\0\324\324" - "\0\211\211\0\345\345\0\316\316\0\324\324\0\217\217\0\356\356\0\323\323\0" - "\326\326\0\223\223\0\354\354\0\323\323\0\326\326\0\223\223\0\354\354\0\323" - "\323\0\326\326\0\223\223\0\354\354\0\323\323\0\326\326\0\223\223\0\354\354" - "\0\323\323\0\326\326\0\223\223\0\354\354\0\323\323\0\326\326\0\223\223\0" - "\354\354\0\323\323\0\326\326\0\223\223\0\354\354\0\323\323\0\326\326\0\223" - "\223\0\354\354\0\323\323\0\326\326\0\362\362\0\344\344\0\261\261\0\272\272" - "\0\364\364\0\340\340\0\225\225\0\205\205\0\340\340\0\276\276\0\351\351\0" - "\266\266\0\240\240\0dd\0\240\240\0\240\240\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\240\240\0aa\0\240" - "\240\0\240\240\0\305\305\0ww\0\305\305\0\240\240\0\266\266\0\205\205\0\333" - "\333\0\266\266\0\304\304\0\215\215\0\352\352\0\305\305\0\314\314\0\222\222" - "\0\352\352\0\305\305\0\314\314\0\222\222\0\352\352\0\305\305\0\314\314\0" - "\222\222\0\352\352\0\305\305\0\314\314\0\222\222\0\352\352\0\305\305\0\314" - "\314\0\222\222\0\352\352\0\305\305\0\314\314\0\222\222\0\352\352\0\305\305" - "\0\314\314\0\222\222\0\352\352\0\305\305\0\314\314\0\222\222\0\352\352\0" - "\305\305\0\314\314\0\361\361\0\335\335\0\242\242\0\236\236\0\333\333\0\312" - "\312\0ii\0aa\0\305\305\0\255\255\0\266\266\0\240\240\0\240\240\0\210\210" - "\0\240\240\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0aa\0\305\305\0\240\240\0\240\240\0ww\0\333" - "\333\0\305\305\0\305\305\0\205\205\0\351\351\0\333\333\0\333\333\0\217\217" - "\0\363\363\0\351\351\0\351\351\0\223\223\0\357\357\0\351\351\0\351\351\0" - "\223\223\0\357\357\0\351\351\0\351\351\0\223\223\0\357\357\0\351\351\0\351" - "\351\0\223\223\0\357\357\0\351\351\0\351\351\0\223\223\0\357\357\0\351\351" - "\0\351\351\0\223\223\0\357\357\0\351\351\0\351\351\0\223\223\0\357\357\0" - "\351\351\0\351\351\0\223\223\0\357\357\0\351\351\0\351\351\0\363\363\0\345" - "\345\0\333\333\0\333\333\0\340\340\0\312\312\0\305\305\0\305\305\0\322\322" - "\0\255\255\0\240\240\0\240\240\0\305\305\0\210\210\0dd\0dd\0dd\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd" - "\0dd\0dd\0aa\0\305\305\0\305\305\0\240\240\0ww\0\333\333\0\333\333\0\305" - "\305\0\205\205\0\355\355\0\355\355\0\336\336\0\215\215\0\364\364\0\364\364" - "\0\335\335\0\215\215\0\364\364\0\364\364\0\335\335\0\215\215\0\364\364\0" - "\364\364\0\335\335\0\215\215\0\364\364\0\364\364\0\335\335\0\215\215\0\364" - "\364\0\364\364\0\335\335\0\215\215\0\364\364\0\364\364\0\335\335\0\215\215" - "\0\364\364\0\364\364\0\335\335\0\215\215\0\364\364\0\364\364\0\335\335\0" - "\215\215\0\364\364\0\364\364\0\335\335\0\351\351\0\355\355\0\355\355\0\312" - "\312\0\305\305\0\322\322\0\322\322\0\255\255\0\240\240\0\305\305\0\305\305" - "\0\210\210\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0\305\305\0aa" - "\0""11\0\225\225\0\351\351\0\205\205\0HH\0\254\254\0\333\333\0ww\0BB\0\264" - "\264\0\340\340\0nn\0BB\0\264\264\0\340\340\0nn\0BB\0\264\264\0\340\340\0" - "nn\0BB\0\264\264\0\340\340\0nn\0BB\0\264\264\0\340\340\0nn\0BB\0\264\264" - "\0\340\340\0nn\0BB\0\264\264\0\340\340\0nn\0BB\0\264\264\0\340\340\0nn\0" - "BB\0\264\264\0\340\340\0nn\0nn\0\205\205\0\314\314\0\266\266\0\304\304\0" - "\351\351\0\236\236\0yy\0\210\210\0\305\305\0<<\0\0\0\0\0\0\0dd\0dd\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0" - "\0dd\0dd\0\25\25\0\14\14\0dd\0dd\0\25\25\0\14\14\0dd\0dd\0\25\25\0\14\14" - "\0dd\0dd\0\25\25\0\14\14\0dd\0dd\0\25\25\0\14\14\0dd\0dd\0\25\25\0\14\14" - "\0dd\0dd\0\25\25\0\14\14\0dd\0dd\0\25\25\0\14\14\0dd\0dd\0\25\25\0\14\14" - "\0dd\0dd\0\25\25\0\25\25\0\0\0\0\0\0\0$$\0$$\0\0\0\0\0\0\0<<\0<<\0\0\0\0" - "\0\0\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0dd\0dd\0" - "\0\0\0\0\0\0dd\0dd\0\0\0\0\0\0\0yy\0yy\0\0\0\0\0\0\0yy\0yy\0\0\0\0\0\0\0" - "yy\0yy\0\0\0\0\0\0\0yy\0yy\0\0\0\0\0\0\0yy\0yy\0\0\0\0\0\0\0yy\0yy\0\0\0" - "\0\0\0\0yy\0yy\0\0\0\0\0\0\0yy\0yy\0\0\0\0\0\0\0yy\0yy\0\0\0\0\0\0\0yy\0" - "yy\0\0\0\0\0\0\0$$\0$$\0\0\0\0\0\0\0<<\0<<\0\0\0\0\0\0\0dd\0dd\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dd\0dd\0dd\0\0\0\0dd\0dd\0dd\0\0\0\0dd" - "\0\210\210\0\210\210\0\25\25\0dd\0\210\210\0\210\210\0\25\25\0dd\0\210\210" - "\0\210\210\0\25\25\0dd\0\210\210\0\210\210\0\25\25\0dd\0\210\210\0\210\210" - "\0\25\25\0dd\0\210\210\0\210\210\0\25\25\0dd\0\210\210\0\210\210\0\25\25" - "\0dd\0\210\210\0\210\210\0\25\25\0dd\0\210\210\0\210\210\0\25\25\0dd\0\210" - "\210\0\210\210\0\25\25\0dd\0\210\210\0\210\210\0$$\0\0\0\0<<\0<<\0<<\0\0" - "\0\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0dd\0dd\0<<\0<<\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0" - "aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240" - "\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240" - "\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0" - "aa\0aa\0\240\240\0\240\240\0aa\0aa\0\240\240\0\240\240\0\240\240\0\240\240" - "\0dd\0dd\0dd\0dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", -}; - -static const SurfaceImage_t img_blendMod = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", -}; - -static const SurfaceImage_t img_blendNone = { - 80, 60, 3, - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0" - "\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\377\0\0\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\377\0\0\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\0\0\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377" - "\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\377\0\377\377" - "\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\377\0\377" - "\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0" - "\377\377\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377" - "\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377", -}; - -static const SurfaceImage_t img_blendAll = { - 80, 60, 3, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\4\0\0\0\0\0\0\0" - "\0\11\0\0\11\0\0\0\0\0\0\0\0\16\0\0\16\0\0\0\0\0\0\0\0\11\0\0\11\0\0\0\0" - "\0\0\0\0\14\0\0\14\0\0\0\0\0\0\0\0\17\0\0\17\0\0\0\0\0\0\0\0\21\0\0\21\0" - "\0\0\0\0\0\0\0K\0\0K\0\0\0\0\0\0\0\0T\0\0T\0\0\0\0\0\0\0\0^\0\0^\0\0\0\0" - "\0\0\0\0g\0\0g\0\0\0\0\0\0\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317" - "\0\0\317\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\4\0\0\4\0\0\0\0\0\11\0\0\11\0\0\11" - "\0\0\0\0\0\16\0\0\16\0\0\16\0\0\0\0\0\22\0\0\22\0\0\11\0\0\0\0\0\14\0\0\14" - "\0\0\14\0\0\0\0\0\17\0\0\17\0\0\17\0\0\0\0\0\21\0\0\21\0\0\21\0\0\0\0\0\24" - "\0\0\24\0\0K\0\0\0\0\0T\0\0T\0\0T\0\0\0\0\0^\0\0^\0\0^\0\0\0\0\0g\0\0g\0" - "\0g\0\0\0\0\0q\0\0q\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317" - "\0\0\317\0\0\317\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\4\0\0\4\0\0\4\0\0\0\0\0\11\0\0\11\0\0\11\0\0\0\0\0" - "\16\0\0\16\0\0\16\0\0\0\0\0\22\0\0\22\0\0\22\0\0\0\0\0\14\0\0\14\0\0\14\0" - "\0\0\0\0\17\0\0\17\0\0\17\0\0\0\0\0\21\0\0\21\0\0\21\0\0\0\0\0\24\0\0\24" - "\0\0\24\0\0\0\0\0T\0\0T\0\0T\0\0\0\0\0^\0\0^\0\0^\0\0\0\0\0g\0\0g\0\0g\0" - "\0\0\0\0q\0\0q\0\0q\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317\0\0\317" - "\0\0\317\0\0\317\0\0\317\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\4\0\0\4\0\0\4\0\0\0\0\0\10\0\0\10\0\0\10\0\0\0\0\0\15" - "\0\0\15\0\0\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\16\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\0\0J\0\0J\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\317" - "\0\0\317\0\0\317\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\1\0\0\1\0\0\1\0\0\1" - "\0\0\4\0\0\4\0\0\0\0\0\0\0\0\7\0\0\7\0\0\0\0\0\0\0\0&\0\0&\0\0\32\0\0\32" - "\0\0&\0\0&\0\0&\0\0&\0\0C\0\0C\0\0\0\0\0\0\0\0^\0\0^\0\0\0\0\0\0\0\17\251" - "\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\0\0\0\0" - "\0\0\0\317\0\0\317\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\6\2\0\6\2\0\0\1\0\0\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0" - "\17\0\0\0\0\0\4\0\0\11\0\0\11\0\0\0\0\6+\0\6+\0\0&\0\0\32\0\0&\0\0&\0\0&" - "\0\0&\0\0""5\0\0""5\0\2\210\0\0\0\0\0C\0\0|\0\0|\0\0\0\0\17\251\0\17\251" - "\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251" - "\0$\360\0$\360\0\0\0\0\0\317\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1" - "\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\6\2\0\6\2\0\6\2\0\0\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1" - "\0\0\1\0\0\0\0\0\17\0\0\17\0\0\4\0\0\0\0\6+\0\6+\0\6+\0\0\32\0\0&\0\0&\0" - "\0&\0\0&\0\0""5\0\0""5\0\0""5\0\0\0\0\2\210\0\2\210\0\0C\0\0\0\0\17\251\0" - "\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0\17\251\0" - "\17\251\0\17\251\0$\360\0$\360\0$\360\0\0\0\0\0\317\0\0\317\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "$\360\0$\360\0$\360\0$\360\0\0\0\0\0\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0" - "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\14\1\0\14\1\0\14\1" - "\0\14\1\0\15\1\0\15\1\0\0\0\0\0\0\0\14\2\0\14\2\0\14\2\0\14\2\0\16\2\0\16" - "\2\0\0\0\0\0\0\0\14!\0\14!\0\14!\0\14!\0\17(\0\17(\0\0\0\0\0\0\0\14+\0\14" - "+\0\14+\0\14+\0\20""9\0\20""9\0\0\0\0\0\0\0\36\215\0\36\215\0\36\215\0\36" - "\215\0(\264\0(\264\0\0\0\0\0\0\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251" - "\0\36\251\0\36\251\0\36\251\0\0\0\0\0\0\0$\360\0$\360\0$\360\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\36\3" - "\0\36\3\0\14\1\0\14\1\0\15\1\0\15\1\0\15\1\0\0\0\0\14\2\0\14\2\0\14\2\0\14" - "\2\0\16\2\0\16\2\0\16\2\0\0\0\0\14\3\0\14\3\0\14!\0\14!\0\17(\0\17(\0\17" - "(\0\0\0\0\14+\0\14+\0\14+\0\14+\0\20""9\0\20""9\0\20""9\0\0\0\0\14""7\0\14" - """7\0\36\215\0\36\215\0(\264\0(\264\0(\264\0\0\0\0\36\251\0\36\251\0\36\251" - "\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251\0H\360\0" - "H\360\0\0\0\0$\360\0$\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\36\3\0\36\3\0\36\3\0\14\1\0\15\1\0\15\1\0\15\1" - "\0\0\0\0\14\2\0\14\2\0\14\2\0\14\2\0\16\2\0\16\2\0\16\2\0\0\0\0\14\3\0\14" - "\3\0\14\3\0\14!\0\17(\0\17(\0\17(\0\0\0\0\14+\0\14+\0\14+\0\14+\0\20""9\0" - "\20""9\0\20""9\0\0\0\0\14""7\0\14""7\0\14""7\0\36\215\0(\264\0(\264\0(\264" - "\0\0\0\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251\0\36\251\0\36" - "\251\0\36\251\0\36\251\0\36\251\0H\360\0H\360\0H\360\0\0\0\0$\360\0$\360" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\13\1\0\13\1\0\13\1\0\13\1\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11!\0" - "\11!\0\11!\0\11!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\23n\0\23n\0\23n\0\23n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0H\360\0H\360\0H\360\0H\360\0\0\0\0$\360\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\1\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\0\25\0\0\25\0\0\27\0" - "\0\13\0\0\13\0\0\1\0\0\11\0\0\4\0\0\4\0\0\0\0\0\0\0\0\25\3\0\25\3\0\0\0\0" - "\0\0\0\25\3\0\25\3\0\25\3\0\25\3\0\3\1\0\3\1\0\2\1\0\7\5\0\7\3\0\7\3\0\0" - "\0\0\0\0\0\25""4\0\25""4\0\0\0\0\0\0\0\25""4\0\25""4\0\25""4\0\25""4\0\20" - "\35\0\20\35\0\11\22\0\23F\0\34""6\0\34""6\0\0\0\0\0\0\0L\317\0L\317\0L\317" - "\0L\317\0L\317\0L\317\0L\317\0L\317\0\0\0\0\0\0\0""2\317\0""2\317\0""2\317" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\25\0\0\25" - "\0\0\25\0\0\4\0\0\5\0\0\2\0\0\1\0\0\4\0\0\14\0\0\14\0\0\0\0\0\37\7\0\37\7" - "\0\25\3\0\0\0\0\25\3\0\25\3\0\25\3\0\25\3\0\37\6\0\37\6\0\15\4\0\11\3\0\7" - "\3\0\14\10\0\14\10\0\0\0\0\25\16\0\25\16\0\25""4\0\0\0\0\25""4\0\25""4\0" - "\25""4\0\25""4\0&Q\0&Q\0&Q\0\31""5\0\34""6\0&j\0&j\0\0\0\0""5q\0""5q\0L\317" - "\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0\0\0\0""2" - "\317\0""2\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\1\0\0\0\0\0\0\0\25\0" - "\0\25\0\0\25\0\0\31\1\0\5\0\0\5\0\0\2\0\0\4\0\0\14\0\0\14\0\0\0\0\0\37\7" - "\0\37\7\0\37\7\0\0\0\0\25\3\0\25\3\0\25\3\0\25\3\0\37\6\0\37\6\0\37\6\0\11" - "\3\0\16\6\0\16\6\0\7\3\0\0\0\0\25\16\0\25\16\0\25\16\0\0\0\0\25""4\0\25""4" - "\0\25""4\0\25""4\0&Q\0&Q\0&Q\0\31""5\0+X\0+X\0\34""6\0\0\0\0""5q\0""5q\0" - """5q\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317\0L\317" - "\0L\317\0\0\0\0""2\317\0""2\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0" - "\0\0\0\0\25\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\317\0L\317\0L\317\0L\317" - "\0\0\0\0""2\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0e\4\0e\4\0\0\0\0\0\0\0e\11\0e\11\0\0\0\0\0\0\0e\16\0e\16\0\0\0\0\0\0" - "\0G\11\0G\11\0\0\0\0\0\0\0G\14\0G\14\0\0\0\0\0\0\0G\17\0G\17\0\0\0\0\0\0" - "\0G\21\0G\21\0\0\0\0\0\0\0GK\0GK\0\0\0\0\0\0\0GT\0GT\0\0\0\0\0\0\0G^\0G^" - "\0\0\0\0\0\0\0Gg\0Gg\0\0\0\0\0\0\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317" - "\0e\317\0e\317\0\0\0\0\0\0\0L\317\0L\317\0L\317\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0e\4\0e\4\0e\4\0\0\0\0e\11\0e\11\0e\11\0\0\0" - "\0e\16\0e\16\0e\16\0\0\0\0e\22\0e\22\0G\11\0\0\0\0G\14\0G\14\0G\14\0\0\0" - "\0G\17\0G\17\0G\17\0\0\0\0G\21\0G\21\0G\21\0\0\0\0G\24\0G\24\0GK\0\0\0\0" - "GT\0GT\0GT\0\0\0\0G^\0G^\0G^\0\0\0\0Gg\0Gg\0Gg\0\0\0\0Gq\0Gq\0e\317\0e\317" - "\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317\0\0\0\0L\317\0L" - "\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0e\4\0e\4\0e\4\0\0\0" - "\0e\11\0e\11\0e\11\0\0\0\0e\16\0e\16\0e\16\0\0\0\0e\22\0e\22\0e\22\0\0\0" - "\0G\14\0G\14\0G\14\0\0\0\0G\17\0G\17\0G\17\0\0\0\0G\21\0G\21\0G\21\0\0\0" - "\0G\24\0G\24\0G\24\0\0\0\0GT\0GT\0GT\0\0\0\0G^\0G^\0G^\0\0\0\0Gg\0Gg\0Gg" - "\0\0\0\0Gq\0Gq\0Gq\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317\0e\317" - "\0e\317\0e\317\0e\317\0\0\0\0L\317\0L\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0e\4\0e\4\0e\4\0\0\0\0b\10\0b\10\0b\10\0\0\0\0b\15\0b\15\0b\15\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0<\16\0<\16\0<\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0""2J\0""2J\0""2J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\317\0e\317\0e\317\0e" - "\317\0\0\0\0L\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\216\1\0c\0\0c\0\0\0\0\0" - "`\0\0c\0\0c\0\0\2\0\0c\1\0i\0\0i\0\0\0\0\0\0\0\0e\0\0e\0\0\0\0\0\0\0\0{\1" - "\0{\1\0f\0\0f\0\0z\1\0z\1\0z\1\0z\1\0)\4\0)\4\0\0\0\0\0\0\0Q\7\0Q\7\0\0\0" - "\0\0\0\0{&\0{&\0W\32\0W\32\0z&\0z&\0z&\0z&\0IC\0IC\0\0\0\0\0\0\0X^\0X^\0" - "\0\0\0\0\0\0\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0" - "\261\251\0\261\251\0\0\0\0\0\0\0e\317\0e\317\0e\317\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\216\1\0c\0\0`\0\0\2\0\0c\0\0c\0\0c\0\0\12\0\0k\1\0i\0\0" - "\0\0\0\11\0\0i\0\0i\0\0\0\0\0\256\2\0\256\2\0{\1\0f\0\0z\1\0z\1\0z\1\0z\1" - "\0\221\1\0\221\1\0\221\17\0\0\0\0)\4\0c\11\0c\11\0\0\0\0\256+\0\256+\0{&" - "\0W\32\0z&\0z&\0z&\0z&\0\2415\0\2415\0\243\210\0\0\0\0IC\0{|\0{|\0\0\0\0" - "\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0\261" - "\251\0\261\251\0\261\251\0\264\360\0\264\360\0\0\0\0e\317\0e\317\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\216\1\0\216\1\0`\0\0\2\0\0c\0\0c\0\0c\0\0\12\0\0" - "k\1\0k\1\0\0\0\0\11\0\0i\0\0i\0\0\0\0\0\256\2\0\256\2\0\256\2\0f\0\0z\1\0" - "z\1\0z\1\0z\1\0\221\1\0\221\1\0\221\1\0\0\0\0\221\17\0\221\17\0)\4\0\0\0" - "\0\256+\0\256+\0\256+\0W\32\0z&\0z&\0z&\0z&\0\2415\0\2415\0\2415\0\0\0\0" - "\243\210\0\243\210\0IC\0\0\0\0\261\251\0\261\251\0\261\251\0\261\251\0\261" - "\251\0\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0\261\251\0\264\360" - "\0\264\360\0\264\360\0\0\0\0e\317\0e\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\216\1" - "\0\211\1\0c\0\0\2\0\0c\0\0c\0\0k\0\0\12\0\0k\1\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\264\360\0\264\360" - "\0\264\360\0\264\360\0\0\0\0e\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211\1\0\216\1" - "\0c\0\0\2\0\0c\0\0k\0\0q\0\0\20\0\0\0\0\0\0\0\0\322\1\0\322\1\0\322\1\0\322" - "\1\0\346\1\0\346\1\0\0\0\0\0\0\0\322\2\0\322\2\0\322\2\0\322\2\0\363\2\0" - "\363\2\0\0\0\0\0\0\0\322!\0\322!\0\322!\0\322!\0\371(\0\371(\0\0\0\0\0\0" - "\0\322+\0\322+\0\322+\0\322+\0\3719\0\3719\0\0\0\0\0\0\0\325\215\0\325\215" - "\0\325\215\0\325\215\0\374\264\0\374\264\0\0\0\0\0\0\0\325\251\0\325\251" - "\0\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\0\0\0\0\0" - "\0\264\360\0\264\360\0\264\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211\1\0\216" - "\1\0c\0\0\2\0\0f\0\0m\0\0m\0\0\0\0\0\325\3\0\325\3\0\322\1\0\322\1\0\346" - "\1\0\346\1\0\346\1\0\0\0\0\322\2\0\322\2\0\322\2\0\322\2\0\363\2\0\363\2" - "\0\363\2\0\0\0\0\322\3\0\322\3\0\322!\0\322!\0\371(\0\371(\0\371(\0\0\0\0" - "\322+\0\322+\0\322+\0\322+\0\3719\0\3719\0\3719\0\0\0\0\3227\0\3227\0\325" - "\215\0\325\215\0\374\264\0\374\264\0\374\264\0\0\0\0\325\251\0\325\251\0" - "\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325" - "\251\0\330\360\0\330\360\0\0\0\0\264\360\0\264\360\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\216\1\0\216\1\0c\0\0\10\0\0m\0\0m\0\0\0\0\0\325\3\0\325\3\0\325" - "\3\0\322\1\0\346\1\0\346\1\0\346\1\0\0\0\0\322\2\0\322\2\0\322\2\0\322\2" - "\0\363\2\0\363\2\0\363\2\0\0\0\0\322\3\0\322\3\0\322\3\0\322!\0\371(\0\371" - "(\0\371(\0\0\0\0\322+\0\322+\0\322+\0\322+\0\3719\0\3719\0\3719\0\0\0\0\322" - "7\0\3227\0\3227\0\325\215\0\374\264\0\374\264\0\374\264\0\0\0\0\325\251\0" - "\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325\251\0\325" - "\251\0\325\251\0\325\251\0\330\360\0\330\360\0\330\360\0\0\0\0\264\360\0" - "\264\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\216\1\0\216\1\0i\0\0\10\0\0m\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\275\1\0\275\1\0\275\1\0" - "\275\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\244!\0\244!\0\244!\0\244!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213n\0\213n\0\213n\0\213n\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\330\360\0\330\360\0\330\360\0\330" - "\360\0\0\0\0\264\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\216\1\0\224\1\0i\0\0\10\0" - "\0\0\0\0\0\0\0\325\3\0\325\3\0\325\3\0\351\3\0\365\1\0\365\1\0\14\0\0\313" - "\2\0#\2\0#\2\0\0\0\0\0\0\0\371\37\0\371\37\0\0\0\0\0\0\0\371\37\0\371\37" - "\0\371\37\0\371\37\0.\17\0.\17\0#\14\0\304-\0Y!\0Y!\0\0\0\0\0\0\0\371p\0" - "\371p\0\0\0\0\0\0\0\371p\0\371p\0\371p\0\371p\0O>\0O>\0""3(\0\247\227\0\211" - "s\0\211s\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\330\360\0\330\360\0\330\360\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\224\1\0i\0\0\0\0\0\0\0\0\325\3\0\325" - "\3\0\325\3\0\17\2\0\"\2\0!\0\0\35\0\0#\2\0\342\4\0\342\4\0\0\0\0\371\37\0" - "\371\37\0\371\37\0\0\0\0\371\37\0\371\37\0\371\37\0\371\37\0\3775\0\3775" - "\0\374%\0\304\34\0Y!\0\373C\0\373C\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\371" - "p\0\371p\0\371p\0\371p\0\377\256\0\377\256\0\377\256\0\247q\0\211s\0\375" - "\342\0\375\342\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0" - "\0\0\330\360\0\330\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\224\1\0\0\0" - "\0\0\0\0\325\3\0\325\3\0\325\3\0\344\5\0\"\2\0\"\2\0\200\0\0#\2\0\342\4\0" - "\342\4\0\0\0\0\371\37\0\371\37\0\371\37\0\0\0\0\371\37\0\371\37\0\371\37" - "\0\371\37\0\3775\0\3775\0\3775\0\304\34\0\3732\0\3732\0Y!\0\0\0\0\371p\0" - "\371p\0\371p\0\0\0\0\371p\0\371p\0\371p\0\371p\0\377\256\0\377\256\0\377" - "\256\0\247q\0\375\274\0\375\274\0\211s\0\0\0\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\330\360\0\330\360\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0i\0\0\0\0\0\325\3\0\325\3\0\344\5\0\344\5" - "\0\"\2\0\36\1\0""4\2\0#\2\0\342\4\0\0\0\0\371\37\0\371\37\0\371\37\0\0\0" - "\0\371\37\0\371\37\0\371\37\0\371\37\0\3775\0\3775\0\3775\0\307)\0\3732\0" - "\3732\0\3732\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\371p\0\371p\0\371p\0\371" - "p\0\377\256\0\377\256\0\377\256\0\247q\0\375\274\0\375\274\0\375\274\0\0" - "\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\0\0\0\330\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0" - "\10\0\0\0\0\0\325\3\0\344\5\0\344\5\0\344\5\0\340\4\0\367\11\0\364\3\0#\2" - "\0\0\0\0\371\37\0\371\37\0\371\37\0\0\0\0\371\37\0\371\37\0\371\37\0\371" - "\37\0\3775\0\3775\0\3775\0\307)\0\376G\0\3732\0\3732\0\0\0\0\371p\0\371p" - "\0\371p\0\0\0\0\371p\0\371p\0\371p\0\371p\0\377\256\0\377\256\0\377\256\0" - "\247q\0\375\274\0\375\274\0\375\274\0\0\0\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\10\0\0\0\0\0\0\0\0\17\2\0\17" - "\2\0\17\2\0\323\2\0\352\7\0\347\2\0\26\1\0\0\0\0\371\37\0\371\37\0\371\37" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\26\0/\26\0/\26\0\0\0\0""7\36\0""6\25\0" - """6\25\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O>\0O>\0" - "O>\0\0\0\0VK\0VK\0VK\0\0\0\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\12\0" - "\0\10\0\0\0\0\0\17\2\0\17\2\0\344\5\0\15\1\0\352\7\0\352\7\0\347\2\0\0\0" - "\0\371\37\0\371\37\0\371\37\0\0\0\0\0\0\0\0\0\0\362\4\0\0\0\0/\26\0/\26\0" - "\3775\0$\21\0""7\36\0""7\36\0\3672\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\0\0" - "\0\0\0\0\370A\0\0\0\0O>\0O>\0\377\256\0""3(\0VK\0VK\0\372\264\0\0\0\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\341\271\0\0\0\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\343\350\0\0\0\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\5\0\0\10\0\0\0\0" - "\0\17\2\0\17\2\0\17\2\0\15\1\0\352\7\0\352\7\0\347\2\0\0\0\0\371\37\0\371" - "\37\0\371\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\26\0/\26\0/\26\0$\21\0""7\36" - "\0""7\36\0""6\25\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0O>\0O>\0O>\0""3(\0VK\0VK\0VK\0\0\0\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\5\0\0\5\0\0\5\0\0\0\0\0\344\5\0\344\5\0\344\5\0\316\4\0\367" - "\11\0\367\11\0\364\3\0\0\0\0\371\37\0\371\37\0\371\37\0\0\0\0\371\37\0\371" - "\37\0\371\37\0\371\37\0\3775\0\3775\0\3775\0\307)\0\376G\0\376G\0\3732\0" - "\0\0\0\371p\0\371p\0\371p\0\0\0\0\371p\0\371p\0\371p\0\371p\0\377\256\0\377" - "\256\0\377\256\0\247q\0\375\274\0\375\274\0\375\274\0\0\0\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5" - "\0\0\5\0\0\5\0\0\17\2\0\344\5\0\344\5\0\316\4\0\345\11\0\367\11\0\364\3\0" - "\0\0\0\371\37\0\371\37\0\371\37\0\0\0\0\371\37\0\371\37\0\371\37\0\371\37" - "\0\3775\0\3775\0\3775\0\307)\0\376G\0\376G\0\3732\0\0\0\0\371p\0\371p\0\371" - "p\0\0\0\0\371p\0\371p\0\371p\0\371p\0\377\256\0\377\256\0\377\256\0\247q" - "\0\375\274\0\375\274\0\375\274\0\0\0\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\5\0\0\0\0\0\17\2" - "\0\344\5\0\344\5\0\15\1\0$\6\0$\6\0#\2\0\0\0\0\371\37\0\371\37\0\371\37\0" - "\0\0\0\371\37\0\371\37\0\371\37\0\371\37\0\3775\0/\26\0/\26\0\307)\0\376" - "G\0[/\0Y!\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\371p\0\371p\0\371p\0\371p\0" - "\377\256\0O>\0O>\0\247q\0\375\274\0\211s\0\211s\0\0\0\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0" - "\5\0\0\17\2\0\17\2\0\344\5\0\316\4\0$\6\0$\6\0#\2\0\0\0\0\371\37\0\371\37" - "\0\371\37\0\0\0\0\371\37\0\371\37\0\371\37\0\371\37\0\3775\0/\26\0/\26\0" - "\307)\0\376G\0[/\0Y!\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\371p\0\371p\0\371" - "p\0\371p\0\377\256\0O>\0O>\0\247q\0\375\274\0\211s\0\211s\0\0\0\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\5\0\0\24\2\0\17\2\0\17\2\0\316\4\0\345\11\0$\6\0#\2\0\0\0\0\371" - "\37\0\371\37\0\371\37\0\0\0\0\371\37\0\371\37\0\371\37\0\371\37\0\3775\0" - "\3775\0\3775\0\307)\0\376G\0\376G\0\3732\0\0\0\0\371p\0\371p\0\371p\0\0\0" - "\0\371p\0\371p\0\371p\0\371p\0\377\256\0\377\256\0\377\256\0\247q\0\375\274" - "\0\375\274\0\375\274\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0" - "\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\24\2\0\24" - "\2\0\17\2\0\316\4\0\345\11\0\342\3\0#\2\0\0\0\0\371\37\0\371\37\0\371\37" - "\0\0\0\0\371\37\0\371\37\0\371\37\0\371\37\0\3775\0\3775\0\3775\0\307)\0" - "\376G\0\3732\0\3732\0\0\0\0\371p\0\371p\0\371p\0\0\0\0\371p\0\371p\0\371" - "p\0\371p\0\377\256\0\377\256\0\377\256\0\247q\0\375\274\0\375\274\0\375\274" - "\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\17\2\0\24\2\0\5\0\0\0\0\0\27\5\0\342\3\0\313" - "\1\0\0\0\0\371\37\0\371\37\0\0\0\0\0\0\0\0\0\0\371\37\0\0\0\0\0\0\0/\26\0" - "\3775\0\371\37\0\302\30\0\3716\0Y!\0#\14\0\0\0\0\371p\0\371p\0\0\0\0\0\0" - "\0\0\0\0\371p\0\0\0\0\0\0\0O>\0\377\256\0\371p\0\243I\0\371\224\0\211s\0" - """3(\0\0\0\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360\0\374" - "\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0" - "\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\17\2\0\17\2\0\0\0\0\0\0\0\26\1\0\26\1\0\0\0\0\0\0\0\371" - "\37\0\371\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\26\0/\26\0\0\0\0\0\0" - "\0""6\25\0""6\25\0\0\0\0\0\0\0\371p\0\371p\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0O>\0O>\0\0\0\0\0\0\0VK\0VK\0\0\0\0\0\0\0\374\360\0\374\360\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374" - "\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\17\2\0\17\2\0\0\0\0\0\0\0\26\1\0\26\1\0\0\0\0\0\0" - "\0\371\37\0\371\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\26\0/\26\0\0\0" - "\0\0\0\0""6\25\0""6\25\0\0\0\0\0\0\0\371p\0\371p\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0O>\0O>\0\0\0\0\0\0\0VK\0VK\0\0\0\0\0\0\0\374\360\0\374\360" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0" - "\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\17\2\0\17\2\0\16\0\0\0\0\0\26\1\0\26\1\0\26" - "\1\0\0\0\0\371\37\0\371\37\0\371\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\26\0" - "/\26\0.\17\0\0\0\0""6\25\0""6\25\0""6\25\0\0\0\0\371p\0\371p\0\371p\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0O>\0O>\0O>\0\0\0\0VK\0VK\0VK\0\0\0\0\374\360\0" - "\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\360\0\374\360" - "\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\16\0\0\14\0\0\14" - "\0\0#\2\0#\2\0\0\0\0\0\0\0\371\37\0\371\37\0\0\0\0\0\0\0\371\37\0\371\37" - "\0\371\37\0\371\37\0.\17\0.\17\0#\14\0#\14\0Y!\0Y!\0\0\0\0\0\0\0\371p\0\371" - "p\0\0\0\0\0\0\0\371p\0\371p\0\371p\0\371p\0O>\0O>\0""3(\0""3(\0\211s\0\211" - "s\0\0\0\0\0\0\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360\0\374\360" - "\0\374\360\0\374\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", -}; - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_face.c b/3rdparty/SDL-1.3.0-5387/test/automated/common/img_face.c deleted file mode 100644 index 4bfe3cb85c..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_face.c +++ /dev/null @@ -1,196 +0,0 @@ -/* GIMP RGBA C-Source image dump (face.c) */ - -static const SurfaceImage_t img_face = { - 32, 32, 4, - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0" - "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" - "\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377" - "\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\0\0\0\377\0\0\0\377\377\377\377\0\0\0\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0" - "\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0" - "\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0" - "\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0" - "\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377" - "\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0" - "\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377" - "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" - "\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377" - "\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" - "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0" - "\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0" - "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" - "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" - "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" - "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" - "\377\377\0\377\377\377\0", -}; - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_primitives.c b/3rdparty/SDL-1.3.0-5387/test/automated/common/img_primitives.c deleted file mode 100644 index e023a8d631..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_primitives.c +++ /dev/null @@ -1,463 +0,0 @@ -/* GIMP RGB C-Source image dump (primitives.c) */ - -static const SurfaceImage_t img_primitives = { - 80, 60, 3, - "\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15" - "I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310" - "\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0" - "\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0" - "\0\5ii\0\0\0\5ii\0\0\0\3\1\1\0\0\0\5\2\1\0\0\0\7\3\2\0\0\0\11\4\3\0\0\0\13" - "\5\3\0\0\0\15\6\4\0\0\0\17\7\5\0\0\0\21\10\5\0\0\0\23\11\6\0\0\0\25\12\7" - "\0\0\0\27\13\7\0\0\0\31\14\10\0\0\0\33\15\11\0\0\0\35\16\11\0\0\0\37\17\12" - "\0\0\0!\20\13\0\0\0#\21\13\0\0\0%\22\14\0\0\0'\23\15\15I\310)\24\15\15I\310" - "+\25\16\15I\310-\26\17\15I\310/\27\17\15I\3101\30\20\15I\3103\31\21\15I\310" - "5\32\21\15I\3107\33\22\15I\3109\34\23\15I\310;\35\23\15I\310=\36\24\15I\310" - "?\37\25\15I\310A\40\25\15I\310C!\26\15I\310E\"\27\15I\310G#\27\15I\310I$" - "\30\15I\310K%\31\15I\310M&\31\5iiO'\32\0\0\0\0\0\0\5ii\0\0\0\10\4\2\0\0\0" - "\14\6\4\0\0\0\20\10\5\0\0\0\24\12\6\0\0\0\30\14\10\0\0\0\34\16\11\0\0\0\40" - "\20\12\0\0\0$\22\14\0\0\0(\24\15\0\0\0,\26\16\0\0\0""0\30\20\0\0\0""4\32" - "\21\0\0\0""8\34\22\0\0\0<\36\24\0\0\0@\40\25\0\0\0D\"\26\0\0\0H$\30\0\0\0" - "L&\31\0\0\0P(\32\15I\310T*\34\15I\310X,\35\15I\310\\.\36\15I\310`0\40\15" - "I\310d2!\15I\310h4\"\15I\310l6$\15I\310p8%\15I\310t:&\15I\310x<(\15I\310" - "|>)\15I\310\200@*\15I\310\204B,\15I\310\210D-\15I\310\214F.\15I\310\220H" - "0\15I\310\224J1\15I\310\230L2\5ii\234N4\15I\310\0\0\0\0\0\0\0\0\0\5ii\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii" - "\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d" - "\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d" - "\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d" - "\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d" - "\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5" - "ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d" - "\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d" - "\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0" - "\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0" - "\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0" - "\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377\0\0\377\0\0\377" - "\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0""77\5\0\377\0\0\377\0\0\377\0" - "\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377" - "\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377" - "\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377" - "\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5" - "ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d" - "\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5i" - "i\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310" - "\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310" - "\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\5ii\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310" - "\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15" - "I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d7" - "7\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0" - "d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310" - "\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310" - "\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310" - "\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5" - "ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310" - "\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\0\0\0\0" - "\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\5ii\15I\310\15I\310\15I\310\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii" - "\15I\310\15I\310\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\5ii\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I" - "\310\15I\310\15I\310\15I\310\15I\310\5ii", -}; - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_primitivesblend.c b/3rdparty/SDL-1.3.0-5387/test/automated/common/img_primitivesblend.c deleted file mode 100644 index 16132ce9b8..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/common/img_primitivesblend.c +++ /dev/null @@ -1,645 +0,0 @@ -/* GIMP RGB C-Source image dump (alpha.c) */ - -static const SurfaceImage_t img_blend = { - 80, 60, 3, - "\260e\15\222\356/\37\313\15\36\330\17K\3745D\3471\0\20\0D\3502D\3502<\321" - ",\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0-\0\377\377" - "\377\377\377\377\311\324\311\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\0H\0\377\377\377\377\377\377\256\307\256\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\0c\0\377\377\377\377\377\377" - "\223\300\223\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\0~\0\377\377\377\377\377\377x\277x\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\0\231\0\377\377\377\377\377\377]\303]\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\0\264\0\377\377\377\377\377" - "\377B\316B\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0" - "\317\0\377\377\377\377\377\377'\335'\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\0\352\0\377\377\377#\262\6\260d\15\260e\15\224\357" - "/&\262\6\34\300\5.\314\22\40\315\12[\3747M\332/\27\331\12\27\331\12K\374" - "5K\3745K\3745D\3471D\3471D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\350" - "2D\3502D\3502D\3502D\3502D\3502\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377,\372\27\273\3465\327" - "Q.\260d\15\213\213\40\241\3601\200\366*=\265\13?\301\25s\375\265\14\177\252+\201\210\16\245\204" - "*\377\314U\312\\,\224'\11\260i\17\244\210\40\232\2211\331\353J\215\2351\377" - "\377\276\200\2521\200\2542\375\377\310u\2661t\2702t\2702\367\377\324\325" - "\355\305h\3021h\3042h\3042\377\377\377\377\377\377\364\377\336\335\364\323" - "\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346" - "\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377" - "\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\3342\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\27\331\12Y\316-h\3021\243\370Cg\230\15\230\224\"\245" - "\204*\377\314U\310J\21\327Q.\260b\21\245\2041\370\343N\230\2242\331\353J" - "\214\2402\377\377\276\200\2521\200\2542\375\377\310\317\344\266u\2661t\270" - "2\377\377\377\367\377\324\325\355\305h\3021h\3042h\3042h\3042\377\377\377" - "\377\377\377\364\377\336\335\364\323\335\364\323\335\364\323\335\364\323" - "\\\3202\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371" - "\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377\377" - "\377\377\377\377\377\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\334" - "2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377K\3745!\315\13d\304,p\270)\177\252+\23\13\6\232\2211\245\204" - "1\347\270O\377\277Y\324<\22\265V\24\377\330Q\244\210\40#(\13\230\224\"\331" - "\353Ju\211.\377\377\276\200\2521\210\273:\200\2542\375\377\310\20""3\6u\266" - "1t\2702\271\307\271\367\377\324\325\355\305\341\377\321h\3021h\3042\16L\7" - "h\3042\377\377\377\242\300\242\377\377\377\335\364\323\355\377\343\335\364" - "\323\335\364\323\14f\7\\\3202\\\3202>\250*\\\3202\377\377\377\377\377\377" - "\377\377\377\377\377\377$\231$\377\377\377\377\377\377s\303s\377\377\377" - "\346\371\342\376\377\372\346\371\342\346\371\342\40\257\37\346\371\342\346" - "\371\342\\\316\\\377\377\377\377\377\377\377\377\377\377\377\377P\3342\13" - "\262\7P\3342P\3342*\327%P\3342P\3342o\377Q\377\377\377\377\377\377$\352$" - "\377\377\377\377\377\377K\3745]\3749s\375<\212\373@\243\370C\274\363G\331" - "\353J\370\343N\377\330Q\377\314U\377\277Y\377\260\\\224(\11\260|\36\245\204" - "1\377\377\250\232\2211\230\224\"\215\2351\214\2402\377\377\276\312\332\250" - "\200\2521\200\2542\377\377\377\317\344\266u\2661t\2702t\2702\377\377\377" - "\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\3042h\3042\377\377" - "\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364" - "\323\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342" - "\346\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377P\3342P\3342" - "P\3342P\3342\377\377\377K\3745O\3321\\\3161h\3021t\2702~\254'\214\240%\377" - "\377\262\370\343N\377\330Q\262x1\277l1\312`1\327R.\260X\23\377\330Q\244\210" - "2\377\377\250\230\2242\377\377\262\215\2351\214\2402\377\377\377\312\332" - "\250\200\2521\200\2542\377\377\377\375\377\310\317\344\266u\2661t\2702t\270" - "2\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\304" - "2h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\\\3202\\\320" - "2\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346\371\342\346" - "\371\342\346\371\342\346\371\342\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377D\3471O\3321\21\7\11c\304+\367\377\324o\2520\200\252" - "1\214\2402\235\226'\377\377\250\377\330Q!\20\11\277l1\310d2\266?\33\224(" - "\11\260|\36\257\217;\377\377\250\232\2211\34$\11\377\377\262\215\2351q\206" - "0\377\377\377\312\332\250\217\303@\200\2542\200\25420Z0\317\344\266\317\344" - "\266X\2260t\2702t\2702\377\377\377\377\377\377\325\355\305(l%\325\355\305" - "\325\355\305K\2410h\3042h\3042\377\377\377\377\377\377\377\377\3770\2200" - "\377\377\377\377\377\377t\274p\335\364\323\335\364\323\373\377\361\377\377" - "\377\377\377\377\21\213\11\\\3202\\\3202<\274/\\\3202\377\377\377\377\377" - "\377\377\377\377\377\377\3770\3060\377\377\377\377\377\377V\330V\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\3770\3410\346\371\342\346" - "\371\342>\352>\346\371\342\377\377\377D\3471P\3342\364\377\352s\375\3369\\\3202\377\377\377\377\377\377\377\377\377\377\377\377D\3502\371\377" - "\364O\3321\\\3202\364\377\336h\3042\367\377\324u\2661\200\2542\377\377\276" - "\215\2351\230\2242\307\300\213\244\2102\377\377\234\262x1\274p2\377\337\207" - "\312`1\324E\30\327T1\260|2\377\377\234\245\2041\244\2102\377\377\250\232" - "\2211\230\2242\377\377\377\310\316\231\215\2351\214\2402\377\377\377\377" - "\377\377\312\332\250\312\332\250\200\2542\200\2542\377\377\377\377\377\377" - "\317\344\266\317\344\266\317\344\266t\2702t\2702t\2702\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355" - "\305\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\377\377" - "\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\377\377\377D\3502\371\377" - "\364O\3321\377\377\377\\\3161h\3042\367\377\324t\2702\375\377\310\200\252" - "1\377\377\377\215\2351\230\2242\377\377\250\244\2102\377\377\234\262x1\274" - "p2\316\214_\310d2\377\310|\327T1\227/\14\377\377\377\307\260|\244\2102\377" - "\377\377\307\300\213\230\2242\230\2242\377\377\377\310\316\231\214\2402\214" - "\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\2542\377" - "\377\377\377\377\377\377\377\377\317\344\266\317\344\266\317\344\266t\270" - "2t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377h\3042h\3042" - "h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364" - "\323\335\364\323\335\364\323\377\377\377\377\377\377\377\377\377\377\377" - "\377D\3502\371\377\364R\3344\364\377\352\\\3161H\22Hh\3021\377\377\377o\244" - "2\200\2542\312\332\250\226\245<\377\377\262\230\2242H-/\245\2041\377\377" - "\377\233i5\274p2\277l1\331sC\377\310|\324X2*\15\3\260|2\377\377\234\206s" - "7\244\2102\377\377\250\340\337\244\230\2242\377\377\377Hc2\310\316\231\214" - "\2402n\211:\377\377\377\377\377\377\353\377\311\312\332\250\200\2542$T\16" - "\377\377\377\377\377\377\236\277\236\377\377\377\317\344\266\367\377\336" - "\377\377\377t\2702\40n\16t\2702\377\377\377\212\303\212\377\377\377\377\377" - "\377\377\377\377\325\355\305\325\355\305<\2477\377\377\377\377\377\377O\276" - "Ah\3042h\3042\237\377i\377\377\377\377\377\377H\317H\377\377\377\377\377" - "\377c\335c\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323>\337" - ";\335\364\323\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\364" - "\377\336h\3042\367\377\324t\2702\375\377\310\200\2542\377\377\276\214\240" - "2\377\377\262\232\2211\377\377\377\245\2041\377\377\377\262x1\377\377\377" - "\277l1\310d2\312`1\324X2\327T1\260|2\377\377\377\307\260|\244\2102\377\377" - "\377\307\300\213\232\2211\230\2242\377\377\377\377\377\262\310\316\231\214" - "\2402\214\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200" - "\2542\200\2542\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266" - "\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\325\355" - "\305\377\377\377\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\335" - "\364\323h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377" - "\377\215\2351\377\377\377\232\2211\377\377\377\245\2041\377\377\377\262x" - "1\377\377\377\277l1\377\377\377\312`1\377\310|\327T1\227/\14\377\377\377" - "\307\260|\244\2102\244\2102\377\377\377\307\300\213\230\2242\230\2242\377" - "\377\377\310\316\231\310\316\231\214\2402\214\2402\377\377\377\377\377\377" - "\312\332\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377" - "\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377" - "\377t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377" - "\377\377\377\377\377\377\377h\3042h\3042h\3042\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360" - "T\11TO\3321\377\377\377Z\3002\377\377\377h\3042\377\377\334t\2702\375\377" - "\310*\30\20\312\332\250\214\2402\262\260\214\230\2242\307\300\213\377\377" - "\377\245\2041\377\377\377:\35\20\377\377\377\277l1\316\264w\310d2\377\310" - "|\356qL\227/\14\260|2TZ3\307\260|\244\2102\274\302\274\307\300\213\307\300" - "\213\273\301U\377\377\377\377\377\377A^2\310\316\231\214\2402o\216B\377\377" - "\377\377\377\377\366\377\324\312\332\250\312\332\250*a\20\200\2542\377\377" - "\377\230\301\230\377\377\377\377\377\377\377\377\353\317\344\266\317\344" - "\266T\253Tt\2702t\2702]\265I\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377T\306T\377\377\377\325\355\305l\324i\325\355\305\377\377" - "\377\377\377\377\377\377\377h\3042\"\254\20h\3042h\3042b\353b\377\377\377" - "\377\377\377D\3502\362\375\360\377\377\377O\3321\377\377\377\\\3202\364\377" - "\336h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377\377" - "\214\2402\377\377\262\230\2242\307\300\213\244\2102\307\260|\377\377\377" - "\262x1\377\377\377\274p2\377\337\207\310d2\377\310|\324X2\333bB\260|2\377" - "\377\377\307\260|\244\2102\244\2102\377\377\377\307\300\213\232\2211\230" - "\2242\377\377\377\377\377\377\310\316\231\310\316\231\214\2402\214\2402\377" - "\377\377\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\254" - "2\200\2542\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317" - "\344\266\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\355\305" - "\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377\377\377\377" - "h\3042h\3042\377\377\377\377\377\377D\3471\377\377\377P\3342\364\377\352" - "\\\3202\335\364\323\377\377\377h\3021\377\377\377t\2702\375\377\310\200\254" - "2\312\332\250\377\377\377\215\2351\377\377\377\230\2242\377\377\250\244\210" - "2\307\260|\377\377\377\262x1\377\377\377\274p2\377\337\207\310d2\323xQ\324" - "X2\327T1\227/\14\260|2\377\377\234\307\260|\244\2102\377\377\377\377\377" - "\377\307\300\213\230\2242\230\2242\377\377\377\377\377\377\310\316\231\310" - "\316\231\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250" - "\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377" - "\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325" - "\355\305\377\377\377\377\377\377`\0`\377\377\377D\3471\371\366\371P\3342" - "\346\371\342\377\377\377\\\3161\377\377\377'\24\22\325\355\305t\2702\276" - "\310\251\377\377\377\200\2542\377\377\316\214\2402\310\316\231`6`\230\224" - "2\377\377\250\222u<\307\260|\377\377\377\315\214L\377\377\377\274p2M,#\310" - "d2\312`1\306\304\306\324X2\333bB\325\242W\377\377\377\307\260|=9\22\244\210" - "2\377\377\377\227\234w\307\300\213\230\2242\307\322a\377\377\377\377\377" - "\377Km9\310\316\231\214\2402r\226K\377\377\377\377\377\377\377\377\377\312" - "\332\250\312\332\250`\242`\200\2542\200\2542\224\306\224\377\377\377\377" - "\377\377\377\377\377\377\377\377\317\344\266M\250D\317\344\266\377\377\377" - "\203\322\203t\2702t\2702\301\377\177\377\377\377\377\377\377`\330`\377\377" - "\377\377\377\377r\344r\377\377\377\377\377\377\377\377\377\325\355\305\377" - "\377\377\377\377\377D\3502\371\377\364P\3342\346\371\342\377\377\377\\\320" - "2\364\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\200\2542\312" - "\332\250\377\377\377\214\2402\310\316\231\230\2242\307\300\213\377\377\377" - "\244\2102\307\260|\377\377\377\200U0\220^\377\7\4/\227U[\246]\377\255Q1\377" - "\242y\10\3/\306M@\6\4/{^\377mVvmVv\6\5/h\\\377h\\\377\\U\204\12\12\360\5" - "\5/VX\377VX\377\12\12\360LR\221\12\12\360\5\6/\214\2402\377\377\377\377\377" - "\377\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200" - "\2542\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344" - "\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371" - "\342\377\377\377\\\3202\335\364\323\377\377\377h\3042\367\377\324t\2702\317" - "\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402\377\377\262" - "\230\2242\307\300\213\377\377\377\244\2102\307\260|{^\377\200U0\220^\377" - "\7\4/\227U[\246]\377\7\3/\377\242y\236\37""2\306M0\210%\14T-2{^\377mVv\6" - "\5/\6\5/h\\\377\\U\204\\U\204\5\5/\5\5/VX\377VX\377LR\221LR\221\377\377\377" - "\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250\312\332" - "\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266\377" - "\377\377\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377D\3502\365\375\363\377\377" - "\377O\3321l\22l\\\3202\335\364\323\357\346\357h\3042\325\355\305\377\377" - "\377t\2702\317\344\266l-l\200\2521\377\377\377\204\211=\310\316\231\377\377" - "\377\262\243L\307\300\213\377\377\377E&\25mVv{^\377ySB\220^\377\7\4/\275" - "t\201\246]\377\7\3/I\37!\277Z\377\10\3/\237YQ\6\4/{^\377\236\213\247mVv\6" - "\5/,-lh\\\377\\U\204dow\5\5/\5\5/\222\251\377VX\377\310\316\231T{@\377\377" - "\377\214\2402w\240V\377\377\377\377\377\377\377\377\377\377\377\377\312\332" - "\250U\231G\377\377\377\200\2542q\270\\\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377l\317l\317\344\266\317\344\266z\330v\377\377\377" - "\377\377\377\323\377\221t\2702t\2702l\352l\377\377\377\377\377\377\377\377" - "\377D\3502\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\364" - "\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200" - "\2542\312\332\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\307" - "\300\213\377\377\377\6\5/mVv{^\377\200U0\220^\377\7\4/\227U[\246]\377\7\3" - "/\255RN\277Z\377\10\3/\306M@\6\4/{^\377{^\377mVv\6\5/\6\5/h\\\377h\\\377" - "\\U\204\12\12\360\5\5/\12\12\360\377\377\377\377\377\377\310\316\231\310" - "\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377" - "\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200\254" - "2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\317\344\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702" - "\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\3342\346\371\342" - "\377\377\377\\\3202\335\364\323\377\377\377h\3042\325\355\305\377\377\377" - "t\2702\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402" - "\310\316\231\377\377\377\230\2242\307\300\213h\\\377\6\5/mVv{^\377\200U0" - "\220^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{" - "^\377mVvmVv\6\5/\12\12\360h\\\377\\U\204\\U\204\5\5/\230\2242\377\377\377" - "\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214" - "\2402\377\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332" - "\250\377\377\377\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317" - "\344\266\377\377\377\377\377\377\377\377\377\377\377\377D\3502q\10p\377\377" - "\377P\3342\335\350\332\377\377\377\\\3202\351\366\337\377\377\377h\3042d" - "!\\\377\377\377t\2702\277\302\252\377\377\377\200\2542\343\345\301\377\377" - "\377\214\2402^2H\377\377\377\230\2242\257\235\204h\\\377\6\5/\223o\234{^" - "\377\6\4/<\36""1\377\252\215j)2\211XK\377\250\203\202$2\337~c\377\242y\236" - "\37""2]#\26\306M@\6\4/ym\274{^\377mVvELn\6\5/h\\\37703x\\U\204\307\300\213" - "\204\226\\\230\2242\377\377\377\377\377\377\377\377\377\310\316\231^\212" - "H\377\377\377\214\2402}\256b\377\377\377\377\377\377\377\377\377\377\377" - "\377\312\332\250_\251O\377\377\377\377\377\377y\310j\200\2542\377\377\377" - "\377\377\377\377\377\377\377\377\377x\341x\377\377\377\377\377\377\177\350" - "|\317\344\266\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\334" - "2\346\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\304" - "2\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200\2542\312\332" - "\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\\U\204h\\\377" - "\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\255" - "RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377mVvmVv\6\5/\12\12\360h\\\377" - "\377\377\377\307\300\213\377\377\377\230\2242\230\2242\377\377\377\377\377" - "\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214\2402\377" - "\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\312" - "\332\250\377\377\377\200\2542\200\2542\200\2542\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\350" - "2\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377\377\377\\\320" - "2\335\364\323\377\377\377h\3042\325\355\305\377\377\377t\2702\317\344\266" - "\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\214\2402\310\316" - "\231\377\377\377\5\5/\\U\204h\\\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220" - "^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{^\377" - "\12\12\360mVv\6\5/\6\5/\377\377\377\377\377\377\307\300\213\307\300\213\377" - "\377\377\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316" - "\231\310\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377" - "\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377\377\377\377\377" - "\204\0\204\377\377\377D\3502\355\364\353\377\377\377\377\377\377Y\335;\346" - "\371\342\377\377\377/\26\31\335\364\323\377\377\377k\255<\325\355\305\377" - "\377\377\377\377\377t\2702\317\344\266\2046\204\200\2542\312\332\250\340" - "\317\340\214\2402\310\316\231\377\377\377VX\377\5\5//\33Dh\\\377\6\5/tVz" - "{^\377\6\4/=0\377\201Vi\220^\377\3\1\30\227U[\246]\377?6U\255RN\277Z\377" - "\337]s\306M0\306M@\3\2\30{^\377{^\377yv}mVv\244\2102\377\377\377\377\377" - "\377\377\377\377gyG\307\300\213\230\2242\212\242h\377\377\377\377\377\377" - "\377\377\377\377\377\377\310\316\231g\230O\377\377\377\214\2402\205\274q" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377h\270V\312\332" - "\250\377\377\377\222\344\222\200\2542\200\2542\377\377\377\377\377\377\377" - "\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346" - "\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\3042\325" - "\355\305\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312" - "\332\250\377\377\377\214\2402\310\316\231VX\377\12\12\360\5\5/\\U\204h\\" - "\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3" - "/\255RN\255RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377\12\12\360\307\260" - "|\244\2102\244\2102\377\377\377\377\377\377\377\377\377\307\300\213\377\377" - "\377\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310" - "\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377" - "\377\377\377\200\2542\200\2542\377\377\377\377\377\377D\3502\377\377\377" - "\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\377\377\377" - "\335\364\323\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702" - "\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\377\377\377\214" - "\2402LR\221VX\377\5\5/\\U\204\12\12\360h\\\377\6\5/mVv{^\377\6\4/\12\12\360" - "\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\7\3/\255RN\277Z\377\10\3/\306M@" - "\6\4/\6\4/{^\377\377\377\377\307\260|\377\377\377\244\2102\377\377\377\377" - "\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\377\377" - "\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231\377\377" - "\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377\377\377\377" - "\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377\377-\17\34\346" - "\371\342\377\377\377\363\346\363\\\3202\335\364\323\377\377\377h\3042\377" - "\377\377x)o\377\377\377t\2702\301\276\255\377\377\377\377\377\377\243\273" - "U\312\332\250\377\377\377O-\34\12\12\360LR\221gU\333\5\5/\\U\204<)\377h\\" - "\377\6\5/=!B{^\377\6\4/A2\306\201Vi\220^\377I9q\227U[\246]\377]-\220\7\3" - "/\255RN\245q\304\10\3/\306M0\377\236\221\6\4/\377\377\377\220\231\220\307" - "\260|\307\260|\226\227m\244\2102\377\377\377\377\377\377\377\377\377\307" - "\300\213p\207N\230\2242\230\2242\254\316\254\377\377\377\377\377\377\377" - "\377\377\310\316\231\310\316\231\220\317\220\377\377\377\214\2402\216\316" - "\200\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377r\310^\312" - "\332\250\377\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377" - "P\3342\377\377\377\346\371\342\377\377\377\\\3202\335\364\323\377\377\377" - "\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702\317\344\266" - "\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\5\6/LR\221\12\12" - "\360VX\377\5\5/\\U\204h\\\377\12\12\360\6\5/mVv{^\377\6\4/\12\12\360\201" - "Vi\220^\377\7\4/\227U[\12\12\360\246]\377\7\3/\255RN\277Z\377\277Z\377\10" - "\3/\306M@\260|2\260|2\377\377\377\377\377\377\307\260|\377\377\377\244\210" - "2\377\377\377\377\377\377\377\377\377\377\377\377\307\300\213\377\377\377" - "\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316" - "\231\310\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377D\3502\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377" - "\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\325\355\305\377" - "\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312" - "\332\250\377\377\377\12\12\360\5\6/LR\221VX\377\12\12\360\5\5/\\U\204h\\" - "\377\6\5/\12\12\360mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\227" - "U[\246]\377\7\3/\255RN\12\12\360\277Z\377\10\3/\333bB\377\377\377\260|2\377" - "\377\377\377\377\377\307\260|\307\260|\244\2102\244\2102\377\377\377\377" - "\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\230\224" - "2\377\377\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231" - "\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377)\10\36\362\375\360\377\377\377\370" - "\356\370P\3342\346\371\342\377\377\377\377\377\377\\\3202\207\"\201\377\377" - "\377\377\377\377p\250D\325\355\305\377\377\377\377\377\377t\2702\317\344" - "\266\234?\234\200\2542\377\377\377\274\260\244FS\377\5\6/;#\377LR\221VX\377" - "\3\1\34\12\12\360\\U\204{^\330\6\5/\12\12\360\257\203\270{^\377\6\4/\6\4" - "\222\201Vi\220^\377P@d\12\12\360\227U[\370\244\377\7\3/\255RNi./\277Z\377" - "\324X2\264\202w\333bB\260|2\377\377\377\377\377\377\377\377\377yvK\377\377" - "\377\244\2102\236\247|\377\377\377\377\377\377\377\377\377\307\300\213\307" - "\300\213\234\306\234\230\2242\377\377\377\256\330\256\377\377\377\377\377" - "\377\377\377\377\310\316\231\310\316\231\234\341\234\377\377\377\214\240" - "2\232\343\223\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375" - "\360\377\377\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\" - "\3202\335\364\323\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377" - "\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312\332\250\12" - "\12\360FS\377\5\6/LR\221\12\12\360RW\255\3\5\35\6\11\224ZT\\d[\261\3\4\35" - "\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270\4\3\35\6\11\224\226UG\242" - "\\\274\4\3\35\4\3\35\254R@\377\377\311\203U\36\203U\36\323a:my\36my\36\377" - "\377\276\377\377\276\243\255X\243\255X\236\371\236e\204\36\236\371\236\374" - "\377\273\236\371\236\236\371\236\234\275`\236\371\236^\220\36^\220\36\236" - "\371\236\352\377\267\352\377\267\236\371\236\236\371\236\310\316\231\310" - "\316\231\377\377\377\377\377\377\214\2402\377\377\377\377\377\377\377\377" - "\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346\371\342\377\377" - "\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\377\377" - "\377\325\355\305\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377" - "\377\377\200\2542\346\3\4\35lVT\4\4hw]\264\4\4\35aK\244\200VN\214]\270kZ\371\4\3\35" - "\270\212Io\225o\377\377\306{a\36\253\300\253\304wB\377\377\311\377\377\377" - "\203U\36\323a:\224D(my\36\236\371\236\307\316\266\377\377\276\236\371\236" - "\377\377\343\236\371\236e\204\36Gk\25\236\371\236\374\377\273\260\334\260" - "\236\371\236\234\275`\377\377\377\377\377\377\230\2242k\207#\377\377\377" - "\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377" - "\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\\3202\377\377" - "\377\335\364\323\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377" - "\377\377\377\377\377t\2702\317\344\266\377\377\3778L\377\12\12\360\5\6/<" - "L\237\12\12\360BR\252\3\5\35\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\\6\11\224" - "d[\261\6\11\224\3\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6" - "\11\224tm\36\270\212I\270\212I\377\377\306{a\36{a\36\304wB\236\371\236\377" - "\377\311\203U\36\236\371\236\323a:my\36my\36\236\371\236\377\377\276\236" - "\371\236\243\255X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374" - "\377\273\236\371\236\307\300\213\307\300\213\377\377\377\377\377\377\230" - "\2242\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377" - "\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377\377\377" - "\\\3202\335\364\323\377\377\377\377\377\377\377\377\377h\3042\325\355\305" - "\377\377\377\377\377\377t\2702\377\377\377\317\344\2668L\377\12\12\360\5" - "\6/\12\12\360> 4) == 0x1) { - real_byteorder = SDL_BIG_ENDIAN; - } else { - real_byteorder = SDL_LIL_ENDIAN; - } - if (SDL_ATvassert( real_byteorder == SDL_BYTEORDER, - "Machine detected as %s endian but appears to be %s endian.", - (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big", - (real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big" )) - return; - - /* Test 16 swap. */ - if (SDL_ATvassert( SDL_Swap16(value16) == swapped16, - "16 bit swapped incorrectly: 0x%X => 0x%X", - value16, SDL_Swap16(value16) )) - return; - - /* Test 32 swap. */ - if (SDL_ATvassert( SDL_Swap32(value32) == swapped32, - "32 bit swapped incorrectly: 0x%X => 0x%X", - value32, SDL_Swap32(value32) )) - return; - -#ifdef SDL_HAS_64BIT_TYPE - /* Test 64 swap. */ - if (SDL_ATvassert( SDL_Swap64(value64) == swapped64, -#ifdef _MSC_VER - "64 bit swapped incorrectly: 0x%I64X => 0x%I64X", -#else - "64 bit swapped incorrectly: 0x%llX => 0x%llX", -#endif - value64, SDL_Swap64(value64) )) - return; -#endif - - SDL_ATend(); -} - - -/** - * @brief Platform test entrypoint. - */ -#ifdef TEST_STANDALONE -int main( int argc, const char *argv[] ) -{ - (void) argc; - (void) argv; -#else /* TEST_STANDALONE */ -int test_platform (void) -{ -#endif /* TEST_STANDALONE */ - - SDL_ATinit( "Platform" ); - - /* Debug information. */ - SDL_ATprintVerbose( 1, "%s System detected\n", SDL_GetPlatform() ); - SDL_ATprintVerbose( 1, "System is %s endian\n", -#ifdef SDL_LIL_ENDIAN - "little" -#else - "big" -#endif - ); - SDL_ATprintVerbose( 1, "CPU count: %d\n", SDL_GetCPUCount()); - SDL_ATprintVerbose( 1, "Available extensions:\n" ); - SDL_ATprintVerbose( 1, " RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected" ); - SDL_ATprintVerbose( 1, " MMX %s\n", SDL_HasMMX()? "detected" : "not detected" ); - SDL_ATprintVerbose( 1, " SSE %s\n", SDL_HasSSE()? "detected" : "not detected" ); - SDL_ATprintVerbose( 1, " SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected" ); - SDL_ATprintVerbose( 1, " SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected" ); - SDL_ATprintVerbose( 1, " SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected" ); - SDL_ATprintVerbose( 1, " SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected" ); - - plat_testTypes(); - plat_testEndian(); - - return SDL_ATfinish(); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/platform/platform.h b/3rdparty/SDL-1.3.0-5387/test/automated/platform/platform.h deleted file mode 100644 index d8310e0c07..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/platform/platform.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Part of SDL test suite. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#ifndef _TEST_PLATFORM -# define _TEST_PLATFORM - - -int test_platform (void); - - -#endif /* _TEST_PLATFORM */ - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rect/rect.c b/3rdparty/SDL-1.3.0-5387/test/automated/rect/rect.c deleted file mode 100644 index 3ae2fc534c..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rect/rect.c +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Automated SDL rect test. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - - - -#include "SDL_rect.h" -#include "../SDL_at.h" - - -/* - * Prototypes. - */ -static void rect_testIntersectRectAndLine (void); - - -/** - * @brief Tests SDL_IntersectRectAndLine() - */ -static void rect_testIntersectRectAndLine (void) -{ - SDL_Rect rect = { 0, 0, 32, 32 }; - int x1, y1; - int x2, y2; - SDL_bool clipped; - - SDL_ATbegin( "IntersectRectAndLine" ); - - x1 = -10; - y1 = 0; - x2 = -10; - y2 = 31; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( !clipped && - x1 == -10 && y1 == 0 && x2 == -10 && y2 == 31, - "line outside to the left was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = 40; - y1 = 0; - x2 = 40; - y2 = 31; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( !clipped && - x1 == 40 && y1 == 0 && x2 == 40 && y2 == 31, - "line outside to the right was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = 0; - y1 = -10; - x2 = 31; - y2 = -10; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( !clipped && - x1 == 0 && y1 == -10 && x2 == 31 && y2 == -10, - "line outside above was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = 0; - y1 = 40; - x2 = 31; - y2 = 40; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( !clipped && - x1 == 0 && y1 == 40 && x2 == 31 && y2 == 40, - "line outside below was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = 0; - y1 = 0; - x2 = 31; - y2 = 31; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( clipped && - x1 == 0 && y1 == 0 && x2 == 31 && y2 == 31, - "line fully inside rect was clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = -10; - y1 = 15; - x2 = 40; - y2 = 15; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( clipped && - x1 == 0 && y1 == 15 && x2 == 31 && y2 == 15, - "horizontal line rect was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = -32; - y1 = -32; - x2 = 63; - y2 = 63; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( clipped && - x1 == 0 && y1 == 0 && x2 == 31 && y2 == 31, - "diagonal line to lower right was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = 63; - y1 = 63; - x2 = -32; - y2 = -32; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( clipped && - x1 == 31 && y1 == 31 && x2 == 0 && y2 == 0, - "diagonal line to upper left was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = 63; - y1 = -32; - x2 = -32; - y2 = 63; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( clipped && - x1 == 31 && y1 == 0 && x2 == 0 && y2 == 31, - "diagonal line to lower left was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - x1 = -32; - y1 = 63; - x2 = 63; - y2 = -32; - clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2); - SDL_ATvassert( clipped && - x1 == 0 && y1 == 31 && x2 == 31 && y2 == 0, - "diagonal line to upper right was incorrectly clipped: %d,%d - %d,%d", - x1, y1, x2, y2); - - SDL_ATend(); -} - - -/** - * @brief Rect test entrypoint. - */ -#ifdef TEST_STANDALONE -int main( int argc, const char *argv[] ) -{ - (void) argc; - (void) argv; -#else /* TEST_STANDALONE */ -int test_rect (void) -{ -#endif /* TEST_STANDALONE */ - - SDL_ATinit( "Rect" ); - - rect_testIntersectRectAndLine(); - - return SDL_ATfinish(); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rect/rect.h b/3rdparty/SDL-1.3.0-5387/test/automated/rect/rect.h deleted file mode 100644 index 9a08061514..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rect/rect.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Part of SDL test suite. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#ifndef _TEST_RECT -# define _TEST_RECT - - -int test_rect (void); - - -#endif /* _TEST_RECT */ - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/render/render.c b/3rdparty/SDL-1.3.0-5387/test/automated/render/render.c deleted file mode 100644 index 82f56ef6c3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/render/render.c +++ /dev/null @@ -1,1082 +0,0 @@ -/** - * Automated SDL_Surface test. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#include "SDL.h" -#include "../SDL_at.h" - -#include "../common/common.h" - - -/* - * Pull in images for testcases. - */ -#include "../common/images.h" - - -#define SCREEN_W 80 -#define SCREEN_H 60 - -#define FACE_W img_face.width -#define FACE_H img_face.height - -static SDL_Renderer *renderer; - -/* - * Prototypes. - */ -static int render_compare( const char *msg, const SurfaceImage_t *s, int allowable_error ); -static int render_isSupported( int code ); -static int render_hasDrawColor (void); -static int render_hasBlendModes (void); -static int render_hasTexColor (void); -static int render_hasTexAlpha (void); -static int render_clearScreen (void); -/* Testcases. */ -static int render_testPrimitives (void); -static int render_testPrimitivesBlend (void); -static int render_testBlit (void); -static int render_testBlitColour (void); -static int render_testBlitAlpha (void); -static int render_testBlitBlendMode( SDL_Texture * tface, int mode ); -static int render_testBlitBlend (void); - - -/** - * @brief Compares screen pixels with image pixels. - * - * @param msg Message on failure. - * @param s Image to compare against. - * @return 0 on success. - */ -static int render_compare( const char *msg, const SurfaceImage_t *s, int allowable_error ) -{ - int ret; - SDL_Rect rect; - Uint8 pix[4*80*60]; - SDL_Surface *testsur; - - /* Read pixels. */ - /* Explicitly specify the rect in case the window isn't expected size... */ - rect.x = 0; - rect.y = 0; - rect.w = 80; - rect.h = 60; - ret = SDL_RenderReadPixels(renderer, &rect, FORMAT, pix, 80*4 ); - if (SDL_ATassert( "SDL_RenderReadPixels", ret==0) ) - return 1; - - /* Create surface. */ - testsur = SDL_CreateRGBSurfaceFrom( pix, 80, 60, 32, 80*4, - RMASK, GMASK, BMASK, AMASK); - if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", testsur!=NULL )) - return 1; - - /* Compare surface. */ - ret = surface_compare( testsur, s, allowable_error ); - if (SDL_ATassert( msg, ret==0 )) - return 1; - - /* Clean up. */ - SDL_FreeSurface( testsur ); - - return 0; -} - -#if 0 -static int dump_screen( int index ) -{ - int ret; - char name[1024]; - Uint8 pix[4*80*60]; - SDL_Surface *testsur; - SDL_RendererInfo info; - - /* Read pixels. */ - ret = SDL_RenderReadPixels(renderer, NULL, FORMAT, pix, 80*4 ); - if (SDL_ATassert( "SDL_RenderReadPixels", ret==0) ) - return 1; - - /* Create surface. */ - testsur = SDL_CreateRGBSurfaceFrom( pix, 80, 60, 32, 80*4, - RMASK, GMASK, BMASK, AMASK); - if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", testsur!=NULL )) - return 1; - - /* Dump surface. */ - SDL_GetRendererInfo(renderer,&info); - sprintf(name, "%s-%s-%d.bmp", SDL_GetCurrentVideoDriver(), info.name, index); - SDL_SaveBMP(testsur, name); - - /* Clean up. */ - SDL_FreeSurface( testsur ); - - return 0; -} -#endif - -/** - * @brief Checks to see if functionality is supported. - */ -static int render_isSupported( int code ) -{ - return (code == 0); -} - - -/** - * @brief Test to see if we can vary the draw colour. - */ -static int render_hasDrawColor (void) -{ - int ret, fail; - Uint8 r, g, b, a; - - fail = 0; - - /* Set colour. */ - ret = SDL_SetRenderDrawColor(renderer, 100, 100, 100, 100 ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a ); - if (!render_isSupported(ret)) - fail = 1; - /* Restore natural. */ - ret = SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE ); - if (!render_isSupported(ret)) - fail = 1; - - /* Something failed, consider not available. */ - if (fail) - return 0; - /* Not set properly, consider failed. */ - else if ((r != 100) || (g != 100) || (b != 100) || (a != 100)) - return 0; - return 1; -} - - -/** - * @brief Test to see if we can vary the blend mode. - */ -static int render_hasBlendModes (void) -{ - int fail; - int ret; - SDL_BlendMode mode; - - fail = 0; - - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetRenderDrawBlendMode(renderer, &mode ); - if (!render_isSupported(ret)) - fail = 1; - ret = (mode != SDL_BLENDMODE_BLEND); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetRenderDrawBlendMode(renderer, &mode ); - if (!render_isSupported(ret)) - fail = 1; - ret = (mode != SDL_BLENDMODE_ADD); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_MOD ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetRenderDrawBlendMode(renderer, &mode ); - if (!render_isSupported(ret)) - fail = 1; - ret = (mode != SDL_BLENDMODE_MOD); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetRenderDrawBlendMode(renderer, &mode ); - if (!render_isSupported(ret)) - fail = 1; - ret = (mode != SDL_BLENDMODE_NONE); - if (!render_isSupported(ret)) - fail = 1; - - return !fail; -} - - -/** - * @brief Loads the test face. - */ -static SDL_Texture * render_loadTestFace (void) -{ - SDL_Surface *face; - SDL_Texture *tface; - - /* Create face surface. */ - face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data, - img_face.width, img_face.height, 32, img_face.width*4, -#if (SDL_BYTEORDER == SDL_BIG_ENDIAN) - 0xff000000, /* Red bit mask. */ - 0x00ff0000, /* Green bit mask. */ - 0x0000ff00, /* Blue bit mask. */ - 0x000000ff /* Alpha bit mask. */ -#else - 0x000000ff, /* Red bit mask. */ - 0x0000ff00, /* Green bit mask. */ - 0x00ff0000, /* Blue bit mask. */ - 0xff000000 /* Alpha bit mask. */ -#endif - ); - if (face == NULL) - return 0; - tface = SDL_CreateTextureFromSurface(renderer, face); - SDL_FreeSurface(face); - - return tface; -} - - -/** - * @brief Test to see if can set texture colour mode. - */ -static int render_hasTexColor (void) -{ - int fail; - int ret; - SDL_Texture *tface; - Uint8 r, g, b; - - /* Get test face. */ - tface = render_loadTestFace(); - if (tface == 0) - return 0; - - /* See if supported. */ - fail = 0; - ret = SDL_SetTextureColorMod( tface, 100, 100, 100 ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetTextureColorMod( tface, &r, &g, &b ); - if (!render_isSupported(ret)) - fail = 1; - - /* Clean up. */ - SDL_DestroyTexture( tface ); - - if (fail) - return 0; - else if ((r != 100) || (g != 100) || (b != 100)) - return 0; - return 1; -} - - -/** - * @brief Test to see if we can vary the alpha of the texture. - */ -static int render_hasTexAlpha (void) -{ - int fail; - int ret; - SDL_Texture *tface; - Uint8 a; - - /* Get test face. */ - tface = render_loadTestFace(); - if (tface == 0) - return 0; - - /* See if supported. */ - fail = 0; - ret = SDL_SetTextureAlphaMod( tface, 100 ); - if (!render_isSupported(ret)) - fail = 1; - ret = SDL_GetTextureAlphaMod( tface, &a ); - if (!render_isSupported(ret)) - fail = 1; - - /* Clean up. */ - SDL_DestroyTexture( tface ); - - if (fail) - return 0; - else if (a != 100) - return 0; - return 1; -} - - -/** - * @brief Clears the screen. - * - * @note We don't test for errors, but they shouldn't happen. - */ -static int render_clearScreen (void) -{ - int ret; - - /* Set colour. */ - ret = SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE ); - /* - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - */ - - /* Clear screen. */ - ret = SDL_RenderFillRect(renderer, NULL ); - /* - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - */ - - /* Set defaults. */ - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE ); - /* - if (SDL_ATassert( "SDL_SetRenderDrawBlendMode", ret == 0)) - return -1; - */ - ret = SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE ); - /* - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - */ - - return 0; -} - - -/** - * @brief Tests the SDL primitives for rendering. - */ -static int render_testPrimitives (void) -{ - int ret; - int x, y; - SDL_Rect rect; - - /* Clear surface. */ - if (render_clearScreen()) - return -1; - - /* Need drawcolour or just skip test. */ - if (!render_hasDrawColor()) - return 0; - - /* Draw a rectangle. */ - rect.x = 40; - rect.y = 0; - rect.w = 40; - rect.h = 80; - ret = SDL_SetRenderDrawColor(renderer, 13, 73, 200, SDL_ALPHA_OPAQUE ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_RenderFillRect(renderer, &rect ); - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - - /* Draw a rectangle. */ - rect.x = 10; - rect.y = 10; - rect.w = 60; - rect.h = 40; - ret = SDL_SetRenderDrawColor(renderer, 200, 0, 100, SDL_ALPHA_OPAQUE ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_RenderFillRect(renderer, &rect ); - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - - /* Draw some points like so: - * X.X.X.X.. - * .X.X.X.X. - * X.X.X.X.. */ - for (y=0; y<3; y++) { - x = y % 2; - for (; x<80; x+=2) { - ret = SDL_SetRenderDrawColor(renderer, x*y, x*y/2, x*y/3, SDL_ALPHA_OPAQUE ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_RenderDrawPoint(renderer, x, y ); - if (SDL_ATassert( "SDL_RenderDrawPoint", ret == 0)) - return -1; - } - } - - /* Draw some lines. */ - ret = SDL_SetRenderDrawColor(renderer, 0, 255, 0, SDL_ALPHA_OPAQUE ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_RenderDrawLine(renderer, 0, 30, 80, 30 ); - if (SDL_ATassert( "SDL_RenderDrawLine", ret == 0)) - return -1; - ret = SDL_SetRenderDrawColor(renderer, 55, 55, 5, SDL_ALPHA_OPAQUE ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_RenderDrawLine(renderer, 40, 30, 40, 60 ); - if (SDL_ATassert( "SDL_RenderDrawLine", ret == 0)) - return -1; - ret = SDL_SetRenderDrawColor(renderer, 5, 105, 105, SDL_ALPHA_OPAQUE ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_RenderDrawLine(renderer, 0, 0, 29, 29 ); - if (SDL_ATassert( "SDL_RenderDrawLine", ret == 0)) - return -1; - ret = SDL_RenderDrawLine(renderer, 29, 30, 0, 59 ); - if (SDL_ATassert( "SDL_RenderDrawLine", ret == 0)) - return -1; - ret = SDL_RenderDrawLine(renderer, 79, 0, 50, 29 ); - if (SDL_ATassert( "SDL_RenderDrawLine", ret == 0)) - return -1; - ret = SDL_RenderDrawLine(renderer, 79, 59, 50, 30 ); - if (SDL_ATassert( "SDL_RenderDrawLine", ret == 0)) - return -1; - - /* See if it's the same. */ - if (render_compare( "Primitives output not the same.", &img_primitives, ALLOWABLE_ERROR_OPAQUE )) - return -1; - - return 0; -} - - -/** - * @brief Tests the SDL primitives with alpha for rendering. - */ -static int render_testPrimitivesBlend (void) -{ - int ret; - int i, j; - SDL_Rect rect; - - /* Clear surface. */ - if (render_clearScreen()) - return -1; - - /* Need drawcolour and blendmode or just skip test. */ - if (!render_hasDrawColor() || !render_hasBlendModes()) - return 0; - - /* Create some rectangles for each blend mode. */ - ret = SDL_SetRenderDrawColor(renderer, 255, 255, 255, 0 ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE ); - if (SDL_ATassert( "SDL_SetRenderDrawBlendMode", ret == 0)) - return -1; - ret = SDL_RenderFillRect(renderer, NULL ); - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - rect.x = 10; - rect.y = 25; - rect.w = 40; - rect.h = 25; - ret = SDL_SetRenderDrawColor(renderer, 240, 10, 10, 75 ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD ); - if (SDL_ATassert( "SDL_SetRenderDrawBlendMode", ret == 0)) - return -1; - ret = SDL_RenderFillRect(renderer, &rect ); - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - rect.x = 30; - rect.y = 40; - rect.w = 45; - rect.h = 15; - ret = SDL_SetRenderDrawColor(renderer, 10, 240, 10, 100 ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND ); - if (SDL_ATassert( "SDL_SetRenderDrawBlendMode", ret == 0)) - return -1; - ret = SDL_RenderFillRect(renderer, &rect ); - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - rect.x = 25; - rect.y = 25; - rect.w = 25; - rect.h = 25; - ret = SDL_SetRenderDrawColor(renderer, 10, 10, 240, 125 ); - if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) - return -1; - ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE ); - if (SDL_ATassert( "SDL_SetRenderDrawBlendMode", ret == 0)) - return -1; - ret = SDL_RenderFillRect(renderer, &rect ); - if (SDL_ATassert( "SDL_RenderFillRect", ret == 0)) - return -1; - - /* Draw blended lines, lines for everyone. */ - for (i=0; i=0)) - goto err_cleanup; - SDL_ATprintVerbose( 1, " %d Render Drivers\n", nr ); - SDL_ATend(); - for (j=0; j -#include "SDL.h" - -#ifndef TestSupportRWops_h -#define TestSupportRWops_h - -FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode); -FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode); -SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode); -SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode); - - -#endif diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/TestSupportRWops_Cocoa.m b/3rdparty/SDL-1.3.0-5387/test/automated/rwops/TestSupportRWops_Cocoa.m deleted file mode 100644 index 5f0dc07d36..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/TestSupportRWops_Cocoa.m +++ /dev/null @@ -1,89 +0,0 @@ -#import "TestSupportRWops.h" -#import -#include "SDL.h" - -/* For proper OS X applications, the resources are contained inside the application bundle. - So the strategy is to first check the application bundle for the file, then fallback to the current working directory. - Note: One additional corner-case is if the resource is in a framework's resource bundle instead of the app. - We might want to use bundle identifiers, e.g. org.libsdl.sdl to get the bundle for the framework, - but we would somehow need to know what the bundle identifiers we need to search are. - Conversely, write directories are usually not in the bundles. This implementation uses NSTemporaryDirectory, - but consider Preferences, Application Support, Documents, etc. - Also, note the bundle layouts are different for iPhone and Mac. -*/ - -const char* RWOPS_READ = "rwops/read"; -const char* RWOPS_WRITE = "write"; - - -FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode) -{ - FILE* fp = NULL; - - // If the file mode is writable, skip all the bundle stuff because generally the bundle is read-only. - if(strcmp("r", mode) && strcmp("rb", mode)) - { - return fopen(file, mode); - } - - NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init]; - - - NSFileManager* file_manager = [NSFileManager defaultManager]; - NSString* resource_path = [[NSBundle mainBundle] resourcePath]; - - NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)]; - - NSString* full_path_with_file_to_try = [resource_path stringByAppendingPathComponent:ns_string_file_component]; - if([file_manager fileExistsAtPath:full_path_with_file_to_try]) - { - fp = fopen([full_path_with_file_to_try fileSystemRepresentation], mode); - } - else - { - fp = fopen(file, mode); - } - - [autorelease_pool drain]; - - return fp; -} - -FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode) -{ - FILE* fp = NULL; - - NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init]; - - NSFileManager* file_manager = [NSFileManager defaultManager]; - NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)]; - NSString* full_path_with_file_to_try = [NSTemporaryDirectory() stringByAppendingPathComponent:ns_string_file_component]; - - fp = fopen([full_path_with_file_to_try fileSystemRepresentation], mode); - - [autorelease_pool drain]; - - return fp; -} - -SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode) -{ - return SDL_RWFromFile(file, mode); -} - -SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode) -{ - SDL_RWops* rw = NULL; - - NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init]; - - NSFileManager* file_manager = [NSFileManager defaultManager]; - NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)]; - NSString* full_path_with_file_to_try = [NSTemporaryDirectory() stringByAppendingPathComponent:ns_string_file_component]; - - rw = SDL_RWFromFile( [full_path_with_file_to_try fileSystemRepresentation], mode ); - - [autorelease_pool drain]; - return rw; -} - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/TestSupportRWops_Generic.c b/3rdparty/SDL-1.3.0-5387/test/automated/rwops/TestSupportRWops_Generic.c deleted file mode 100644 index a4b366a34f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/TestSupportRWops_Generic.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Generic implementation for file opening routines. -* Customizations for specific platforms should go in alternative files. -*/ - -// quiet windows compiler warnings -#define _CRT_SECURE_NO_WARNINGS - -#include -#include "SDL.h" - -const char* RWOPS_READ = "rwops/read"; -const char* RWOPS_WRITE = "rwops/write"; - -FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode) -{ - return fopen(file, mode); -} - -FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode) -{ - return fopen(file, mode); -} - -SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode) -{ - return SDL_RWFromFile(file, mode); -} - -SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode) -{ - return SDL_RWFromFile(file, mode); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/read b/3rdparty/SDL-1.3.0-5387/test/automated/rwops/read deleted file mode 100644 index c57eff55eb..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/read +++ /dev/null @@ -1 +0,0 @@ -Hello World! \ No newline at end of file diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/rwops.c b/3rdparty/SDL-1.3.0-5387/test/automated/rwops/rwops.c deleted file mode 100644 index 99ec1f46b3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/rwops.c +++ /dev/null @@ -1,272 +0,0 @@ -/** - * Automated SDL_RWops test. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#include "SDL.h" -#include "../SDL_at.h" -#include "TestSupportRWops.h" - -/* Defined in TestSupportRWops implementation to allow flexibility. */ -extern const char* RWOPS_READ; -extern const char* RWOPS_WRITE; - -static const char hello_world[] = "Hello World!"; - - -/** - * @brief Makes sure parameters work properly. - */ -static void rwops_testParam (void) -{ - SDL_RWops *rwops; - - /* Begin testcase. */ - SDL_ATbegin( "RWops Parameters" ); - - /* These should all fail. */ - rwops = SDL_RWFromFile(NULL, NULL); - if (SDL_ATassert( "SDL_RWFromFile(NULL, NULL) worked", rwops == NULL )) - return; - rwops = SDL_RWFromFile(NULL, "ab+"); - if (SDL_ATassert( "SDL_RWFromFile(NULL, \"ab+\") worked", rwops == NULL )) - return; - rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj"); - if (SDL_ATassert( "SDL_RWFromFile(NULL, \"sldfkjsldkfj\") worked", rwops == NULL )) - return; - rwops = SDL_RWFromFile("something", ""); - if (SDL_ATassert( "SDL_RWFromFile(\"something\", \"\") worked", rwops == NULL )) - return; - rwops = SDL_RWFromFile("something", NULL); - if (SDL_ATassert( "SDL_RWFromFile(\"something\", NULL) worked", rwops == NULL )) - return; - - - /* End testcase. */ - SDL_ATend(); -} - - -/** - * @brief Does a generic rwops test. - * - * RWops should have "Hello World!" in it already if write is disabled. - * - * @param write Test writing also. - * @return 1 if an assert is failed. - */ -static int rwops_testGeneric( SDL_RWops *rw, int write ) -{ - char buf[sizeof(hello_world)]; - int i; - - /* Set to start. */ - i = SDL_RWseek( rw, 0, RW_SEEK_SET ); - if (SDL_ATvassert( i == 0, - "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d", - i, 0 )) - return 1; - - /* Test write. */ - i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 ); - if (write) { - if (SDL_ATassert( "Writing with SDL_RWwrite (failed to write)", i == 1 )) - return 1; - } - else { - if (SDL_ATassert( "Writing with SDL_RWwrite (wrote when shouldn't have)", i <= 0 )) - return 1; - } - - /* Test seek. */ - i = SDL_RWseek( rw, 6, RW_SEEK_SET ); - if (SDL_ATvassert( i == 6, - "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d", - i, 0 )) - return 1; - - /* Test seek. */ - i = SDL_RWseek( rw, 0, RW_SEEK_SET ); - if (SDL_ATvassert( i == 0, - "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d", - i, 0 )) - return 1; - - /* Test read. */ - i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 ); - if (SDL_ATassert( "Reading with SDL_RWread", i == sizeof(hello_world)-1 )) - return 1; - if (SDL_ATassert( "Memory read does not match memory written", - SDL_memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 )) - return 1; - - /* More seek tests. */ - i = SDL_RWseek( rw, -4, RW_SEEK_CUR ); - if (SDL_ATvassert( i == sizeof(hello_world)-5, - "Seeking with SDL_RWseek (RW_SEEK_CUR): got %d, expected %d", - i, sizeof(hello_world)-5 )) - return 1; - i = SDL_RWseek( rw, -1, RW_SEEK_END ); - if (SDL_ATvassert( i == sizeof(hello_world)-2, - "Seeking with SDL_RWseek (RW_SEEK_END): got %d, expected %d", - i, sizeof(hello_world)-2 )) - return 1; - - return 0; -} - - -/** - * @brief Tests opening from memory. - */ -static void rwops_testMem (void) -{ - char mem[sizeof(hello_world)]; - SDL_RWops *rw; - - /* Begin testcase. */ - SDL_ATbegin( "SDL_RWFromMem" ); - - /* Open. */ - rw = SDL_RWFromMem( mem, sizeof(hello_world)-1 ); - if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL )) - return; - - /* Run generic tests. */ - if (rwops_testGeneric( rw, 1 )) - return; - - /* Close. */ - SDL_FreeRW( rw ); - - /* End testcase. */ - SDL_ATend(); -} - - -static const char const_mem[] = "Hello World!"; -/** - * @brief Tests opening from memory. - */ -static void rwops_testConstMem (void) -{ - SDL_RWops *rw; - - /* Begin testcase. */ - SDL_ATbegin( "SDL_RWFromConstMem" ); - - /* Open. */ - rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem)-1 ); - if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL )) - return; - - /* Run generic tests. */ - if (rwops_testGeneric( rw, 0 )) - return; - - /* Close. */ - SDL_FreeRW( rw ); - - /* End testcase. */ - SDL_ATend(); -} - - -/** - * @brief Tests opening from memory. - */ -static void rwops_testFile (void) -{ - SDL_RWops *rw; - - /* Begin testcase. */ - SDL_ATbegin( "SDL_RWFromFile" ); - - /* Read test. */ - rw = TestSupportRWops_OpenRWopsFromReadDir( RWOPS_READ, "r" ); - if (SDL_ATassert( "Opening memory with SDL_RWFromFile RWOPS_READ", rw != NULL )) - return; - if (rwops_testGeneric( rw, 0 )) - return; - SDL_FreeRW( rw ); - - /* Write test. */ - rw = TestSupportRWops_OpenRWopsFromWriteDir( RWOPS_WRITE, "w+" ); - if (SDL_ATassert( "Opening memory with SDL_RWFromFile RWOPS_WRITE", rw != NULL )) - return; - if (rwops_testGeneric( rw, 1 )) - return; - SDL_FreeRW( rw ); - - /* End testcase. */ - SDL_ATend(); -} - - -/** - * @brief Tests opening from memory. - */ -static void rwops_testFP (void) -{ -#ifdef HAVE_STDIO_H - FILE *fp; - SDL_RWops *rw; - - /* Begin testcase. */ - SDL_ATbegin( "SDL_RWFromFP" ); - - /* Run read tests. */ - fp = TestSupportRWops_OpenFPFromReadDir( RWOPS_READ, "r" ); - if (SDL_ATassert( "Failed to open file 'WOPS_READ", fp != NULL)) - return; - rw = SDL_RWFromFP( fp, 1 ); - if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL )) - return; - if (rwops_testGeneric( rw, 0 )) - return; - SDL_FreeRW( rw ); - - /* Run write tests. */ - fp = TestSupportRWops_OpenFPFromWriteDir( RWOPS_WRITE, "w+" ); - if (SDL_ATassert( "Failed to open file RWOPS_WRITE", fp != NULL)) - return; - rw = SDL_RWFromFP( fp, 1 ); - if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL )) - return; - if (rwops_testGeneric( rw, 1 )) - return; - SDL_FreeRW( rw ); - - /* End testcase. */ - SDL_ATend(); -#endif /* HAVE_STDIO_H */ -} - - -/** - * @brief Entry point. - */ -#ifdef TEST_STANDALONE -int main( int argc, const char *argv[] ) -{ - (void) argc; - (void) argv; -#else /* TEST_STANDALONE */ -int test_rwops (void) -{ -#endif /* TEST_STANDALONE */ - - SDL_ATinit( "SDL_RWops" ); - - rwops_testParam(); - rwops_testMem(); - rwops_testConstMem(); - rwops_testFile(); - rwops_testFP(); - - return SDL_ATfinish(); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/rwops.h b/3rdparty/SDL-1.3.0-5387/test/automated/rwops/rwops.h deleted file mode 100644 index 676e7f8863..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/rwops/rwops.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Part of SDL test suite. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#ifndef _TEST_RWOPS -# define _TEST_RWOPS - - -int test_rwops (void); - - -#endif /* _TEST_RWOPS */ - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/surface/surface.c b/3rdparty/SDL-1.3.0-5387/test/automated/surface/surface.c deleted file mode 100755 index 9ea82b987e..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/surface/surface.c +++ /dev/null @@ -1,449 +0,0 @@ -/** - * Automated SDL_Surface test. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#include "SDL.h" -#include "SDL_surface.h" -#include "SDL_video.h" -#include "../SDL_at.h" - -#include "../common/common.h" - - -/* - * Pull in images for testcases. - */ -#include "../common/images.h" - - -/* - * Prototypes. - */ -/* Testcases. */ -static void surface_testLoad( SDL_Surface *testsur ); -static void surface_testBlit( SDL_Surface *testsur ); -static int surface_testBlitBlendMode( SDL_Surface *testsur, SDL_Surface *face, int mode ); -static void surface_testBlitBlend( SDL_Surface *testsur ); - - -/** - * @brief Tests sprite loading. - */ -static void surface_testLoad( SDL_Surface *testsur ) -{ - int ret; - SDL_Surface *face, *rface; - - SDL_ATbegin( "Load Test" ); - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return; - - /* Create the blit surface. */ -#ifdef __APPLE__ - face = SDL_LoadBMP("icon.bmp"); -#else - face = SDL_LoadBMP("../icon.bmp"); -#endif - - if (SDL_ATassert( "SDL_CreateLoadBmp", face != NULL)) - return; - - /* Set transparent pixel as the pixel at (0,0) */ - if (face->format->palette) { - ret = SDL_SetColorKey(face, SDL_RLEACCEL, *(Uint8 *) face->pixels); - if (SDL_ATassert( "SDL_SetColorKey", ret == 0)) - return; - } - - /* Convert to 32 bit to compare. */ - rface = SDL_ConvertSurface( face, testsur->format, 0 ); - if (SDL_ATassert( "SDL_ConvertSurface", rface != NULL)) - return; - - /* See if it's the same. */ - if (SDL_ATassert( "Primitives output not the same.", - surface_compare( rface, &img_face, 0 )==0 )) - return; - - /* Clean up. */ - SDL_FreeSurface( rface ); - SDL_FreeSurface( face ); - - SDL_ATend(); -} - - -/** - * @brief Tests some blitting routines. - */ -static void surface_testBlit( SDL_Surface *testsur ) -{ - int ret; - SDL_Rect rect; - SDL_Surface *face; - int i, j, ni, nj; - - SDL_ATbegin( "Blit Tests" ); - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return; - - /* Create face surface. */ - face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data, - img_face.width, img_face.height, 32, img_face.width*4, -#if (SDL_BYTEORDER == SDL_BIG_ENDIAN) - 0xff000000, /* Red bit mask. */ - 0x00ff0000, /* Green bit mask. */ - 0x0000ff00, /* Blue bit mask. */ - 0x000000ff /* Alpha bit mask. */ -#else - 0x000000ff, /* Red bit mask. */ - 0x0000ff00, /* Green bit mask. */ - 0x00ff0000, /* Blue bit mask. */ - 0xff000000 /* Alpha bit mask. */ -#endif - ); - if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL)) - return; - - /* Constant values. */ - rect.w = face->w; - rect.h = face->h; - ni = testsur->w - face->w; - nj = testsur->h - face->h; - - /* Loop blit. */ - for (j=0; j <= nj; j+=4) { - for (i=0; i <= ni; i+=4) { - /* Blitting. */ - rect.x = i; - rect.y = j; - ret = SDL_BlitSurface( face, NULL, testsur, &rect ); - if (SDL_ATassert( "SDL_BlitSurface", ret == 0)) - return; - } - } - - /* See if it's the same. */ - if (SDL_ATassert( "Blitting output not the same (normal blit).", - surface_compare( testsur, &img_blit, 0 )==0 )) - return; - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return; - - /* Test blitting with colour mod. */ - for (j=0; j <= nj; j+=4) { - for (i=0; i <= ni; i+=4) { - /* Set colour mod. */ - ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j ); - if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0)) - return; - - /* Blitting. */ - rect.x = i; - rect.y = j; - ret = SDL_BlitSurface( face, NULL, testsur, &rect ); - if (SDL_ATassert( "SDL_BlitSurface", ret == 0)) - return; - } - } - - /* See if it's the same. */ - if (SDL_ATassert( "Blitting output not the same (using SDL_SetSurfaceColorMod).", - surface_compare( testsur, &img_blitColour, 0 )==0 )) - return; - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return; - - /* Restore colour. */ - ret = SDL_SetSurfaceColorMod( face, 255, 255, 255 ); - if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0)) - return; - - /* Test blitting with colour mod. */ - for (j=0; j <= nj; j+=4) { - for (i=0; i <= ni; i+=4) { - /* Set alpha mod. */ - ret = SDL_SetSurfaceAlphaMod( face, (255/ni)*i ); - if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0)) - return; - - /* Blitting. */ - rect.x = i; - rect.y = j; - ret = SDL_BlitSurface( face, NULL, testsur, &rect ); - if (SDL_ATassert( "SDL_BlitSurface", ret == 0)) - return; - } - } - - /* See if it's the same. */ - if (SDL_ATassert( "Blitting output not the same (using SDL_SetSurfaceAlphaMod).", - surface_compare( testsur, &img_blitAlpha, 0 )==0 )) - return; - - /* Clean up. */ - SDL_FreeSurface( face ); - - SDL_ATend(); -} - - -/** - * @brief Tests a blend mode. - */ -static int surface_testBlitBlendMode( SDL_Surface *testsur, SDL_Surface *face, int mode ) -{ - int ret; - int i, j, ni, nj; - SDL_Rect rect; - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return 1; - - /* Steps to take. */ - ni = testsur->w - face->w; - nj = testsur->h - face->h; - - /* Constant values. */ - rect.w = face->w; - rect.h = face->h; - - /* Test blend mode. */ - for (j=0; j <= nj; j+=4) { - for (i=0; i <= ni; i+=4) { - /* Set blend mode. */ - ret = SDL_SetSurfaceBlendMode( face, mode ); - if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) - return 1; - - /* Blitting. */ - rect.x = i; - rect.y = j; - ret = SDL_BlitSurface( face, NULL, testsur, &rect ); - if (SDL_ATassert( "SDL_BlitSurface", ret == 0)) - return 1; - } - } - - return 0; -} - - -/** - * @brief Tests some more blitting routines. - */ -static void surface_testBlitBlend( SDL_Surface *testsur ) -{ - int ret; - SDL_Rect rect; - SDL_Surface *face; - int i, j, ni, nj; - int mode; - - SDL_ATbegin( "Blit Blending Tests" ); - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return; - - /* Create the blit surface. */ - face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data, - img_face.width, img_face.height, 32, img_face.width*4, -#if (SDL_BYTEORDER == SDL_BIG_ENDIAN) - 0xff000000, /* Red bit mask. */ - 0x00ff0000, /* Green bit mask. */ - 0x0000ff00, /* Blue bit mask. */ - 0x000000ff /* Alpha bit mask. */ -#else - 0x000000ff, /* Red bit mask. */ - 0x0000ff00, /* Green bit mask. */ - 0x00ff0000, /* Blue bit mask. */ - 0xff000000 /* Alpha bit mask. */ -#endif - ); - if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL)) - return; - - /* Set alpha mod. */ - ret = SDL_SetSurfaceAlphaMod( face, 100 ); - if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0)) - return; - - /* Steps to take. */ - ni = testsur->w - face->w; - nj = testsur->h - face->h; - - /* Constant values. */ - rect.w = face->w; - rect.h = face->h; - - /* Test None. */ - if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_NONE )) - return; - if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_NONE).", - surface_compare( testsur, &img_blendNone, 0 )==0 )) - return; - - /* Test Blend. */ - if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_BLEND )) - return; - if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_BLEND).", - surface_compare( testsur, &img_blendBlend, 0 )==0 )) - return; - - /* Test Add. */ - if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_ADD )) - return; - if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_ADD).", - surface_compare( testsur, &img_blendAdd, 0 )==0 )) - return; - - /* Test Mod. */ - if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_MOD )) - return; - if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_MOD).", - surface_compare( testsur, &img_blendMod, 0 )==0 )) - return; - - /* Clear surface. */ - ret = SDL_FillRect( testsur, NULL, - SDL_MapRGB( testsur->format, 0, 0, 0 ) ); - if (SDL_ATassert( "SDL_FillRect", ret == 0)) - return; - - /* Loop blit. */ - for (j=0; j <= nj; j+=4) { - for (i=0; i <= ni; i+=4) { - - /* Set colour mod. */ - ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j ); - if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0)) - return; - - /* Set alpha mod. */ - ret = SDL_SetSurfaceAlphaMod( face, (100/ni)*i ); - if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0)) - return; - - /* Crazy blending mode magic. */ - mode = (i/4*j/4) % 4; - if (mode==0) mode = SDL_BLENDMODE_NONE; - else if (mode==1) mode = SDL_BLENDMODE_BLEND; - else if (mode==2) mode = SDL_BLENDMODE_ADD; - else if (mode==3) mode = SDL_BLENDMODE_MOD; - ret = SDL_SetSurfaceBlendMode( face, mode ); - if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) - return; - - /* Blitting. */ - rect.x = i; - rect.y = j; - ret = SDL_BlitSurface( face, NULL, testsur, &rect ); - if (SDL_ATassert( "SDL_BlitSurface", ret == 0)) - return; - } - } - - /* Check to see if matches. */ - if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLEND_*).", - surface_compare( testsur, &img_blendAll, 0 )==0 )) - return; - - /* Clean up. */ - SDL_FreeSurface( face ); - - SDL_ATend(); -} - - -/** - * @brief Runs all the tests on the surface. - * - * @param testsur Surface to run tests on. - */ -void surface_runTests( SDL_Surface *testsur ) -{ - /* Software surface blitting. */ - surface_testBlit( testsur ); - surface_testBlitBlend( testsur ); -} - - -/** - * @brief Entry point. - */ -#ifdef TEST_STANDALONE -int main( int argc, const char *argv[] ) -{ - (void) argc; - (void) argv; -#else /* TEST_STANDALONE */ -int test_surface (void) -{ -#endif /* TEST_STANDALONE */ - int ret; - SDL_Surface *testsur; - - SDL_ATinit( "SDL_Surface" ); - - SDL_ATbegin( "Initializing" ); - /* Initializes the SDL subsystems. */ - ret = SDL_Init(0); - if (SDL_ATassert( "SDL_Init(0)", ret == 0)) - goto err; - - /* Now run on the video mode. */ - ret = SDL_InitSubSystem( SDL_INIT_VIDEO ); - if (SDL_ATassert( "SDL_InitSubSystem( SDL_INIT_VIDEO )", ret == 0)) - goto err; - - /* - * Surface on surface tests. - */ - /* Create the test surface. */ - testsur = SDL_CreateRGBSurface( 0, 80, 60, 32, - RMASK, GMASK, BMASK, AMASK ); - if (SDL_ATassert( "SDL_CreateRGBSurface", testsur != NULL)) - goto err; - SDL_ATend(); - /* Run surface on surface tests. */ - surface_testLoad( testsur ); - surface_runTests( testsur ); - /* Clean up. */ - SDL_FreeSurface( testsur ); - - /* Exit SDL. */ - SDL_Quit(); - - return SDL_ATfinish(); - -err: - return SDL_ATfinish(); -} - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/surface/surface.h b/3rdparty/SDL-1.3.0-5387/test/automated/surface/surface.h deleted file mode 100644 index cc1c898463..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/surface/surface.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Part of SDL test suite. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - - -#ifndef _TEST_SURFACE -# define _TEST_SURFACE - - -int test_surface (void); - - -#endif /* _TEST_SURFACE */ - diff --git a/3rdparty/SDL-1.3.0-5387/test/automated/testsdl.c b/3rdparty/SDL-1.3.0-5387/test/automated/testsdl.c deleted file mode 100644 index 9d9f037b19..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/automated/testsdl.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * SDL test suite framework code. - * - * Written by Edgar Simo "bobbens" - * - * Released under Public Domain. - */ - -#include "SDL.h" -#include "SDL_at.h" - -#include "platform/platform.h" -#include "rwops/rwops.h" -#include "rect/rect.h" -#include "surface/surface.h" -#include "render/render.h" -#include "audio/audio.h" - -#if defined(WIN32) -#define NO_GETOPT -#endif -#if defined(__QNXNTO__) -#define NO_GETOPT_LONG 1 -#endif /* __QNXNTO__ */ - -#include /* printf */ -#include /* exit */ -#ifndef NO_GETOPT -#include /* getopt */ -#if !defined(NO_GETOPT_LONG) -#include /* getopt_long */ -#endif /* !NO_GETOPT_LONG */ -#endif /* !NO_GETOPT */ - - -/* - * Tests to run. - */ -static int run_manual = 0; /**< Run manual tests. */ -/* Manual. */ -/* Automatic. */ -static int run_platform = 1; /**< Run platform tests. */ -static int run_rwops = 1; /**< Run RWops tests. */ -static int run_rect = 1; /**< Run rect tests. */ -static int run_surface = 1; /**< Run surface tests. */ -static int run_render = 1; /**< Run render tests. */ -static int run_audio = 1; /**< Run audio tests. */ - -/* - * Prototypes. - */ -static void print_usage( const char *name ); -static void parse_options( int argc, char *argv[] ); - - -/** - * @brief Displays program usage. - */ -static void print_usage( const char *name ) -{ - printf("Usage: %s [OPTIONS]\n", name); - printf("Options are:\n"); - printf(" -m, --manual enables tests that require user interaction\n"); - printf(" --noplatform do not run the platform tests\n"); - printf(" --norwops do not run the rwops tests\n"); - printf(" --norect do not run the rect tests\n"); - printf(" --nosurface do not run the surface tests\n"); - printf(" --norender do not run the render tests\n"); - printf(" --noaudio do not run the audio tests\n"); - printf(" -v, --verbose increases verbosity level by 1 for each -v\n"); - printf(" -q, --quiet only displays errors\n"); - printf(" -h, --help display this message and exit\n"); -} - -/** - * @brief Handles the options. - */ -static void parse_options( int argc, char *argv[] ) -{ - int i; - - for (i = 1; i < argc; ++i) { - const char *arg = argv[i]; - if (SDL_strcmp(arg, "-m") == 0 || SDL_strcmp(arg, "--manual") == 0) { - run_manual = 1; - continue; - } - if (SDL_strcmp(arg, "-v") == 0 || SDL_strcmp(arg, "--verbose") == 0) { - int level; - SDL_ATgeti( SDL_AT_VERBOSE, &level ); - SDL_ATseti( SDL_AT_VERBOSE, level+1 ); - continue; - } - if (SDL_strcmp(arg, "-q") == 0 || SDL_strcmp(arg, "--quiet") == 0) { - SDL_ATseti( SDL_AT_QUIET, 1 ); - SDL_setenv("SDL_ASSERT", "abort", 0); - continue; - } - if (SDL_strcmp(arg, "--noplatform") == 0) { - run_platform = 0; - continue; - } - if (SDL_strcmp(arg, "--norwops") == 0) { - run_rwops = 0; - continue; - } - if (SDL_strcmp(arg, "--norect") == 0) { - run_rect = 0; - continue; - } - if (SDL_strcmp(arg, "--nosurface") == 0) { - run_surface = 0; - continue; - } - if (SDL_strcmp(arg, "--norender") == 0) { - run_render = 0; - continue; - } - if (SDL_strcmp(arg, "--noaudio") == 0) { - run_audio = 0; - continue; - } - - /* Print help and exit! */ - print_usage( argv[0] ); - exit(EXIT_FAILURE); - } -} - -/** - * @brief Main entry point. - */ -int main( int argc, char *argv[] ) -{ - int failed; - const char *rev; - SDL_version ver; - - /* Get options. */ - parse_options( argc, argv ); - - /* Defaults. */ - failed = 0; - - /* Print some text if verbose. */ - SDL_GetVersion( &ver ); - rev = SDL_GetRevision(); - SDL_ATprintVerbose( 1, "Running tests with SDL %d.%d.%d revision %s\n", - ver.major, ver.minor, ver.patch, rev ); - - /* Automatic tests. */ - if (run_platform) - failed += test_platform(); - if (run_rwops) - failed += test_rwops(); - if (run_rect) - failed += test_rect(); - if (run_surface) - failed += test_surface(); - if (run_render) - failed += test_render(); - if (run_audio) - failed += test_audio(); - - /* Manual tests. */ - if (run_manual) { - } - - /* Display more information if failed. */ - if (failed > 0) { - SDL_ATprintErr( "Tests run with SDL %d.%d.%d revision %d\n", - ver.major, ver.minor, ver.patch, rev ); - SDL_ATprintErr( "System is running %s and is %s endian\n", - SDL_GetPlatform(), -#if SDL_BYTEORDER == SDL_LIL_ENDIAN - "little" -#else - "big" -#endif - ); - } - - return failed; -} - diff --git a/3rdparty/SDL-1.3.0-5387/test/checkkeys.c b/3rdparty/SDL-1.3.0-5387/test/checkkeys.c deleted file mode 100644 index b54f4daa78..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/checkkeys.c +++ /dev/null @@ -1,158 +0,0 @@ - -/* Simple program: Loop, watching keystrokes - Note that you need to call SDL_PollEvent() or SDL_WaitEvent() to - pump the event loop and catch keystrokes. -*/ - -#include -#include -#include - -#include "SDL.h" - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -static void -print_modifiers(void) -{ - int mod; - printf(" modifiers:"); - mod = SDL_GetModState(); - if (!mod) { - printf(" (none)"); - return; - } - if (mod & KMOD_LSHIFT) - printf(" LSHIFT"); - if (mod & KMOD_RSHIFT) - printf(" RSHIFT"); - if (mod & KMOD_LCTRL) - printf(" LCTRL"); - if (mod & KMOD_RCTRL) - printf(" RCTRL"); - if (mod & KMOD_LALT) - printf(" LALT"); - if (mod & KMOD_RALT) - printf(" RALT"); - if (mod & KMOD_LGUI) - printf(" LGUI"); - if (mod & KMOD_RGUI) - printf(" RGUI"); - if (mod & KMOD_NUM) - printf(" NUM"); - if (mod & KMOD_CAPS) - printf(" CAPS"); - if (mod & KMOD_MODE) - printf(" MODE"); -} - -static void -PrintKey(SDL_Keysym * sym, SDL_bool pressed, SDL_bool repeat) -{ - /* Print the keycode, name and state */ - if (sym->sym) { - printf("Key %s: scancode %d = %s, keycode 0x%08X = %s ", - pressed ? "pressed " : "released", - sym->scancode, - SDL_GetScancodeName(sym->scancode), - sym->sym, SDL_GetKeyName(sym->sym)); - } else { - printf("Unknown Key (scancode %d = %s) %s ", - sym->scancode, - SDL_GetScancodeName(sym->scancode), - pressed ? "pressed" : "released"); - } - - /* Print the translated character, if one exists */ - if (sym->unicode) { - /* Is it a control-character? */ - if (sym->unicode < ' ') { - printf(" (^%c)", sym->unicode + '@'); - } else { -#ifdef UNICODE - printf(" (%c)", sym->unicode); -#else - /* This is a Latin-1 program, so only show 8-bits */ - if (!(sym->unicode & 0xFF00)) - printf(" (%c)", sym->unicode); - else - printf(" (0x%X)", sym->unicode); -#endif - } - } - print_modifiers(); - if (repeat) { - printf(" (repeat)"); - } - printf("\n"); -} - -static void -PrintText(char *text) -{ - printf("Text: %s\n", text); -} - -int -main(int argc, char *argv[]) -{ - SDL_Event event; - int done; - Uint32 videoflags; - - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - videoflags = SDL_SWSURFACE; - while (argc > 1) { - --argc; - if (argv[argc] && !strcmp(argv[argc], "-fullscreen")) { - videoflags |= SDL_FULLSCREEN; - } else { - fprintf(stderr, "Usage: %s [-fullscreen]\n", argv[0]); - quit(1); - } - } - - /* Set 640x480 video mode */ - if (SDL_SetVideoMode(640, 480, 0, videoflags) == NULL) { - fprintf(stderr, "Couldn't set 640x480 video mode: %s\n", - SDL_GetError()); - quit(2); - } - - /* Watch keystrokes */ - done = 0; - while (!done) { - /* Check for events */ - SDL_WaitEvent(&event); - switch (event.type) { - case SDL_KEYDOWN: - case SDL_KEYUP: - PrintKey(&event.key.keysym, event.key.state, event.key.repeat); - break; - case SDL_TEXTINPUT: - PrintText(event.text.text); - break; - case SDL_MOUSEBUTTONDOWN: - /* Any button press quits the app... */ - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/common.c b/3rdparty/SDL-1.3.0-5387/test/common.c deleted file mode 100644 index 41867b430b..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/common.c +++ /dev/null @@ -1,1103 +0,0 @@ - -/* A simple test program framework */ - -#include - -#include "common.h" - -#define VIDEO_USAGE \ -"[--video driver] [--renderer driver] [--info all|video|modes|render|event] [--log all|error|system|audio|video|render|input] [--display N] [--fullscreen | --windows N] [--title title] [--icon icon.bmp] [--center | --position X,Y] [--geometry WxH] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab]" - -#define AUDIO_USAGE \ -"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" - -CommonState * -CommonCreateState(char **argv, Uint32 flags) -{ - CommonState *state = SDL_calloc(1, sizeof(*state)); - if (!state) { - SDL_OutOfMemory(); - return NULL; - } - - /* Initialize some defaults */ - state->argv = argv; - state->flags = flags; - state->window_title = argv[0]; - state->window_flags = 0; - state->window_x = SDL_WINDOWPOS_UNDEFINED; - state->window_y = SDL_WINDOWPOS_UNDEFINED; - state->window_w = DEFAULT_WINDOW_WIDTH; - state->window_h = DEFAULT_WINDOW_HEIGHT; - state->num_windows = 1; - state->audiospec.freq = 22050; - state->audiospec.format = AUDIO_S16; - state->audiospec.channels = 2; - state->audiospec.samples = 2048; - - /* Set some very sane GL defaults */ - state->gl_red_size = 3; - state->gl_green_size = 3; - state->gl_blue_size = 2; - state->gl_alpha_size = 0; - state->gl_buffer_size = 0; - state->gl_depth_size = 16; - state->gl_stencil_size = 0; - state->gl_double_buffer = 1; - state->gl_accum_red_size = 0; - state->gl_accum_green_size = 0; - state->gl_accum_blue_size = 0; - state->gl_accum_alpha_size = 0; - state->gl_stereo = 0; - state->gl_multisamplebuffers = 0; - state->gl_multisamplesamples = 0; - state->gl_retained_backing = 1; - state->gl_accelerated = -1; - - return state; -} - -int -CommonArg(CommonState * state, int index) -{ - char **argv = state->argv; - - if (SDL_strcasecmp(argv[index], "--video") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->videodriver = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--renderer") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->renderdriver = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--info") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "all") == 0) { - state->verbose |= - (VERBOSE_VIDEO | VERBOSE_MODES | VERBOSE_RENDER | - VERBOSE_EVENT); - return 2; - } - if (SDL_strcasecmp(argv[index], "video") == 0) { - state->verbose |= VERBOSE_VIDEO; - return 2; - } - if (SDL_strcasecmp(argv[index], "modes") == 0) { - state->verbose |= VERBOSE_MODES; - return 2; - } - if (SDL_strcasecmp(argv[index], "render") == 0) { - state->verbose |= VERBOSE_RENDER; - return 2; - } - if (SDL_strcasecmp(argv[index], "event") == 0) { - state->verbose |= VERBOSE_EVENT; - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--log") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "all") == 0) { - SDL_LogSetAllPriority(SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - if (SDL_strcasecmp(argv[index], "error") == 0) { - SDL_LogSetPriority(SDL_LOG_CATEGORY_ERROR, SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - if (SDL_strcasecmp(argv[index], "system") == 0) { - SDL_LogSetPriority(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - if (SDL_strcasecmp(argv[index], "audio") == 0) { - SDL_LogSetPriority(SDL_LOG_CATEGORY_AUDIO, SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - if (SDL_strcasecmp(argv[index], "video") == 0) { - SDL_LogSetPriority(SDL_LOG_CATEGORY_VIDEO, SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - if (SDL_strcasecmp(argv[index], "render") == 0) { - SDL_LogSetPriority(SDL_LOG_CATEGORY_RENDER, SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - if (SDL_strcasecmp(argv[index], "input") == 0) { - SDL_LogSetPriority(SDL_LOG_CATEGORY_INPUT, SDL_LOG_PRIORITY_VERBOSE); - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--display") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->display = SDL_atoi(argv[index]); - if (SDL_WINDOWPOS_ISUNDEFINED(state->window_x)) { - state->window_x = SDL_WINDOWPOS_UNDEFINED_DISPLAY(state->display); - state->window_y = SDL_WINDOWPOS_UNDEFINED_DISPLAY(state->display); - } - if (SDL_WINDOWPOS_ISCENTERED(state->window_x)) { - state->window_x = SDL_WINDOWPOS_CENTERED_DISPLAY(state->display); - state->window_y = SDL_WINDOWPOS_CENTERED_DISPLAY(state->display); - } - return 2; - } - if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) { - state->window_flags |= SDL_WINDOW_FULLSCREEN; - state->num_windows = 1; - return 1; - } - if (SDL_strcasecmp(argv[index], "--windows") == 0) { - ++index; - if (!argv[index] || !SDL_isdigit(*argv[index])) { - return -1; - } - if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) { - state->num_windows = SDL_atoi(argv[index]); - } - return 2; - } - if (SDL_strcasecmp(argv[index], "--title") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->window_title = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--icon") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->window_icon = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--center") == 0) { - state->window_x = SDL_WINDOWPOS_CENTERED; - state->window_y = SDL_WINDOWPOS_CENTERED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--position") == 0) { - char *x, *y; - ++index; - if (!argv[index]) { - return -1; - } - x = argv[index]; - y = argv[index]; - while (*y && *y != ',') { - ++y; - } - if (!*y) { - return -1; - } - *y++ = '\0'; - state->window_x = SDL_atoi(x); - state->window_y = SDL_atoi(y); - return 2; - } - if (SDL_strcasecmp(argv[index], "--geometry") == 0) { - char *w, *h; - ++index; - if (!argv[index]) { - return -1; - } - w = argv[index]; - h = argv[index]; - while (*h && *h != 'x') { - ++h; - } - if (!*h) { - return -1; - } - *h++ = '\0'; - state->window_w = SDL_atoi(w); - state->window_h = SDL_atoi(h); - return 2; - } - if (SDL_strcasecmp(argv[index], "--depth") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->depth = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--refresh") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->refresh_rate = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--vsync") == 0) { - state->render_flags |= SDL_RENDERER_PRESENTVSYNC; - return 1; - } - if (SDL_strcasecmp(argv[index], "--noframe") == 0) { - state->window_flags |= SDL_WINDOW_BORDERLESS; - return 1; - } - if (SDL_strcasecmp(argv[index], "--resize") == 0) { - state->window_flags |= SDL_WINDOW_RESIZABLE; - return 1; - } - if (SDL_strcasecmp(argv[index], "--minimize") == 0) { - state->window_flags |= SDL_WINDOW_MINIMIZED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--maximize") == 0) { - state->window_flags |= SDL_WINDOW_MAXIMIZED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--grab") == 0) { - state->window_flags |= SDL_WINDOW_INPUT_GRABBED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--rate") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.freq = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--format") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "U8") == 0) { - state->audiospec.format = AUDIO_U8; - return 2; - } - if (SDL_strcasecmp(argv[index], "S8") == 0) { - state->audiospec.format = AUDIO_S8; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16") == 0) { - state->audiospec.format = AUDIO_U16; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16LE") == 0) { - state->audiospec.format = AUDIO_U16LSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16BE") == 0) { - state->audiospec.format = AUDIO_U16MSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16") == 0) { - state->audiospec.format = AUDIO_S16; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16LE") == 0) { - state->audiospec.format = AUDIO_S16LSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16BE") == 0) { - state->audiospec.format = AUDIO_S16MSB; - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--channels") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.channels = (Uint8) SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--samples") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.samples = (Uint16) SDL_atoi(argv[index]); - return 2; - } - if ((SDL_strcasecmp(argv[index], "-h") == 0) - || (SDL_strcasecmp(argv[index], "--help") == 0)) { - /* Print the usage message */ - return -1; - } - return 0; -} - -const char * -CommonUsage(CommonState * state) -{ - switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) { - case SDL_INIT_VIDEO: - return VIDEO_USAGE; - case SDL_INIT_AUDIO: - return AUDIO_USAGE; - case (SDL_INIT_VIDEO | SDL_INIT_AUDIO): - return VIDEO_USAGE " " AUDIO_USAGE; - default: - return ""; - } -} - -static void -PrintRendererFlag(Uint32 flag) -{ - switch (flag) { - case SDL_RENDERER_PRESENTVSYNC: - fprintf(stderr, "PresentVSync"); - break; - case SDL_RENDERER_ACCELERATED: - fprintf(stderr, "Accelerated"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintPixelFormat(Uint32 format) -{ - switch (format) { - case SDL_PIXELFORMAT_UNKNOWN: - fprintf(stderr, "Unknwon"); - break; - case SDL_PIXELFORMAT_INDEX1LSB: - fprintf(stderr, "Index1LSB"); - break; - case SDL_PIXELFORMAT_INDEX1MSB: - fprintf(stderr, "Index1MSB"); - break; - case SDL_PIXELFORMAT_INDEX4LSB: - fprintf(stderr, "Index4LSB"); - break; - case SDL_PIXELFORMAT_INDEX4MSB: - fprintf(stderr, "Index4MSB"); - break; - case SDL_PIXELFORMAT_INDEX8: - fprintf(stderr, "Index8"); - break; - case SDL_PIXELFORMAT_RGB332: - fprintf(stderr, "RGB332"); - break; - case SDL_PIXELFORMAT_RGB444: - fprintf(stderr, "RGB444"); - break; - case SDL_PIXELFORMAT_RGB555: - fprintf(stderr, "RGB555"); - break; - case SDL_PIXELFORMAT_BGR555: - fprintf(stderr, "BGR555"); - break; - case SDL_PIXELFORMAT_ARGB4444: - fprintf(stderr, "ARGB4444"); - break; - case SDL_PIXELFORMAT_ABGR4444: - fprintf(stderr, "ABGR4444"); - break; - case SDL_PIXELFORMAT_ARGB1555: - fprintf(stderr, "ARGB1555"); - break; - case SDL_PIXELFORMAT_ABGR1555: - fprintf(stderr, "ABGR1555"); - break; - case SDL_PIXELFORMAT_RGB565: - fprintf(stderr, "RGB565"); - break; - case SDL_PIXELFORMAT_BGR565: - fprintf(stderr, "BGR565"); - break; - case SDL_PIXELFORMAT_RGB24: - fprintf(stderr, "RGB24"); - break; - case SDL_PIXELFORMAT_BGR24: - fprintf(stderr, "BGR24"); - break; - case SDL_PIXELFORMAT_RGB888: - fprintf(stderr, "RGB888"); - break; - case SDL_PIXELFORMAT_BGR888: - fprintf(stderr, "BGR888"); - break; - case SDL_PIXELFORMAT_ARGB8888: - fprintf(stderr, "ARGB8888"); - break; - case SDL_PIXELFORMAT_RGBA8888: - fprintf(stderr, "RGBA8888"); - break; - case SDL_PIXELFORMAT_ABGR8888: - fprintf(stderr, "ABGR8888"); - break; - case SDL_PIXELFORMAT_BGRA8888: - fprintf(stderr, "BGRA8888"); - break; - case SDL_PIXELFORMAT_ARGB2101010: - fprintf(stderr, "ARGB2101010"); - break; - case SDL_PIXELFORMAT_YV12: - fprintf(stderr, "YV12"); - break; - case SDL_PIXELFORMAT_IYUV: - fprintf(stderr, "IYUV"); - break; - case SDL_PIXELFORMAT_YUY2: - fprintf(stderr, "YUY2"); - break; - case SDL_PIXELFORMAT_UYVY: - fprintf(stderr, "UYVY"); - break; - case SDL_PIXELFORMAT_YVYU: - fprintf(stderr, "YVYU"); - break; - default: - fprintf(stderr, "0x%8.8x", format); - break; - } -} - -static void -PrintRenderer(SDL_RendererInfo * info) -{ - int i, count; - - fprintf(stderr, " Renderer %s:\n", info->name); - - fprintf(stderr, " Flags: 0x%8.8X", info->flags); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->flags) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->flags & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintRendererFlag(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Texture formats (%d): ", info->num_texture_formats); - for (i = 0; i < (int) info->num_texture_formats; ++i) { - if (i > 0) { - fprintf(stderr, ", "); - } - PrintPixelFormat(info->texture_formats[i]); - } - fprintf(stderr, "\n"); - - if (info->max_texture_width || info->max_texture_height) { - fprintf(stderr, " Max Texture Size: %dx%d\n", - info->max_texture_width, info->max_texture_height); - } -} - -static SDL_Surface * -LoadIcon(const char *file) -{ - SDL_Surface *icon; - - /* Load the icon surface */ - icon = SDL_LoadBMP(file); - if (icon == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError()); - return (NULL); - } - - if (icon->format->palette == NULL) { - fprintf(stderr, "Icon must have a palette!\n"); - SDL_FreeSurface(icon); - return (NULL); - } - - /* Set the colorkey */ - SDL_SetColorKey(icon, 1, *((Uint8 *) icon->pixels)); - - return (icon); -} - -SDL_bool -CommonInit(CommonState * state) -{ - int i, j, m, n; - SDL_DisplayMode fullscreen_mode; - - if (state->flags & SDL_INIT_VIDEO) { - if (state->verbose & VERBOSE_VIDEO) { - n = SDL_GetNumVideoDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in video drivers\n"); - } else { - fprintf(stderr, "Built-in video drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - fprintf(stderr, ","); - } - fprintf(stderr, " %s", SDL_GetVideoDriver(i)); - } - fprintf(stderr, "\n"); - } - } - if (SDL_VideoInit(state->videodriver) < 0) { - fprintf(stderr, "Couldn't initialize video driver: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_VIDEO) { - fprintf(stderr, "Video driver: %s\n", - SDL_GetCurrentVideoDriver()); - } - - /* Upload GL settings */ - SDL_GL_SetAttribute(SDL_GL_RED_SIZE, state->gl_red_size); - SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, state->gl_green_size); - SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, state->gl_blue_size); - SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, state->gl_alpha_size); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, state->gl_double_buffer); - SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, state->gl_buffer_size); - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, state->gl_depth_size); - SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, state->gl_stencil_size); - SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE, state->gl_accum_red_size); - SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE, state->gl_accum_green_size); - SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE, state->gl_accum_blue_size); - SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, state->gl_accum_alpha_size); - SDL_GL_SetAttribute(SDL_GL_STEREO, state->gl_stereo); - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, state->gl_multisamplebuffers); - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, state->gl_multisamplesamples); - if (state->gl_accelerated >= 0) { - SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, - state->gl_accelerated); - } - SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, state->gl_retained_backing); - if (state->gl_major_version) { - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, state->gl_major_version); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, state->gl_minor_version); - } - - if (state->verbose & VERBOSE_MODES) { - SDL_DisplayMode mode; - int bpp; - Uint32 Rmask, Gmask, Bmask, Amask; - - n = SDL_GetNumVideoDisplays(); - fprintf(stderr, "Number of displays: %d\n", n); - for (i = 0; i < n; ++i) { - fprintf(stderr, "Display %d:\n", i); - - SDL_GetDesktopDisplayMode(i, &mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask, - &Bmask, &Amask); - fprintf(stderr, - " Current mode: %dx%d@%dHz, %d bits-per-pixel (%s)\n", - mode.w, mode.h, mode.refresh_rate, bpp, - SDL_GetPixelFormatName(mode.format)); - if (Rmask || Gmask || Bmask) { - fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask); - fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask); - fprintf(stderr, " Blue Mask = 0x%.8x\n", Bmask); - if (Amask) - fprintf(stderr, " Alpha Mask = 0x%.8x\n", Amask); - } - - /* Print available fullscreen video modes */ - m = SDL_GetNumDisplayModes(i); - if (m == 0) { - fprintf(stderr, "No available fullscreen video modes\n"); - } else { - fprintf(stderr, " Fullscreen video modes:\n"); - for (j = 0; j < m; ++j) { - SDL_GetDisplayMode(i, j, &mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, - &Gmask, &Bmask, &Amask); - fprintf(stderr, - " Mode %d: %dx%d@%dHz, %d bits-per-pixel (%s)\n", - j, mode.w, mode.h, mode.refresh_rate, bpp, - SDL_GetPixelFormatName(mode.format)); - if (Rmask || Gmask || Bmask) { - fprintf(stderr, " Red Mask = 0x%.8x\n", - Rmask); - fprintf(stderr, " Green Mask = 0x%.8x\n", - Gmask); - fprintf(stderr, " Blue Mask = 0x%.8x\n", - Bmask); - if (Amask) - fprintf(stderr, - " Alpha Mask = 0x%.8x\n", - Amask); - } - } - } - } - } - - if (state->verbose & VERBOSE_RENDER) { - SDL_RendererInfo info; - - n = SDL_GetNumRenderDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in render drivers\n"); - } else { - fprintf(stderr, "Built-in render drivers:\n"); - for (i = 0; i < n; ++i) { - SDL_GetRenderDriverInfo(i, &info); - PrintRenderer(&info); - } - } - } - - SDL_zero(fullscreen_mode); - switch (state->depth) { - case 8: - fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8; - break; - case 15: - fullscreen_mode.format = SDL_PIXELFORMAT_RGB555; - break; - case 16: - fullscreen_mode.format = SDL_PIXELFORMAT_RGB565; - break; - case 24: - fullscreen_mode.format = SDL_PIXELFORMAT_RGB24; - break; - default: - fullscreen_mode.format = SDL_PIXELFORMAT_RGB888; - break; - } - fullscreen_mode.refresh_rate = state->refresh_rate; - - state->windows = - (SDL_Window **) SDL_malloc(state->num_windows * - sizeof(*state->windows)); - state->renderers = - (SDL_Renderer **) SDL_malloc(state->num_windows * - sizeof(*state->renderers)); - if (!state->windows || !state->renderers) { - fprintf(stderr, "Out of memory!\n"); - return SDL_FALSE; - } - for (i = 0; i < state->num_windows; ++i) { - char title[1024]; - - if (state->num_windows > 1) { - SDL_snprintf(title, SDL_arraysize(title), "%s %d", - state->window_title, i + 1); - } else { - SDL_strlcpy(title, state->window_title, SDL_arraysize(title)); - } - state->windows[i] = - SDL_CreateWindow(title, state->window_x, state->window_y, - state->window_w, state->window_h, - state->window_flags); - if (!state->windows[i]) { - fprintf(stderr, "Couldn't create window: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - SDL_GetWindowSize(state->windows[i], &state->window_w, &state->window_h); - - if (SDL_SetWindowDisplayMode(state->windows[i], &fullscreen_mode) < 0) { - fprintf(stderr, "Can't set up fullscreen display mode: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - - if (state->window_icon) { - SDL_Surface *icon = LoadIcon(state->window_icon); - if (icon) { - SDL_SetWindowIcon(state->windows[i], icon); - SDL_FreeSurface(icon); - } - } - - SDL_ShowWindow(state->windows[i]); - - state->renderers[i] = NULL; - - if (!state->skip_renderer - && (state->renderdriver - || !(state->window_flags & SDL_WINDOW_OPENGL))) { - m = -1; - if (state->renderdriver) { - SDL_RendererInfo info; - n = SDL_GetNumRenderDrivers(); - for (j = 0; j < n; ++j) { - SDL_GetRenderDriverInfo(j, &info); - if (SDL_strcasecmp(info.name, state->renderdriver) == - 0) { - m = j; - break; - } - } - if (m == n) { - fprintf(stderr, - "Couldn't find render driver named %s", - state->renderdriver); - return SDL_FALSE; - } - } - state->renderers[i] = SDL_CreateRenderer(state->windows[i], - m, state->render_flags); - if (!state->renderers[i]) { - fprintf(stderr, "Couldn't create renderer: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_RENDER) { - SDL_RendererInfo info; - - fprintf(stderr, "Current renderer:\n"); - SDL_GetRendererInfo(state->renderers[i], &info); - PrintRenderer(&info); - } - } - } - } - - if (state->flags & SDL_INIT_AUDIO) { - if (state->verbose & VERBOSE_AUDIO) { - n = SDL_GetNumAudioDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in audio drivers\n"); - } else { - fprintf(stderr, "Built-in audio drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - fprintf(stderr, ","); - } - fprintf(stderr, " %s", SDL_GetAudioDriver(i)); - } - fprintf(stderr, "\n"); - } - } - if (SDL_AudioInit(state->audiodriver) < 0) { - fprintf(stderr, "Couldn't initialize audio driver: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_VIDEO) { - fprintf(stderr, "Audio driver: %s\n", - SDL_GetCurrentAudioDriver()); - } - - if (SDL_OpenAudio(&state->audiospec, NULL) < 0) { - fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); - return SDL_FALSE; - } - } - - return SDL_TRUE; -} - -static void -PrintEvent(SDL_Event * event) -{ - fprintf(stderr, "SDL EVENT: "); - switch (event->type) { - case SDL_WINDOWEVENT: - switch (event->window.event) { - case SDL_WINDOWEVENT_SHOWN: - fprintf(stderr, "Window %d shown", event->window.windowID); - break; - case SDL_WINDOWEVENT_HIDDEN: - fprintf(stderr, "Window %d hidden", event->window.windowID); - break; - case SDL_WINDOWEVENT_EXPOSED: - fprintf(stderr, "Window %d exposed", event->window.windowID); - break; - case SDL_WINDOWEVENT_MOVED: - fprintf(stderr, "Window %d moved to %d,%d", - event->window.windowID, event->window.data1, - event->window.data2); - break; - case SDL_WINDOWEVENT_RESIZED: - fprintf(stderr, "Window %d resized to %dx%d", - event->window.windowID, event->window.data1, - event->window.data2); - break; - case SDL_WINDOWEVENT_MINIMIZED: - fprintf(stderr, "Window %d minimized", event->window.windowID); - break; - case SDL_WINDOWEVENT_MAXIMIZED: - fprintf(stderr, "Window %d maximized", event->window.windowID); - break; - case SDL_WINDOWEVENT_RESTORED: - fprintf(stderr, "Window %d restored", event->window.windowID); - break; - case SDL_WINDOWEVENT_ENTER: - fprintf(stderr, "Mouse entered window %d", - event->window.windowID); - break; - case SDL_WINDOWEVENT_LEAVE: - fprintf(stderr, "Mouse left window %d", event->window.windowID); - break; - case SDL_WINDOWEVENT_FOCUS_GAINED: - fprintf(stderr, "Window %d gained keyboard focus", - event->window.windowID); - break; - case SDL_WINDOWEVENT_FOCUS_LOST: - fprintf(stderr, "Window %d lost keyboard focus", - event->window.windowID); - break; - case SDL_WINDOWEVENT_CLOSE: - fprintf(stderr, "Window %d closed", event->window.windowID); - break; - default: - fprintf(stderr, "Window %d got unknown event %d", - event->window.windowID, event->window.event); - break; - } - break; - case SDL_KEYDOWN: - fprintf(stderr, - "Keyboard: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", - event->key.windowID, - event->key.keysym.scancode, - SDL_GetScancodeName(event->key.keysym.scancode), - event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_KEYUP: - fprintf(stderr, - "Keyboard: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", - event->key.windowID, - event->key.keysym.scancode, - SDL_GetScancodeName(event->key.keysym.scancode), - event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_TEXTINPUT: - fprintf(stderr, "Keyboard: text input \"%s\" in window %d", - event->text.text, event->text.windowID); - break; - case SDL_MOUSEMOTION: - fprintf(stderr, "Mouse: moved to %d,%d (%d,%d) in window %d", - event->motion.x, event->motion.y, - event->motion.xrel, event->motion.yrel, - event->motion.windowID); - break; - case SDL_MOUSEBUTTONDOWN: - fprintf(stderr, "Mouse: button %d pressed at %d,%d in window %d", - event->button.button, event->button.x, event->button.y, - event->button.windowID); - break; - case SDL_MOUSEBUTTONUP: - fprintf(stderr, "Mouse: button %d released at %d,%d in window %d", - event->button.button, event->button.x, event->button.y, - event->button.windowID); - break; - case SDL_MOUSEWHEEL: - fprintf(stderr, - "Mouse: wheel scrolled %d in x and %d in y in window %d", - event->wheel.x, event->wheel.y, event->wheel.windowID); - break; - case SDL_JOYBALLMOTION: - fprintf(stderr, "Joystick %d: ball %d moved by %d,%d", - event->jball.which, event->jball.ball, event->jball.xrel, - event->jball.yrel); - break; - case SDL_JOYHATMOTION: - fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which, - event->jhat.hat); - switch (event->jhat.value) { - case SDL_HAT_CENTERED: - fprintf(stderr, "CENTER"); - break; - case SDL_HAT_UP: - fprintf(stderr, "UP"); - break; - case SDL_HAT_RIGHTUP: - fprintf(stderr, "RIGHTUP"); - break; - case SDL_HAT_RIGHT: - fprintf(stderr, "RIGHT"); - break; - case SDL_HAT_RIGHTDOWN: - fprintf(stderr, "RIGHTDOWN"); - break; - case SDL_HAT_DOWN: - fprintf(stderr, "DOWN"); - break; - case SDL_HAT_LEFTDOWN: - fprintf(stderr, "LEFTDOWN"); - break; - case SDL_HAT_LEFT: - fprintf(stderr, "LEFT"); - break; - case SDL_HAT_LEFTUP: - fprintf(stderr, "LEFTUP"); - break; - default: - fprintf(stderr, "UNKNOWN"); - break; - } - break; - case SDL_JOYBUTTONDOWN: - fprintf(stderr, "Joystick %d: button %d pressed", - event->jbutton.which, event->jbutton.button); - break; - case SDL_JOYBUTTONUP: - fprintf(stderr, "Joystick %d: button %d released", - event->jbutton.which, event->jbutton.button); - break; - case SDL_CLIPBOARDUPDATE: - fprintf(stderr, "Clipboard updated"); - break; - case SDL_QUIT: - fprintf(stderr, "Quit requested"); - break; - case SDL_USEREVENT: - fprintf(stderr, "User event %d", event->user.code); - break; - default: - fprintf(stderr, "Unknown event %d", event->type); - break; - } - fprintf(stderr, "\n"); -} - -void -CommonEvent(CommonState * state, SDL_Event * event, int *done) -{ - int i; - - if (state->verbose & VERBOSE_EVENT) { - PrintEvent(event); - } - - switch (event->type) { - case SDL_WINDOWEVENT: - switch (event->window.event) { - case SDL_WINDOWEVENT_CLOSE: - { - SDL_Window *pWindow = SDL_GetWindowFromID(event->window.windowID); - if ( pWindow ) { - SDL_DestroyWindow( pWindow ); - } - } - break; - } - break; - case SDL_KEYDOWN: - switch (event->key.keysym.sym) { - /* Add hotkeys here */ - case SDLK_c: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-C copy awesome text! */ - SDL_SetClipboardText("SDL rocks!\nYou know it!"); - printf("Copied text to clipboard\n"); - } - break; - case SDLK_v: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-V paste awesome text! */ - char *text = SDL_GetClipboardText(); - if (*text) { - printf("Clipboard: %s\n", text); - } else { - printf("Clipboard is empty\n"); - } - SDL_free(text); - } - break; - case SDLK_g: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-G toggle grab */ - SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); - if (window) { - SDL_SetWindowGrab(window, !SDL_GetWindowGrab(window)); - } - } - break; - case SDLK_m: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-M maximize */ - SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); - if (window) { - Uint32 flags = SDL_GetWindowFlags(window); - if (flags & SDL_WINDOW_MAXIMIZED) { - SDL_RestoreWindow(window); - } else { - SDL_MaximizeWindow(window); - } - } - } - break; - case SDLK_z: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-Z minimize */ - SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); - if (window) { - SDL_MinimizeWindow(window); - } - } - break; - case SDLK_RETURN: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-Enter toggle fullscreen */ - SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); - if (window) { - Uint32 flags = SDL_GetWindowFlags(window); - if (flags & SDL_WINDOW_FULLSCREEN) { - SDL_SetWindowFullscreen(window, SDL_FALSE); - } else { - SDL_SetWindowFullscreen(window, SDL_TRUE); - } - } - } - break; - case SDLK_ESCAPE: - *done = 1; - break; - default: - break; - } - break; - case SDL_QUIT: - *done = 1; - break; - } -} - -void -CommonQuit(CommonState * state) -{ - int i; - - if (state->windows) { - SDL_free(state->windows); - } - if (state->renderers) { - for (i = 0; i < state->num_windows; ++i) { - if (state->renderers[i]) { - SDL_DestroyRenderer(state->renderers[i]); - } - } - SDL_free(state->renderers); - } - if (state->flags & SDL_INIT_VIDEO) { - SDL_VideoQuit(); - } - if (state->flags & SDL_INIT_AUDIO) { - SDL_AudioQuit(); - } - SDL_free(state); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/common.h b/3rdparty/SDL-1.3.0-5387/test/common.h deleted file mode 100644 index d4036ba84d..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/common.h +++ /dev/null @@ -1,77 +0,0 @@ - -/* A simple test program framework */ - -#define SDL_NO_COMPAT -#include "SDL.h" - -#define DEFAULT_WINDOW_WIDTH 640 -#define DEFAULT_WINDOW_HEIGHT 480 - -#define VERBOSE_VIDEO 0x00000001 -#define VERBOSE_MODES 0x00000002 -#define VERBOSE_RENDER 0x00000004 -#define VERBOSE_EVENT 0x00000008 -#define VERBOSE_AUDIO 0x00000010 - -typedef struct -{ - /* SDL init flags */ - char **argv; - Uint32 flags; - Uint32 verbose; - - /* Video info */ - const char *videodriver; - int display; - const char *window_title; - const char *window_icon; - Uint32 window_flags; - int window_x; - int window_y; - int window_w; - int window_h; - int depth; - int refresh_rate; - int num_windows; - SDL_Window **windows; - - /* Renderer info */ - const char *renderdriver; - Uint32 render_flags; - SDL_bool skip_renderer; - SDL_Renderer **renderers; - - /* Audio info */ - const char *audiodriver; - SDL_AudioSpec audiospec; - - /* GL settings */ - int gl_red_size; - int gl_green_size; - int gl_blue_size; - int gl_alpha_size; - int gl_buffer_size; - int gl_depth_size; - int gl_stencil_size; - int gl_double_buffer; - int gl_accum_red_size; - int gl_accum_green_size; - int gl_accum_blue_size; - int gl_accum_alpha_size; - int gl_stereo; - int gl_multisamplebuffers; - int gl_multisamplesamples; - int gl_retained_backing; - int gl_accelerated; - int gl_major_version; - int gl_minor_version; -} CommonState; - -extern CommonState *CommonCreateState(char **argv, Uint32 flags); -extern int CommonArg(CommonState * state, int index); -extern const char *CommonUsage(CommonState * state); -extern SDL_bool CommonInit(CommonState * state); -extern void CommonEvent(CommonState * state, SDL_Event * event, int *done); -extern void CommonQuit(CommonState * state); - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/configure b/3rdparty/SDL-1.3.0-5387/test/configure deleted file mode 100755 index 2c723905b0..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/configure +++ /dev/null @@ -1,4908 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="README" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -OSMESA_CONFIG -EXE -MATHLIB -SDL_CONFIG -SDL_CFLAGS -SDL_LIBS -XMKMF -CPP -GLLIB -SDL_TTF_LIB -LIBOBJS -LTLIBOBJS' -ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -XMKMF -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-sdltest Do not try to compile and run a test SDL program - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-sdl-prefix=PFX Prefix where SDL is installed (optional) - --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) - --with-x use the X Window System - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - XMKMF Path to xmkmf, Makefile generator for X Window System - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.61 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" -fi -shift -for ac_site_file -do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - - - - - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_aux_dir= -for ac_dir in $srcdir/../build-scripts; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir/../build-scripts" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir/../build-scripts" >&2;} - { (exit 1); exit 1; }; } -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } - -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_const=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - - -case "$host" in - *-*-cygwin* | *-*-mingw32*) - EXE=".exe" - MATHLIB="" - SYS_GL_LIBS="-lopengl32" - ;; - *-*-beos* | *-*-haiku*) - EXE="" - MATHLIB="" - SYS_GL_LIBS="-lGL" - ;; - *-*-darwin* ) - EXE="" - MATHLIB="" - SYS_GL_LIBS="-Wl,-framework,OpenGL" - ;; - *-*-aix*) - EXE="" - if test x$ac_cv_c_compiler_gnu = xyes; then - CFLAGS="-mthreads" - fi - SYS_GL_LIBS="" - ;; - *-*-mint*) - EXE="" - MATHLIB="" - # Extract the first word of "osmesa-config", so it can be a program name with args. -set dummy osmesa-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_OSMESA_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $OSMESA_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_OSMESA_CONFIG="$OSMESA_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_OSMESA_CONFIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - test -z "$ac_cv_path_OSMESA_CONFIG" && ac_cv_path_OSMESA_CONFIG="no" - ;; -esac -fi -OSMESA_CONFIG=$ac_cv_path_OSMESA_CONFIG -if test -n "$OSMESA_CONFIG"; then - { echo "$as_me:$LINENO: result: $OSMESA_CONFIG" >&5 -echo "${ECHO_T}$OSMESA_CONFIG" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - if test "x$OSMESA_CONFIG" = "xyes"; then - OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags` - OSMESA_LIBS=`$OSMESA_CONFIG --libs` - CFLAGS="$CFLAGS $OSMESA_CFLAGS" - SYS_GL_LIBS="$OSMESA_LIBS" - else - SYS_GL_LIBS="-lOSMesa" - fi - ;; - *-*-qnx*) - EXE="" - MATHLIB="" - SYS_GL_LIBS="-lGLES_CM" - ;; - *) - EXE="" - MATHLIB="-lm" - SYS_GL_LIBS="-lGL" - ;; -esac - - - -SDL_VERSION=1.3.0 - -# Check whether --with-sdl-prefix was given. -if test "${with_sdl_prefix+set}" = set; then - withval=$with_sdl_prefix; sdl_prefix="$withval" -else - sdl_prefix="" -fi - - -# Check whether --with-sdl-exec-prefix was given. -if test "${with_sdl_exec_prefix+set}" = set; then - withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" -else - sdl_exec_prefix="" -fi - -# Check whether --enable-sdltest was given. -if test "${enable_sdltest+set}" = set; then - enableval=$enable_sdltest; -else - enable_sdltest=yes -fi - - - if test x$sdl_exec_prefix != x ; then - sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config - fi - fi - if test x$sdl_prefix != x ; then - sdl_args="$sdl_args --prefix=$sdl_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_prefix/bin/sdl-config - fi - fi - - if test "x$prefix" != xNONE; then - PATH="$prefix/bin:$prefix/usr/bin:$PATH" - fi - # Extract the first word of "sdl-config", so it can be a program name with args. -set dummy sdl-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_SDL_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $SDL_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" - ;; -esac -fi -SDL_CONFIG=$ac_cv_path_SDL_CONFIG -if test -n "$SDL_CONFIG"; then - { echo "$as_me:$LINENO: result: $SDL_CONFIG" >&5 -echo "${ECHO_T}$SDL_CONFIG" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - min_sdl_version=$SDL_VERSION - { echo "$as_me:$LINENO: checking for SDL - version >= $min_sdl_version" >&5 -echo $ECHO_N "checking for SDL - version >= $min_sdl_version... $ECHO_C" >&6; } - no_sdl="" - if test "$SDL_CONFIG" = "no" ; then - no_sdl=yes - else - SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` - SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` - - sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test "x$enable_sdltest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS" - rm -f conf.sdltest - if test "$cross_compiling" = yes; then - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include -#include -#include -#include "SDL.h" - -char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main (int argc, char *argv[]) -{ - int major, minor, micro; - char *tmp_version; - - /* This hangs on some systems (?) - system ("touch conf.sdltest"); - */ - { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = my_strdup("$min_sdl_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_sdl_version"); - exit(1); - } - - if (($sdl_major_version > major) || - (($sdl_major_version == major) && ($sdl_minor_version > minor)) || - (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); - printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); - printf("*** best to upgrade to the required version.\n"); - printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); - printf("*** to point to the correct copy of sdl-config, and remove the file\n"); - printf("*** config.cache before re-running configure\n"); - return 1; - } -} - - -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -no_sdl=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - - CFLAGS="$ac_save_CFLAGS" - CXXFLAGS="$ac_save_CXXFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_sdl" = x ; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : - else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - if test "$SDL_CONFIG" = "no" ; then - echo "*** The sdl-config script installed by SDL could not be found" - echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the SDL_CONFIG environment variable to the" - echo "*** full path to sdl-config." - else - if test -f conf.sdltest ; then - : - else - echo "*** Could not run SDL test program, checking why..." - CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include -#include "SDL.h" - -int main(int argc, char *argv[]) -{ return 0; } -#undef main -#define main K_and_R_C_main - -int -main () -{ - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding SDL or finding the wrong" - echo "*** version of SDL. If it is not finding SDL, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means SDL was incorrectly installed" - echo "*** or that you have moved SDL since it was installed. In the latter case, you" - echo "*** may want to edit the sdl-config script: $SDL_CONFIG" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - CXXFLAGS="$ac_save_CXXFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - SDL_CFLAGS="" - SDL_LIBS="" - { { echo "$as_me:$LINENO: error: *** SDL version $SDL_VERSION not found!" >&5 -echo "$as_me: error: *** SDL version $SDL_VERSION not found!" >&2;} - { (exit 1); exit 1; }; } - - fi - - - rm -f conf.sdltest - -CFLAGS="$CFLAGS $SDL_CFLAGS" -LIBS="$LIBS $SDL_LIBS" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6; } - - -# Check whether --with-x was given. -if test "${with_x+set}" = set; then - withval=$with_x; -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 -echo "$as_me: error: Cannot use X directory names containing '" >&2;} - { (exit 1); exit 1; }; };; #( - *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl dylib la dll; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi - -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl dylib la dll; do - if test -r "$ac_dir/libX11.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } -fi - -if test x$have_x = xyes; then - if test x$ac_x_includes = xno || test x$ac_x_includes = x; then - : - else - CFLAGS="$CFLAGS -I$ac_x_includes" - fi - if test x$ac_x_libraries = xno || test x$ac_x_libraries = x; then - : - else - XPATH="-L$ac_x_libraries" - fi -fi - -{ echo "$as_me:$LINENO: checking for OpenGL support" >&5 -echo $ECHO_N "checking for OpenGL support... $ECHO_C" >&6; } -have_opengl=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include "SDL_opengl.h" - -int -main () -{ - - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - -have_opengl=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $have_opengl" >&5 -echo "${ECHO_T}$have_opengl" >&6; } - -{ echo "$as_me:$LINENO: checking for OpenGL ES support" >&5 -echo $ECHO_N "checking for OpenGL ES support... $ECHO_C" >&6; } -have_opengles=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #if defined (__QNXNTO__) - #include - #elif defined (__IPHONEOS__) - #include - #else - #error "No OpenGL ES support" - #endif /* __QNXNTO__ */ - -int -main () -{ - - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - -have_opengles=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $have_opengles" >&5 -echo "${ECHO_T}$have_opengles" >&6; } - -if test x$have_opengl = xyes; then - CFLAGS="$CFLAGS -DHAVE_OPENGL" - GLLIB="$XPATH $SYS_GL_LIBS" -elif test x$have_opengles = xyes; then - CFLAGS="$CFLAGS -DHAVE_OPENGLES" - GLLIB="$XPATH $SYS_GL_LIBS" -else - GLLIB="" -fi - - - -{ echo "$as_me:$LINENO: checking for SDL_ttf" >&5 -echo $ECHO_N "checking for SDL_ttf... $ECHO_C" >&6; } -have_SDL_ttf=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include "SDL_ttf.h" - -int -main () -{ - - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - -have_SDL_ttf=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $have_SDL_ttf" >&5 -echo "${ECHO_T}$have_SDL_ttf" >&6; } - -if test x$have_SDL_ttf = xyes; then - CFLAGS="$CFLAGS -DHAVE_SDL_TTF" - SDL_TTF_LIB="-lSDL_ttf" -fi - - - -ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 - -# Save the log message, to keep $[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# Files that config.status was made for. -config_files="$ac_config_files" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2006 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -OSMESA_CONFIG!$OSMESA_CONFIG$ac_delim -EXE!$EXE$ac_delim -MATHLIB!$MATHLIB$ac_delim -SDL_CONFIG!$SDL_CONFIG$ac_delim -SDL_CFLAGS!$SDL_CFLAGS$ac_delim -SDL_LIBS!$SDL_LIBS$ac_delim -XMKMF!$XMKMF$ac_delim -CPP!$CPP$ac_delim -GLLIB!$GLLIB$ac_delim -SDL_TTF_LIB!$SDL_TTF_LIB$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 64; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac - ;; - - - - esac - -done # for ac_tag - - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/3rdparty/SDL-1.3.0-5387/test/configure.in b/3rdparty/SDL-1.3.0-5387/test/configure.in deleted file mode 100644 index b24b6a6fe8..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/configure.in +++ /dev/null @@ -1,150 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(README) - -dnl Detect the canonical build and host environments -AC_CONFIG_AUX_DIRS($srcdir/../build-scripts) -AC_CANONICAL_HOST - -dnl Check for tools - -AC_PROG_CC - -dnl Check for compiler environment - -AC_C_CONST - -dnl Figure out which math library to use -case "$host" in - *-*-cygwin* | *-*-mingw32*) - EXE=".exe" - MATHLIB="" - SYS_GL_LIBS="-lopengl32" - ;; - *-*-beos* | *-*-haiku*) - EXE="" - MATHLIB="" - SYS_GL_LIBS="-lGL" - ;; - *-*-darwin* ) - EXE="" - MATHLIB="" - SYS_GL_LIBS="-Wl,-framework,OpenGL" - ;; - *-*-aix*) - EXE="" - if test x$ac_cv_prog_gcc = xyes; then - CFLAGS="-mthreads" - fi - SYS_GL_LIBS="" - ;; - *-*-mint*) - EXE="" - MATHLIB="" - AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no) - if test "x$OSMESA_CONFIG" = "xyes"; then - OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags` - OSMESA_LIBS=`$OSMESA_CONFIG --libs` - CFLAGS="$CFLAGS $OSMESA_CFLAGS" - SYS_GL_LIBS="$OSMESA_LIBS" - else - SYS_GL_LIBS="-lOSMesa" - fi - ;; - *-*-qnx*) - EXE="" - MATHLIB="" - SYS_GL_LIBS="-lGLES_CM" - ;; - *) - EXE="" - MATHLIB="-lm" - SYS_GL_LIBS="-lGL" - ;; -esac -AC_SUBST(EXE) -AC_SUBST(MATHLIB) - -dnl Check for SDL -SDL_VERSION=1.3.0 -AM_PATH_SDL($SDL_VERSION, - :, - AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) -) -CFLAGS="$CFLAGS $SDL_CFLAGS" -LIBS="$LIBS $SDL_LIBS" - -dnl Check for X11 path, needed for OpenGL on some systems -AC_PATH_X -if test x$have_x = xyes; then - if test x$ac_x_includes = xno || test x$ac_x_includes = x; then - : - else - CFLAGS="$CFLAGS -I$ac_x_includes" - fi - if test x$ac_x_libraries = xno || test x$ac_x_libraries = x; then - : - else - XPATH="-L$ac_x_libraries" - fi -fi - -dnl Check for OpenGL -AC_MSG_CHECKING(for OpenGL support) -have_opengl=no -AC_TRY_COMPILE([ - #include "SDL_opengl.h" -],[ -],[ -have_opengl=yes -]) -AC_MSG_RESULT($have_opengl) - -dnl Check for OpenGL ES -AC_MSG_CHECKING(for OpenGL ES support) -have_opengles=no -AC_TRY_COMPILE([ - #if defined (__QNXNTO__) - #include - #elif defined (__IPHONEOS__) - #include - #else - #error "No OpenGL ES support" - #endif /* __QNXNTO__ */ -],[ -],[ -have_opengles=yes -]) -AC_MSG_RESULT($have_opengles) - -if test x$have_opengl = xyes; then - CFLAGS="$CFLAGS -DHAVE_OPENGL" - GLLIB="$XPATH $SYS_GL_LIBS" -elif test x$have_opengles = xyes; then - CFLAGS="$CFLAGS -DHAVE_OPENGLES" - GLLIB="$XPATH $SYS_GL_LIBS" -else - GLLIB="" -fi - -AC_SUBST(GLLIB) - -dnl Check for SDL_ttf -AC_MSG_CHECKING(for SDL_ttf) -have_SDL_ttf=no -AC_TRY_COMPILE([ - #include "SDL_ttf.h" -],[ -],[ -have_SDL_ttf=yes -]) -AC_MSG_RESULT($have_SDL_ttf) - -if test x$have_SDL_ttf = xyes; then - CFLAGS="$CFLAGS -DHAVE_SDL_TTF" - SDL_TTF_LIB="-lSDL_ttf" -fi - -AC_SUBST(SDL_TTF_LIB) - -dnl Finally create all the generated files -AC_OUTPUT([Makefile]) diff --git a/3rdparty/SDL-1.3.0-5387/test/gcc-fat.sh b/3rdparty/SDL-1.3.0-5387/test/gcc-fat.sh deleted file mode 100755 index 44d37ffdef..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/gcc-fat.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh -# -# Build Universal binaries on Mac OS X, thanks Ryan! -# -# Usage: ./configure CC="sh gcc-fat.sh" && make && rm -rf ppc x86 - -# PowerPC compiler flags (10.2 runtime compatibility) -GCC_COMPILE_PPC="gcc-3.3 -arch ppc \ --DMAC_OS_X_VERSION_MIN_REQUIRED=1020 \ --nostdinc \ --F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \ --I/Developer/SDKs/MacOSX10.2.8.sdk/usr/include/gcc/darwin/3.3 \ --isystem /Developer/SDKs/MacOSX10.2.8.sdk/usr/include" - -GCC_LINK_PPC="\ --L/Developer/SDKs/MacOSX10.2.8.sdk/usr/lib/gcc/darwin/3.3 \ --F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \ --Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk" - -# Intel compiler flags (10.4 runtime compatibility) -GCC_COMPILE_X86="gcc-4.0 -arch i386 -mmacosx-version-min=10.4 \ --DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \ --nostdinc \ --F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \ --I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.1/include \ --isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include" - -GCC_LINK_X86="\ --L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.0 \ --Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" - -# Output both PowerPC and Intel object files -args="$*" -compile=yes -link=yes -while test x$1 != x; do - case $1 in - --version) exec gcc $1;; - -v) exec gcc $1;; - -V) exec gcc $1;; - -print-prog-name=*) exec gcc $1;; - -print-search-dirs) exec gcc $1;; - -E) GCC_COMPILE_PPC="$GCC_COMPILE_PPC -E" - GCC_COMPILE_X86="$GCC_COMPILE_X86 -E" - compile=no; link=no;; - -c) link=no;; - -o) output=$2;; - *.c|*.cc|*.cpp|*.S) source=$1;; - esac - shift -done -if test x$link = xyes; then - GCC_COMPILE_PPC="$GCC_COMPILE_PPC $GCC_LINK_PPC" - GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86" -fi -if test x"$output" = x; then - if test x$link = xyes; then - output=a.out - elif test x$compile = xyes; then - output=`echo $source | sed -e 's|.*/||' -e 's|\(.*\)\.[^\.]*|\1|'`.o - fi -fi - -if test x"$output" != x; then - dir=ppc/`dirname $output` - if test -d $dir; then - : - else - mkdir -p $dir - fi -fi -set -- $args -while test x$1 != x; do - if test -f "ppc/$1" && test "$1" != "$output"; then - ppc_args="$ppc_args ppc/$1" - else - ppc_args="$ppc_args $1" - fi - shift -done -$GCC_COMPILE_PPC $ppc_args || exit $? -if test x"$output" != x; then - cp $output ppc/$output -fi - -if test x"$output" != x; then - dir=x86/`dirname $output` - if test -d $dir; then - : - else - mkdir -p $dir - fi -fi -set -- $args -while test x$1 != x; do - if test -f "x86/$1" && test "$1" != "$output"; then - x86_args="$x86_args x86/$1" - else - x86_args="$x86_args $1" - fi - shift -done -$GCC_COMPILE_X86 $x86_args || exit $? -if test x"$output" != x; then - cp $output x86/$output -fi - -if test x"$output" != x; then - lipo -create -o $output ppc/$output x86/$output -fi diff --git a/3rdparty/SDL-1.3.0-5387/test/graywin.c b/3rdparty/SDL-1.3.0-5387/test/graywin.c deleted file mode 100644 index 75a99e5d8f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/graywin.c +++ /dev/null @@ -1,248 +0,0 @@ - -/* Simple program: Fill a colormap with gray and stripe it down the screen */ - -#include -#include -#include -#include - -#include "SDL.h" - -#ifdef TEST_VGA16 /* Define this if you want to test VGA 16-color video modes */ -#define NUM_COLORS 16 -#else -#define NUM_COLORS 256 -#endif - -/* Draw a randomly sized and colored box centered about (X,Y) */ -void -DrawBox(SDL_Surface * screen, int X, int Y, int width, int height) -{ - static unsigned int seeded = 0; - SDL_Rect area; - Uint32 color; - Uint32 randc; - - /* Seed the random number generator */ - if (seeded == 0) { - srand((unsigned int)time(NULL)); - seeded = 1; - } - - /* Get the bounds of the rectangle */ - area.w = (rand() % width); - area.h = (rand() % height); - area.x = X - (area.w / 2); - area.y = Y - (area.h / 2); - randc = (rand() % NUM_COLORS); - - if (screen->format->BytesPerPixel == 1) { - color = randc; - } else { - color = SDL_MapRGB(screen->format, randc, randc, randc); - } - - /* Do it! */ - SDL_FillRect(screen, &area, color); - if (screen->flags & SDL_DOUBLEBUF) { - SDL_Flip(screen); - } else { - SDL_UpdateRects(screen, 1, &area); - } -} - -void -DrawBackground(SDL_Surface * screen) -{ - int i, j, k; - Uint8 *buffer; - Uint16 *buffer16; - Uint16 color; - Uint8 gradient; - - /* Set the surface pixels and refresh! */ - /* Use two loops in case the surface is double-buffered (both sides) */ - - for (j = 0; j < 2; ++j) { - if (SDL_LockSurface(screen) < 0) { - fprintf(stderr, "Couldn't lock display surface: %s\n", - SDL_GetError()); - return; - } - buffer = (Uint8 *) screen->pixels; - - if (screen->format->BytesPerPixel != 2) { - for (i = 0; i < screen->h; ++i) { - memset(buffer, (i * (NUM_COLORS - 1)) / screen->h, - screen->w * screen->format->BytesPerPixel); - buffer += screen->pitch; - } - } else { - for (i = 0; i < screen->h; ++i) { - gradient = ((i * (NUM_COLORS - 1)) / screen->h); - color = - SDL_MapRGB(screen->format, gradient, gradient, gradient); - buffer16 = (Uint16 *) buffer; - for (k = 0; k < screen->w; k++) { - *(buffer16 + k) = color; - } - buffer += screen->pitch; - } - } - - SDL_UnlockSurface(screen); - if (screen->flags & SDL_DOUBLEBUF) { - SDL_Flip(screen); - } else { - SDL_UpdateRect(screen, 0, 0, 0, 0); - break; - } - } -} - -SDL_Surface * -CreateScreen(Uint16 w, Uint16 h, Uint8 bpp, Uint32 flags) -{ - SDL_Surface *screen; - int i; - SDL_Color palette[NUM_COLORS]; - - /* Set the video mode */ - screen = SDL_SetVideoMode(w, h, bpp, flags); - if (screen == NULL) { - fprintf(stderr, "Couldn't set display mode: %s\n", SDL_GetError()); - return (NULL); - } - fprintf(stderr, "Screen is in %s mode\n", - (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); - - if (bpp == 8) { - /* Set a gray colormap, reverse order from white to black */ - for (i = 0; i < NUM_COLORS; ++i) { - palette[i].r = (NUM_COLORS - 1) - i * (256 / NUM_COLORS); - palette[i].g = (NUM_COLORS - 1) - i * (256 / NUM_COLORS); - palette[i].b = (NUM_COLORS - 1) - i * (256 / NUM_COLORS); - } - SDL_SetColors(screen, palette, 0, NUM_COLORS); - } - - return (screen); -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - Uint32 videoflags; - int done; - SDL_Event event; - int width, height, bpp; - - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - - /* See if we try to get a hardware colormap */ - width = 640; - height = 480; - bpp = 8; - videoflags = SDL_SWSURFACE; - while (argc > 1) { - --argc; - if (argv[argc - 1] && (strcmp(argv[argc - 1], "-width") == 0)) { - width = atoi(argv[argc]); - --argc; - } else if (argv[argc - 1] - && (strcmp(argv[argc - 1], "-height") == 0)) { - height = atoi(argv[argc]); - --argc; - } else if (argv[argc - 1] && (strcmp(argv[argc - 1], "-bpp") == 0)) { - bpp = atoi(argv[argc]); - --argc; - } else if (argv[argc] && (strcmp(argv[argc], "-hw") == 0)) { - videoflags |= SDL_HWSURFACE; - } else if (argv[argc] && (strcmp(argv[argc], "-hwpalette") == 0)) { - videoflags |= SDL_HWPALETTE; - } else if (argv[argc] && (strcmp(argv[argc], "-flip") == 0)) { - videoflags |= SDL_DOUBLEBUF; - } else if (argv[argc] && (strcmp(argv[argc], "-noframe") == 0)) { - videoflags |= SDL_NOFRAME; - } else if (argv[argc] && (strcmp(argv[argc], "-resize") == 0)) { - videoflags |= SDL_RESIZABLE; - } else if (argv[argc] && (strcmp(argv[argc], "-fullscreen") == 0)) { - videoflags |= SDL_FULLSCREEN; - } else { - fprintf(stderr, - "Usage: %s [-width] [-height] [-bpp] [-hw] [-hwpalette] [-flip] [-noframe] [-fullscreen] [-resize]\n", - argv[0]); - exit(1); - } - } - - /* Set a video mode */ - screen = CreateScreen(width, height, bpp, videoflags); - if (screen == NULL) { - exit(2); - } - - DrawBackground(screen); - - /* Wait for a keystroke */ - done = 0; - while (!done && SDL_WaitEvent(&event)) { - switch (event.type) { - case SDL_MOUSEBUTTONDOWN: - DrawBox(screen, event.button.x, event.button.y, width, height); - break; - case SDL_KEYDOWN: - /* Ignore ALT-TAB for windows */ - if ((event.key.keysym.sym == SDLK_LALT) || - (event.key.keysym.sym == SDLK_TAB)) { - break; - } - /* Center the mouse on */ - if (event.key.keysym.sym == SDLK_SPACE) { - SDL_WarpMouse(width / 2, height / 2); - break; - } - /* Toggle fullscreen mode on */ - if (event.key.keysym.sym == SDLK_RETURN) { - videoflags ^= SDL_FULLSCREEN; - screen = CreateScreen(screen->w, screen->h, - screen->format->BitsPerPixel, - videoflags); - if (screen == NULL) { - fprintf(stderr, "Couldn't toggle fullscreen mode\n"); - done = 1; - } - DrawBackground(screen); - break; - } - /* Any other key quits the application... */ - case SDL_QUIT: - done = 1; - break; - case SDL_VIDEOEXPOSE: - DrawBackground(screen); - break; - case SDL_VIDEORESIZE: - printf("Screen resized to %dx%d\n", event.resize.w, - event.resize.h); - screen = - CreateScreen(event.resize.w, event.resize.h, - screen->format->BitsPerPixel, videoflags); - if (screen == NULL) { - fprintf(stderr, "Couldn't resize video mode\n"); - done = 1; - } - DrawBackground(screen); - break; - default: - break; - } - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/icon.bmp b/3rdparty/SDL-1.3.0-5387/test/icon.bmp deleted file mode 100644 index cc96356acb..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/icon.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/loopwave.c b/3rdparty/SDL-1.3.0-5387/test/loopwave.c deleted file mode 100644 index da6fec9d2f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/loopwave.c +++ /dev/null @@ -1,117 +0,0 @@ - -/* Program to load a wave file and loop playing it using SDL sound */ - -/* loopwaves.c is much more robust in handling WAVE files -- - This is only for simple WAVEs -*/ -#include "SDL_config.h" - -#include -#include - -#if HAVE_SIGNAL_H -#include -#endif - -#include "SDL.h" -#include "SDL_audio.h" - -struct -{ - SDL_AudioSpec spec; - Uint8 *sound; /* Pointer to wave data */ - Uint32 soundlen; /* Length of wave data */ - int soundpos; /* Current play position */ -} wave; - - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - - -void SDLCALL -fillerup(void *unused, Uint8 * stream, int len) -{ - Uint8 *waveptr; - int waveleft; - - /* Set up the pointers */ - waveptr = wave.sound + wave.soundpos; - waveleft = wave.soundlen - wave.soundpos; - - /* Go! */ - while (waveleft <= len) { - SDL_memcpy(stream, waveptr, waveleft); - stream += waveleft; - len -= waveleft; - waveptr = wave.sound; - waveleft = wave.soundlen; - wave.soundpos = 0; - } - SDL_memcpy(stream, waveptr, len); - wave.soundpos += len; -} - -static int done = 0; -void -poked(int sig) -{ - done = 1; -} - -int -main(int argc, char *argv[]) -{ - /* Load the SDL library */ - if (SDL_Init(SDL_INIT_AUDIO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - if (argv[1] == NULL) { - argv[1] = "sample.wav"; - } - /* Load the wave file into memory */ - if (SDL_LoadWAV(argv[1], &wave.spec, &wave.sound, &wave.soundlen) == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", argv[1], SDL_GetError()); - quit(1); - } - - wave.spec.callback = fillerup; -#if HAVE_SIGNAL_H - /* Set the signals */ -#ifdef SIGHUP - signal(SIGHUP, poked); -#endif - signal(SIGINT, poked); -#ifdef SIGQUIT - signal(SIGQUIT, poked); -#endif - signal(SIGTERM, poked); -#endif /* HAVE_SIGNAL_H */ - - /* Initialize fillerup() variables */ - if (SDL_OpenAudio(&wave.spec, NULL) < 0) { - fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); - SDL_FreeWAV(wave.sound); - quit(2); - } - - printf("Using audio driver: %s\n", SDL_GetCurrentAudioDriver()); - - /* Let the audio run */ - SDL_PauseAudio(0); - while (!done && (SDL_GetAudioStatus() == SDL_AUDIO_PLAYING)) - SDL_Delay(1000); - - /* Clean up on signal */ - SDL_CloseAudio(); - SDL_FreeWAV(wave.sound); - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/moose.dat b/3rdparty/SDL-1.3.0-5387/test/moose.dat deleted file mode 100644 index 10530046fd..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/moose.dat and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/general/Makefile b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/general/Makefile deleted file mode 100755 index 0f59a0e768..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/general/Makefile +++ /dev/null @@ -1,132 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -include $(DEVKITARM)/ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# INCLUDES is a list of directories containing extra header files -#--------------------------------------------------------------------------------- -TARGET := $(shell basename $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -mthumb -mthumb-interwork - -# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD -# *insists* it has a FPU or VFP, and it won't take no for an answer! -CFLAGS := -save-temps -g -Wall -O0\ - -mcpu=arm9tdmi -mtune=arm9tdmi \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM9 -D__NDS__ -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-exceptions -fno-rtti - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,$(notdir $*.map) - -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS := -lSDL -lfat -lnds9 - - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(LIBNDS) - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -.PHONY: $(BUILD) clean - -#--------------------------------------------------------------------------------- -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9 $(TARGET).ds.gba - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT).ds.gba : $(OUTPUT).nds -$(OUTPUT).nds : $(OUTPUT).arm9 -$(OUTPUT).arm9 : $(OUTPUT).elf -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -%.pcx.o : %.pcx -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/general/source/main.c b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/general/source/main.c deleted file mode 100755 index b9c74c0ece..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/general/source/main.c +++ /dev/null @@ -1,96 +0,0 @@ - -#include -#if defined(NDS) || defined(__NDS__) || defined (__NDS) -#include -#include -#else -#define swiWaitForVBlank() -#define consoleDemoInit() -#define fatInitDefault() -#define RGB15(r,g,b) SDL_MapRGB(screen->format,((r)<<3),((g)<<3),((b)<<3)) -#endif - void -splash(SDL_Surface * screen, int s) -{ - SDL_Surface *logo; - SDL_Rect area = { 0, 0, 256, 192 }; - - logo = SDL_LoadBMP("sdl.bmp"); - if (!logo) { - printf("Couldn't splash.\n"); - return; - } - /*logo->flags &= ~SDL_PREALLOC; */ - SDL_BlitSurface(logo, NULL, screen, &area); - SDL_Flip(screen); - while (s-- > 0) { - int i = 60; - while (--i) - swiWaitForVBlank(); - } -} - - int -main(void) -{ - SDL_Surface *screen; - SDL_Joystick *stick; - SDL_Event event; - SDL_Rect rect = { 0, 0, 256, 192 }; - int i; - - consoleDemoInit(); - puts("Hello world! Initializing FAT..."); - fatInitDefault(); - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { - puts("# error initializing SDL"); - puts(SDL_GetError()); - return 1; - } - puts("* initialized SDL"); - screen = SDL_SetVideoMode(256, 192, 15, SDL_SWSURFACE); - if (!screen) { - puts("# error setting video mode"); - puts(SDL_GetError()); - return 2; - } - screen->flags &= ~SDL_PREALLOC; - puts("* set video mode"); - stick = SDL_JoystickOpen(0); - if (stick == NULL) { - puts("# error opening joystick"); - puts(SDL_GetError()); -// return 3; - } - puts("* opened joystick"); - - /*splash(screen, 3); */ - - SDL_FillRect(screen, &rect, RGB15(0, 0, 31) | 0x8000); - SDL_Flip(screen); - - while (1) - while (SDL_PollEvent(&event)) - switch (event.type) { - case SDL_JOYBUTTONDOWN: - SDL_FillRect(screen, &rect, (u16) rand() | 0x8000); - SDL_Flip(screen); - if (rect.w > 8) { - rect.x += 4; - rect.y += 3; - rect.w -= 8; - rect.h -= 6; - } - printf("button %d pressed at %d ticks\n", - event.jbutton.button, SDL_GetTicks()); - break; - case SDL_QUIT: - SDL_Quit(); - return 0; - default: - break; - } - return 0; - } - - diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/Makefile b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/Makefile deleted file mode 100755 index 0f59a0e768..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/Makefile +++ /dev/null @@ -1,132 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -include $(DEVKITARM)/ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# INCLUDES is a list of directories containing extra header files -#--------------------------------------------------------------------------------- -TARGET := $(shell basename $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -mthumb -mthumb-interwork - -# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD -# *insists* it has a FPU or VFP, and it won't take no for an answer! -CFLAGS := -save-temps -g -Wall -O0\ - -mcpu=arm9tdmi -mtune=arm9tdmi \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM9 -D__NDS__ -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-exceptions -fno-rtti - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,$(notdir $*.map) - -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS := -lSDL -lfat -lnds9 - - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(LIBNDS) - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -.PHONY: $(BUILD) clean - -#--------------------------------------------------------------------------------- -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9 $(TARGET).ds.gba - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT).ds.gba : $(OUTPUT).nds -$(OUTPUT).nds : $(OUTPUT).arm9 -$(OUTPUT).arm9 : $(OUTPUT).elf -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -%.pcx.o : %.pcx -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/common.c b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/common.c deleted file mode 100755 index 021ab8b08c..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/common.c +++ /dev/null @@ -1,965 +0,0 @@ - -/* A simple test program framework */ - -#include - -#include "common.h" - -#define VIDEO_USAGE \ -"[--video driver] [--renderer driver] [--info all|video|modes|render|event] [--display %d] [--fullscreen | --windows N] [--title title] [--center | --position X,Y] [--geometry WxH] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab]" - -#define AUDIO_USAGE \ -"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" - -CommonState * -CommonCreateState(char **argv, Uint32 flags) -{ - CommonState *state = SDL_calloc(1, sizeof(*state)); - if (!state) { - SDL_OutOfMemory(); - return NULL; - } - - /* Initialize some defaults */ - state->argv = argv; - state->flags = flags; - state->window_title = argv[0]; - state->window_flags = SDL_WINDOW_SHOWN; - state->window_x = SDL_WINDOWPOS_UNDEFINED; - state->window_y = SDL_WINDOWPOS_UNDEFINED; - state->window_w = 256; - state->window_h = 192; - state->num_windows = 1; - state->audiospec.freq = 22050; - state->audiospec.format = AUDIO_S16; - state->audiospec.channels = 2; - state->audiospec.samples = 2048; - return state; -} - -int -CommonArg(CommonState * state, int index) -{ - char **argv = state->argv; - - if (SDL_strcasecmp(argv[index], "--video") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->videodriver = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--renderer") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->renderdriver = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--info") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "all") == 0) { - state->verbose |= - (VERBOSE_VIDEO | VERBOSE_MODES | VERBOSE_RENDER | - VERBOSE_EVENT); - return 2; - } - if (SDL_strcasecmp(argv[index], "video") == 0) { - state->verbose |= VERBOSE_VIDEO; - return 2; - } - if (SDL_strcasecmp(argv[index], "modes") == 0) { - state->verbose |= VERBOSE_MODES; - return 2; - } - if (SDL_strcasecmp(argv[index], "render") == 0) { - state->verbose |= VERBOSE_RENDER; - return 2; - } - if (SDL_strcasecmp(argv[index], "event") == 0) { - state->verbose |= VERBOSE_EVENT; - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--display") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->display = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) { - state->window_flags |= SDL_WINDOW_FULLSCREEN; - state->num_windows = 1; - return 1; - } - if (SDL_strcasecmp(argv[index], "--windows") == 0) { - ++index; - if (!argv[index] || !SDL_isdigit(*argv[index])) { - return -1; - } - if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) { - state->num_windows = SDL_atoi(argv[index]); - } - return 2; - } - if (SDL_strcasecmp(argv[index], "--title") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->window_title = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--center") == 0) { - state->window_x = SDL_WINDOWPOS_CENTERED; - state->window_y = SDL_WINDOWPOS_CENTERED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--position") == 0) { - char *x, *y; - ++index; - if (!argv[index]) { - return -1; - } - x = argv[index]; - y = argv[index]; - while (*y && *y != ',') { - ++y; - } - if (!*y) { - return -1; - } - *y++ = '\0'; - state->window_x = SDL_atoi(x); - state->window_y = SDL_atoi(y); - return 2; - } - if (SDL_strcasecmp(argv[index], "--geometry") == 0) { - char *w, *h; - ++index; - if (!argv[index]) { - return -1; - } - w = argv[index]; - h = argv[index]; - while (*h && *h != 'x') { - ++h; - } - if (!*h) { - return -1; - } - *h++ = '\0'; - state->window_w = SDL_atoi(w); - state->window_h = SDL_atoi(h); - return 2; - } - if (SDL_strcasecmp(argv[index], "--depth") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->depth = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--refresh") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->refresh_rate = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--vsync") == 0) { - state->render_flags |= SDL_RENDERER_PRESENTVSYNC; - return 1; - } - if (SDL_strcasecmp(argv[index], "--noframe") == 0) { - state->window_flags |= SDL_WINDOW_BORDERLESS; - return 1; - } - if (SDL_strcasecmp(argv[index], "--resize") == 0) { - state->window_flags |= SDL_WINDOW_RESIZABLE; - return 1; - } - if (SDL_strcasecmp(argv[index], "--minimize") == 0) { - state->window_flags |= SDL_WINDOW_MINIMIZED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--maximize") == 0) { - state->window_flags |= SDL_WINDOW_MAXIMIZED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--grab") == 0) { - state->window_flags |= SDL_WINDOW_INPUT_GRABBED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--rate") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.freq = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--format") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "U8") == 0) { - state->audiospec.format = AUDIO_U8; - return 2; - } - if (SDL_strcasecmp(argv[index], "S8") == 0) { - state->audiospec.format = AUDIO_S8; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16") == 0) { - state->audiospec.format = AUDIO_U16; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16LE") == 0) { - state->audiospec.format = AUDIO_U16LSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16BE") == 0) { - state->audiospec.format = AUDIO_U16MSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16") == 0) { - state->audiospec.format = AUDIO_S16; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16LE") == 0) { - state->audiospec.format = AUDIO_S16LSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16BE") == 0) { - state->audiospec.format = AUDIO_S16MSB; - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--channels") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.channels = (Uint8) SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--samples") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.samples = (Uint16) SDL_atoi(argv[index]); - return 2; - } - if ((SDL_strcasecmp(argv[index], "-h") == 0) - || (SDL_strcasecmp(argv[index], "--help") == 0)) { - /* Print the usage message */ - return -1; - } - return 0; -} - -const char * -CommonUsage(CommonState * state) -{ - switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) { - case SDL_INIT_VIDEO: - return VIDEO_USAGE; - case SDL_INIT_AUDIO: - return AUDIO_USAGE; - case (SDL_INIT_VIDEO | SDL_INIT_AUDIO): - return VIDEO_USAGE " " AUDIO_USAGE; - default: - return ""; - } -} - -static void -PrintRendererFlag(Uint32 flag) -{ - switch (flag) { - case SDL_RENDERER_SINGLEBUFFER: - fprintf(stderr, "SingleBuffer"); - break; - case SDL_RENDERER_PRESENTCOPY: - fprintf(stderr, "PresentCopy"); - break; - case SDL_RENDERER_PRESENTFLIP2: - fprintf(stderr, "PresentFlip2"); - break; - case SDL_RENDERER_PRESENTFLIP3: - fprintf(stderr, "PresentFlip3"); - break; - case SDL_RENDERER_PRESENTDISCARD: - fprintf(stderr, "PresentDiscard"); - break; - case SDL_RENDERER_PRESENTVSYNC: - fprintf(stderr, "PresentVSync"); - break; - case SDL_RENDERER_ACCELERATED: - fprintf(stderr, "Accelerated"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintBlendMode(Uint32 flag) -{ - switch (flag) { - case SDL_BLENDMODE_NONE: - fprintf(stderr, "None"); - break; - case SDL_BLENDMODE_MASK: - fprintf(stderr, "Mask"); - break; - case SDL_BLENDMODE_BLEND: - fprintf(stderr, "Blend"); - break; - case SDL_BLENDMODE_ADD: - fprintf(stderr, "Add"); - break; - case SDL_BLENDMODE_MOD: - fprintf(stderr, "Mod"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintScaleMode(Uint32 flag) -{ - switch (flag) { - case SDL_TEXTURESCALEMODE_NONE: - fprintf(stderr, "None"); - break; - case SDL_TEXTURESCALEMODE_FAST: - fprintf(stderr, "Fast"); - break; - case SDL_TEXTURESCALEMODE_SLOW: - fprintf(stderr, "Slow"); - break; - case SDL_TEXTURESCALEMODE_BEST: - fprintf(stderr, "Best"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintPixelFormat(Uint32 format) -{ - switch (format) { - case SDL_PIXELFORMAT_UNKNOWN: - fprintf(stderr, "Unknwon"); - break; - case SDL_PIXELFORMAT_INDEX1LSB: - fprintf(stderr, "Index1LSB"); - break; - case SDL_PIXELFORMAT_INDEX1MSB: - fprintf(stderr, "Index1MSB"); - break; - case SDL_PIXELFORMAT_INDEX4LSB: - fprintf(stderr, "Index4LSB"); - break; - case SDL_PIXELFORMAT_INDEX4MSB: - fprintf(stderr, "Index4MSB"); - break; - case SDL_PIXELFORMAT_INDEX8: - fprintf(stderr, "Index8"); - break; - case SDL_PIXELFORMAT_RGB332: - fprintf(stderr, "RGB332"); - break; - case SDL_PIXELFORMAT_RGB444: - fprintf(stderr, "RGB444"); - break; - case SDL_PIXELFORMAT_RGB555: - fprintf(stderr, "RGB555"); - break; - case SDL_PIXELFORMAT_ARGB4444: - fprintf(stderr, "ARGB4444"); - break; - case SDL_PIXELFORMAT_ARGB1555: - fprintf(stderr, "ARGB1555"); - break; - case SDL_PIXELFORMAT_RGB565: - fprintf(stderr, "RGB565"); - break; - case SDL_PIXELFORMAT_RGB24: - fprintf(stderr, "RGB24"); - break; - case SDL_PIXELFORMAT_BGR24: - fprintf(stderr, "BGR24"); - break; - case SDL_PIXELFORMAT_RGB888: - fprintf(stderr, "RGB888"); - break; - case SDL_PIXELFORMAT_BGR888: - fprintf(stderr, "BGR888"); - break; - case SDL_PIXELFORMAT_ARGB8888: - fprintf(stderr, "ARGB8888"); - break; - case SDL_PIXELFORMAT_RGBA8888: - fprintf(stderr, "RGBA8888"); - break; - case SDL_PIXELFORMAT_ABGR8888: - fprintf(stderr, "ABGR8888"); - break; - case SDL_PIXELFORMAT_BGRA8888: - fprintf(stderr, "BGRA8888"); - break; - case SDL_PIXELFORMAT_ARGB2101010: - fprintf(stderr, "ARGB2101010"); - break; - case SDL_PIXELFORMAT_YV12: - fprintf(stderr, "YV12"); - break; - case SDL_PIXELFORMAT_IYUV: - fprintf(stderr, "IYUV"); - break; - case SDL_PIXELFORMAT_YUY2: - fprintf(stderr, "YUY2"); - break; - case SDL_PIXELFORMAT_UYVY: - fprintf(stderr, "UYVY"); - break; - case SDL_PIXELFORMAT_YVYU: - fprintf(stderr, "YVYU"); - break; - case SDL_PIXELFORMAT_ABGR1555: - fprintf(stderr, "ABGR1555"); - break; - case SDL_PIXELFORMAT_BGR555: - fprintf(stderr, "BGR555"); - break; - default: - fprintf(stderr, "0x%8.8x", format); - break; - } -} - -static void -PrintRenderer(SDL_RendererInfo * info) -{ - int i, count; - - fprintf(stderr, " Renderer %s:\n", info->name); - - fprintf(stderr, " Flags: 0x%8.8X", info->flags); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->flags) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->flags & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintRendererFlag(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Blend: 0x%8.8X", info->blend_modes); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->blend_modes) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->blend_modes & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintBlendMode(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Scale: 0x%8.8X", info->scale_modes); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->scale_modes) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->scale_modes & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintScaleMode(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Texture formats (%d): ", info->num_texture_formats); - for (i = 0; i < (int) info->num_texture_formats; ++i) { - if (i > 0) { - fprintf(stderr, ", "); - } - PrintPixelFormat(info->texture_formats[i]); - } - fprintf(stderr, "\n"); - - if (info->max_texture_width || info->max_texture_height) { - fprintf(stderr, " Max Texture Size: %dx%d\n", - info->max_texture_width, info->max_texture_height); - } -} - -SDL_bool -CommonInit(CommonState * state) -{ - int i, j, m, n; - SDL_DisplayMode fullscreen_mode; - - if (state->flags & SDL_INIT_VIDEO) { - if (state->verbose & VERBOSE_VIDEO) { - n = SDL_GetNumVideoDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in video drivers\n"); - } else { - fprintf(stderr, "Built-in video drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - fprintf(stderr, ","); - } - fprintf(stderr, " %s", SDL_GetVideoDriver(i)); - } - fprintf(stderr, "\n"); - } - } - if (SDL_VideoInit(state->videodriver, 0) < 0) { - fprintf(stderr, "Couldn't initialize video driver: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_VIDEO) { - fprintf(stderr, "Video driver: %s\n", - SDL_GetCurrentVideoDriver()); - } - - if (state->verbose & VERBOSE_MODES) { - SDL_DisplayMode mode; - int bpp; - Uint32 Rmask, Gmask, Bmask, Amask; - - n = SDL_GetNumVideoDisplays(); - fprintf(stderr, "Number of displays: %d\n", n); - for (i = 0; i < n; ++i) { - fprintf(stderr, "Display %d:\n", i); - SDL_SelectVideoDisplay(i); - - SDL_GetDesktopDisplayMode(&mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask, - &Bmask, &Amask); - fprintf(stderr, - " Current mode: %dx%d@%dHz, %d bits-per-pixel\n", - mode.w, mode.h, mode.refresh_rate, bpp); - if (Rmask || Gmask || Bmask) { - fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask); - fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask); - fprintf(stderr, " Blue Mask = 0x%.8x\n", Bmask); - if (Amask) - fprintf(stderr, " Alpha Mask = 0x%.8x\n", Amask); - } - - /* Print available fullscreen video modes */ - m = SDL_GetNumDisplayModes(); - if (m == 0) { - fprintf(stderr, "No available fullscreen video modes\n"); - } else { - fprintf(stderr, " Fullscreen video modes:\n"); - for (j = 0; j < m; ++j) { - SDL_GetDisplayMode(j, &mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, - &Gmask, &Bmask, &Amask); - fprintf(stderr, - " Mode %d: %dx%d@%dHz, %d bits-per-pixel\n", - j, mode.w, mode.h, mode.refresh_rate, bpp); - if (Rmask || Gmask || Bmask) { - fprintf(stderr, " Red Mask = 0x%.8x\n", - Rmask); - fprintf(stderr, " Green Mask = 0x%.8x\n", - Gmask); - fprintf(stderr, " Blue Mask = 0x%.8x\n", - Bmask); - if (Amask) - fprintf(stderr, - " Alpha Mask = 0x%.8x\n", - Amask); - } - } - } - } - } - - SDL_SelectVideoDisplay(state->display); - if (state->verbose & VERBOSE_RENDER) { - SDL_RendererInfo info; - - n = SDL_GetNumRenderDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in render drivers\n"); - } else { - fprintf(stderr, "Built-in render drivers:\n"); - for (i = 0; i < n; ++i) { - SDL_GetRenderDriverInfo(i, &info); - PrintRenderer(&info); - } - } - } - - switch (state->depth) { - case 8: - fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8; - break; - case 15: - fullscreen_mode.format = SDL_PIXELFORMAT_BGR555; - break; - case 16: - default: - fullscreen_mode.format = SDL_PIXELFORMAT_ABGR1555; - break; -/* NDS default: - fullscreen_mode.format = SDL_PIXELFORMAT_RGB888; - break;*/ - } - fullscreen_mode.w = state->window_w; - fullscreen_mode.h = state->window_h; - fullscreen_mode.refresh_rate = state->refresh_rate; - SDL_SetFullscreenDisplayMode(&fullscreen_mode); - - state->windows = - (SDL_WindowID *) SDL_malloc(state->num_windows * - sizeof(*state->windows)); - if (!state->windows) { - fprintf(stderr, "Out of memory!\n"); - return SDL_FALSE; - } - for (i = 0; i < state->num_windows; ++i) { - char title[1024]; - - if (state->num_windows > 1) { - SDL_snprintf(title, SDL_arraysize(title), "%s %d", - state->window_title, i + 1); - } else { - SDL_strlcpy(title, state->window_title, SDL_arraysize(title)); - } - state->windows[i] = - SDL_CreateWindow(title, state->window_x, state->window_y, - state->window_w, state->window_h, - state->window_flags); - if (!state->windows[i]) { - fprintf(stderr, "Couldn't create window: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - - if (!state->skip_renderer - && (state->renderdriver - || !(state->window_flags & SDL_WINDOW_OPENGL))) { - m = -1; - if (state->renderdriver) { - SDL_RendererInfo info; - n = SDL_GetNumRenderDrivers(); - for (j = 0; j < n; ++j) { - SDL_GetRenderDriverInfo(j, &info); - if (SDL_strcasecmp(info.name, state->renderdriver) == - 0) { - m = j; - break; - } - } - if (m == n) { - fprintf(stderr, - "Couldn't find render driver named %s", - state->renderdriver); - return SDL_FALSE; - } - } - if (SDL_CreateRenderer - (state->windows[i], m, state->render_flags) < 0) { - fprintf(stderr, "Couldn't create renderer: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_RENDER) { - SDL_RendererInfo info; - - fprintf(stderr, "Current renderer:\n"); - SDL_GetRendererInfo(&info); - PrintRenderer(&info); - } - } - } - SDL_SelectRenderer(state->windows[0]); - } - - if (state->flags & SDL_INIT_AUDIO) { - if (state->verbose & VERBOSE_AUDIO) { - n = SDL_GetNumAudioDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in audio drivers\n"); - } else { - fprintf(stderr, "Built-in audio drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - fprintf(stderr, ","); - } - fprintf(stderr, " %s", SDL_GetAudioDriver(i)); - } - fprintf(stderr, "\n"); - } - } - if (SDL_AudioInit(state->audiodriver) < 0) { - fprintf(stderr, "Couldn't initialize audio driver: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_VIDEO) { - fprintf(stderr, "Audio driver: %s\n", - SDL_GetCurrentAudioDriver()); - } - - if (SDL_OpenAudio(&state->audiospec, NULL) < 0) { - fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); - return SDL_FALSE; - } - } - - return SDL_TRUE; -} - -static void -PrintEvent(SDL_Event * event) -{ - fprintf(stderr, "SDL EVENT: "); - switch (event->type) { - case SDL_WINDOWEVENT: - switch (event->window.event) { - case SDL_WINDOWEVENT_SHOWN: - fprintf(stderr, "Window %d shown", event->window.windowID); - break; - case SDL_WINDOWEVENT_HIDDEN: - fprintf(stderr, "Window %d hidden", event->window.windowID); - break; - case SDL_WINDOWEVENT_EXPOSED: - fprintf(stderr, "Window %d exposed", event->window.windowID); - break; - case SDL_WINDOWEVENT_MOVED: - fprintf(stderr, "Window %d moved to %d,%d", - event->window.windowID, event->window.data1, - event->window.data2); - break; - case SDL_WINDOWEVENT_RESIZED: - fprintf(stderr, "Window %d resized to %dx%d", - event->window.windowID, event->window.data1, - event->window.data2); - break; - case SDL_WINDOWEVENT_MINIMIZED: - fprintf(stderr, "Window %d minimized", event->window.windowID); - break; - case SDL_WINDOWEVENT_MAXIMIZED: - fprintf(stderr, "Window %d maximized", event->window.windowID); - break; - case SDL_WINDOWEVENT_RESTORED: - fprintf(stderr, "Window %d restored", event->window.windowID); - break; - case SDL_WINDOWEVENT_ENTER: - fprintf(stderr, "Mouse entered window %d", - event->window.windowID); - break; - case SDL_WINDOWEVENT_LEAVE: - fprintf(stderr, "Mouse left window %d", event->window.windowID); - break; - case SDL_WINDOWEVENT_FOCUS_GAINED: - fprintf(stderr, "Window %d gained keyboard focus", - event->window.windowID); - break; - case SDL_WINDOWEVENT_FOCUS_LOST: - fprintf(stderr, "Window %d lost keyboard focus", - event->window.windowID); - break; - case SDL_WINDOWEVENT_CLOSE: - fprintf(stderr, "Window %d closed", event->window.windowID); - break; - default: - fprintf(stderr, "Window %d got unknown event %d", - event->window.windowID, event->window.event); - break; - } - break; - case SDL_KEYDOWN: - fprintf(stderr, - "Keyboard %d: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", - event->key.which, event->key.windowID, - event->key.keysym.scancode, - SDL_GetScancodeName(event->key.keysym.scancode), - event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_KEYUP: - fprintf(stderr, - "Keyboard %d: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", - event->key.which, event->key.windowID, - event->key.keysym.scancode, - SDL_GetScancodeName(event->key.keysym.scancode), - event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_TEXTINPUT: - fprintf(stderr, "Keyboard %d: text input \"%s\" in window %d", - event->text.which, event->text.text, event->text.windowID); - break; - case SDL_MOUSEMOTION: - fprintf(stderr, "Mouse %d: moved to %d,%d (%d,%d) in window %d", - event->motion.which, event->motion.x, event->motion.y, - event->motion.xrel, event->motion.yrel, - event->motion.windowID); - break; - case SDL_MOUSEBUTTONDOWN: - fprintf(stderr, "Mouse %d: button %d pressed at %d,%d in window %d", - event->button.which, event->button.button, event->button.x, - event->button.y, event->button.windowID); - break; - case SDL_MOUSEBUTTONUP: - fprintf(stderr, "Mouse %d: button %d released at %d,%d in window %d", - event->button.which, event->button.button, event->button.x, - event->button.y, event->button.windowID); - break; - case SDL_MOUSEWHEEL: - fprintf(stderr, - "Mouse %d: wheel scrolled %d in x and %d in y in window %d", - event->wheel.which, event->wheel.x, event->wheel.y, - event->wheel.windowID); - break; - case SDL_JOYBALLMOTION: - fprintf(stderr, "Joystick %d: ball %d moved by %d,%d", - event->jball.which, event->jball.ball, event->jball.xrel, - event->jball.yrel); - break; - case SDL_JOYHATMOTION: - fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which, - event->jhat.hat); - switch (event->jhat.value) { - case SDL_HAT_CENTERED: - fprintf(stderr, "CENTER"); - break; - case SDL_HAT_UP: - fprintf(stderr, "UP"); - break; - case SDL_HAT_RIGHTUP: - fprintf(stderr, "RIGHTUP"); - break; - case SDL_HAT_RIGHT: - fprintf(stderr, "RIGHT"); - break; - case SDL_HAT_RIGHTDOWN: - fprintf(stderr, "RIGHTDOWN"); - break; - case SDL_HAT_DOWN: - fprintf(stderr, "DOWN"); - break; - case SDL_HAT_LEFTDOWN: - fprintf(stderr, "LEFTDOWN"); - break; - case SDL_HAT_LEFT: - fprintf(stderr, "LEFT"); - break; - case SDL_HAT_LEFTUP: - fprintf(stderr, "LEFTUP"); - break; - default: - fprintf(stderr, "UNKNOWN"); - break; - } - break; - case SDL_JOYBUTTONDOWN: - fprintf(stderr, "Joystick %d: button %d pressed", - event->jbutton.which, event->jbutton.button); - break; - case SDL_JOYBUTTONUP: - fprintf(stderr, "Joystick %d: button %d released", - event->jbutton.which, event->jbutton.button); - break; - case SDL_QUIT: - fprintf(stderr, "Quit requested"); - break; - case SDL_USEREVENT: - fprintf(stderr, "User event %d", event->user.code); - break; - default: - fprintf(stderr, "Unknown event %d", event->type); - break; - } - fprintf(stderr, "\n"); -} - -void -CommonEvent(CommonState * state, SDL_Event * event, int *done) -{ - if (state->verbose & VERBOSE_EVENT) { - PrintEvent(event); - } - - switch (event->type) { - case SDL_WINDOWEVENT: - switch (event->window.event) { - case SDL_WINDOWEVENT_CLOSE: - *done = 1; - break; - } - break; - case SDL_KEYDOWN: - switch (event->key.keysym.sym) { - /* Add hotkeys here */ - case SDLK_g: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-G toggle grab */ - } - break; - case SDLK_ESCAPE: - *done = 1; - break; - default: - break; - } - break; - case SDL_QUIT: - *done = 1; - break; - } -} - -void -CommonQuit(CommonState * state) -{ - if (state->flags & SDL_INIT_VIDEO) { - SDL_VideoQuit(); - } - if (state->flags & SDL_INIT_AUDIO) { - SDL_AudioQuit(); - } - if (state->windows) { - SDL_free(state->windows); - } - SDL_free(state); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/common.h b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/common.h deleted file mode 100755 index 0e03931988..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/common.h +++ /dev/null @@ -1,48 +0,0 @@ - -/* A simple test program framework */ - -#include - -#define VERBOSE_VIDEO 0x00000001 -#define VERBOSE_MODES 0x00000002 -#define VERBOSE_RENDER 0x00000004 -#define VERBOSE_EVENT 0x00000008 -#define VERBOSE_AUDIO 0x00000010 - -typedef struct -{ - /* SDL init flags */ - char **argv; - Uint32 flags; - Uint32 verbose; - - /* Video info */ - const char *videodriver; - int display; - const char *window_title; - Uint32 window_flags; - int window_x; - int window_y; - int window_w; - int window_h; - int depth; - int refresh_rate; - int num_windows; - SDL_WindowID *windows; - - /* Renderer info */ - const char *renderdriver; - Uint32 render_flags; - SDL_bool skip_renderer; - - /* Audio info */ - const char *audiodriver; - SDL_AudioSpec audiospec; -} CommonState; - -extern CommonState *CommonCreateState(char **argv, Uint32 flags); -extern int CommonArg(CommonState * state, int index); -extern const char *CommonUsage(CommonState * state); -extern SDL_bool CommonInit(CommonState * state); -extern void CommonEvent(CommonState * state, SDL_Event * event, int *done); -extern void CommonQuit(CommonState * state); diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/testsprite.c b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/testsprite.c deleted file mode 100755 index 4134de581a..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite/source/testsprite.c +++ /dev/null @@ -1,316 +0,0 @@ -/* Simple program: Move N sprites around on the screen as fast as possible */ - -#include -#include -#include -#include -#include -#include - -#define NUM_SPRITES 10 -#define MAX_SPEED 1 - -SDL_Surface *sprite; -int numsprites; -SDL_Rect *sprite_rects; -SDL_Rect *positions; -SDL_Rect *velocities; -int sprites_visible; -int debug_flip; -Uint16 sprite_w, sprite_h; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int -LoadSprite(char *file) -{ - SDL_Surface *temp; - - /* Load the sprite image */ - sprite = SDL_LoadBMP(file); - if (sprite == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return (-1); - } - - /* Set transparent pixel as the pixel at (0,0) */ - if (sprite->format->palette) { - SDL_SetColorKey(sprite, (SDL_SRCCOLORKEY | SDL_RLEACCEL), - *(Uint8 *) sprite->pixels); - } - - /* Convert sprite to video format */ - temp = SDL_DisplayFormat(sprite); - SDL_FreeSurface(sprite); - if (temp == NULL) { - fprintf(stderr, "Couldn't convert background: %s\n", SDL_GetError()); - return (-1); - } - sprite = temp; - - /* We're ready to roll. :) */ - return (0); -} - -void -MoveSprites(SDL_Surface * screen, Uint32 background) -{ - int i, nupdates; - SDL_Rect area, *position, *velocity; - - nupdates = 0; - /* Erase all the sprites if necessary */ - if (sprites_visible) { - SDL_FillRect(screen, NULL, background); - } - - /* Move the sprite, bounce at the wall, and draw */ - for (i = 0; i < numsprites; ++i) { - position = &positions[i]; - velocity = &velocities[i]; - position->x += velocity->x; - if ((position->x < 0) || (position->x >= (screen->w - sprite_w))) { - velocity->x = -velocity->x; - position->x += velocity->x; - } - position->y += velocity->y; - if ((position->y < 0) || (position->y >= (screen->h - sprite_w))) { - velocity->y = -velocity->y; - position->y += velocity->y; - } - - /* Blit the sprite onto the screen */ - area = *position; - SDL_BlitSurface(sprite, NULL, screen, &area); - sprite_rects[nupdates++] = area; - } - - if (debug_flip) { - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - static int t = 0; - - Uint32 color = SDL_MapRGB(screen->format, 255, 0, 0); - SDL_Rect r; - r.x = t; -/* (sin((float) t * 2 * 3.1459) + 1.0) / 2.0 * (screen->w - 20); */ - r.y = 0; - r.w = 20; - r.h = screen->h; - - SDL_FillRect(screen, &r, color); - t += 2; - } - } - - /* Update the screen! */ - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - SDL_Flip(screen); - } else { - SDL_UpdateRects(screen, nupdates, sprite_rects); - } - sprites_visible = 1; -} - -/* This is a way of telling whether or not to use hardware surfaces */ -Uint32 -FastestFlags(Uint32 flags, int width, int height, int bpp) -{ - const SDL_VideoInfo *info; - - /* Hardware acceleration is only used in fullscreen mode */ - flags |= SDL_FULLSCREEN; - - /* Check for various video capabilities */ - info = SDL_GetVideoInfo(); - if (info->blit_hw_CC && info->blit_fill) { - /* We use accelerated colorkeying and color filling */ - flags |= SDL_HWSURFACE; - } - /* If we have enough video memory, and will use accelerated - blits directly to it, then use page flipping. - */ - if ((flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - /* Direct hardware blitting without double-buffering - causes really bad flickering. - */ - if (info->video_mem * 1024 > (height * width * bpp / 8)) { - flags |= SDL_DOUBLEBUF; - } else { - flags &= ~SDL_HWSURFACE; - } - } - - /* Return the flags */ - return (flags); -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - Uint8 *mem; - int width, height; - Uint8 video_bpp; - Uint32 videoflags; - Uint32 background; - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - consoleDemoInit(); - puts("Hello world! Initializing FAT..."); - fatInitDefault(); - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - puts("* initialized SDL"); - - numsprites = NUM_SPRITES; - videoflags = SDL_SWSURFACE /*| SDL_ANYFORMAT */ ; - width = 256; - height = 192; - video_bpp = 15; - debug_flip = 0; - while (argc > 1) { - --argc; - if (strcmp(argv[argc - 1], "-width") == 0) { - width = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc - 1], "-height") == 0) { - height = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc - 1], "-bpp") == 0) { - video_bpp = atoi(argv[argc]); - videoflags &= ~SDL_ANYFORMAT; - --argc; - } else if (strcmp(argv[argc], "-fast") == 0) { - videoflags = FastestFlags(videoflags, width, height, video_bpp); - } else if (strcmp(argv[argc], "-hw") == 0) { - videoflags ^= SDL_HWSURFACE; - } else if (strcmp(argv[argc], "-flip") == 0) { - videoflags ^= SDL_DOUBLEBUF; - } else if (strcmp(argv[argc], "-debugflip") == 0) { - debug_flip ^= 1; - } else if (strcmp(argv[argc], "-fullscreen") == 0) { - videoflags ^= SDL_FULLSCREEN; - } else if (isdigit(argv[argc][0])) { - numsprites = atoi(argv[argc]); - } else { - fprintf(stderr, - "Usage: %s [-bpp N] [-hw] [-flip] [-fast] [-fullscreen] [numsprites]\n", - argv[0]); - quit(1); - } - } - - /* Set video mode */ - screen = SDL_SetVideoMode(width, height, video_bpp, videoflags); - if (!screen) { - fprintf(stderr, "Couldn't set %dx%d video mode: %s\n", - width, height, SDL_GetError()); - quit(2); - } - screen->flags &= ~SDL_PREALLOC; - puts("* set video mode"); - - /* Load the sprite */ - if (LoadSprite("icon.bmp") < 0) { - quit(1); - } - puts("* loaded sprite"); - - /* Allocate memory for the sprite info */ - mem = (Uint8 *) malloc(4 * sizeof(SDL_Rect) * numsprites); - if (mem == NULL) { - SDL_FreeSurface(sprite); - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - sprite_rects = (SDL_Rect *) mem; - positions = sprite_rects; - sprite_rects += numsprites; - velocities = sprite_rects; - sprite_rects += numsprites; - sprite_w = sprite->w; - sprite_h = sprite->h; - srand(time(NULL)); - for (i = 0; i < numsprites; ++i) { - positions[i].x = rand() % (screen->w - sprite_w); - positions[i].y = rand() % (screen->h - sprite_h); - positions[i].w = sprite->w; - positions[i].h = sprite->h; - velocities[i].x = 0; - velocities[i].y = 0; - while (!velocities[i].x && !velocities[i].y) { - velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - } - } - background = SDL_MapRGB(screen->format, 0x00, 0x00, 0x00); - - /* Print out information about our surfaces */ - printf("Screen is at %d bits per pixel\n", screen->format->BitsPerPixel); - if ((screen->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - printf("Screen is in video memory\n"); - } else { - printf("Screen is in system memory\n"); - } - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - printf("Screen has double-buffering enabled\n"); - } - if ((sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - printf("Sprite is in video memory\n"); - } else { - printf("Sprite is in system memory\n"); - } - /* Run a sample blit to trigger blit acceleration */ - { - SDL_Rect dst; - dst.x = 0; - dst.y = 0; - dst.w = sprite->w; - dst.h = sprite->h; - SDL_BlitSurface(sprite, NULL, screen, &dst); - SDL_FillRect(screen, &dst, background); - } - if ((sprite->flags & SDL_HWACCEL) == SDL_HWACCEL) { - printf("Sprite blit uses hardware acceleration\n"); - } - if ((sprite->flags & SDL_RLEACCEL) == SDL_RLEACCEL) { - printf("Sprite blit uses RLE acceleration\n"); - } - - /* Loop, blitting sprites and waiting for a keystroke */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - sprites_visible = 0; - puts("hello!"); - while (!done) { - /* Check for events */ - ++frames; - printf("."); - swiWaitForVBlank(); - MoveSprites(screen, background); - } - puts("goodbye!"); - SDL_FreeSurface(sprite); - free(mem); - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - printf("%2.2f frames per second\n", - ((double) frames * 1000) / (now - then)); - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/Makefile b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/Makefile deleted file mode 100755 index 2612f5a7e8..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/Makefile +++ /dev/null @@ -1,132 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -include $(DEVKITARM)/ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# INCLUDES is a list of directories containing extra header files -#--------------------------------------------------------------------------------- -TARGET := $(shell basename $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -mthumb -mthumb-interwork - -# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD -# *insists* it has a FPU or VFP, and it won't take no for an answer! -CFLAGS := -save-temps -g -Wall -O0\ - -mcpu=arm9tdmi -mtune=arm9tdmi \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM9 -D__NDS__ -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-exceptions -fno-rtti - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,$(notdir $*.map) - -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS := -lSDL -lfat -lnds9 - - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(LIBNDS) - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -.PHONY: $(BUILD) clean - -#--------------------------------------------------------------------------------- -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9 $(TARGET).ds.gba - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT).ds.gba : $(OUTPUT).nds -$(OUTPUT).nds : $(OUTPUT).arm9 -$(OUTPUT).arm9 : $(OUTPUT).elf -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/icon.bmp b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/icon.bmp deleted file mode 100644 index cc96356acb..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/icon.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/common.c b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/common.c deleted file mode 100755 index 021ab8b08c..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/common.c +++ /dev/null @@ -1,965 +0,0 @@ - -/* A simple test program framework */ - -#include - -#include "common.h" - -#define VIDEO_USAGE \ -"[--video driver] [--renderer driver] [--info all|video|modes|render|event] [--display %d] [--fullscreen | --windows N] [--title title] [--center | --position X,Y] [--geometry WxH] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab]" - -#define AUDIO_USAGE \ -"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" - -CommonState * -CommonCreateState(char **argv, Uint32 flags) -{ - CommonState *state = SDL_calloc(1, sizeof(*state)); - if (!state) { - SDL_OutOfMemory(); - return NULL; - } - - /* Initialize some defaults */ - state->argv = argv; - state->flags = flags; - state->window_title = argv[0]; - state->window_flags = SDL_WINDOW_SHOWN; - state->window_x = SDL_WINDOWPOS_UNDEFINED; - state->window_y = SDL_WINDOWPOS_UNDEFINED; - state->window_w = 256; - state->window_h = 192; - state->num_windows = 1; - state->audiospec.freq = 22050; - state->audiospec.format = AUDIO_S16; - state->audiospec.channels = 2; - state->audiospec.samples = 2048; - return state; -} - -int -CommonArg(CommonState * state, int index) -{ - char **argv = state->argv; - - if (SDL_strcasecmp(argv[index], "--video") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->videodriver = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--renderer") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->renderdriver = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--info") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "all") == 0) { - state->verbose |= - (VERBOSE_VIDEO | VERBOSE_MODES | VERBOSE_RENDER | - VERBOSE_EVENT); - return 2; - } - if (SDL_strcasecmp(argv[index], "video") == 0) { - state->verbose |= VERBOSE_VIDEO; - return 2; - } - if (SDL_strcasecmp(argv[index], "modes") == 0) { - state->verbose |= VERBOSE_MODES; - return 2; - } - if (SDL_strcasecmp(argv[index], "render") == 0) { - state->verbose |= VERBOSE_RENDER; - return 2; - } - if (SDL_strcasecmp(argv[index], "event") == 0) { - state->verbose |= VERBOSE_EVENT; - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--display") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->display = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) { - state->window_flags |= SDL_WINDOW_FULLSCREEN; - state->num_windows = 1; - return 1; - } - if (SDL_strcasecmp(argv[index], "--windows") == 0) { - ++index; - if (!argv[index] || !SDL_isdigit(*argv[index])) { - return -1; - } - if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) { - state->num_windows = SDL_atoi(argv[index]); - } - return 2; - } - if (SDL_strcasecmp(argv[index], "--title") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->window_title = argv[index]; - return 2; - } - if (SDL_strcasecmp(argv[index], "--center") == 0) { - state->window_x = SDL_WINDOWPOS_CENTERED; - state->window_y = SDL_WINDOWPOS_CENTERED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--position") == 0) { - char *x, *y; - ++index; - if (!argv[index]) { - return -1; - } - x = argv[index]; - y = argv[index]; - while (*y && *y != ',') { - ++y; - } - if (!*y) { - return -1; - } - *y++ = '\0'; - state->window_x = SDL_atoi(x); - state->window_y = SDL_atoi(y); - return 2; - } - if (SDL_strcasecmp(argv[index], "--geometry") == 0) { - char *w, *h; - ++index; - if (!argv[index]) { - return -1; - } - w = argv[index]; - h = argv[index]; - while (*h && *h != 'x') { - ++h; - } - if (!*h) { - return -1; - } - *h++ = '\0'; - state->window_w = SDL_atoi(w); - state->window_h = SDL_atoi(h); - return 2; - } - if (SDL_strcasecmp(argv[index], "--depth") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->depth = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--refresh") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->refresh_rate = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--vsync") == 0) { - state->render_flags |= SDL_RENDERER_PRESENTVSYNC; - return 1; - } - if (SDL_strcasecmp(argv[index], "--noframe") == 0) { - state->window_flags |= SDL_WINDOW_BORDERLESS; - return 1; - } - if (SDL_strcasecmp(argv[index], "--resize") == 0) { - state->window_flags |= SDL_WINDOW_RESIZABLE; - return 1; - } - if (SDL_strcasecmp(argv[index], "--minimize") == 0) { - state->window_flags |= SDL_WINDOW_MINIMIZED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--maximize") == 0) { - state->window_flags |= SDL_WINDOW_MAXIMIZED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--grab") == 0) { - state->window_flags |= SDL_WINDOW_INPUT_GRABBED; - return 1; - } - if (SDL_strcasecmp(argv[index], "--rate") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.freq = SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--format") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - if (SDL_strcasecmp(argv[index], "U8") == 0) { - state->audiospec.format = AUDIO_U8; - return 2; - } - if (SDL_strcasecmp(argv[index], "S8") == 0) { - state->audiospec.format = AUDIO_S8; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16") == 0) { - state->audiospec.format = AUDIO_U16; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16LE") == 0) { - state->audiospec.format = AUDIO_U16LSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "U16BE") == 0) { - state->audiospec.format = AUDIO_U16MSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16") == 0) { - state->audiospec.format = AUDIO_S16; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16LE") == 0) { - state->audiospec.format = AUDIO_S16LSB; - return 2; - } - if (SDL_strcasecmp(argv[index], "S16BE") == 0) { - state->audiospec.format = AUDIO_S16MSB; - return 2; - } - return -1; - } - if (SDL_strcasecmp(argv[index], "--channels") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.channels = (Uint8) SDL_atoi(argv[index]); - return 2; - } - if (SDL_strcasecmp(argv[index], "--samples") == 0) { - ++index; - if (!argv[index]) { - return -1; - } - state->audiospec.samples = (Uint16) SDL_atoi(argv[index]); - return 2; - } - if ((SDL_strcasecmp(argv[index], "-h") == 0) - || (SDL_strcasecmp(argv[index], "--help") == 0)) { - /* Print the usage message */ - return -1; - } - return 0; -} - -const char * -CommonUsage(CommonState * state) -{ - switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) { - case SDL_INIT_VIDEO: - return VIDEO_USAGE; - case SDL_INIT_AUDIO: - return AUDIO_USAGE; - case (SDL_INIT_VIDEO | SDL_INIT_AUDIO): - return VIDEO_USAGE " " AUDIO_USAGE; - default: - return ""; - } -} - -static void -PrintRendererFlag(Uint32 flag) -{ - switch (flag) { - case SDL_RENDERER_SINGLEBUFFER: - fprintf(stderr, "SingleBuffer"); - break; - case SDL_RENDERER_PRESENTCOPY: - fprintf(stderr, "PresentCopy"); - break; - case SDL_RENDERER_PRESENTFLIP2: - fprintf(stderr, "PresentFlip2"); - break; - case SDL_RENDERER_PRESENTFLIP3: - fprintf(stderr, "PresentFlip3"); - break; - case SDL_RENDERER_PRESENTDISCARD: - fprintf(stderr, "PresentDiscard"); - break; - case SDL_RENDERER_PRESENTVSYNC: - fprintf(stderr, "PresentVSync"); - break; - case SDL_RENDERER_ACCELERATED: - fprintf(stderr, "Accelerated"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintBlendMode(Uint32 flag) -{ - switch (flag) { - case SDL_BLENDMODE_NONE: - fprintf(stderr, "None"); - break; - case SDL_BLENDMODE_MASK: - fprintf(stderr, "Mask"); - break; - case SDL_BLENDMODE_BLEND: - fprintf(stderr, "Blend"); - break; - case SDL_BLENDMODE_ADD: - fprintf(stderr, "Add"); - break; - case SDL_BLENDMODE_MOD: - fprintf(stderr, "Mod"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintScaleMode(Uint32 flag) -{ - switch (flag) { - case SDL_TEXTURESCALEMODE_NONE: - fprintf(stderr, "None"); - break; - case SDL_TEXTURESCALEMODE_FAST: - fprintf(stderr, "Fast"); - break; - case SDL_TEXTURESCALEMODE_SLOW: - fprintf(stderr, "Slow"); - break; - case SDL_TEXTURESCALEMODE_BEST: - fprintf(stderr, "Best"); - break; - default: - fprintf(stderr, "0x%8.8x", flag); - break; - } -} - -static void -PrintPixelFormat(Uint32 format) -{ - switch (format) { - case SDL_PIXELFORMAT_UNKNOWN: - fprintf(stderr, "Unknwon"); - break; - case SDL_PIXELFORMAT_INDEX1LSB: - fprintf(stderr, "Index1LSB"); - break; - case SDL_PIXELFORMAT_INDEX1MSB: - fprintf(stderr, "Index1MSB"); - break; - case SDL_PIXELFORMAT_INDEX4LSB: - fprintf(stderr, "Index4LSB"); - break; - case SDL_PIXELFORMAT_INDEX4MSB: - fprintf(stderr, "Index4MSB"); - break; - case SDL_PIXELFORMAT_INDEX8: - fprintf(stderr, "Index8"); - break; - case SDL_PIXELFORMAT_RGB332: - fprintf(stderr, "RGB332"); - break; - case SDL_PIXELFORMAT_RGB444: - fprintf(stderr, "RGB444"); - break; - case SDL_PIXELFORMAT_RGB555: - fprintf(stderr, "RGB555"); - break; - case SDL_PIXELFORMAT_ARGB4444: - fprintf(stderr, "ARGB4444"); - break; - case SDL_PIXELFORMAT_ARGB1555: - fprintf(stderr, "ARGB1555"); - break; - case SDL_PIXELFORMAT_RGB565: - fprintf(stderr, "RGB565"); - break; - case SDL_PIXELFORMAT_RGB24: - fprintf(stderr, "RGB24"); - break; - case SDL_PIXELFORMAT_BGR24: - fprintf(stderr, "BGR24"); - break; - case SDL_PIXELFORMAT_RGB888: - fprintf(stderr, "RGB888"); - break; - case SDL_PIXELFORMAT_BGR888: - fprintf(stderr, "BGR888"); - break; - case SDL_PIXELFORMAT_ARGB8888: - fprintf(stderr, "ARGB8888"); - break; - case SDL_PIXELFORMAT_RGBA8888: - fprintf(stderr, "RGBA8888"); - break; - case SDL_PIXELFORMAT_ABGR8888: - fprintf(stderr, "ABGR8888"); - break; - case SDL_PIXELFORMAT_BGRA8888: - fprintf(stderr, "BGRA8888"); - break; - case SDL_PIXELFORMAT_ARGB2101010: - fprintf(stderr, "ARGB2101010"); - break; - case SDL_PIXELFORMAT_YV12: - fprintf(stderr, "YV12"); - break; - case SDL_PIXELFORMAT_IYUV: - fprintf(stderr, "IYUV"); - break; - case SDL_PIXELFORMAT_YUY2: - fprintf(stderr, "YUY2"); - break; - case SDL_PIXELFORMAT_UYVY: - fprintf(stderr, "UYVY"); - break; - case SDL_PIXELFORMAT_YVYU: - fprintf(stderr, "YVYU"); - break; - case SDL_PIXELFORMAT_ABGR1555: - fprintf(stderr, "ABGR1555"); - break; - case SDL_PIXELFORMAT_BGR555: - fprintf(stderr, "BGR555"); - break; - default: - fprintf(stderr, "0x%8.8x", format); - break; - } -} - -static void -PrintRenderer(SDL_RendererInfo * info) -{ - int i, count; - - fprintf(stderr, " Renderer %s:\n", info->name); - - fprintf(stderr, " Flags: 0x%8.8X", info->flags); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->flags) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->flags & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintRendererFlag(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Blend: 0x%8.8X", info->blend_modes); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->blend_modes) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->blend_modes & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintBlendMode(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Scale: 0x%8.8X", info->scale_modes); - fprintf(stderr, " ("); - count = 0; - for (i = 0; i < sizeof(info->scale_modes) * 8; ++i) { - Uint32 flag = (1 << i); - if (info->scale_modes & flag) { - if (count > 0) { - fprintf(stderr, " | "); - } - PrintScaleMode(flag); - ++count; - } - } - fprintf(stderr, ")\n"); - - fprintf(stderr, " Texture formats (%d): ", info->num_texture_formats); - for (i = 0; i < (int) info->num_texture_formats; ++i) { - if (i > 0) { - fprintf(stderr, ", "); - } - PrintPixelFormat(info->texture_formats[i]); - } - fprintf(stderr, "\n"); - - if (info->max_texture_width || info->max_texture_height) { - fprintf(stderr, " Max Texture Size: %dx%d\n", - info->max_texture_width, info->max_texture_height); - } -} - -SDL_bool -CommonInit(CommonState * state) -{ - int i, j, m, n; - SDL_DisplayMode fullscreen_mode; - - if (state->flags & SDL_INIT_VIDEO) { - if (state->verbose & VERBOSE_VIDEO) { - n = SDL_GetNumVideoDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in video drivers\n"); - } else { - fprintf(stderr, "Built-in video drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - fprintf(stderr, ","); - } - fprintf(stderr, " %s", SDL_GetVideoDriver(i)); - } - fprintf(stderr, "\n"); - } - } - if (SDL_VideoInit(state->videodriver, 0) < 0) { - fprintf(stderr, "Couldn't initialize video driver: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_VIDEO) { - fprintf(stderr, "Video driver: %s\n", - SDL_GetCurrentVideoDriver()); - } - - if (state->verbose & VERBOSE_MODES) { - SDL_DisplayMode mode; - int bpp; - Uint32 Rmask, Gmask, Bmask, Amask; - - n = SDL_GetNumVideoDisplays(); - fprintf(stderr, "Number of displays: %d\n", n); - for (i = 0; i < n; ++i) { - fprintf(stderr, "Display %d:\n", i); - SDL_SelectVideoDisplay(i); - - SDL_GetDesktopDisplayMode(&mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask, - &Bmask, &Amask); - fprintf(stderr, - " Current mode: %dx%d@%dHz, %d bits-per-pixel\n", - mode.w, mode.h, mode.refresh_rate, bpp); - if (Rmask || Gmask || Bmask) { - fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask); - fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask); - fprintf(stderr, " Blue Mask = 0x%.8x\n", Bmask); - if (Amask) - fprintf(stderr, " Alpha Mask = 0x%.8x\n", Amask); - } - - /* Print available fullscreen video modes */ - m = SDL_GetNumDisplayModes(); - if (m == 0) { - fprintf(stderr, "No available fullscreen video modes\n"); - } else { - fprintf(stderr, " Fullscreen video modes:\n"); - for (j = 0; j < m; ++j) { - SDL_GetDisplayMode(j, &mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, - &Gmask, &Bmask, &Amask); - fprintf(stderr, - " Mode %d: %dx%d@%dHz, %d bits-per-pixel\n", - j, mode.w, mode.h, mode.refresh_rate, bpp); - if (Rmask || Gmask || Bmask) { - fprintf(stderr, " Red Mask = 0x%.8x\n", - Rmask); - fprintf(stderr, " Green Mask = 0x%.8x\n", - Gmask); - fprintf(stderr, " Blue Mask = 0x%.8x\n", - Bmask); - if (Amask) - fprintf(stderr, - " Alpha Mask = 0x%.8x\n", - Amask); - } - } - } - } - } - - SDL_SelectVideoDisplay(state->display); - if (state->verbose & VERBOSE_RENDER) { - SDL_RendererInfo info; - - n = SDL_GetNumRenderDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in render drivers\n"); - } else { - fprintf(stderr, "Built-in render drivers:\n"); - for (i = 0; i < n; ++i) { - SDL_GetRenderDriverInfo(i, &info); - PrintRenderer(&info); - } - } - } - - switch (state->depth) { - case 8: - fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8; - break; - case 15: - fullscreen_mode.format = SDL_PIXELFORMAT_BGR555; - break; - case 16: - default: - fullscreen_mode.format = SDL_PIXELFORMAT_ABGR1555; - break; -/* NDS default: - fullscreen_mode.format = SDL_PIXELFORMAT_RGB888; - break;*/ - } - fullscreen_mode.w = state->window_w; - fullscreen_mode.h = state->window_h; - fullscreen_mode.refresh_rate = state->refresh_rate; - SDL_SetFullscreenDisplayMode(&fullscreen_mode); - - state->windows = - (SDL_WindowID *) SDL_malloc(state->num_windows * - sizeof(*state->windows)); - if (!state->windows) { - fprintf(stderr, "Out of memory!\n"); - return SDL_FALSE; - } - for (i = 0; i < state->num_windows; ++i) { - char title[1024]; - - if (state->num_windows > 1) { - SDL_snprintf(title, SDL_arraysize(title), "%s %d", - state->window_title, i + 1); - } else { - SDL_strlcpy(title, state->window_title, SDL_arraysize(title)); - } - state->windows[i] = - SDL_CreateWindow(title, state->window_x, state->window_y, - state->window_w, state->window_h, - state->window_flags); - if (!state->windows[i]) { - fprintf(stderr, "Couldn't create window: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - - if (!state->skip_renderer - && (state->renderdriver - || !(state->window_flags & SDL_WINDOW_OPENGL))) { - m = -1; - if (state->renderdriver) { - SDL_RendererInfo info; - n = SDL_GetNumRenderDrivers(); - for (j = 0; j < n; ++j) { - SDL_GetRenderDriverInfo(j, &info); - if (SDL_strcasecmp(info.name, state->renderdriver) == - 0) { - m = j; - break; - } - } - if (m == n) { - fprintf(stderr, - "Couldn't find render driver named %s", - state->renderdriver); - return SDL_FALSE; - } - } - if (SDL_CreateRenderer - (state->windows[i], m, state->render_flags) < 0) { - fprintf(stderr, "Couldn't create renderer: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_RENDER) { - SDL_RendererInfo info; - - fprintf(stderr, "Current renderer:\n"); - SDL_GetRendererInfo(&info); - PrintRenderer(&info); - } - } - } - SDL_SelectRenderer(state->windows[0]); - } - - if (state->flags & SDL_INIT_AUDIO) { - if (state->verbose & VERBOSE_AUDIO) { - n = SDL_GetNumAudioDrivers(); - if (n == 0) { - fprintf(stderr, "No built-in audio drivers\n"); - } else { - fprintf(stderr, "Built-in audio drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - fprintf(stderr, ","); - } - fprintf(stderr, " %s", SDL_GetAudioDriver(i)); - } - fprintf(stderr, "\n"); - } - } - if (SDL_AudioInit(state->audiodriver) < 0) { - fprintf(stderr, "Couldn't initialize audio driver: %s\n", - SDL_GetError()); - return SDL_FALSE; - } - if (state->verbose & VERBOSE_VIDEO) { - fprintf(stderr, "Audio driver: %s\n", - SDL_GetCurrentAudioDriver()); - } - - if (SDL_OpenAudio(&state->audiospec, NULL) < 0) { - fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); - return SDL_FALSE; - } - } - - return SDL_TRUE; -} - -static void -PrintEvent(SDL_Event * event) -{ - fprintf(stderr, "SDL EVENT: "); - switch (event->type) { - case SDL_WINDOWEVENT: - switch (event->window.event) { - case SDL_WINDOWEVENT_SHOWN: - fprintf(stderr, "Window %d shown", event->window.windowID); - break; - case SDL_WINDOWEVENT_HIDDEN: - fprintf(stderr, "Window %d hidden", event->window.windowID); - break; - case SDL_WINDOWEVENT_EXPOSED: - fprintf(stderr, "Window %d exposed", event->window.windowID); - break; - case SDL_WINDOWEVENT_MOVED: - fprintf(stderr, "Window %d moved to %d,%d", - event->window.windowID, event->window.data1, - event->window.data2); - break; - case SDL_WINDOWEVENT_RESIZED: - fprintf(stderr, "Window %d resized to %dx%d", - event->window.windowID, event->window.data1, - event->window.data2); - break; - case SDL_WINDOWEVENT_MINIMIZED: - fprintf(stderr, "Window %d minimized", event->window.windowID); - break; - case SDL_WINDOWEVENT_MAXIMIZED: - fprintf(stderr, "Window %d maximized", event->window.windowID); - break; - case SDL_WINDOWEVENT_RESTORED: - fprintf(stderr, "Window %d restored", event->window.windowID); - break; - case SDL_WINDOWEVENT_ENTER: - fprintf(stderr, "Mouse entered window %d", - event->window.windowID); - break; - case SDL_WINDOWEVENT_LEAVE: - fprintf(stderr, "Mouse left window %d", event->window.windowID); - break; - case SDL_WINDOWEVENT_FOCUS_GAINED: - fprintf(stderr, "Window %d gained keyboard focus", - event->window.windowID); - break; - case SDL_WINDOWEVENT_FOCUS_LOST: - fprintf(stderr, "Window %d lost keyboard focus", - event->window.windowID); - break; - case SDL_WINDOWEVENT_CLOSE: - fprintf(stderr, "Window %d closed", event->window.windowID); - break; - default: - fprintf(stderr, "Window %d got unknown event %d", - event->window.windowID, event->window.event); - break; - } - break; - case SDL_KEYDOWN: - fprintf(stderr, - "Keyboard %d: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", - event->key.which, event->key.windowID, - event->key.keysym.scancode, - SDL_GetScancodeName(event->key.keysym.scancode), - event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_KEYUP: - fprintf(stderr, - "Keyboard %d: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", - event->key.which, event->key.windowID, - event->key.keysym.scancode, - SDL_GetScancodeName(event->key.keysym.scancode), - event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_TEXTINPUT: - fprintf(stderr, "Keyboard %d: text input \"%s\" in window %d", - event->text.which, event->text.text, event->text.windowID); - break; - case SDL_MOUSEMOTION: - fprintf(stderr, "Mouse %d: moved to %d,%d (%d,%d) in window %d", - event->motion.which, event->motion.x, event->motion.y, - event->motion.xrel, event->motion.yrel, - event->motion.windowID); - break; - case SDL_MOUSEBUTTONDOWN: - fprintf(stderr, "Mouse %d: button %d pressed at %d,%d in window %d", - event->button.which, event->button.button, event->button.x, - event->button.y, event->button.windowID); - break; - case SDL_MOUSEBUTTONUP: - fprintf(stderr, "Mouse %d: button %d released at %d,%d in window %d", - event->button.which, event->button.button, event->button.x, - event->button.y, event->button.windowID); - break; - case SDL_MOUSEWHEEL: - fprintf(stderr, - "Mouse %d: wheel scrolled %d in x and %d in y in window %d", - event->wheel.which, event->wheel.x, event->wheel.y, - event->wheel.windowID); - break; - case SDL_JOYBALLMOTION: - fprintf(stderr, "Joystick %d: ball %d moved by %d,%d", - event->jball.which, event->jball.ball, event->jball.xrel, - event->jball.yrel); - break; - case SDL_JOYHATMOTION: - fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which, - event->jhat.hat); - switch (event->jhat.value) { - case SDL_HAT_CENTERED: - fprintf(stderr, "CENTER"); - break; - case SDL_HAT_UP: - fprintf(stderr, "UP"); - break; - case SDL_HAT_RIGHTUP: - fprintf(stderr, "RIGHTUP"); - break; - case SDL_HAT_RIGHT: - fprintf(stderr, "RIGHT"); - break; - case SDL_HAT_RIGHTDOWN: - fprintf(stderr, "RIGHTDOWN"); - break; - case SDL_HAT_DOWN: - fprintf(stderr, "DOWN"); - break; - case SDL_HAT_LEFTDOWN: - fprintf(stderr, "LEFTDOWN"); - break; - case SDL_HAT_LEFT: - fprintf(stderr, "LEFT"); - break; - case SDL_HAT_LEFTUP: - fprintf(stderr, "LEFTUP"); - break; - default: - fprintf(stderr, "UNKNOWN"); - break; - } - break; - case SDL_JOYBUTTONDOWN: - fprintf(stderr, "Joystick %d: button %d pressed", - event->jbutton.which, event->jbutton.button); - break; - case SDL_JOYBUTTONUP: - fprintf(stderr, "Joystick %d: button %d released", - event->jbutton.which, event->jbutton.button); - break; - case SDL_QUIT: - fprintf(stderr, "Quit requested"); - break; - case SDL_USEREVENT: - fprintf(stderr, "User event %d", event->user.code); - break; - default: - fprintf(stderr, "Unknown event %d", event->type); - break; - } - fprintf(stderr, "\n"); -} - -void -CommonEvent(CommonState * state, SDL_Event * event, int *done) -{ - if (state->verbose & VERBOSE_EVENT) { - PrintEvent(event); - } - - switch (event->type) { - case SDL_WINDOWEVENT: - switch (event->window.event) { - case SDL_WINDOWEVENT_CLOSE: - *done = 1; - break; - } - break; - case SDL_KEYDOWN: - switch (event->key.keysym.sym) { - /* Add hotkeys here */ - case SDLK_g: - if (event->key.keysym.mod & KMOD_CTRL) { - /* Ctrl-G toggle grab */ - } - break; - case SDLK_ESCAPE: - *done = 1; - break; - default: - break; - } - break; - case SDL_QUIT: - *done = 1; - break; - } -} - -void -CommonQuit(CommonState * state) -{ - if (state->flags & SDL_INIT_VIDEO) { - SDL_VideoQuit(); - } - if (state->flags & SDL_INIT_AUDIO) { - SDL_AudioQuit(); - } - if (state->windows) { - SDL_free(state->windows); - } - SDL_free(state); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/common.h b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/common.h deleted file mode 100755 index 0e03931988..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/common.h +++ /dev/null @@ -1,48 +0,0 @@ - -/* A simple test program framework */ - -#include - -#define VERBOSE_VIDEO 0x00000001 -#define VERBOSE_MODES 0x00000002 -#define VERBOSE_RENDER 0x00000004 -#define VERBOSE_EVENT 0x00000008 -#define VERBOSE_AUDIO 0x00000010 - -typedef struct -{ - /* SDL init flags */ - char **argv; - Uint32 flags; - Uint32 verbose; - - /* Video info */ - const char *videodriver; - int display; - const char *window_title; - Uint32 window_flags; - int window_x; - int window_y; - int window_w; - int window_h; - int depth; - int refresh_rate; - int num_windows; - SDL_WindowID *windows; - - /* Renderer info */ - const char *renderdriver; - Uint32 render_flags; - SDL_bool skip_renderer; - - /* Audio info */ - const char *audiodriver; - SDL_AudioSpec audiospec; -} CommonState; - -extern CommonState *CommonCreateState(char **argv, Uint32 flags); -extern int CommonArg(CommonState * state, int index); -extern const char *CommonUsage(CommonState * state); -extern SDL_bool CommonInit(CommonState * state); -extern void CommonEvent(CommonState * state, SDL_Event * event, int *done); -extern void CommonQuit(CommonState * state); diff --git a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/testsprite2.c b/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/testsprite2.c deleted file mode 100755 index 15dfa0ed47..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/nds-test-progs/sprite2/source/testsprite2.c +++ /dev/null @@ -1,270 +0,0 @@ -/* Simple program: Move N sprites around on the screen as fast as possible */ - -#include -#include -#include -#include -#include -#include "common.h" - -#define NUM_SPRITES 10 -#define MAX_SPEED 1 - -static CommonState *state; -static int num_sprites; -static SDL_TextureID *sprites; -static SDL_bool cycle_color; -static SDL_bool cycle_alpha; -static int cycle_direction = 1; -static int current_alpha = 0; -static int current_color = 0; -static SDL_Rect *positions; -static SDL_Rect *velocities; -static int sprite_w, sprite_h; -static SDL_BlendMode blendMode = SDL_BLENDMODE_MASK; -static SDL_TextureScaleMode scaleMode = SDL_TEXTURESCALEMODE_NONE; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - if (sprites) { - SDL_free(sprites); - } - if (positions) { - SDL_free(positions); - } - if (velocities) { - SDL_free(velocities); - } - CommonQuit(state); - exit(rc); -} - -int -LoadSprite(char *file) -{ - int i; - SDL_Surface *temp; - - /* Load the sprite image */ - temp = SDL_LoadBMP(file); - if (temp == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return (-1); - } - sprite_w = temp->w; - sprite_h = temp->h; - - /* Set transparent pixel as the pixel at (0,0) */ - if (temp->format->palette) { - SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint8 *) temp->pixels); - } - - /* Create textures from the image */ - for (i = 0; i < state->num_windows; ++i) { - SDL_SelectRenderer(state->windows[i]); - sprites[i] = SDL_CreateTextureFromSurface(0, temp); - if (!sprites[i]) { - fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); - SDL_FreeSurface(temp); - return (-1); - } - SDL_SetTextureBlendMode(sprites[i], blendMode); - SDL_SetTextureScaleMode(sprites[i], scaleMode); - } - SDL_FreeSurface(temp); - - /* We're ready to roll. :) */ - return (0); -} - -int -LoadSprite2(const u8 * ptr, int size) -{ - int i; - SDL_Rect r = { 0, 0, 32, 32 }; - for (i = 0; i < state->num_windows; ++i) { - SDL_SelectRenderer(state->windows[i]); - sprites[i] = SDL_CreateTexture(SDL_PIXELFORMAT_ABGR1555, - SDL_TEXTUREACCESS_STATIC, r.w, r.h); - if (!sprites[i]) { - fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); - return -1; - } - SDL_UpdateTexture(sprites[i], &r, ptr, r.w * 2); - SDL_SetTextureBlendMode(sprites[i], blendMode); - SDL_SetTextureScaleMode(sprites[i], scaleMode); - } - return 0; -} - -void -MoveSprites(SDL_WindowID window, SDL_TextureID sprite) -{ - int i, n; - int window_w, window_h; - SDL_Rect area, *position, *velocity; - - SDL_SelectRenderer(window); - - /* Query the sizes */ - SDL_GetWindowSize(window, &window_w, &window_h); - - /* Cycle the color and alpha, if desired */ - if (cycle_color) { - current_color += cycle_direction; - if (current_color < 0) { - current_color = 0; - cycle_direction = -cycle_direction; - } - if (current_color > 255) { - current_color = 255; - cycle_direction = -cycle_direction; - } - SDL_SetTextureColorMod(sprite, 255, (Uint8) current_color, - (Uint8) current_color); - } - if (cycle_alpha) { - current_alpha += cycle_direction; - if (current_alpha < 0) { - current_alpha = 0; - cycle_direction = -cycle_direction; - } - if (current_alpha > 255) { - current_alpha = 255; - cycle_direction = -cycle_direction; - } - SDL_SetTextureAlphaMod(sprite, (Uint8) current_alpha); - } - - /* Move the sprite, bounce at the wall, and draw */ - n = 0; - SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL); - for (i = 0; i < num_sprites; ++i) { - position = &positions[i]; - velocity = &velocities[i]; - position->x += velocity->x; - if ((position->x < 0) || (position->x >= (window_w - sprite_w))) { - velocity->x = -velocity->x; - position->x += velocity->x; - } - position->y += velocity->y; - if ((position->y < 0) || (position->y >= (window_h - sprite_w))) { - velocity->y = -velocity->y; - position->y += velocity->y; - } - - /* Blit the sprite onto the screen */ - SDL_RenderCopy(sprite, NULL, position); - } - - /* Update the screen! */ - SDL_RenderPresent(); -} - -int -main(int argc, char *argv[]) -{ - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - consoleDemoInit(); - puts("Hello world! Initializing FAT..."); - fatInitDefault(); - - /* Initialize parameters */ - num_sprites = NUM_SPRITES; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - - if (!CommonInit(state)) { - quit(2); - } - - /* Create the windows, initialize the renderers, and load the textures */ - sprites = - (SDL_TextureID *) SDL_malloc(state->num_windows * sizeof(*sprites)); - if (!sprites) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - for (i = 0; i < state->num_windows; ++i) { - SDL_SelectRenderer(state->windows[i]); - SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL); - } - if (LoadSprite("icon.bmp") < 0) { - printf("\nerrored.\n"); - while (1); - quit(2); - } - - /* Allocate memory for the sprite info */ - positions = (SDL_Rect *) SDL_malloc(num_sprites * sizeof(SDL_Rect)); - velocities = (SDL_Rect *) SDL_malloc(num_sprites * sizeof(SDL_Rect)); - if (!positions || !velocities) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - srand(time(NULL)); - if (scaleMode != SDL_TEXTURESCALEMODE_NONE) { - sprite_w += sprite_w / 2; - sprite_h += sprite_h / 2; - } - for (i = 0; i < num_sprites; ++i) { - positions[i].x = rand() % (state->window_w - sprite_w); - positions[i].y = rand() % (state->window_h - sprite_h); - positions[i].w = sprite_w; - positions[i].h = sprite_h; - velocities[i].x = 0; - velocities[i].y = 0; - while (!velocities[i].x && !velocities[i].y) { - velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - } - } - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - switch (event.type) { - case SDL_WINDOWEVENT: - switch (event.window.event) { - case SDL_WINDOWEVENT_EXPOSED: - SDL_SelectRenderer(event.window.windowID); - SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL); - break; - } - break; - default: - break; - } - } - for (i = 0; i < state->num_windows; ++i) { - MoveSprites(state->windows[i], sprites[i]); - } - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - printf("%2.2f frames per second\n", - ((double) frames * 1000) / (now - then)); - } - - quit(0); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/picture.xbm b/3rdparty/SDL-1.3.0-5387/test/picture.xbm deleted file mode 100644 index c873a60a18..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/picture.xbm +++ /dev/null @@ -1,14 +0,0 @@ -#define picture_width 32 -#define picture_height 32 -static char picture_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x01, 0x18, - 0x64, 0x6f, 0xf6, 0x26, 0x0a, 0x00, 0x00, 0x50, 0xf2, 0xff, 0xff, 0x4f, - 0x14, 0x04, 0x00, 0x28, 0x14, 0x0e, 0x00, 0x28, 0x10, 0x32, 0x00, 0x08, - 0x94, 0x03, 0x00, 0x08, 0xf4, 0x04, 0x00, 0x08, 0xb0, 0x08, 0x00, 0x08, - 0x34, 0x01, 0x00, 0x28, 0x34, 0x01, 0x00, 0x28, 0x12, 0x00, 0x40, 0x48, - 0x12, 0x20, 0xa6, 0x48, 0x14, 0x50, 0x11, 0x29, 0x14, 0x50, 0x48, 0x2a, - 0x10, 0x27, 0xac, 0x0e, 0xd4, 0x71, 0xe8, 0x0a, 0x74, 0x20, 0xa8, 0x0a, - 0x14, 0x20, 0x00, 0x08, 0x10, 0x50, 0x00, 0x08, 0x14, 0x00, 0x00, 0x28, - 0x14, 0x00, 0x00, 0x28, 0xf2, 0xff, 0xff, 0x4f, 0x0a, 0x00, 0x00, 0x50, - 0x64, 0x6f, 0xf6, 0x26, 0x18, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/3rdparty/SDL-1.3.0-5387/test/sample.bmp b/3rdparty/SDL-1.3.0-5387/test/sample.bmp deleted file mode 100644 index aca8bbca6e..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/sample.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/sample.wav b/3rdparty/SDL-1.3.0-5387/test/sample.wav deleted file mode 100644 index 002f815815..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/sample.wav and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape24.bmp deleted file mode 100644 index 290e93d9c7..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape32alpha.bmp deleted file mode 100644 index a1b8d95619..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape8.bmp deleted file mode 100644 index 5adca298f7..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p01_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape24.bmp deleted file mode 100644 index 61e411bb77..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape32alpha.bmp deleted file mode 100644 index 6497a7b0d8..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape8.bmp deleted file mode 100644 index 8ad7c9ac8b..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p02_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p03_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p03_shape24.bmp deleted file mode 100644 index e2378679fa..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p03_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p03_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p03_shape8.bmp deleted file mode 100644 index 28f8800f63..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p03_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape1.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape1.bmp deleted file mode 100644 index ad288ace53..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape1.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape24.bmp deleted file mode 100644 index 8cf6129863..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape32alpha.bmp deleted file mode 100644 index 771ebc0533..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape8.bmp deleted file mode 100644 index 29d5031683..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p04_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p05_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p05_shape8.bmp deleted file mode 100644 index e2d62a53d4..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p05_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape1alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape1alpha.bmp deleted file mode 100644 index 1ca14f11db..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape1alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape24.bmp deleted file mode 100644 index 4cc257688f..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape32alpha.bmp deleted file mode 100644 index 04afd793cd..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape8.bmp deleted file mode 100644 index 017c1ed776..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p06_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape24.bmp deleted file mode 100644 index fa8012cae8..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape32alpha.bmp deleted file mode 100644 index d2376666de..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape8.bmp deleted file mode 100644 index 9aeaa0810f..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p07_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape24.bmp deleted file mode 100644 index 332f863499..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape32alpha.bmp deleted file mode 100644 index 4d1d25e9ff..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape8.bmp deleted file mode 100644 index 920f9070ee..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p08_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape24.bmp deleted file mode 100644 index e5a7c0043d..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape32alpha.bmp deleted file mode 100644 index 250d267d14..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape8.bmp deleted file mode 100644 index 4d1cd014ec..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p09_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape1.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape1.bmp deleted file mode 100644 index 42b5a7f347..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape1.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape24.bmp deleted file mode 100644 index bc1faf4e7b..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape32alpha.bmp deleted file mode 100644 index 4330e44548..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape8.bmp deleted file mode 100644 index 64fb5c3720..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p10_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape24.bmp deleted file mode 100644 index 6535307862..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape32alpha.bmp deleted file mode 100644 index 406d20a815..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape8.bmp deleted file mode 100644 index 36f1ba2c6b..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p11_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p12_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p12_shape24.bmp deleted file mode 100644 index 582cf994e2..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p12_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p12_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p12_shape8.bmp deleted file mode 100644 index 59377200bb..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p12_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape24.bmp deleted file mode 100644 index 70215db590..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape32alpha.bmp deleted file mode 100644 index b656da8165..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape8.bmp deleted file mode 100644 index 822b896e1c..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p13_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p14_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p14_shape24.bmp deleted file mode 100644 index ae83f5a8ce..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p14_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p14_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p14_shape8.bmp deleted file mode 100644 index d6f981f58a..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p14_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape24.bmp deleted file mode 100644 index 33b99588e4..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape32alpha.bmp deleted file mode 100644 index 6954a5d91c..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape8.bmp deleted file mode 100644 index ada5aefb83..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p15_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape1.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape1.bmp deleted file mode 100644 index 5b3f5509ba..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape1.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape24.bmp deleted file mode 100644 index 1f2a1d230c..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape8.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape8.bmp deleted file mode 100644 index 0b4d4221c5..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/p16_shape8.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/trollface_24.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/trollface_24.bmp deleted file mode 100644 index e18c2c2ad1..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/trollface_24.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/shapes/trollface_32alpha.bmp b/3rdparty/SDL-1.3.0-5387/test/shapes/trollface_32alpha.bmp deleted file mode 100644 index ee3ecf9be4..0000000000 Binary files a/3rdparty/SDL-1.3.0-5387/test/shapes/trollface_32alpha.bmp and /dev/null differ diff --git a/3rdparty/SDL-1.3.0-5387/test/testalpha.c b/3rdparty/SDL-1.3.0-5387/test/testalpha.c deleted file mode 100644 index b869435f3b..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testalpha.c +++ /dev/null @@ -1,541 +0,0 @@ - -/* Simple program: Fill a colormap with gray and stripe it down the screen, - Then move an alpha valued sprite around the screen. - */ - -#include -#include -#include -#include - -#include "SDL.h" - -#define FRAME_TICKS (1000/30) /* 30 frames/second */ - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -/* Fill the screen with a gradient */ -static void -FillBackground(SDL_Surface * screen) -{ - Uint8 *buffer; - Uint8 gradient; - int i, k; - - /* Set the surface pixels and refresh! */ - if (SDL_LockSurface(screen) < 0) { - fprintf(stderr, "Couldn't lock the display surface: %s\n", - SDL_GetError()); - quit(2); - } - buffer = (Uint8 *) screen->pixels; - switch (screen->format->BytesPerPixel) { - case 1: - case 3: - for (i = 0; i < screen->h; ++i) { - memset(buffer, (i * 255) / screen->h, - screen->w * screen->format->BytesPerPixel); - buffer += screen->pitch; - } - break; - case 2: - for (i = 0; i < screen->h; ++i) { - Uint16 *buffer16; - Uint16 color; - - gradient = ((i * 255) / screen->h); - color = (Uint16) SDL_MapRGB(screen->format, - gradient, gradient, gradient); - buffer16 = (Uint16 *) buffer; - for (k = 0; k < screen->w; k++) { - *buffer16++ = color; - } - buffer += screen->pitch; - } - break; - case 4: - for (i = 0; i < screen->h; ++i) { - Uint32 *buffer32; - Uint32 color; - - gradient = ((i * 255) / screen->h); - color = SDL_MapRGB(screen->format, gradient, gradient, gradient); - buffer32 = (Uint32 *) buffer; - for (k = 0; k < screen->w; k++) { - *buffer32++ = color; - } - buffer += screen->pitch; - } - break; - } - - SDL_UnlockSurface(screen); - SDL_UpdateRect(screen, 0, 0, 0, 0); -} - -/* Create a "light" -- a yellowish surface with variable alpha */ -SDL_Surface * -CreateLight(int radius) -{ - Uint8 trans, alphamask; - int range, addition; - int xdist, ydist; - Uint16 x, y; - Uint16 skip; - Uint32 pixel; - SDL_Surface *light; - -#ifdef LIGHT_16BIT - Uint16 *buf; - - /* Create a 16 (4/4/4/4) bpp square with a full 4-bit alpha channel */ - /* Note: this isn't any faster than a 32 bit alpha surface */ - alphamask = 0x0000000F; - light = SDL_CreateRGBSurface(SDL_SWSURFACE, 2 * radius, 2 * radius, 16, - 0x0000F000, 0x00000F00, 0x000000F0, - alphamask); -#else - Uint32 *buf; - - /* Create a 32 (8/8/8/8) bpp square with a full 8-bit alpha channel */ - alphamask = 0x000000FF; - light = SDL_CreateRGBSurface(SDL_SWSURFACE, 2 * radius, 2 * radius, 32, - 0xFF000000, 0x00FF0000, 0x0000FF00, - alphamask); - if (light == NULL) { - fprintf(stderr, "Couldn't create light: %s\n", SDL_GetError()); - return (NULL); - } -#endif - - /* Fill with a light yellow-orange color */ - skip = light->pitch - (light->w * light->format->BytesPerPixel); -#ifdef LIGHT_16BIT - buf = (Uint16 *) light->pixels; -#else - buf = (Uint32 *) light->pixels; -#endif - /* Get a tranparent pixel value - we'll add alpha later */ - pixel = SDL_MapRGBA(light->format, 0xFF, 0xDD, 0x88, 0); - for (y = 0; y < light->h; ++y) { - for (x = 0; x < light->w; ++x) { - *buf++ = pixel; - } - buf += skip; /* Almost always 0, but just in case... */ - } - - /* Calculate alpha values for the surface. */ -#ifdef LIGHT_16BIT - buf = (Uint16 *) light->pixels; -#else - buf = (Uint32 *) light->pixels; -#endif - for (y = 0; y < light->h; ++y) { - for (x = 0; x < light->w; ++x) { - /* Slow distance formula (from center of light) */ - xdist = x - (light->w / 2); - ydist = y - (light->h / 2); - range = (int) sqrt(xdist * xdist + ydist * ydist); - - /* Scale distance to range of transparency (0-255) */ - if (range > radius) { - trans = alphamask; - } else { - /* Increasing transparency with distance */ - trans = (Uint8) ((range * alphamask) / radius); - - /* Lights are very transparent */ - addition = (alphamask + 1) / 8; - if ((int) trans + addition > alphamask) { - trans = alphamask; - } else { - trans += addition; - } - } - /* We set the alpha component as the right N bits */ - *buf++ |= (255 - trans); - } - buf += skip; /* Almost always 0, but just in case... */ - } - /* Enable RLE acceleration of this alpha surface */ - SDL_SetAlpha(light, SDL_SRCALPHA | SDL_RLEACCEL, 0); - - /* We're done! */ - return (light); -} - -static Uint32 flashes = 0; -static Uint32 flashtime = 0; - -void -FlashLight(SDL_Surface * screen, SDL_Surface * light, int x, int y) -{ - SDL_Rect position; - Uint32 ticks1; - Uint32 ticks2; - - /* Easy, center light */ - position.x = x - (light->w / 2); - position.y = y - (light->h / 2); - position.w = light->w; - position.h = light->h; - ticks1 = SDL_GetTicks(); - SDL_BlitSurface(light, NULL, screen, &position); - ticks2 = SDL_GetTicks(); - SDL_UpdateRects(screen, 1, &position); - ++flashes; - - /* Update time spend doing alpha blitting */ - flashtime += (ticks2 - ticks1); -} - -static int sprite_visible = 0; -static SDL_Surface *sprite; -static SDL_Surface *backing; -static SDL_Rect position; -static int x_vel, y_vel; -static int alpha_vel; - -int -LoadSprite(SDL_Surface * screen, char *file) -{ - SDL_Surface *converted; - - /* Load the sprite image */ - sprite = SDL_LoadBMP(file); - if (sprite == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return (-1); - } - - /* Set transparent pixel as the pixel at (0,0) */ - if (sprite->format->palette) { - SDL_SetColorKey(sprite, SDL_SRCCOLORKEY, *(Uint8 *) sprite->pixels); - } - - /* Convert sprite to video format */ - converted = SDL_DisplayFormat(sprite); - SDL_FreeSurface(sprite); - if (converted == NULL) { - fprintf(stderr, "Couldn't convert background: %s\n", SDL_GetError()); - return (-1); - } - sprite = converted; - - /* Create the background */ - backing = SDL_CreateRGBSurface(SDL_SWSURFACE, sprite->w, sprite->h, 8, - 0, 0, 0, 0); - if (backing == NULL) { - fprintf(stderr, "Couldn't create background: %s\n", SDL_GetError()); - SDL_FreeSurface(sprite); - return (-1); - } - - /* Convert background to video format */ - converted = SDL_DisplayFormat(backing); - SDL_FreeSurface(backing); - if (converted == NULL) { - fprintf(stderr, "Couldn't convert background: %s\n", SDL_GetError()); - SDL_FreeSurface(sprite); - return (-1); - } - backing = converted; - - /* Set the initial position of the sprite */ - position.x = (screen->w - sprite->w) / 2; - position.y = (screen->h - sprite->h) / 2; - position.w = sprite->w; - position.h = sprite->h; - x_vel = 0; - y_vel = 0; - alpha_vel = 1; - - /* We're ready to roll. :) */ - return (0); -} - -void -AttractSprite(Uint16 x, Uint16 y) -{ - x_vel = ((int) x - position.x) / 10; - y_vel = ((int) y - position.y) / 10; -} - -void -MoveSprite(SDL_Surface * screen, SDL_Surface * light) -{ - SDL_Rect updates[2]; - Uint8 alpha; - - /* Erase the sprite if it was visible */ - if (sprite_visible) { - updates[0] = position; - SDL_BlitSurface(backing, NULL, screen, &updates[0]); - } else { - updates[0].x = 0; - updates[0].y = 0; - updates[0].w = 0; - updates[0].h = 0; - sprite_visible = 1; - } - - /* Since the sprite is off the screen, we can do other drawing - without being overwritten by the saved area behind the sprite. - */ - if (light != NULL) { - int x, y; - - SDL_GetMouseState(&x, &y); - FlashLight(screen, light, x, y); - } - - /* Move the sprite, bounce at the wall */ - position.x += x_vel; - if ((position.x < 0) || (position.x >= screen->w)) { - x_vel = -x_vel; - position.x += x_vel; - } - position.y += y_vel; - if ((position.y < 0) || (position.y >= screen->h)) { - y_vel = -y_vel; - position.y += y_vel; - } - - /* Update transparency (fade in and out) */ - SDL_GetSurfaceAlphaMod(sprite, &alpha); - if (((int) alpha + alpha_vel) < 0) { - alpha_vel = -alpha_vel; - } else if (((int) alpha + alpha_vel) > 255) { - alpha_vel = -alpha_vel; - } - SDL_SetAlpha(sprite, SDL_SRCALPHA, (Uint8) (alpha + alpha_vel)); - - /* Save the area behind the sprite */ - updates[1] = position; - SDL_BlitSurface(screen, &updates[1], backing, NULL); - - /* Blit the sprite onto the screen */ - updates[1] = position; - SDL_BlitSurface(sprite, NULL, screen, &updates[1]); - - /* Make it so! */ - SDL_UpdateRects(screen, 2, updates); -} - -int -main(int argc, char *argv[]) -{ - const SDL_VideoInfo *info; - SDL_Surface *screen; - int w, h; - Uint8 video_bpp; - Uint32 videoflags; - int i, done; - SDL_Event event; - SDL_Surface *light; - int mouse_pressed; - Uint32 ticks, lastticks; - - - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Alpha blending doesn't work well at 8-bit color */ -#ifdef _WIN32_WCE - /* Pocket PC */ - w = 240; - h = 320; -#else - w = 640; - h = 480; -#endif - info = SDL_GetVideoInfo(); - if (info->vfmt->BitsPerPixel > 8) { - video_bpp = info->vfmt->BitsPerPixel; - } else { - video_bpp = 16; - fprintf(stderr, "forced 16 bpp mode\n"); - } - videoflags = SDL_SWSURFACE; - for (i = 1; argv[i]; ++i) { - if (strcmp(argv[i], "-bpp") == 0) { - video_bpp = atoi(argv[++i]); - if (video_bpp <= 8) { - video_bpp = 16; - fprintf(stderr, "forced 16 bpp mode\n"); - } - } else if (strcmp(argv[i], "-hw") == 0) { - videoflags |= SDL_HWSURFACE; - } else if (strcmp(argv[i], "-warp") == 0) { - videoflags |= SDL_HWPALETTE; - } else if (strcmp(argv[i], "-width") == 0 && argv[i + 1]) { - w = atoi(argv[++i]); - } else if (strcmp(argv[i], "-height") == 0 && argv[i + 1]) { - h = atoi(argv[++i]); - } else if (strcmp(argv[i], "-resize") == 0) { - videoflags |= SDL_RESIZABLE; - } else if (strcmp(argv[i], "-noframe") == 0) { - videoflags |= SDL_NOFRAME; - } else if (strcmp(argv[i], "-fullscreen") == 0) { - videoflags |= SDL_FULLSCREEN; - } else { - fprintf(stderr, - "Usage: %s [-width N] [-height N] [-bpp N] [-warp] [-hw] [-fullscreen]\n", - argv[0]); - quit(1); - } - } - - /* Set video mode */ - if ((screen = SDL_SetVideoMode(w, h, video_bpp, videoflags)) == NULL) { - fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", - w, h, video_bpp, SDL_GetError()); - quit(2); - } - FillBackground(screen); - - /* Create the light */ - light = CreateLight(82); - if (light == NULL) { - quit(1); - } - - /* Load the sprite */ - if (LoadSprite(screen, "icon.bmp") < 0) { - SDL_FreeSurface(light); - quit(1); - } - - /* Print out information about our surfaces */ - printf("Screen is at %d bits per pixel\n", screen->format->BitsPerPixel); - if ((screen->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - printf("Screen is in video memory\n"); - } else { - printf("Screen is in system memory\n"); - } - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - printf("Screen has double-buffering enabled\n"); - } - if ((sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - printf("Sprite is in video memory\n"); - } else { - printf("Sprite is in system memory\n"); - } - - /* Run a sample blit to trigger blit acceleration */ - MoveSprite(screen, NULL); - if ((sprite->flags & SDL_HWACCEL) == SDL_HWACCEL) { - printf("Sprite blit uses hardware alpha acceleration\n"); - } else { - printf("Sprite blit dosn't uses hardware alpha acceleration\n"); - } - - /* Set a clipping rectangle to clip the outside edge of the screen */ - { - SDL_Rect clip; - clip.x = 32; - clip.y = 32; - clip.w = screen->w - (2 * 32); - clip.h = screen->h - (2 * 32); - SDL_SetClipRect(screen, &clip); - } - - /* Wait for a keystroke */ - lastticks = SDL_GetTicks(); - done = 0; - mouse_pressed = 0; - while (!done) { - /* Update the frame -- move the sprite */ - if (mouse_pressed) { - MoveSprite(screen, light); - mouse_pressed = 0; - } else { - MoveSprite(screen, NULL); - } - - /* Slow down the loop to 30 frames/second */ - ticks = SDL_GetTicks(); - if ((ticks - lastticks) < FRAME_TICKS) { -#ifdef CHECK_SLEEP_GRANULARITY - fprintf(stderr, "Sleeping %d ticks\n", - FRAME_TICKS - (ticks - lastticks)); -#endif - SDL_Delay(FRAME_TICKS - (ticks - lastticks)); -#ifdef CHECK_SLEEP_GRANULARITY - fprintf(stderr, "Slept %d ticks\n", (SDL_GetTicks() - ticks)); -#endif - } - lastticks = ticks; - - /* Check for events */ - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_VIDEORESIZE: - screen = - SDL_SetVideoMode(event.resize.w, event.resize.h, - video_bpp, videoflags); - if (screen) { - FillBackground(screen); - } - break; - /* Attract sprite while mouse is held down */ - case SDL_MOUSEMOTION: - if (event.motion.state != 0) { - AttractSprite(event.motion.x, event.motion.y); - mouse_pressed = 1; - } - break; - case SDL_MOUSEBUTTONDOWN: - if (event.button.button == 1) { - AttractSprite(event.button.x, event.button.y); - mouse_pressed = 1; - } else { - SDL_Rect area; - - area.x = event.button.x - 16; - area.y = event.button.y - 16; - area.w = 32; - area.h = 32; - SDL_FillRect(screen, &area, - SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_UpdateRects(screen, 1, &area); - } - break; - case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_ESCAPE) { - done = 1; - } - if (event.key.keysym.sym == SDLK_RETURN) { - SDL_WM_ToggleFullScreen(screen); - } - break; - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - } - SDL_FreeSurface(light); - SDL_FreeSurface(sprite); - SDL_FreeSurface(backing); - - /* Print out some timing information */ - if (flashes > 0) { - printf("%d alpha blits, ~%4.4f ms per blit\n", - flashes, (float) flashtime / flashes); - } - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testatomic.c b/3rdparty/SDL-1.3.0-5387/test/testatomic.c deleted file mode 100644 index 89bf09fc01..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testatomic.c +++ /dev/null @@ -1,703 +0,0 @@ -#include - -#include "SDL.h" -#include "SDL_atomic.h" -#include "SDL_assert.h" -#include "SDL_cpuinfo.h" - -/* - Absolutely basic tests just to see if we get the expected value - after calling each function. -*/ - -static -char * -tf(SDL_bool tf) -{ - static char *t = "TRUE"; - static char *f = "FALSE"; - - if (tf) - { - return t; - } - - return f; -} - -static -void RunBasicTest() -{ - int value; - SDL_SpinLock lock = 0; - - SDL_atomic_t v; - SDL_bool tfret = SDL_FALSE; - - printf("\nspin lock---------------------------------------\n\n"); - - SDL_AtomicLock(&lock); - printf("AtomicLock lock=%d\n", lock); - SDL_AtomicUnlock(&lock); - printf("AtomicUnlock lock=%d\n", lock); - - printf("\natomic -----------------------------------------\n\n"); - - SDL_AtomicSet(&v, 0); - tfret = SDL_AtomicSet(&v, 10) == 0; - printf("AtomicSet(10) tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - tfret = SDL_AtomicAdd(&v, 10) == 10; - printf("AtomicAdd(10) tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - - SDL_AtomicSet(&v, 0); - SDL_AtomicIncRef(&v); - tfret = (SDL_AtomicGet(&v) == 1); - printf("AtomicIncRef() tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - SDL_AtomicIncRef(&v); - tfret = (SDL_AtomicGet(&v) == 2); - printf("AtomicIncRef() tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - tfret = (SDL_AtomicDecRef(&v) == SDL_FALSE); - printf("AtomicDecRef() tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - tfret = (SDL_AtomicDecRef(&v) == SDL_TRUE); - printf("AtomicDecRef() tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - - SDL_AtomicSet(&v, 10); - tfret = (SDL_AtomicCAS(&v, 0, 20) == SDL_FALSE); - printf("AtomicCAS() tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); - value = SDL_AtomicGet(&v); - tfret = (SDL_AtomicCAS(&v, value, 20) == SDL_TRUE); - printf("AtomicCAS() tfret=%s val=%d\n", tf(tfret), SDL_AtomicGet(&v)); -} - -/**************************************************************************/ -/* Atomic operation test - * Adapted with permission from code by Michael Davidsaver at: - * http://bazaar.launchpad.net/~mdavidsaver/epics-base/atomic/revision/12105#src/libCom/test/epicsAtomicTest.c - * Original copyright 2010 Brookhaven Science Associates as operator of Brookhaven National Lab - * http://www.aps.anl.gov/epics/license/open.php - */ - -/* Tests semantics of atomic operations. Also a stress test - * to see if they are really atomic. - * - * Serveral threads adding to the same variable. - * at the end the value is compared with the expected - * and with a non-atomic counter. - */ - -/* Number of concurrent incrementers */ -#define NThreads 2 -#define CountInc 100 -#define VALBITS (sizeof(atomicValue)*8) - -#define atomicValue int -#define CountTo ((atomicValue)((unsigned int)(1<<(VALBITS-1))-1)) -#define NInter (CountTo/CountInc/NThreads) -#define Expect (CountTo-NInter*CountInc*NThreads) - -SDL_COMPILE_TIME_ASSERT(size, CountTo>0); /* check for rollover */ - -static SDL_atomic_t good = { 42 }; - -static atomicValue bad = 42; - -static SDL_atomic_t threadsRunning; - -static SDL_sem *threadDone; - -static -int adder(void* junk) -{ - unsigned long N=NInter; - printf("Thread subtracting %d %lu times\n",CountInc,N); - while (N--) { - SDL_AtomicAdd(&good, -CountInc); - bad-=CountInc; - } - SDL_AtomicAdd(&threadsRunning, -1); - SDL_SemPost(threadDone); - return 0; -} - -static -void runAdder(void) -{ - Uint32 start, end; - int T=NThreads; - - start = SDL_GetTicks(); - - threadDone = SDL_CreateSemaphore(0); - - SDL_AtomicSet(&threadsRunning, NThreads); - - while (T--) - SDL_CreateThread(adder, NULL); - - while (SDL_AtomicGet(&threadsRunning) > 0) - SDL_SemWait(threadDone); - - SDL_DestroySemaphore(threadDone); - - end = SDL_GetTicks(); - - printf("Finished in %f sec\n", (end - start) / 1000.f); -} - -static -void RunEpicTest() -{ - int b; - atomicValue v; - - printf("\nepic test---------------------------------------\n\n"); - - printf("Size asserted to be >= 32-bit\n"); - SDL_assert(sizeof(atomicValue)>=4); - - printf("Check static initializer\n"); - v=SDL_AtomicGet(&good); - SDL_assert(v==42); - - SDL_assert(bad==42); - - printf("Test negative values\n"); - SDL_AtomicSet(&good, -5); - v=SDL_AtomicGet(&good); - SDL_assert(v==-5); - - printf("Verify maximum value\n"); - SDL_AtomicSet(&good, CountTo); - v=SDL_AtomicGet(&good); - SDL_assert(v==CountTo); - - printf("Test compare and exchange\n"); - - b=SDL_AtomicCAS(&good, 500, 43); - SDL_assert(!b); /* no swap since CountTo!=500 */ - v=SDL_AtomicGet(&good); - SDL_assert(v==CountTo); /* ensure no swap */ - - b=SDL_AtomicCAS(&good, CountTo, 44); - SDL_assert(!!b); /* will swap */ - v=SDL_AtomicGet(&good); - SDL_assert(v==44); - - printf("Test Add\n"); - - v=SDL_AtomicAdd(&good, 1); - SDL_assert(v==44); - v=SDL_AtomicGet(&good); - SDL_assert(v==45); - - v=SDL_AtomicAdd(&good, 10); - SDL_assert(v==45); - v=SDL_AtomicGet(&good); - SDL_assert(v==55); - - printf("Test Add (Negative values)\n"); - - v=SDL_AtomicAdd(&good, -20); - SDL_assert(v==55); - v=SDL_AtomicGet(&good); - SDL_assert(v==35); - - v=SDL_AtomicAdd(&good, -50); /* crossing zero down */ - SDL_assert(v==35); - v=SDL_AtomicGet(&good); - SDL_assert(v==-15); - - v=SDL_AtomicAdd(&good, 30); /* crossing zero up */ - SDL_assert(v==-15); - v=SDL_AtomicGet(&good); - SDL_assert(v==15); - - printf("Reset before count down test\n"); - SDL_AtomicSet(&good, CountTo); - v=SDL_AtomicGet(&good); - SDL_assert(v==CountTo); - - bad=CountTo; - SDL_assert(bad==CountTo); - - printf("Counting down from %d, Expect %d remaining\n",CountTo,Expect); - runAdder(); - - v=SDL_AtomicGet(&good); - printf("Atomic %d Non-Atomic %d\n",v,bad); - SDL_assert(v==Expect); - SDL_assert(bad!=Expect); -} - -/* End atomic operation test */ -/**************************************************************************/ - -/**************************************************************************/ -/* Lock-free FIFO test */ - -/* This is useful to test the impact of another thread locking the queue - entirely for heavy-weight manipulation. - */ -#define TEST_SPINLOCK_FIFO - -#define NUM_READERS 4 -#define NUM_WRITERS 4 -#define EVENTS_PER_WRITER 1000000 - -/* The number of entries must be a power of 2 */ -#define MAX_ENTRIES 256 -#define WRAP_MASK (MAX_ENTRIES-1) - -typedef struct -{ - SDL_atomic_t sequence; - SDL_Event event; -} SDL_EventQueueEntry; - -typedef struct -{ - SDL_EventQueueEntry entries[MAX_ENTRIES]; - - char cache_pad1[SDL_CACHELINE_SIZE-((sizeof(SDL_EventQueueEntry)*MAX_ENTRIES)%SDL_CACHELINE_SIZE)]; - - SDL_atomic_t enqueue_pos; - - char cache_pad2[SDL_CACHELINE_SIZE-sizeof(SDL_atomic_t)]; - - SDL_atomic_t dequeue_pos; - - char cache_pad3[SDL_CACHELINE_SIZE-sizeof(SDL_atomic_t)]; - -#ifdef TEST_SPINLOCK_FIFO - SDL_SpinLock lock; - SDL_atomic_t rwcount; - SDL_atomic_t watcher; - - char cache_pad4[SDL_CACHELINE_SIZE-sizeof(SDL_SpinLock)-2*sizeof(SDL_atomic_t)]; -#endif - - volatile SDL_bool active; - - /* Only needed for the mutex test */ - SDL_mutex *mutex; - -} SDL_EventQueue; - -static void InitEventQueue(SDL_EventQueue *queue) -{ - int i; - - for (i = 0; i < MAX_ENTRIES; ++i) { - SDL_AtomicSet(&queue->entries[i].sequence, i); - } - SDL_AtomicSet(&queue->enqueue_pos, 0); - SDL_AtomicSet(&queue->dequeue_pos, 0); -#ifdef TEST_SPINLOCK_FIFO - queue->lock = 0; - SDL_AtomicSet(&queue->rwcount, 0); -#endif - queue->active = SDL_TRUE; -} - -static SDL_bool EnqueueEvent_LockFree(SDL_EventQueue *queue, const SDL_Event *event) -{ - SDL_EventQueueEntry *entry; - unsigned queue_pos; - unsigned entry_seq; - int delta; - SDL_bool status; - -#ifdef TEST_SPINLOCK_FIFO - /* This is a gate so an external thread can lock the queue */ - SDL_AtomicLock(&queue->lock); - SDL_assert(SDL_AtomicGet(&queue->watcher) == 0); - SDL_AtomicIncRef(&queue->rwcount); - SDL_AtomicUnlock(&queue->lock); -#endif - - queue_pos = (unsigned)SDL_AtomicGet(&queue->enqueue_pos); - for ( ; ; ) { - entry = &queue->entries[queue_pos & WRAP_MASK]; - entry_seq = (unsigned)SDL_AtomicGet(&entry->sequence); - - delta = (int)(entry_seq - queue_pos); - if (delta == 0) { - /* The entry and the queue position match, try to increment the queue position */ - if (SDL_AtomicCAS(&queue->enqueue_pos, (int)queue_pos, (int)(queue_pos+1))) { - /* We own the object, fill it! */ - entry->event = *event; - SDL_AtomicSet(&entry->sequence, (int)(queue_pos + 1)); - status = SDL_TRUE; - break; - } - } else if (delta < 0) { - /* We ran into an old queue entry, which means it still needs to be dequeued */ - status = SDL_FALSE; - break; - } else { - /* We ran into a new queue entry, get the new queue position */ - queue_pos = (unsigned)SDL_AtomicGet(&queue->enqueue_pos); - } - } - -#ifdef TEST_SPINLOCK_FIFO - SDL_AtomicDecRef(&queue->rwcount); -#endif - return status; -} - -static SDL_bool DequeueEvent_LockFree(SDL_EventQueue *queue, SDL_Event *event) -{ - SDL_EventQueueEntry *entry; - unsigned queue_pos; - unsigned entry_seq; - int delta; - SDL_bool status; - -#ifdef TEST_SPINLOCK_FIFO - /* This is a gate so an external thread can lock the queue */ - SDL_AtomicLock(&queue->lock); - SDL_assert(SDL_AtomicGet(&queue->watcher) == 0); - SDL_AtomicIncRef(&queue->rwcount); - SDL_AtomicUnlock(&queue->lock); -#endif - - queue_pos = (unsigned)SDL_AtomicGet(&queue->dequeue_pos); - for ( ; ; ) { - entry = &queue->entries[queue_pos & WRAP_MASK]; - entry_seq = (unsigned)SDL_AtomicGet(&entry->sequence); - - delta = (int)(entry_seq - (queue_pos + 1)); - if (delta == 0) { - /* The entry and the queue position match, try to increment the queue position */ - if (SDL_AtomicCAS(&queue->dequeue_pos, (int)queue_pos, (int)(queue_pos+1))) { - /* We own the object, fill it! */ - *event = entry->event; - SDL_AtomicSet(&entry->sequence, (int)(queue_pos+MAX_ENTRIES)); - status = SDL_TRUE; - break; - } - } else if (delta < 0) { - /* We ran into an old queue entry, which means we've hit empty */ - status = SDL_FALSE; - break; - } else { - /* We ran into a new queue entry, get the new queue position */ - queue_pos = (unsigned)SDL_AtomicGet(&queue->dequeue_pos); - } - } - -#ifdef TEST_SPINLOCK_FIFO - SDL_AtomicDecRef(&queue->rwcount); -#endif - return status; -} - -static SDL_bool EnqueueEvent_Mutex(SDL_EventQueue *queue, const SDL_Event *event) -{ - SDL_EventQueueEntry *entry; - unsigned queue_pos; - unsigned entry_seq; - int delta; - SDL_bool status = SDL_FALSE; - - SDL_mutexP(queue->mutex); - - queue_pos = (unsigned)queue->enqueue_pos.value; - entry = &queue->entries[queue_pos & WRAP_MASK]; - entry_seq = (unsigned)entry->sequence.value; - - delta = (int)(entry_seq - queue_pos); - if (delta == 0) { - ++queue->enqueue_pos.value; - - /* We own the object, fill it! */ - entry->event = *event; - entry->sequence.value = (int)(queue_pos + 1); - status = SDL_TRUE; - } else if (delta < 0) { - /* We ran into an old queue entry, which means it still needs to be dequeued */ - } else { - printf("ERROR: mutex failed!\n"); - } - - SDL_mutexV(queue->mutex); - - return status; -} - -static SDL_bool DequeueEvent_Mutex(SDL_EventQueue *queue, SDL_Event *event) -{ - SDL_EventQueueEntry *entry; - unsigned queue_pos; - unsigned entry_seq; - int delta; - SDL_bool status = SDL_FALSE; - - SDL_mutexP(queue->mutex); - - queue_pos = (unsigned)queue->dequeue_pos.value; - entry = &queue->entries[queue_pos & WRAP_MASK]; - entry_seq = (unsigned)entry->sequence.value; - - delta = (int)(entry_seq - (queue_pos + 1)); - if (delta == 0) { - ++queue->dequeue_pos.value; - - /* We own the object, fill it! */ - *event = entry->event; - entry->sequence.value = (int)(queue_pos + MAX_ENTRIES); - status = SDL_TRUE; - } else if (delta < 0) { - /* We ran into an old queue entry, which means we've hit empty */ - } else { - printf("ERROR: mutex failed!\n"); - } - - SDL_mutexV(queue->mutex); - - return status; -} - -static SDL_sem *writersDone; -static SDL_sem *readersDone; -static SDL_atomic_t writersRunning; -static SDL_atomic_t readersRunning; - -typedef struct -{ - SDL_EventQueue *queue; - int index; - char padding1[SDL_CACHELINE_SIZE-(sizeof(SDL_EventQueue*)+sizeof(int))%SDL_CACHELINE_SIZE]; - int waits; - SDL_bool lock_free; - char padding2[SDL_CACHELINE_SIZE-sizeof(int)-sizeof(SDL_bool)]; -} WriterData; - -typedef struct -{ - SDL_EventQueue *queue; - int counters[NUM_WRITERS]; - int waits; - SDL_bool lock_free; - char padding[SDL_CACHELINE_SIZE-(sizeof(SDL_EventQueue*)+sizeof(int)*NUM_WRITERS+sizeof(int)+sizeof(SDL_bool))%SDL_CACHELINE_SIZE]; -} ReaderData; - -static int FIFO_Writer(void* _data) -{ - WriterData *data = (WriterData *)_data; - SDL_EventQueue *queue = data->queue; - int index = data->index; - int i; - SDL_Event event; - - event.type = SDL_USEREVENT; - event.user.windowID = 0; - event.user.code = 0; - event.user.data1 = data; - event.user.data2 = NULL; - - if (data->lock_free) { - for (i = 0; i < EVENTS_PER_WRITER; ++i) { - event.user.code = i; - while (!EnqueueEvent_LockFree(queue, &event)) { - ++data->waits; - SDL_Delay(0); - } - } - } else { - for (i = 0; i < EVENTS_PER_WRITER; ++i) { - event.user.code = i; - while (!EnqueueEvent_Mutex(queue, &event)) { - ++data->waits; - SDL_Delay(0); - } - } - } - SDL_AtomicAdd(&writersRunning, -1); - SDL_SemPost(writersDone); - return 0; -} - -static int FIFO_Reader(void* _data) -{ - ReaderData *data = (ReaderData *)_data; - SDL_EventQueue *queue = data->queue; - SDL_Event event; - - if (data->lock_free) { - for ( ; ; ) { - if (DequeueEvent_LockFree(queue, &event)) { - WriterData *writer = (WriterData*)event.user.data1; - ++data->counters[writer->index]; - } else if (queue->active) { - ++data->waits; - SDL_Delay(0); - } else { - /* We drained the queue, we're done! */ - break; - } - } - } else { - for ( ; ; ) { - if (DequeueEvent_Mutex(queue, &event)) { - WriterData *writer = (WriterData*)event.user.data1; - ++data->counters[writer->index]; - } else if (queue->active) { - ++data->waits; - SDL_Delay(0); - } else { - /* We drained the queue, we're done! */ - break; - } - } - } - SDL_AtomicAdd(&readersRunning, -1); - SDL_SemPost(readersDone); - return 0; -} - -#ifdef TEST_SPINLOCK_FIFO -/* This thread periodically locks the queue for no particular reason */ -static int FIFO_Watcher(void* _data) -{ - SDL_EventQueue *queue = (SDL_EventQueue *)_data; - - while (queue->active) { - SDL_AtomicLock(&queue->lock); - SDL_AtomicIncRef(&queue->watcher); - while (SDL_AtomicGet(&queue->rwcount) > 0) { - SDL_Delay(0); - } - /* Do queue manipulation here... */ - SDL_AtomicDecRef(&queue->watcher); - SDL_AtomicUnlock(&queue->lock); - - /* Wait a bit... */ - SDL_Delay(1); - } - return 0; -} -#endif /* TEST_SPINLOCK_FIFO */ - -static void RunFIFOTest(SDL_bool lock_free) -{ - SDL_EventQueue queue; - WriterData writerData[NUM_WRITERS]; - ReaderData readerData[NUM_READERS]; - Uint32 start, end; - int i, j; - int grand_total; - - printf("\nFIFO test---------------------------------------\n\n"); - printf("Mode: %s\n", lock_free ? "LockFree" : "Mutex"); - - readersDone = SDL_CreateSemaphore(0); - writersDone = SDL_CreateSemaphore(0); - - SDL_memset(&queue, 0xff, sizeof(queue)); - - InitEventQueue(&queue); - if (!lock_free) { - queue.mutex = SDL_CreateMutex(); - } - - start = SDL_GetTicks(); - -#ifdef TEST_SPINLOCK_FIFO - /* Start a monitoring thread */ - if (lock_free) { - SDL_CreateThread(FIFO_Watcher, &queue); - } -#endif - - /* Start the readers first */ - printf("Starting %d readers\n", NUM_READERS); - SDL_zero(readerData); - SDL_AtomicSet(&readersRunning, NUM_READERS); - for (i = 0; i < NUM_READERS; ++i) { - readerData[i].queue = &queue; - readerData[i].lock_free = lock_free; - SDL_CreateThread(FIFO_Reader, &readerData[i]); - } - - /* Start up the writers */ - printf("Starting %d writers\n", NUM_WRITERS); - SDL_zero(writerData); - SDL_AtomicSet(&writersRunning, NUM_WRITERS); - for (i = 0; i < NUM_WRITERS; ++i) { - writerData[i].queue = &queue; - writerData[i].index = i; - writerData[i].lock_free = lock_free; - SDL_CreateThread(FIFO_Writer, &writerData[i]); - } - - /* Wait for the writers */ - while (SDL_AtomicGet(&writersRunning) > 0) { - SDL_SemWait(writersDone); - } - - /* Shut down the queue so readers exit */ - queue.active = SDL_FALSE; - - /* Wait for the readers */ - while (SDL_AtomicGet(&readersRunning) > 0) { - SDL_SemWait(readersDone); - } - - end = SDL_GetTicks(); - - SDL_DestroySemaphore(readersDone); - SDL_DestroySemaphore(writersDone); - - if (!lock_free) { - SDL_DestroyMutex(queue.mutex); - } - - printf("Finished in %f sec\n", (end - start) / 1000.f); - - printf("\n"); - for (i = 0; i < NUM_WRITERS; ++i) { - printf("Writer %d wrote %d events, had %d waits\n", i, EVENTS_PER_WRITER, writerData[i].waits); - } - printf("Writers wrote %d total events\n", NUM_WRITERS*EVENTS_PER_WRITER); - - /* Print a breakdown of which readers read messages from which writer */ - printf("\n"); - grand_total = 0; - for (i = 0; i < NUM_READERS; ++i) { - int total = 0; - for (j = 0; j < NUM_WRITERS; ++j) { - total += readerData[i].counters[j]; - } - grand_total += total; - printf("Reader %d read %d events, had %d waits\n", i, total, readerData[i].waits); - printf(" { "); - for (j = 0; j < NUM_WRITERS; ++j) { - if (j > 0) { - printf(", "); - } - printf("%d", readerData[i].counters[j]); - } - printf(" }\n"); - } - printf("Readers read %d total events\n", grand_total); -} - -/* End FIFO test */ -/**************************************************************************/ - -int -main(int argc, char *argv[]) -{ - RunBasicTest(); - RunEpicTest(); -/* This test is really slow, so don't run it by default */ -#if 0 - RunFIFOTest(SDL_FALSE); -#endif - RunFIFOTest(SDL_TRUE); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testaudioinfo.c b/3rdparty/SDL-1.3.0-5387/test/testaudioinfo.c deleted file mode 100644 index 0289577aca..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testaudioinfo.c +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include "SDL.h" - -static void -print_devices(int iscapture) -{ - const char *typestr = ((iscapture) ? "capture" : "output"); - int n = SDL_GetNumAudioDevices(iscapture); - - printf("%s devices:\n", typestr); - - if (n == -1) - printf(" Driver can't detect specific devices.\n\n", typestr); - else if (n == 0) - printf(" No %s devices found.\n\n", typestr); - else { - int i; - for (i = 0; i < n; i++) { - printf(" %s\n", SDL_GetAudioDeviceName(i, iscapture)); - } - printf("\n"); - } -} - -int -main(int argc, char **argv) -{ - /* Load the SDL library */ - if (SDL_Init(SDL_INIT_AUDIO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Print available audio drivers */ - int n = SDL_GetNumAudioDrivers(); - if (n == 0) { - printf("No built-in audio drivers\n\n"); - } else { - int i; - printf("Built-in audio drivers:\n"); - for (i = 0; i < n; ++i) { - printf(" %s\n", SDL_GetAudioDriver(i)); - } - printf("\n"); - } - - printf("Using audio driver: %s\n\n", SDL_GetCurrentAudioDriver()); - - print_devices(0); - print_devices(1); - - SDL_Quit(); - return 0; -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testbitmap.c b/3rdparty/SDL-1.3.0-5387/test/testbitmap.c deleted file mode 100644 index 78b79a77f0..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testbitmap.c +++ /dev/null @@ -1,192 +0,0 @@ - -/* Simple program: Test bitmap blits */ - -#include -#include -#include - -#include "SDL.h" -#include "picture.xbm" - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -SDL_Surface * -LoadXBM(SDL_Surface * screen, int w, int h, Uint8 * bits) -{ - SDL_Surface *bitmap; - Uint8 *line; - - /* Allocate the bitmap */ - bitmap = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 1, 0, 0, 0, 0); - if (bitmap == NULL) { - fprintf(stderr, "Couldn't allocate bitmap: %s\n", SDL_GetError()); - return (NULL); - } - - /* Copy the pixels */ - line = (Uint8 *) bitmap->pixels; - w = (w + 7) / 8; - while (h--) { - memcpy(line, bits, w); - /* X11 Bitmap images have the bits reversed */ - { - int i, j; - Uint8 *buf, byte; - for (buf = line, i = 0; i < w; ++i, ++buf) { - byte = *buf; - *buf = 0; - for (j = 7; j >= 0; --j) { - *buf |= (byte & 0x01) << j; - byte >>= 1; - } - } - } - line += bitmap->pitch; - bits += w; - } - return (bitmap); -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - SDL_Surface *bitmap; - Uint8 video_bpp; - Uint32 videoflags; - Uint8 *buffer; - int i, k, done; - SDL_Event event; - Uint16 *buffer16; - Uint16 color; - Uint8 gradient; - SDL_Color palette[256]; - - int video_w, video_h; - - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - video_bpp = 0; - videoflags = SDL_SWSURFACE; - while (argc > 1) { - --argc; - if (strcmp(argv[argc - 1], "-bpp") == 0) { - video_bpp = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc], "-warp") == 0) { - videoflags |= SDL_HWPALETTE; - } else if (strcmp(argv[argc], "-hw") == 0) { - videoflags |= SDL_HWSURFACE; - } else if (strcmp(argv[argc], "-fullscreen") == 0) { - videoflags |= SDL_FULLSCREEN; - } else { - fprintf(stderr, - "Usage: %s [-bpp N] [-warp] [-hw] [-fullscreen]\n", - argv[0]); - quit(1); - } - } - -#ifdef __IPHONEOS__ - video_w = 320; - video_h = 480; -#else - video_w = 640; - video_h = 480; -#endif - - /* Set 640x480 video mode */ - if ((screen = - SDL_SetVideoMode(video_w, video_h, video_bpp, videoflags)) == NULL) { - fprintf(stderr, "Couldn't set %dx%d %d video mode: %s\n", video_w, - video_h, video_bpp, SDL_GetError()); - quit(2); - } - - if (video_bpp == 8) { - /* Set a gray colormap, reverse order from white to black */ - for (i = 0; i < 256; ++i) { - palette[i].r = 255 - i; - palette[i].g = 255 - i; - palette[i].b = 255 - i; - } - SDL_SetColors(screen, palette, 0, 256); - } - - /* Set the surface pixels and refresh! */ - if (SDL_LockSurface(screen) < 0) { - fprintf(stderr, "Couldn't lock the display surface: %s\n", - SDL_GetError()); - quit(2); - } - buffer = (Uint8 *) screen->pixels; - if (screen->format->BytesPerPixel != 2) { - for (i = 0; i < screen->h; ++i) { - memset(buffer, (i * 255) / screen->h, screen->pitch); - buffer += screen->pitch; - } - } else { - for (i = 0; i < screen->h; ++i) { - gradient = ((i * 255) / screen->h); - color = SDL_MapRGB(screen->format, gradient, gradient, gradient); - buffer16 = (Uint16 *) buffer; - for (k = 0; k < screen->w; k++) { - *(buffer16 + k) = color; - } - buffer += screen->pitch; - } - } - SDL_UnlockSurface(screen); - SDL_UpdateRect(screen, 0, 0, 0, 0); - - /* Load the bitmap */ - bitmap = LoadXBM(screen, picture_width, picture_height, - (Uint8 *) picture_bits); - if (bitmap == NULL) { - quit(1); - } - - /* Wait for a keystroke */ - done = 0; - while (!done) { - /* Check for events */ - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_MOUSEBUTTONDOWN: - { - SDL_Rect dst; - - dst.x = event.button.x - bitmap->w / 2; - dst.y = event.button.y - bitmap->h / 2; - dst.w = bitmap->w; - dst.h = bitmap->h; - SDL_BlitSurface(bitmap, NULL, screen, &dst); - SDL_UpdateRects(screen, 1, &dst); - } - break; - case SDL_KEYDOWN: - /* Any key press quits the app... */ - done = 1; - break; - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - } - SDL_FreeSurface(bitmap); - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testblitspeed.c b/3rdparty/SDL-1.3.0-5387/test/testblitspeed.c deleted file mode 100644 index e365f3aba4..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testblitspeed.c +++ /dev/null @@ -1,422 +0,0 @@ -/* - * Benchmarks surface-to-surface blits in various formats. - * - * Written by Ryan C. Gordon. - */ - -#include -#include -#include - -#include "SDL.h" - -static SDL_Surface *dest = NULL; -static SDL_Surface *src = NULL; -static int testSeconds = 10; - - -static int -percent(int val, int total) -{ - return ((int) ((((float) val) / ((float) total)) * 100.0f)); -} - -static int -randRange(int lo, int hi) -{ - return (lo + (int) (((double) hi) * rand() / (RAND_MAX + 1.0))); -} - -static void -copy_trunc_str(char *str, size_t strsize, const char *flagstr) -{ - if ((strlen(str) + strlen(flagstr)) >= (strsize - 1)) - strcpy(str + (strsize - 5), " ..."); - else - strcat(str, flagstr); -} - -static void -__append_sdl_surface_flag(SDL_Surface * _surface, char *str, - size_t strsize, Uint32 flag, const char *flagstr) -{ - if (_surface->flags & flag) - copy_trunc_str(str, strsize, flagstr); -} - - -#define append_sdl_surface_flag(a, b, c, fl) __append_sdl_surface_flag(a, b, c, fl, " " #fl) -#define print_tf_state(str, val) printf("%s: {%s}\n", str, (val) ? "true" : "false" ) - -static void -output_videoinfo_details(void) -{ - const SDL_VideoInfo *info = SDL_GetVideoInfo(); - printf("SDL_GetVideoInfo():\n"); - if (info == NULL) - printf(" (null.)\n"); - else { - print_tf_state(" hardware surface available", info->hw_available); - print_tf_state(" window manager available", info->wm_available); - print_tf_state(" accelerated hardware->hardware blits", - info->blit_hw); - print_tf_state(" accelerated hardware->hardware colorkey blits", - info->blit_hw_CC); - print_tf_state(" accelerated hardware->hardware alpha blits", - info->blit_hw_A); - print_tf_state(" accelerated software->hardware blits", - info->blit_sw); - print_tf_state(" accelerated software->hardware colorkey blits", - info->blit_sw_CC); - print_tf_state(" accelerated software->hardware alpha blits", - info->blit_sw_A); - print_tf_state(" accelerated color fills", info->blit_fill); - printf(" video memory: (%d)\n", info->video_mem); - } - - printf("\n"); -} - -static void -output_surface_details(const char *name, SDL_Surface * surface) -{ - printf("Details for %s:\n", name); - - if (surface == NULL) { - printf("-WARNING- You've got a NULL surface!"); - } else { - char f[256]; - printf(" width : %d\n", surface->w); - printf(" height : %d\n", surface->h); - printf(" depth : %d bits per pixel\n", - surface->format->BitsPerPixel); - printf(" pitch : %d\n", (int) surface->pitch); - - printf(" red bits : 0x%08X mask, %d shift, %d loss\n", - (int) surface->format->Rmask, - (int) surface->format->Rshift, (int) surface->format->Rloss); - printf(" green bits : 0x%08X mask, %d shift, %d loss\n", - (int) surface->format->Gmask, - (int) surface->format->Gshift, (int) surface->format->Gloss); - printf(" blue bits : 0x%08X mask, %d shift, %d loss\n", - (int) surface->format->Bmask, - (int) surface->format->Bshift, (int) surface->format->Bloss); - printf(" alpha bits : 0x%08X mask, %d shift, %d loss\n", - (int) surface->format->Amask, - (int) surface->format->Ashift, (int) surface->format->Aloss); - - f[0] = '\0'; - - /*append_sdl_surface_flag(surface, f, sizeof (f), SDL_SWSURFACE); */ - if ((surface->flags & SDL_HWSURFACE) == 0) - copy_trunc_str(f, sizeof(f), " SDL_SWSURFACE"); - - append_sdl_surface_flag(surface, f, sizeof(f), SDL_HWSURFACE); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_ASYNCBLIT); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_ANYFORMAT); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_HWPALETTE); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_DOUBLEBUF); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_FULLSCREEN); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_OPENGL); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_RESIZABLE); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_NOFRAME); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_HWACCEL); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_SRCCOLORKEY); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_RLEACCELOK); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_RLEACCEL); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_SRCALPHA); - append_sdl_surface_flag(surface, f, sizeof(f), SDL_PREALLOC); - - if (f[0] == '\0') - strcpy(f, " (none)"); - - printf(" flags :%s\n", f); - } - - printf("\n"); -} - -static void -output_details(void) -{ - output_videoinfo_details(); - output_surface_details("Source Surface", src); - output_surface_details("Destination Surface", dest); -} - -static Uint32 -blit(SDL_Surface * dst, SDL_Surface * src, int x, int y) -{ - Uint32 start = 0; - SDL_Rect srcRect; - SDL_Rect dstRect; - - srcRect.x = 0; - srcRect.y = 0; - dstRect.x = x; - dstRect.y = y; - dstRect.w = srcRect.w = src->w; /* SDL will clip as appropriate. */ - dstRect.h = srcRect.h = src->h; - - start = SDL_GetTicks(); - SDL_BlitSurface(src, &srcRect, dst, &dstRect); - return (SDL_GetTicks() - start); -} - -static void -blitCentered(SDL_Surface * dst, SDL_Surface * src) -{ - int x = (dst->w - src->w) / 2; - int y = (dst->h - src->h) / 2; - blit(dst, src, x, y); -} - -static int -atoi_hex(const char *str) -{ - if (str == NULL) - return 0; - - if (strlen(str) > 2) { - int retval = 0; - if ((str[0] == '0') && (str[1] == 'x')) - sscanf(str + 2, "%X", &retval); - return (retval); - } - - return (atoi(str)); -} - - -static int -setup_test(int argc, char **argv) -{ - const char *dumpfile = NULL; - SDL_Surface *bmp = NULL; - Uint32 dstbpp = 32; - Uint32 dstrmask = 0x00FF0000; - Uint32 dstgmask = 0x0000FF00; - Uint32 dstbmask = 0x000000FF; - Uint32 dstamask = 0x00000000; - Uint32 dstflags = 0; - int dstw = 640; - int dsth = 480; - Uint32 srcbpp = 32; - Uint32 srcrmask = 0x00FF0000; - Uint32 srcgmask = 0x0000FF00; - Uint32 srcbmask = 0x000000FF; - Uint32 srcamask = 0x00000000; - Uint32 srcflags = 0; - int srcw = 640; - int srch = 480; - Uint32 origsrcalphaflags = 0; - Uint32 origdstalphaflags = 0; - Uint32 srcalphaflags = 0; - Uint32 dstalphaflags = 0; - Uint8 origsrcalpha = 255; - Uint8 origdstalpha = 255; - Uint8 srcalpha = 255; - Uint8 dstalpha = 255; - int screenSurface = 0; - int i = 0; - - for (i = 1; i < argc; i++) { - const char *arg = argv[i]; - - if (strcmp(arg, "--dstbpp") == 0) - dstbpp = atoi(argv[++i]); - else if (strcmp(arg, "--dstrmask") == 0) - dstrmask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--dstgmask") == 0) - dstgmask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--dstbmask") == 0) - dstbmask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--dstamask") == 0) - dstamask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--dstwidth") == 0) - dstw = atoi(argv[++i]); - else if (strcmp(arg, "--dstheight") == 0) - dsth = atoi(argv[++i]); - else if (strcmp(arg, "--dsthwsurface") == 0) - dstflags |= SDL_HWSURFACE; - else if (strcmp(arg, "--srcbpp") == 0) - srcbpp = atoi(argv[++i]); - else if (strcmp(arg, "--srcrmask") == 0) - srcrmask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--srcgmask") == 0) - srcgmask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--srcbmask") == 0) - srcbmask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--srcamask") == 0) - srcamask = atoi_hex(argv[++i]); - else if (strcmp(arg, "--srcwidth") == 0) - srcw = atoi(argv[++i]); - else if (strcmp(arg, "--srcheight") == 0) - srch = atoi(argv[++i]); - else if (strcmp(arg, "--srchwsurface") == 0) - srcflags |= SDL_HWSURFACE; - else if (strcmp(arg, "--seconds") == 0) - testSeconds = atoi(argv[++i]); - else if (strcmp(arg, "--screen") == 0) - screenSurface = 1; - else if (strcmp(arg, "--dumpfile") == 0) - dumpfile = argv[++i]; - /* !!! FIXME: set colorkey. */ - else if (0) { /* !!! FIXME: we handle some commandlines elsewhere now */ - fprintf(stderr, "Unknown commandline option: %s\n", arg); - return (0); - } - } - - if (SDL_Init(SDL_INIT_VIDEO) == -1) { - fprintf(stderr, "SDL_Init failed: %s\n", SDL_GetError()); - return (0); - } - - bmp = SDL_LoadBMP("sample.bmp"); - if (bmp == NULL) { - fprintf(stderr, "SDL_LoadBMP failed: %s\n", SDL_GetError()); - SDL_Quit(); - return (0); - } - - if ((dstflags & SDL_HWSURFACE) == 0) - dstflags |= SDL_SWSURFACE; - if ((srcflags & SDL_HWSURFACE) == 0) - srcflags |= SDL_SWSURFACE; - - if (screenSurface) - dest = SDL_SetVideoMode(dstw, dsth, dstbpp, dstflags); - else { - dest = SDL_CreateRGBSurface(dstflags, dstw, dsth, dstbpp, - dstrmask, dstgmask, dstbmask, dstamask); - } - - if (dest == NULL) { - fprintf(stderr, "dest surface creation failed: %s\n", SDL_GetError()); - SDL_Quit(); - return (0); - } - - src = SDL_CreateRGBSurface(srcflags, srcw, srch, srcbpp, - srcrmask, srcgmask, srcbmask, srcamask); - if (src == NULL) { - fprintf(stderr, "src surface creation failed: %s\n", SDL_GetError()); - SDL_Quit(); - return (0); - } - - /* handle alpha settings... */ - srcalphaflags = (src->flags & SDL_SRCALPHA) | (src->flags & SDL_RLEACCEL); - dstalphaflags = - (dest->flags & SDL_SRCALPHA) | (dest->flags & SDL_RLEACCEL); - origsrcalphaflags = srcalphaflags; - origdstalphaflags = dstalphaflags; - SDL_GetSurfaceAlphaMod(src, &srcalpha); - SDL_GetSurfaceAlphaMod(dest, &dstalpha); - origsrcalpha = srcalpha; - origdstalpha = dstalpha; - for (i = 1; i < argc; i++) { - const char *arg = argv[i]; - - if (strcmp(arg, "--srcalpha") == 0) - srcalpha = atoi(argv[++i]); - else if (strcmp(arg, "--dstalpha") == 0) - dstalpha = atoi(argv[++i]); - else if (strcmp(arg, "--srcsrcalpha") == 0) - srcalphaflags |= SDL_SRCALPHA; - else if (strcmp(arg, "--srcnosrcalpha") == 0) - srcalphaflags &= ~SDL_SRCALPHA; - else if (strcmp(arg, "--srcrleaccel") == 0) - srcalphaflags |= SDL_RLEACCEL; - else if (strcmp(arg, "--srcnorleaccel") == 0) - srcalphaflags &= ~SDL_RLEACCEL; - else if (strcmp(arg, "--dstsrcalpha") == 0) - dstalphaflags |= SDL_SRCALPHA; - else if (strcmp(arg, "--dstnosrcalpha") == 0) - dstalphaflags &= ~SDL_SRCALPHA; - else if (strcmp(arg, "--dstrleaccel") == 0) - dstalphaflags |= SDL_RLEACCEL; - else if (strcmp(arg, "--dstnorleaccel") == 0) - dstalphaflags &= ~SDL_RLEACCEL; - } - if ((dstalphaflags != origdstalphaflags) || (origdstalpha != dstalpha)) - SDL_SetAlpha(dest, dstalphaflags, dstalpha); - if ((srcalphaflags != origsrcalphaflags) || (origsrcalpha != srcalpha)) - SDL_SetAlpha(src, srcalphaflags, srcalpha); - - /* set some sane defaults so we can see if the blit code is broken... */ - SDL_FillRect(dest, NULL, SDL_MapRGB(dest->format, 0, 0, 0)); - SDL_FillRect(src, NULL, SDL_MapRGB(src->format, 0, 0, 0)); - - blitCentered(src, bmp); - SDL_FreeSurface(bmp); - - if (dumpfile) - SDL_SaveBMP(src, dumpfile); /* make sure initial convert is sane. */ - - output_details(); - - return (1); -} - - -static void -test_blit_speed(void) -{ - Uint32 clearColor = SDL_MapRGB(dest->format, 0, 0, 0); - Uint32 iterations = 0; - Uint32 elasped = 0; - Uint32 end = 0; - Uint32 now = 0; - Uint32 last = 0; - int testms = testSeconds * 1000; - int wmax = (dest->w - src->w); - int hmax = (dest->h - src->h); - int isScreen = (SDL_GetVideoSurface() == dest); - SDL_Event event; - - printf("Testing blit speed for %d seconds...\n", testSeconds); - - now = SDL_GetTicks(); - end = now + testms; - - do { - /* pump the event queue occasionally to keep OS happy... */ - if (now - last > 1000) { - last = now; - while (SDL_PollEvent(&event)) { /* no-op. */ - } - } - - iterations++; - elasped += blit(dest, src, randRange(0, wmax), randRange(0, hmax)); - if (isScreen) { - SDL_Flip(dest); /* show it! */ - SDL_FillRect(dest, NULL, clearColor); /* blank it for next time! */ - } - - now = SDL_GetTicks(); - } while (now < end); - - printf("Non-blitting crap accounted for %d percent of this run.\n", - percent(testms - elasped, testms)); - - printf("%d blits took %d ms (%d fps).\n", - (int) iterations, - (int) elasped, - (int) (((float) iterations) / (((float) elasped) / 1000.0f))); -} - -int -main(int argc, char **argv) -{ - int initialized = setup_test(argc, argv); - if (initialized) { - test_blit_speed(); - SDL_Quit(); - } - return (!initialized); -} - -/* end of testblitspeed.c ... */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testcursor.c b/3rdparty/SDL-1.3.0-5387/test/testcursor.c deleted file mode 100644 index dff54dc443..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testcursor.c +++ /dev/null @@ -1,224 +0,0 @@ -#include -#include - -#include "SDL.h" - -/* This is an example 16x16 cursor - top left : black - top right : inverted color or black - bottom left: white - bottom right: transparent - (swap left and right for different endianness) -*/ - -Uint16 cursor_data[16] = { - 0xffff, - 0xffff, - 0xffff, - 0xffff, - - 0xffff, - 0xffff, - 0xffff, - 0xffff, - - 0x0000, - 0x0000, - 0x0000, - 0x0000, - - 0x0000, - 0x0000, - 0x0000, - 0x0000 -}; - -Uint16 cursor_mask[16] = { - 0xff00, - 0xff00, - 0xff00, - 0xff00, - - 0xff00, - 0xff00, - 0xff00, - 0xff00, - - 0xff00, - 0xff00, - 0xff00, - 0xff00, - - 0xff00, - 0xff00, - 0xff00, - 0xff00 -}; - -/* another test cursor: smaller than 16x16, and with an odd height */ - -Uint8 small_cursor_data[11] = - { 0x00, 0x18, 0x08, 0x38, 0x44, 0x54, 0x44, 0x38, 0x20, 0x20, 0x00 }; -Uint8 small_cursor_mask[11] = - { 0x3C, 0x3C, 0x3C, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x78, 0x70, 0x70 }; - -/* XPM */ -static const char *arrow[] = { - /* width height num_colors chars_per_pixel */ - " 32 32 3 1", - /* colors */ - "X c #000000", - ". c #ffffff", - " c None", - /* pixels */ - "X ", - "XX ", - "X.X ", - "X..X ", - "X...X ", - "X....X ", - "X.....X ", - "X......X ", - "X.......X ", - "X........X ", - "X.....XXXXX ", - "X..X..X ", - "X.X X..X ", - "XX X..X ", - "X X..X ", - " X..X ", - " X..X ", - " X..X ", - " XX ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - "0,0" -}; - -static SDL_Cursor * -create_arrow_cursor() -{ - int i, row, col; - Uint8 data[4 * 32]; - Uint8 mask[4 * 32]; - int hot_x, hot_y; - - i = -1; - for (row = 0; row < 32; ++row) { - for (col = 0; col < 32; ++col) { - if (col % 8) { - data[i] <<= 1; - mask[i] <<= 1; - } else { - ++i; - data[i] = mask[i] = 0; - } - switch (arrow[4 + row][col]) { - case 'X': - data[i] |= 0x01; - mask[i] |= 0x01; - break; - case '.': - mask[i] |= 0x01; - break; - case ' ': - break; - } - } - } - sscanf(arrow[4 + row], "%d,%d", &hot_x, &hot_y); - return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y); -} - - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - SDL_bool quit = SDL_FALSE, first_time = SDL_TRUE; - SDL_Cursor *cursor[3]; - int current; - - /* Load the SDL library */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - screen = SDL_SetVideoMode(640, 480, 8, SDL_ANYFORMAT); - if (screen == NULL) { - fprintf(stderr, "Couldn't initialize video mode: %s\n", - SDL_GetError()); - return (1); - } - - SDL_FillRect(screen, NULL, 0x664422); - - cursor[0] = SDL_CreateCursor((Uint8 *) cursor_data, (Uint8 *) cursor_mask, - 16, 16, 8, 8); - if (cursor[0] == NULL) { - fprintf(stderr, "Couldn't initialize test cursor: %s\n", - SDL_GetError()); - SDL_Quit(); - return (1); - } - cursor[1] = create_arrow_cursor(); - if (cursor[1] == NULL) { - fprintf(stderr, "Couldn't initialize arrow cursor: %s\n", - SDL_GetError()); - SDL_FreeCursor(cursor[0]); - SDL_Quit(); - return (1); - } - cursor[2] = SDL_CreateCursor(small_cursor_data, small_cursor_mask, - 8, 11, 3, 5); - if (cursor[2] == NULL) { - fprintf(stderr, "Couldn't initialize test cursor: %s\n", - SDL_GetError()); - SDL_Quit(); - return (1); - } - - current = 0; - SDL_SetCursor(cursor[current]); - - while (!quit) { - SDL_Event event; - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_MOUSEBUTTONDOWN: - current = (current + 1) % 3; - SDL_SetCursor(cursor[current]); - break; - case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_ESCAPE) { - quit = SDL_TRUE; - } - break; - case SDL_QUIT: - quit = SDL_TRUE; - break; - } - } - SDL_Flip(screen); - SDL_Delay(1); - } - - SDL_FreeCursor(cursor[0]); - SDL_FreeCursor(cursor[1]); - SDL_FreeCursor(cursor[2]); - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testdraw2.c b/3rdparty/SDL-1.3.0-5387/test/testdraw2.c deleted file mode 100644 index 2edfe40efe..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testdraw2.c +++ /dev/null @@ -1,265 +0,0 @@ - -/* Simple program: draw as many random objects on the screen as possible */ - -#include -#include -#include - -#include "common.h" - -#define NUM_OBJECTS 100 - -static CommonState *state; -static int num_objects; -static SDL_bool cycle_color; -static SDL_bool cycle_alpha; -static int cycle_direction = 1; -static int current_alpha = 255; -static int current_color = 255; -static SDL_BlendMode blendMode = SDL_BLENDMODE_NONE; - -void -DrawPoints(SDL_Renderer * renderer) -{ - int i; - int x, y; - SDL_Rect viewport; - - /* Query the sizes */ - SDL_RenderGetViewport(renderer, &viewport); - - for (i = 0; i < num_objects * 4; ++i) { - /* Cycle the color and alpha, if desired */ - if (cycle_color) { - current_color += cycle_direction; - if (current_color < 0) { - current_color = 0; - cycle_direction = -cycle_direction; - } - if (current_color > 255) { - current_color = 255; - cycle_direction = -cycle_direction; - } - } - if (cycle_alpha) { - current_alpha += cycle_direction; - if (current_alpha < 0) { - current_alpha = 0; - cycle_direction = -cycle_direction; - } - if (current_alpha > 255) { - current_alpha = 255; - cycle_direction = -cycle_direction; - } - } - SDL_SetRenderDrawColor(renderer, 255, (Uint8) current_color, - (Uint8) current_color, (Uint8) current_alpha); - - x = rand() % viewport.w; - y = rand() % viewport.h; - SDL_RenderDrawPoint(renderer, x, y); - } -} - -void -DrawLines(SDL_Renderer * renderer) -{ - int i; - int x1, y1, x2, y2; - SDL_Rect viewport; - - /* Query the sizes */ - SDL_RenderGetViewport(renderer, &viewport); - - for (i = 0; i < num_objects; ++i) { - /* Cycle the color and alpha, if desired */ - if (cycle_color) { - current_color += cycle_direction; - if (current_color < 0) { - current_color = 0; - cycle_direction = -cycle_direction; - } - if (current_color > 255) { - current_color = 255; - cycle_direction = -cycle_direction; - } - } - if (cycle_alpha) { - current_alpha += cycle_direction; - if (current_alpha < 0) { - current_alpha = 0; - cycle_direction = -cycle_direction; - } - if (current_alpha > 255) { - current_alpha = 255; - cycle_direction = -cycle_direction; - } - } - SDL_SetRenderDrawColor(renderer, 255, (Uint8) current_color, - (Uint8) current_color, (Uint8) current_alpha); - - if (i == 0) { - SDL_RenderDrawLine(renderer, 0, 0, viewport.w - 1, viewport.h - 1); - SDL_RenderDrawLine(renderer, 0, viewport.h - 1, viewport.w - 1, 0); - SDL_RenderDrawLine(renderer, 0, viewport.h / 2, viewport.w - 1, viewport.h / 2); - SDL_RenderDrawLine(renderer, viewport.w / 2, 0, viewport.w / 2, viewport.h - 1); - } else { - x1 = (rand() % (viewport.w*2)) - viewport.w; - x2 = (rand() % (viewport.w*2)) - viewport.w; - y1 = (rand() % (viewport.h*2)) - viewport.h; - y2 = (rand() % (viewport.h*2)) - viewport.h; - SDL_RenderDrawLine(renderer, x1, y1, x2, y2); - } - } -} - -void -DrawRects(SDL_Renderer * renderer) -{ - int i; - SDL_Rect rect; - SDL_Rect viewport; - - /* Query the sizes */ - SDL_RenderGetViewport(renderer, &viewport); - - for (i = 0; i < num_objects / 4; ++i) { - /* Cycle the color and alpha, if desired */ - if (cycle_color) { - current_color += cycle_direction; - if (current_color < 0) { - current_color = 0; - cycle_direction = -cycle_direction; - } - if (current_color > 255) { - current_color = 255; - cycle_direction = -cycle_direction; - } - } - if (cycle_alpha) { - current_alpha += cycle_direction; - if (current_alpha < 0) { - current_alpha = 0; - cycle_direction = -cycle_direction; - } - if (current_alpha > 255) { - current_alpha = 255; - cycle_direction = -cycle_direction; - } - } - SDL_SetRenderDrawColor(renderer, 255, (Uint8) current_color, - (Uint8) current_color, (Uint8) current_alpha); - - rect.w = rand() % (viewport.h / 2); - rect.h = rand() % (viewport.h / 2); - rect.x = (rand() % (viewport.w*2) - viewport.w) - (rect.w / 2); - rect.y = (rand() % (viewport.h*2) - viewport.h) - (rect.h / 2); - SDL_RenderFillRect(renderer, &rect); - } -} - -int -main(int argc, char *argv[]) -{ - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - /* Initialize parameters */ - num_objects = NUM_OBJECTS; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - consumed = -1; - if (SDL_strcasecmp(argv[i], "--blend") == 0) { - if (argv[i + 1]) { - if (SDL_strcasecmp(argv[i + 1], "none") == 0) { - blendMode = SDL_BLENDMODE_NONE; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) { - blendMode = SDL_BLENDMODE_BLEND; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "add") == 0) { - blendMode = SDL_BLENDMODE_ADD; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) { - blendMode = SDL_BLENDMODE_MOD; - consumed = 2; - } - } - } else if (SDL_strcasecmp(argv[i], "--cyclecolor") == 0) { - cycle_color = SDL_TRUE; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--cyclealpha") == 0) { - cycle_alpha = SDL_TRUE; - consumed = 1; - } else if (SDL_isdigit(*argv[i])) { - num_objects = SDL_atoi(argv[i]); - consumed = 1; - } - } - if (consumed < 0) { - fprintf(stderr, - "Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n", - argv[0], CommonUsage(state)); - return 1; - } - i += consumed; - } - if (!CommonInit(state)) { - return 2; - } - - /* Create the windows and initialize the renderers */ - for (i = 0; i < state->num_windows; ++i) { - SDL_Renderer *renderer = state->renderers[i]; - SDL_SetRenderDrawBlendMode(renderer, blendMode); - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - } - - srand((unsigned int)time(NULL)); - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - } - for (i = 0; i < state->num_windows; ++i) { - SDL_Renderer *renderer = state->renderers[i]; - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - - DrawRects(renderer); - DrawLines(renderer); - DrawPoints(renderer); - - SDL_RenderPresent(renderer); - } - } - - CommonQuit(state); - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - double fps = ((double) frames * 1000) / (now - then); - printf("%2.2f frames per second\n", fps); - } - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testdyngl.c b/3rdparty/SDL-1.3.0-5387/test/testdyngl.c deleted file mode 100644 index eb97cbeb77..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testdyngl.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Small SDL example to demonstrate dynamically loading - * OpenGL lib and functions - * - * (FYI it was supposed to look like snow in the wind or something...) - * - * Compile with : - * gcc testdyngl.c `sdl-config --libs --cflags` -o testdyngl -DHAVE_OPENGL - * - * You can specify a different OpenGL lib on the command line, i.e. : - * ./testdyngl /usr/X11R6/lib/libGL.so.1.2 - * or - * ./testdyngl /usr/lib/libGL.so.1.0.4496 - * - */ - -#include -#include - -#include "SDL.h" - -#ifdef __MACOS__ -#define HAVE_OPENGL -#endif - -#ifdef HAVE_OPENGL - -#include "SDL_opengl.h" - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -void * -get_funcaddr(const char *p) -{ - void *f = SDL_GL_GetProcAddress(p); - if (f) { - return f; - } else { - printf("Unable to get function pointer for %s\n", p); - quit(1); - } - return NULL; -} - -typedef struct -{ - void (APIENTRY * glBegin) (GLenum); - void (APIENTRY * glEnd) (); - void (APIENTRY * glVertex3f) (GLfloat, GLfloat, GLfloat); - void (APIENTRY * glClearColor) (GLfloat, GLfloat, GLfloat, GLfloat); - void (APIENTRY * glClear) (GLbitfield); - void (APIENTRY * glDisable) (GLenum); - void (APIENTRY * glEnable) (GLenum); - void (APIENTRY * glColor4ub) (GLubyte, GLubyte, GLubyte, GLubyte); - void (APIENTRY * glPointSize) (GLfloat); - void (APIENTRY * glHint) (GLenum, GLenum); - void (APIENTRY * glBlendFunc) (GLenum, GLenum); - void (APIENTRY * glMatrixMode) (GLenum); - void (APIENTRY * glLoadIdentity) (); - void (APIENTRY * glOrtho) (GLdouble, GLdouble, GLdouble, GLdouble, - GLdouble, GLdouble); - void (APIENTRY * glRotatef) (GLfloat, GLfloat, GLfloat, GLfloat); - void (APIENTRY * glViewport) (GLint, GLint, GLsizei, GLsizei); - void (APIENTRY * glFogf) (GLenum, GLfloat); - const GLubyte* (APIENTRY * glGetString) (GLenum); -} -glfuncs; - -void -init_glfuncs(glfuncs * f) -{ - f->glBegin = get_funcaddr("glBegin"); - f->glEnd = get_funcaddr("glEnd"); - f->glVertex3f = get_funcaddr("glVertex3f"); - f->glClearColor = get_funcaddr("glClearColor"); - f->glClear = get_funcaddr("glClear"); - f->glDisable = get_funcaddr("glDisable"); - f->glEnable = get_funcaddr("glEnable"); - f->glColor4ub = get_funcaddr("glColor4ub"); - f->glPointSize = get_funcaddr("glPointSize"); - f->glHint = get_funcaddr("glHint"); - f->glBlendFunc = get_funcaddr("glBlendFunc"); - f->glMatrixMode = get_funcaddr("glMatrixMode"); - f->glLoadIdentity = get_funcaddr("glLoadIdentity"); - f->glOrtho = get_funcaddr("glOrtho"); - f->glRotatef = get_funcaddr("glRotatef"); - f->glViewport = get_funcaddr("glViewport"); - f->glFogf = get_funcaddr("glFogf"); - f->glGetString = get_funcaddr("glGetString"); - - printf("Vendor : %s\n", f->glGetString(GL_VENDOR)); - printf("Renderer : %s\n", f->glGetString(GL_RENDERER)); - printf("Version : %s\n", f->glGetString(GL_VERSION)); - printf("Extensions : %s\n", f->glGetString(GL_EXTENSIONS)); -} - -#define NB_PIXELS 1000 - -int -main(int argc, char *argv[]) -{ - glfuncs f; - int i; - SDL_Event event; - int done = 0; - GLfloat pixels[NB_PIXELS * 3]; - const char *gl_library = NULL; /* Use the default GL library */ - - if (argv[1]) { - gl_library = argv[1]; - } - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - printf("Unable to init SDL : %s\n", SDL_GetError()); - return (1); - } - - if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) < 0) { - printf("Unable to set GL attribute : %s\n", SDL_GetError()); - quit(1); - } - - if (SDL_GL_LoadLibrary(gl_library) < 0) { - printf("Unable to dynamically open GL lib : %s\n", SDL_GetError()); - quit(1); - } - - if (SDL_SetVideoMode(640, 480, 0, SDL_OPENGL) == NULL) { - printf("Unable to open video mode : %s\n", SDL_GetError()); - quit(1); - } - - /* Set the window manager title bar */ - SDL_WM_SetCaption("SDL Dynamic OpenGL Loading Test", "testdyngl"); - - init_glfuncs(&f); - - for (i = 0; i < NB_PIXELS; i++) { - pixels[3 * i] = rand() % 250 - 125; - pixels[3 * i + 1] = rand() % 250 - 125; - pixels[3 * i + 2] = rand() % 250 - 125; - } - - f.glViewport(0, 0, 640, 480); - - f.glMatrixMode(GL_PROJECTION); - f.glLoadIdentity(); - f.glOrtho(-100, 100, -100, 100, -500, 500); - - f.glMatrixMode(GL_MODELVIEW); - f.glLoadIdentity(); - - f.glEnable(GL_DEPTH_TEST); - f.glDisable(GL_TEXTURE_2D); - f.glEnable(GL_BLEND); - f.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - f.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - f.glEnable(GL_POINT_SMOOTH); - f.glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); - f.glPointSize(5.0f); - f.glEnable(GL_FOG); - f.glFogf(GL_FOG_START, -500); - f.glFogf(GL_FOG_END, 500); - f.glFogf(GL_FOG_DENSITY, 0.005); - - do { - f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - f.glRotatef(2.0, 1.0, 1.0, 1.0); - f.glRotatef(1.0, 0.0, 1.0, 1.0); - - f.glColor4ub(255, 255, 255, 255); - f.glBegin(GL_POINTS); - for (i = 0; i < NB_PIXELS; i++) { - f.glVertex3f(pixels[3 * i], pixels[3 * i + 1], pixels[3 * i + 2]); - } - f.glEnd(); - SDL_GL_SwapBuffers(); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - done = 1; - } - - SDL_Delay(20); - } while (!done); - - SDL_Quit(); - return 0; -} - -#else /* HAVE_OPENGL */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGL */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testdyngles.c b/3rdparty/SDL-1.3.0-5387/test/testdyngles.c deleted file mode 100644 index 0ca58260d8..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testdyngles.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Small SDL example to demonstrate dynamically loading - * OpenGL lib and functions - * - * (FYI it was supposed to look like snow in the wind or something...) - * - * Compile with : - * gcc testdyngl.c `sdl-config --libs --cflags` -o testdyngl -DHAVE_OPENGL - * - * You can specify a different OpenGL lib on the command line, i.e. : - * ./testdyngl /usr/X11R6/lib/libGL.so.1.2 - * or - * ./testdyngl /usr/lib/libGL.so.1.0.4496 - * - */ - -#include -#include - -#include "SDL.h" - -#ifdef __IPHONEOS__ -#define HAVE_OPENGLES -#endif - -#ifdef HAVE_OPENGLES - -#include "SDL_opengles.h" - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -void * -get_funcaddr(const char *p) -{ - void *f = SDL_GL_GetProcAddress(p); - if (f) { - return f; - } else { - printf("Unable to get function pointer for %s\n", p); - quit(1); - } - return NULL; -} - -typedef struct -{ - void (APIENTRY * glEnableClientState) (GLenum array); - void (APIENTRY * glDisableClientState) (GLenum array); - void (APIENTRY * glVertexPointer) (GLint size, GLenum type, - GLsizei stride, - const GLvoid * pointer); - void (APIENTRY * glDrawArrays) (GLenum mode, GLint first, GLsizei count); - - - void (APIENTRY * glClearColor) (GLfloat, GLfloat, GLfloat, GLfloat); - void (APIENTRY * glClear) (GLbitfield); - void (APIENTRY * glDisable) (GLenum); - void (APIENTRY * glEnable) (GLenum); - void (APIENTRY * glColor4f) (GLfloat, GLfloat, GLfloat, GLfloat); - void (APIENTRY * glPointSize) (GLfloat); - void (APIENTRY * glHint) (GLenum, GLenum); - void (APIENTRY * glBlendFunc) (GLenum, GLenum); - void (APIENTRY * glMatrixMode) (GLenum); - void (APIENTRY * glLoadIdentity) (); - void (APIENTRY * glOrthof) (GLfloat, GLfloat, GLfloat, GLfloat, - GLfloat, GLfloat); - void (APIENTRY * glRotatef) (GLfloat, GLfloat, GLfloat, GLfloat); - void (APIENTRY * glViewport) (GLint, GLint, GLsizei, GLsizei); - void (APIENTRY * glFogf) (GLenum, GLfloat); -} -glfuncs; - -void -init_glfuncs(glfuncs * f) -{ - f->glEnableClientState = get_funcaddr("glEnableClientState"); - f->glDisableClientState = get_funcaddr("glDisableClientState"); - f->glVertexPointer = get_funcaddr("glVertexPointer"); - f->glDrawArrays = get_funcaddr("glDrawArrays"); - f->glClearColor = get_funcaddr("glClearColor"); - f->glClear = get_funcaddr("glClear"); - f->glDisable = get_funcaddr("glDisable"); - f->glEnable = get_funcaddr("glEnable"); - f->glColor4f = get_funcaddr("glColor4f"); - f->glPointSize = get_funcaddr("glPointSize"); - f->glHint = get_funcaddr("glHint"); - f->glBlendFunc = get_funcaddr("glBlendFunc"); - f->glMatrixMode = get_funcaddr("glMatrixMode"); - f->glLoadIdentity = get_funcaddr("glLoadIdentity"); - f->glOrthof = get_funcaddr("glOrthof"); - f->glRotatef = get_funcaddr("glRotatef"); - f->glViewport = get_funcaddr("glViewport"); - f->glFogf = get_funcaddr("glFogf"); -} - -#define NB_PIXELS 1000 - -int -main(int argc, char *argv[]) -{ - glfuncs f; - int i; - SDL_Event event; - int done = 0; - GLfloat pixels[NB_PIXELS * 3]; - const char *gl_library = NULL; /* Use the default GL library */ - - int video_w, video_h; - - /* you may want to change these according to the platform */ - video_w = 320; - video_h = 480; - - if (argv[1]) { - gl_library = argv[1]; - } - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - printf("Unable to init SDL : %s\n", SDL_GetError()); - return (1); - } - - if (SDL_GL_LoadLibrary(gl_library) < 0) { - printf("Unable to dynamically open GL ES lib : %s\n", SDL_GetError()); - quit(1); - } - - if (SDL_SetVideoMode(video_h, video_w, 0, SDL_OPENGL) == NULL) { - printf("Unable to open video mode : %s\n", SDL_GetError()); - quit(1); - } - - /* Set the window manager title bar */ - SDL_WM_SetCaption("SDL Dynamic OpenGL ES Loading Test", "testdyngles"); - - init_glfuncs(&f); - - for (i = 0; i < NB_PIXELS; i++) { - pixels[3 * i] = rand() % 250 - 125; - pixels[3 * i + 1] = rand() % 250 - 125; - pixels[3 * i + 2] = rand() % 250 - 125; - } - - f.glViewport(0, 0, video_w, video_h); - f.glMatrixMode(GL_PROJECTION); - f.glLoadIdentity(); - f.glOrthof(-100, 100, -100, 100, -500, 500); - - f.glMatrixMode(GL_MODELVIEW); - f.glLoadIdentity(); - - f.glEnable(GL_DEPTH_TEST); - f.glDisable(GL_TEXTURE_2D); - f.glEnable(GL_BLEND); - f.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - f.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - f.glEnable(GL_POINT_SMOOTH); - f.glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); - f.glPointSize(1.0f); - f.glEnable(GL_FOG); - f.glFogf(GL_FOG_START, -500); - f.glFogf(GL_FOG_END, 500); - f.glFogf(GL_FOG_DENSITY, 0.005); - - f.glVertexPointer(3, GL_FLOAT, 0, pixels); - f.glEnableClientState(GL_VERTEX_ARRAY); - - do { - f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - f.glRotatef(2.0, 1.0, 1.0, 1.0); - f.glRotatef(1.0, 0.0, 1.0, 1.0); - - f.glColor4f(1.0, 1.0, 1.0, 1.0); - - f.glDrawArrays(GL_POINTS, 0, NB_PIXELS); - - SDL_GL_SwapBuffers(); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_QUIT) - done = 1; - if (event.type == SDL_KEYDOWN) - done = 1; - } - - SDL_Delay(20); - } - while (!done); - - f.glDisableClientState(GL_VERTEX_ARRAY); - - SDL_Quit(); - return 0; -} - -#else /* HAVE_OPENGLES */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL ES support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGLES */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testerror.c b/3rdparty/SDL-1.3.0-5387/test/testerror.c deleted file mode 100644 index 09f0ac71b4..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testerror.c +++ /dev/null @@ -1,64 +0,0 @@ - -/* Simple test of the SDL threading code and error handling */ - -#include -#include -#include - -#include "SDL.h" -#include "SDL_thread.h" - -static int alive = 0; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int SDLCALL -ThreadFunc(void *data) -{ - /* Set the child thread error string */ - SDL_SetError("Thread %s (%lu) had a problem: %s", - (char *) data, SDL_ThreadID(), "nevermind"); - while (alive) { - printf("Thread '%s' is alive!\n", (char *) data); - SDL_Delay(1 * 1000); - } - printf("Child thread error string: %s\n", SDL_GetError()); - return (0); -} - -int -main(int argc, char *argv[]) -{ - SDL_Thread *thread; - - /* Load the SDL library */ - if (SDL_Init(0) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Set the error value for the main thread */ - SDL_SetError("No worries"); - - alive = 1; - thread = SDL_CreateThread(ThreadFunc, "#1"); - if (thread == NULL) { - fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); - quit(1); - } - SDL_Delay(5 * 1000); - printf("Waiting for thread #1\n"); - alive = 0; - SDL_WaitThread(thread, NULL); - - printf("Main thread error string: %s\n", SDL_GetError()); - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testfile.c b/3rdparty/SDL-1.3.0-5387/test/testfile.c deleted file mode 100644 index 6657f40ee3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testfile.c +++ /dev/null @@ -1,272 +0,0 @@ - -/* sanity tests on SDL_rwops.c (usefull for alternative implementations of stdio rwops) */ - -// quiet windows compiler warnings -#define _CRT_NONSTDC_NO_WARNINGS - -#include - -#ifndef _MSC_VER -#include -#endif - -#include "SDL.h" -#include "SDL_endian.h" - - -#include - -/* WARNING ! those 2 files will be destroyed by this test program */ - -#ifdef __IPHONEOS__ -#define FBASENAME1 "../Documents/sdldata1" /* this file will be created during tests */ -#define FBASENAME2 "../Documents/sdldata2" /* this file should not exist before starting test */ -#else -#define FBASENAME1 "sdldata1" /* this file will be created during tests */ -#define FBASENAME2 "sdldata2" /* this file should not exist before starting test */ -#endif - -#ifndef NULL -#define NULL ((void *)0) -#endif - -static void -cleanup(void) -{ - - unlink(FBASENAME1); - unlink(FBASENAME2); -} - -static void -rwops_error_quit(unsigned line, SDL_RWops * rwops) -{ - - printf("testfile.c(%d): failed\n", line); - if (rwops) { - rwops->close(rwops); /* This calls SDL_FreeRW(rwops); */ - } - cleanup(); - exit(1); /* quit with rwops error (test failed) */ -} - -#define RWOP_ERR_QUIT(x) rwops_error_quit( __LINE__, (x) ) - - - -int -main(int argc, char *argv[]) -{ - SDL_RWops *rwops = NULL; - char test_buf[30]; - - cleanup(); - -/* test 1 : basic argument test: all those calls to SDL_RWFromFile should fail */ - - rwops = SDL_RWFromFile(NULL, NULL); - if (rwops) - RWOP_ERR_QUIT(rwops); - rwops = SDL_RWFromFile(NULL, "ab+"); - if (rwops) - RWOP_ERR_QUIT(rwops); - rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj"); - if (rwops) - RWOP_ERR_QUIT(rwops); - rwops = SDL_RWFromFile("something", ""); - if (rwops) - RWOP_ERR_QUIT(rwops); - rwops = SDL_RWFromFile("something", NULL); - if (rwops) - RWOP_ERR_QUIT(rwops); - printf("test1 OK\n"); - -/* test 2 : check that inexistant file is not successfully opened/created when required */ -/* modes : r, r+ implie that file MUST exist - modes : a, a+, w, w+ checks that it succeeds (file may not exists) - - */ - rwops = SDL_RWFromFile(FBASENAME2, "rb"); /* this file doesn't exist that call must fail */ - if (rwops) - RWOP_ERR_QUIT(rwops); - rwops = SDL_RWFromFile(FBASENAME2, "rb+"); /* this file doesn't exist that call must fail */ - if (rwops) - RWOP_ERR_QUIT(rwops); - rwops = SDL_RWFromFile(FBASENAME2, "wb"); - if (!rwops) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - unlink(FBASENAME2); - rwops = SDL_RWFromFile(FBASENAME2, "wb+"); - if (!rwops) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - unlink(FBASENAME2); - rwops = SDL_RWFromFile(FBASENAME2, "ab"); - if (!rwops) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - unlink(FBASENAME2); - rwops = SDL_RWFromFile(FBASENAME2, "ab+"); - if (!rwops) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - unlink(FBASENAME2); - printf("test2 OK\n"); - -/* test 3 : creation, writing , reading, seeking, - test : w mode, r mode, w+ mode - */ - rwops = SDL_RWFromFile(FBASENAME1, "wb"); /* write only */ - if (!rwops) - RWOP_ERR_QUIT(rwops); - if (1 != rwops->write(rwops, "1234567890", 10, 1)) - RWOP_ERR_QUIT(rwops); - if (10 != rwops->write(rwops, "1234567890", 1, 10)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->write(rwops, "1234567", 1, 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); /* we are in write only mode */ - rwops->close(rwops); - - rwops = SDL_RWFromFile(FBASENAME1, "rb"); /* read mode, file must exists */ - if (!rwops) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (20 != rwops->seek(rwops, -7, RW_SEEK_END)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->read(rwops, test_buf, 1, 7)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "1234567", 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 10, 100)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, -27, RW_SEEK_CUR)) - RWOP_ERR_QUIT(rwops); - if (2 != rwops->read(rwops, test_buf, 10, 3)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "12345678901234567890", 20)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->write(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); /* readonly mode */ - rwops->close(rwops); - -/* test 3: same with w+ mode */ - rwops = SDL_RWFromFile(FBASENAME1, "wb+"); /* write + read + truncation */ - if (!rwops) - RWOP_ERR_QUIT(rwops); - if (1 != rwops->write(rwops, "1234567890", 10, 1)) - RWOP_ERR_QUIT(rwops); - if (10 != rwops->write(rwops, "1234567890", 1, 10)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->write(rwops, "1234567", 1, 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (1 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); /* we are in read/write mode */ - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (20 != rwops->seek(rwops, -7, RW_SEEK_END)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->read(rwops, test_buf, 1, 7)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "1234567", 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 10, 100)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, -27, RW_SEEK_CUR)) - RWOP_ERR_QUIT(rwops); - if (2 != rwops->read(rwops, test_buf, 10, 3)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "12345678901234567890", 20)) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - printf("test3 OK\n"); - -/* test 4: same in r+ mode */ - rwops = SDL_RWFromFile(FBASENAME1, "rb+"); /* write + read + file must exists, no truncation */ - if (!rwops) - RWOP_ERR_QUIT(rwops); - if (1 != rwops->write(rwops, "1234567890", 10, 1)) - RWOP_ERR_QUIT(rwops); - if (10 != rwops->write(rwops, "1234567890", 1, 10)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->write(rwops, "1234567", 1, 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (1 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); /* we are in read/write mode */ - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (20 != rwops->seek(rwops, -7, RW_SEEK_END)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->read(rwops, test_buf, 1, 7)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "1234567", 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 10, 100)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, -27, RW_SEEK_CUR)) - RWOP_ERR_QUIT(rwops); - if (2 != rwops->read(rwops, test_buf, 10, 3)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "12345678901234567890", 20)) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - printf("test4 OK\n"); - -/* test5 : append mode */ - rwops = SDL_RWFromFile(FBASENAME1, "ab+"); /* write + read + append */ - if (!rwops) - RWOP_ERR_QUIT(rwops); - if (1 != rwops->write(rwops, "1234567890", 10, 1)) - RWOP_ERR_QUIT(rwops); - if (10 != rwops->write(rwops, "1234567890", 1, 10)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->write(rwops, "1234567", 1, 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - - if (1 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - - if (20 + 27 != rwops->seek(rwops, -7, RW_SEEK_END)) - RWOP_ERR_QUIT(rwops); - if (7 != rwops->read(rwops, test_buf, 1, 7)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "1234567", 7)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 1, 1)) - RWOP_ERR_QUIT(rwops); - if (0 != rwops->read(rwops, test_buf, 10, 100)) - RWOP_ERR_QUIT(rwops); - - if (27 != rwops->seek(rwops, -27, RW_SEEK_CUR)) - RWOP_ERR_QUIT(rwops); - - if (0 != rwops->seek(rwops, 0L, RW_SEEK_SET)) - RWOP_ERR_QUIT(rwops); - if (3 != rwops->read(rwops, test_buf, 10, 3)) - RWOP_ERR_QUIT(rwops); - if (SDL_memcmp(test_buf, "123456789012345678901234567123", 30)) - RWOP_ERR_QUIT(rwops); - rwops->close(rwops); - printf("test5 OK\n"); - cleanup(); - return 0; /* all ok */ -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testfill.c b/3rdparty/SDL-1.3.0-5387/test/testfill.c deleted file mode 100644 index 98086485a5..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testfill.c +++ /dev/null @@ -1,107 +0,0 @@ -/* Simple program: Fill the screen with colors as fast as possible */ - -#include -#include -#include -#include - -#include "SDL.h" - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - int width, height; - Uint8 video_bpp; - Uint32 videoflags; - Uint32 colors[3]; - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - width = 640; - height = 480; - video_bpp = 8; - videoflags = 0; - while (argc > 1) { - --argc; - if (strcmp(argv[argc - 1], "-width") == 0) { - width = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc - 1], "-height") == 0) { - height = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc - 1], "-bpp") == 0) { - video_bpp = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc], "-fullscreen") == 0) { - videoflags ^= SDL_FULLSCREEN; - } else { - fprintf(stderr, - "Usage: %s [-width N] [-height N] [-bpp N] [-fullscreen]\n", - argv[0]); - quit(1); - } - } - - /* Set video mode */ - screen = SDL_SetVideoMode(width, height, video_bpp, 0); - if (!screen) { - fprintf(stderr, "Couldn't set %dx%d video mode: %s\n", - width, height, SDL_GetError()); - quit(2); - } - - /* Get the colors */ - colors[0] = SDL_MapRGB(screen->format, 0xFF, 0x00, 0x00); - colors[1] = SDL_MapRGB(screen->format, 0x00, 0xFF, 0x00); - colors[2] = SDL_MapRGB(screen->format, 0x00, 0x00, 0xFF); - - /* Loop, filling and waiting for a keystroke */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_MOUSEBUTTONDOWN: - SDL_WarpMouse(screen->w / 2, screen->h / 2); - break; - case SDL_KEYDOWN: - /* Any keypress quits the app... */ - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - SDL_FillRect(screen, NULL, colors[frames%3]); - SDL_Flip(screen); - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - double fps = ((double) frames * 1000) / (now - then); - printf("%2.2f frames per second\n", fps); - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testgesture.c b/3rdparty/SDL-1.3.0-5387/test/testgesture.c deleted file mode 100644 index 0667c539e2..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testgesture.c +++ /dev/null @@ -1,299 +0,0 @@ -/* Usage: - * Spacebar to begin recording a gesture on all touches. - * s to save all touches into "./gestureSave" - * l to load all touches from "./gestureSave" - */ - -#include -#include -#include -#include -#include - - -/* Make sure we have good macros for printing 32 and 64 bit values */ -#ifndef PRIs32 -#define PRIs32 "d" -#endif -#ifndef PRIu32 -#define PRIu32 "u" -#endif -#ifndef PRIs64 -#ifdef __WIN32__ -#define PRIs64 "I64" -#else -#define PRIs64 "lld" -#endif -#endif -#ifndef PRIu64 -#ifdef __WIN32__ -#define PRIu64 "I64u" -#else -#define PRIu64 "llu" -#endif -#endif - -#define WIDTH 640 -#define HEIGHT 480 -#define BPP 4 -#define DEPTH 32 - -//MUST BE A POWER OF 2! -#define EVENT_BUF_SIZE 256 - - -#define VERBOSE SDL_FALSE - -SDL_Event events[EVENT_BUF_SIZE]; -int eventWrite; - -int colors[7] = {0xFF,0xFF00,0xFF0000,0xFFFF00,0x00FFFF,0xFF00FF,0xFFFFFF}; - -typedef struct { - float x,y; -} Point; - -typedef struct { - float ang,r; - Point p; -} Knob; - -Knob knob; - -void handler (int sig) -{ - printf ("exiting...(%d)\n", sig); - exit (0); -} - -void perror_exit (char *error) -{ - perror (error); - handler (9); -} - -void setpix(SDL_Surface *screen, float _x, float _y, unsigned int col) -{ - Uint32 *pixmem32; - Uint32 colour; - Uint8 r,g,b; - int x = (int)_x; - int y = (int)_y; - float a; - - if(x < 0 || x > screen->w) return; - if(y < 0 || y > screen->h) return; - - pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; - - SDL_memcpy(&colour,pixmem32,screen->format->BytesPerPixel); - - SDL_GetRGB(colour,screen->format,&r,&g,&b); - //r = 0;g = 0; b = 0; - a = (float)((col>>24)&0xFF); - if(a == 0) a = 0xFF; //Hack, to make things easier. - a /= 0xFF; - r = (Uint8)(r*(1-a) + ((col>>16)&0xFF)*(a)); - g = (Uint8)(g*(1-a) + ((col>> 8)&0xFF)*(a)); - b = (Uint8)(b*(1-a) + ((col>> 0)&0xFF)*(a)); - colour = SDL_MapRGB( screen->format,r, g, b); - - - *pixmem32 = colour; -} - -void drawLine(SDL_Surface *screen,float x0,float y0,float x1,float y1,unsigned int col) { - float t; - for(t=0;t<1;t+=(float)(1.f/SDL_max(SDL_fabs(x0-x1),SDL_fabs(y0-y1)))) - setpix(screen,x1+t*(x0-x1),y1+t*(y0-y1),col); -} - -void drawCircle(SDL_Surface* screen,float x,float y,float r,unsigned int c) -{ - float tx,ty; - float xr; - for(ty = (float)-SDL_fabs(r);ty <= (float)SDL_fabs((int)r);ty++) { - xr = (float)sqrt(r*r - ty*ty); - if(r > 0) { //r > 0 ==> filled circle - for(tx=-xr+.5f;tx<=xr-.5;tx++) { - setpix(screen,x+tx,y+ty,c); - } - } - else { - setpix(screen,x-xr+.5f,y+ty,c); - setpix(screen,x+xr-.5f,y+ty,c); - } - } -} - -void drawKnob(SDL_Surface* screen,Knob k) { - drawCircle(screen,k.p.x*screen->w,k.p.y*screen->h,k.r*screen->w,0xFFFFFF); - drawCircle(screen,(k.p.x+k.r/2*cosf(k.ang))*screen->w, - (k.p.y+k.r/2*sinf(k.ang))*screen->h,k.r/4*screen->w,0); -} - -void DrawScreen(SDL_Surface* screen) -{ - int x, y, i; - if(SDL_MUSTLOCK(screen)) - { - if(SDL_LockSurface(screen) < 0) return; - } - for(y = 0;y < screen->h;y++) - for(x = 0;x < screen->w;x++) - setpix(screen,(float)x,(float)y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); - - //draw Touch History - for(i = SDL_max(0,eventWrite - EVENT_BUF_SIZE);i < eventWrite;i++) { - SDL_Event event = events[i&(EVENT_BUF_SIZE-1)]; - int age = eventWrite - i - 1; - float x, y; - unsigned int c, col; - - if(event.type == SDL_FINGERMOTION || - event.type == SDL_FINGERDOWN || - event.type == SDL_FINGERUP) { - SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); - if(inTouch == NULL) continue; - - x = ((float)event.tfinger.x)/inTouch->xres; - y = ((float)event.tfinger.y)/inTouch->yres; - - //draw the touch: - c = colors[event.tfinger.touchId%7]; - col = - ((unsigned int)(c*(.1+.85))) | - ((unsigned int)((0xFF*(1-((float)age)/EVENT_BUF_SIZE))) & 0xFF)<<24; - - if(event.type == SDL_FINGERMOTION) - drawCircle(screen,x*screen->w,y*screen->h,5,col); - else if(event.type == SDL_FINGERDOWN) - drawCircle(screen,x*screen->w,y*screen->h,-10,col); - } - } - - if(knob.p.x > 0) - drawKnob(screen,knob); - - if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); - SDL_Flip(screen); -} - -SDL_Surface* initScreen(int width,int height) -{ - return SDL_SetVideoMode(width, height, DEPTH, - SDL_HWSURFACE | SDL_RESIZABLE); -} - -int main(int argc, char* argv[]) -{ - SDL_Surface *screen; - SDL_Event event; - SDL_bool quitting = SDL_FALSE; - SDL_RWops *src; - - //gesture variables - knob.r = .1f; - knob.ang = 0; - - if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; - - if (!(screen = initScreen(WIDTH,HEIGHT))) - { - SDL_Quit(); - return 1; - } - - while(!quitting) { - while(SDL_PollEvent(&event)) - { - //Record _all_ events - events[eventWrite & (EVENT_BUF_SIZE-1)] = event; - eventWrite++; - - switch (event.type) - { - case SDL_QUIT: - quitting = SDL_TRUE; - break; - case SDL_KEYDOWN: - switch (event.key.keysym.sym) - { - case SDLK_SPACE: - SDL_RecordGesture(-1); - break; - case SDLK_s: - src = SDL_RWFromFile("gestureSave","w"); - printf("Wrote %i templates\n",SDL_SaveAllDollarTemplates(src)); - SDL_RWclose(src); - break; - case SDLK_l: - src = SDL_RWFromFile("gestureSave","r"); - printf("Loaded: %i\n",SDL_LoadDollarTemplates(-1,src)); - SDL_RWclose(src); - break; - case SDLK_ESCAPE: - quitting = SDL_TRUE; - break; - } - break; - case SDL_VIDEORESIZE: - if (!(screen = initScreen(event.resize.w, - event.resize.h))) - { - SDL_Quit(); - return 1; - } - break; - case SDL_FINGERMOTION: -#if VERBOSE - printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, - event.tfinger.x,event.tfinger.y); -#endif - { - SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); - SDL_Finger* inFinger = SDL_GetFinger(inTouch,event.tfinger.fingerId); - } - break; - case SDL_FINGERDOWN: -#if VERBOSE - printf("Finger: %"PRIs64" down - x: %i, y: %i\n", - event.tfinger.fingerId,event.tfinger.x,event.tfinger.y); -#endif - break; - case SDL_FINGERUP: -#if VERBOSE - printf("Finger: %"PRIs64" up - x: %i, y: %i\n", - event.tfinger.fingerId,event.tfinger.x,event.tfinger.y); -#endif - break; - case SDL_MULTIGESTURE: -#if VERBOSE - printf("Multi Gesture: x = %f, y = %f, dAng = %f, dR = %f\n", - event.mgesture.x, - event.mgesture.y, - event.mgesture.dTheta, - event.mgesture.dDist); - printf("MG: numDownTouch = %i\n",event.mgesture.numFingers); -#endif - knob.p.x = event.mgesture.x; - knob.p.y = event.mgesture.y; - knob.ang += event.mgesture.dTheta; - knob.r += event.mgesture.dDist; - break; - case SDL_DOLLARGESTURE: - printf("Gesture %"PRIs64" performed, error: %f\n", - event.dgesture.gestureId, - event.dgesture.error); - break; - case SDL_DOLLARRECORD: - printf("Recorded gesture: %"PRIs64"\n",event.dgesture.gestureId); - break; - } - } - DrawScreen(screen); - } - SDL_Quit(); - return 0; -} - diff --git a/3rdparty/SDL-1.3.0-5387/test/testgl.c b/3rdparty/SDL-1.3.0-5387/test/testgl.c deleted file mode 100644 index dd315e8698..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testgl.c +++ /dev/null @@ -1,771 +0,0 @@ -#include -#include -#include -#include - -#include "SDL.h" - -#ifdef __MACOS__ -#define HAVE_OPENGL -#endif - -#ifdef HAVE_OPENGL - -#include "SDL_opengl.h" - -/* Undefine this if you want a flat cube instead of a rainbow cube */ -#define SHADED_CUBE - -/* Define this to be the name of the logo image to use with -logo */ -#define LOGO_FILE "icon.bmp" - -static SDL_Surface *global_image = NULL; -static GLuint global_texture = 0; -static GLuint cursor_texture = 0; - -/**********************************************************************/ - -void -HotKey_ToggleFullScreen(void) -{ - SDL_Surface *screen; - - screen = SDL_GetVideoSurface(); - if (SDL_WM_ToggleFullScreen(screen)) { - printf("Toggled fullscreen mode - now %s\n", - (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); - } else { - printf("Unable to toggle fullscreen mode\n"); - } -} - -void -HotKey_ToggleGrab(void) -{ - SDL_GrabMode mode; - - printf("Ctrl-G: toggling input grab!\n"); - mode = SDL_WM_GrabInput(SDL_GRAB_QUERY); - if (mode == SDL_GRAB_ON) { - printf("Grab was on\n"); - } else { - printf("Grab was off\n"); - } - mode = SDL_WM_GrabInput(!mode); - if (mode == SDL_GRAB_ON) { - printf("Grab is now on\n"); - } else { - printf("Grab is now off\n"); - } -} - -void -HotKey_Iconify(void) -{ - printf("Ctrl-Z: iconifying window!\n"); - SDL_WM_IconifyWindow(); -} - -int -HandleEvent(SDL_Event * event) -{ - int done; - - done = 0; - switch (event->type) { - case SDL_ACTIVEEVENT: - /* See what happened */ - printf("app %s ", event->active.gain ? "gained" : "lost"); - if (event->active.state & SDL_APPACTIVE) { - printf("active "); - } else if (event->active.state & SDL_APPMOUSEFOCUS) { - printf("mouse "); - } else if (event->active.state & SDL_APPINPUTFOCUS) { - printf("input "); - } - printf("focus\n"); - break; - - - case SDL_KEYDOWN: - if (event->key.keysym.sym == SDLK_ESCAPE) { - done = 1; - } - if ((event->key.keysym.sym == SDLK_g) && - (event->key.keysym.mod & KMOD_CTRL)) { - HotKey_ToggleGrab(); - } - if ((event->key.keysym.sym == SDLK_z) && - (event->key.keysym.mod & KMOD_CTRL)) { - HotKey_Iconify(); - } - if ((event->key.keysym.sym == SDLK_RETURN) && - (event->key.keysym.mod & KMOD_ALT)) { - HotKey_ToggleFullScreen(); - } - printf("key '%s' pressed\n", SDL_GetKeyName(event->key.keysym.sym)); - break; - case SDL_QUIT: - done = 1; - break; - } - return (done); -} - -void -SDL_GL_Enter2DMode() -{ - SDL_Surface *screen = SDL_GetVideoSurface(); - - /* Note, there may be other things you need to change, - depending on how you have your OpenGL state set up. - */ - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - - /* This allows alpha blending of 2D textures with the scene */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glViewport(0, 0, screen->w, screen->h); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - glOrtho(0.0, (GLdouble) screen->w, (GLdouble) screen->h, 0.0, 0.0, 1.0); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); -} - -void -SDL_GL_Leave2DMode() -{ - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - glPopAttrib(); -} - -/* Quick utility function for texture creation */ -static int -power_of_two(int input) -{ - int value = 1; - - while (value < input) { - value <<= 1; - } - return value; -} - -GLuint -SDL_GL_LoadTexture(SDL_Surface * surface, GLfloat * texcoord) -{ - GLuint texture; - int w, h; - SDL_Surface *image; - SDL_Rect area; - Uint32 saved_flags; - Uint8 saved_alpha; - - /* Use the surface width and height expanded to powers of 2 */ - w = power_of_two(surface->w); - h = power_of_two(surface->h); - texcoord[0] = 0.0f; /* Min X */ - texcoord[1] = 0.0f; /* Min Y */ - texcoord[2] = (GLfloat) surface->w / w; /* Max X */ - texcoord[3] = (GLfloat) surface->h / h; /* Max Y */ - - image = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, -#if SDL_BYTEORDER == SDL_LIL_ENDIAN /* OpenGL RGBA masks */ - 0x000000FF, - 0x0000FF00, 0x00FF0000, 0xFF000000 -#else - 0xFF000000, - 0x00FF0000, 0x0000FF00, 0x000000FF -#endif - ); - if (image == NULL) { - return 0; - } - - /* Save the alpha blending attributes */ - saved_flags = surface->flags & (SDL_SRCALPHA | SDL_RLEACCELOK); - SDL_GetSurfaceAlphaMod(surface, &saved_alpha); - if ((saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA) { - SDL_SetAlpha(surface, 0, 0); - } - - /* Copy the surface into the GL texture image */ - area.x = 0; - area.y = 0; - area.w = surface->w; - area.h = surface->h; - SDL_BlitSurface(surface, &area, image, &area); - - /* Restore the alpha blending attributes */ - if ((saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA) { - SDL_SetAlpha(surface, saved_flags, saved_alpha); - } - - /* Create an OpenGL texture for the image */ - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, - 0, - GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels); - SDL_FreeSurface(image); /* No longer needed */ - - return texture; -} - -void -DrawLogoCursor(void) -{ - static GLfloat texMinX, texMinY; - static GLfloat texMaxX, texMaxY; - static int w, h; - int x, y; - - if (!cursor_texture) { - SDL_Surface *image; - GLfloat texcoord[4]; - - /* Load the image (could use SDL_image library here) */ - image = SDL_LoadBMP(LOGO_FILE); - if (image == NULL) { - return; - } - w = image->w; - h = image->h; - - /* Convert the image into an OpenGL texture */ - cursor_texture = SDL_GL_LoadTexture(image, texcoord); - - /* Make texture coordinates easy to understand */ - texMinX = texcoord[0]; - texMinY = texcoord[1]; - texMaxX = texcoord[2]; - texMaxY = texcoord[3]; - - /* We don't need the original image anymore */ - SDL_FreeSurface(image); - - /* Make sure that the texture conversion is okay */ - if (!cursor_texture) { - return; - } - } - - /* Move the image around */ - SDL_GetMouseState(&x, &y); - x -= w / 2; - y -= h / 2; - - /* Show the image on the screen */ - SDL_GL_Enter2DMode(); - glBindTexture(GL_TEXTURE_2D, cursor_texture); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texMinX, texMinY); - glVertex2i(x, y); - glTexCoord2f(texMaxX, texMinY); - glVertex2i(x + w, y); - glTexCoord2f(texMinX, texMaxY); - glVertex2i(x, y + h); - glTexCoord2f(texMaxX, texMaxY); - glVertex2i(x + w, y + h); - glEnd(); - SDL_GL_Leave2DMode(); -} - -void -DrawLogoTexture(void) -{ - static GLfloat texMinX, texMinY; - static GLfloat texMaxX, texMaxY; - static int x = 0; - static int y = 0; - static int w, h; - static int delta_x = 1; - static int delta_y = 1; - - SDL_Surface *screen = SDL_GetVideoSurface(); - - if (!global_texture) { - SDL_Surface *image; - GLfloat texcoord[4]; - - /* Load the image (could use SDL_image library here) */ - image = SDL_LoadBMP(LOGO_FILE); - if (image == NULL) { - return; - } - w = image->w; - h = image->h; - - /* Convert the image into an OpenGL texture */ - global_texture = SDL_GL_LoadTexture(image, texcoord); - - /* Make texture coordinates easy to understand */ - texMinX = texcoord[0]; - texMinY = texcoord[1]; - texMaxX = texcoord[2]; - texMaxY = texcoord[3]; - - /* We don't need the original image anymore */ - SDL_FreeSurface(image); - - /* Make sure that the texture conversion is okay */ - if (!global_texture) { - return; - } - } - - /* Move the image around */ - x += delta_x; - if (x < 0) { - x = 0; - delta_x = -delta_x; - } else if ((x + w) > screen->w) { - x = screen->w - w; - delta_x = -delta_x; - } - y += delta_y; - if (y < 0) { - y = 0; - delta_y = -delta_y; - } else if ((y + h) > screen->h) { - y = screen->h - h; - delta_y = -delta_y; - } - - /* Show the image on the screen */ - SDL_GL_Enter2DMode(); - glBindTexture(GL_TEXTURE_2D, global_texture); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texMinX, texMinY); - glVertex2i(x, y); - glTexCoord2f(texMaxX, texMinY); - glVertex2i(x + w, y); - glTexCoord2f(texMinX, texMaxY); - glVertex2i(x, y + h); - glTexCoord2f(texMaxX, texMaxY); - glVertex2i(x + w, y + h); - glEnd(); - SDL_GL_Leave2DMode(); -} - -int -RunGLTest(int argc, char *argv[], - int logo, int logocursor, int slowly, int bpp, float gamma, - int noframe, int fsaa, int sync, int accel) -{ - int i; - int rgb_size[3]; - int w = 640; - int h = 480; - int done = 0; - int frames; - Uint32 start_time, this_time; - float color[8][3] = { {1.0, 1.0, 0.0}, - {1.0, 0.0, 0.0}, - {0.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, 1.0, 1.0}, - {1.0, 1.0, 1.0}, - {1.0, 0.0, 1.0}, - {0.0, 0.0, 1.0} - }; - float cube[8][3] = { {0.5, 0.5, -0.5}, - {0.5, -0.5, -0.5}, - {-0.5, -0.5, -0.5}, - {-0.5, 0.5, -0.5}, - {-0.5, 0.5, 0.5}, - {0.5, 0.5, 0.5}, - {0.5, -0.5, 0.5}, - {-0.5, -0.5, 0.5} - }; - Uint32 video_flags; - int value; - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - - /* See if we should detect the display depth */ - if (bpp == 0) { - if (SDL_GetVideoInfo()->vfmt->BitsPerPixel <= 8) { - bpp = 8; - } else { - bpp = 16; /* More doesn't seem to work */ - } - } - - /* Set the flags we want to use for setting the video mode */ - video_flags = SDL_OPENGL; - for (i = 1; argv[i]; ++i) { - if (strcmp(argv[i], "-fullscreen") == 0) { - video_flags |= SDL_FULLSCREEN; - } - } - - if (noframe) { - video_flags |= SDL_NOFRAME; - } - - /* Initialize the display */ - switch (bpp) { - case 8: - rgb_size[0] = 3; - rgb_size[1] = 3; - rgb_size[2] = 2; - break; - case 15: - case 16: - rgb_size[0] = 5; - rgb_size[1] = 5; - rgb_size[2] = 5; - break; - default: - rgb_size[0] = 8; - rgb_size[1] = 8; - rgb_size[2] = 8; - break; - } - SDL_GL_SetAttribute(SDL_GL_RED_SIZE, rgb_size[0]); - SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, rgb_size[1]); - SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, rgb_size[2]); - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - if (fsaa) { - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, fsaa); - } - if (accel >= 0) { - SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, accel); - } - if (SDL_SetVideoMode(w, h, bpp, video_flags) == NULL) { - fprintf(stderr, "Couldn't set GL mode: %s\n", SDL_GetError()); - SDL_Quit(); - exit(1); - } - if (sync) { - SDL_GL_SetSwapInterval(1); - } else { - SDL_GL_SetSwapInterval(0); - } - - printf("Screen BPP: %d\n", SDL_GetVideoSurface()->format->BitsPerPixel); - printf("\n"); - printf("Vendor : %s\n", glGetString(GL_VENDOR)); - printf("Renderer : %s\n", glGetString(GL_RENDERER)); - printf("Version : %s\n", glGetString(GL_VERSION)); - printf("Extensions : %s\n", glGetString(GL_EXTENSIONS)); - printf("\n"); - - SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); - printf("SDL_GL_RED_SIZE: requested %d, got %d\n", rgb_size[0], value); - SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &value); - printf("SDL_GL_GREEN_SIZE: requested %d, got %d\n", rgb_size[1], value); - SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &value); - printf("SDL_GL_BLUE_SIZE: requested %d, got %d\n", rgb_size[2], value); - SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &value); - printf("SDL_GL_DEPTH_SIZE: requested %d, got %d\n", bpp, value); - SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER, &value); - printf("SDL_GL_DOUBLEBUFFER: requested 1, got %d\n", value); - if (fsaa) { - SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &value); - printf("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value); - SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &value); - printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, - value); - } - if (accel >= 0) { - SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); - printf("SDL_GL_ACCELERATED_VISUAL: requested %d, got %d\n", accel, - value); - } - if (sync) { - printf("Buffer swap interval: requested 1, got %d\n", - SDL_GL_GetSwapInterval()); - } - - /* Set the window manager title bar */ - SDL_WM_SetCaption("SDL GL test", "testgl"); - - /* Set the gamma for the window */ - if (gamma != 0.0) { - SDL_SetGamma(gamma, gamma, gamma); - } - - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glOrtho(-2.0, 2.0, -2.0, 2.0, -20.0, 20.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glEnable(GL_DEPTH_TEST); - - glDepthFunc(GL_LESS); - - glShadeModel(GL_SMOOTH); - - /* Loop until done. */ - start_time = SDL_GetTicks(); - frames = 0; - while (!done) { - GLenum gl_error; - char *sdl_error; - SDL_Event event; - - /* Do our drawing, too. */ - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glBegin(GL_QUADS); - -#ifdef SHADED_CUBE - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - glColor3fv(color[3]); - glVertex3fv(cube[3]); - - glColor3fv(color[3]); - glVertex3fv(cube[3]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[6]); - glVertex3fv(cube[6]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); - glColor3fv(color[6]); - glVertex3fv(cube[6]); - - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[3]); - glVertex3fv(cube[3]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - - glColor3fv(color[6]); - glVertex3fv(cube[6]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); -#else /* flat cube */ - glColor3f(1.0, 0.0, 0.0); - glVertex3fv(cube[0]); - glVertex3fv(cube[1]); - glVertex3fv(cube[2]); - glVertex3fv(cube[3]); - - glColor3f(0.0, 1.0, 0.0); - glVertex3fv(cube[3]); - glVertex3fv(cube[4]); - glVertex3fv(cube[7]); - glVertex3fv(cube[2]); - - glColor3f(0.0, 0.0, 1.0); - glVertex3fv(cube[0]); - glVertex3fv(cube[5]); - glVertex3fv(cube[6]); - glVertex3fv(cube[1]); - - glColor3f(0.0, 1.0, 1.0); - glVertex3fv(cube[5]); - glVertex3fv(cube[4]); - glVertex3fv(cube[7]); - glVertex3fv(cube[6]); - - glColor3f(1.0, 1.0, 0.0); - glVertex3fv(cube[5]); - glVertex3fv(cube[0]); - glVertex3fv(cube[3]); - glVertex3fv(cube[4]); - - glColor3f(1.0, 0.0, 1.0); - glVertex3fv(cube[6]); - glVertex3fv(cube[1]); - glVertex3fv(cube[2]); - glVertex3fv(cube[7]); -#endif /* SHADED_CUBE */ - - glEnd(); - - glMatrixMode(GL_MODELVIEW); - glRotatef(5.0, 1.0, 1.0, 1.0); - - /* Draw 2D logo onto the 3D display */ - if (logo) { - DrawLogoTexture(); - } - if (logocursor) { - DrawLogoCursor(); - } - - SDL_GL_SwapBuffers(); - - /* Check for error conditions. */ - gl_error = glGetError(); - - if (gl_error != GL_NO_ERROR) { - fprintf(stderr, "testgl: OpenGL error: %d\n", gl_error); - } - - sdl_error = (char *)SDL_GetError(); - - if (sdl_error[0] != '\0') { - fprintf(stderr, "testgl: SDL error '%s'\n", sdl_error); - SDL_ClearError(); - } - - /* Allow the user to see what's happening */ - if (slowly) { - SDL_Delay(20); - } - - /* Check if there's a pending event. */ - while (SDL_PollEvent(&event)) { - done |= HandleEvent(&event); - } - ++frames; - } - - /* Print out the frames per second */ - this_time = SDL_GetTicks(); - if (this_time != start_time) { - printf("%2.2f FPS\n", - ((float) frames / (this_time - start_time)) * 1000.0); - } - - if (global_image) { - SDL_FreeSurface(global_image); - global_image = NULL; - } - if (global_texture) { - glDeleteTextures(1, &global_texture); - global_texture = 0; - } - if (cursor_texture) { - glDeleteTextures(1, &cursor_texture); - cursor_texture = 0; - } - - /* Destroy our GL context, etc. */ - SDL_Quit(); - return (0); -} - -int -main(int argc, char *argv[]) -{ - int i, logo, logocursor = 0; - int numtests; - int bpp = 0; - int slowly; - float gamma = 0.0; - int noframe = 0; - int fsaa = 0; - int accel = -1; - int sync = 0; - - logo = 0; - slowly = 0; - numtests = 1; - for (i = 1; argv[i]; ++i) { - if (strcmp(argv[i], "-twice") == 0) { - ++numtests; - } - if (strcmp(argv[i], "-logo") == 0) { - logo = 1; - } - if (strcmp(argv[i], "-logocursor") == 0) { - logocursor = 1; - } - if (strcmp(argv[i], "-slow") == 0) { - slowly = 1; - } - if (strcmp(argv[i], "-bpp") == 0) { - bpp = atoi(argv[++i]); - } - if (strcmp(argv[i], "-gamma") == 0) { - gamma = (float) atof(argv[++i]); - } - if (strcmp(argv[i], "-noframe") == 0) { - noframe = 1; - } - if (strcmp(argv[i], "-fsaa") == 0) { - ++fsaa; - } - if (strcmp(argv[i], "-accel") == 0) { - accel = atoi(argv[++i]); - } - if (strcmp(argv[i], "-sync") == 0) { - ++sync; - } - if (strncmp(argv[i], "-h", 2) == 0) { - printf - ("Usage: %s [-twice] [-logo] [-logocursor] [-slow] [-bpp n] [-gamma n] [-noframe] [-fsaa] [-accel n] [-sync] [-fullscreen]\n", - argv[0]); - exit(0); - } - } - for (i = 0; i < numtests; ++i) { - RunGLTest(argc, argv, logo, logocursor, slowly, bpp, gamma, - noframe, fsaa, sync, accel); - } - return 0; -} - -#else /* HAVE_OPENGL */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGL */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testgl2.c b/3rdparty/SDL-1.3.0-5387/test/testgl2.c deleted file mode 100644 index 8e82c64885..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testgl2.c +++ /dev/null @@ -1,347 +0,0 @@ -#include -#include -#include -#include - -#include "common.h" - -#ifdef __MACOS__ -#define HAVE_OPENGL -#endif - -#ifdef HAVE_OPENGL - -#include "SDL_opengl.h" - -/* Undefine this if you want a flat cube instead of a rainbow cube */ -#define SHADED_CUBE - -static CommonState *state; -static SDL_GLContext context; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - if (context) { - /* SDL_GL_MakeCurrent(0, NULL); *//* doesn't do anything */ - SDL_GL_DeleteContext(context); - } - CommonQuit(state); - exit(rc); -} - -static void -Render() -{ - static float color[8][3] = { - {1.0, 1.0, 0.0}, - {1.0, 0.0, 0.0}, - {0.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, 1.0, 1.0}, - {1.0, 1.0, 1.0}, - {1.0, 0.0, 1.0}, - {0.0, 0.0, 1.0} - }; - static float cube[8][3] = { - {0.5, 0.5, -0.5}, - {0.5, -0.5, -0.5}, - {-0.5, -0.5, -0.5}, - {-0.5, 0.5, -0.5}, - {-0.5, 0.5, 0.5}, - {0.5, 0.5, 0.5}, - {0.5, -0.5, 0.5}, - {-0.5, -0.5, 0.5} - }; - - /* Do our drawing, too. */ - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glBegin(GL_QUADS); - -#ifdef SHADED_CUBE - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - glColor3fv(color[3]); - glVertex3fv(cube[3]); - - glColor3fv(color[3]); - glVertex3fv(cube[3]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[6]); - glVertex3fv(cube[6]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); - glColor3fv(color[6]); - glVertex3fv(cube[6]); - - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[3]); - glVertex3fv(cube[3]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - - glColor3fv(color[6]); - glVertex3fv(cube[6]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); -#else /* flat cube */ - glColor3f(1.0, 0.0, 0.0); - glVertex3fv(cube[0]); - glVertex3fv(cube[1]); - glVertex3fv(cube[2]); - glVertex3fv(cube[3]); - - glColor3f(0.0, 1.0, 0.0); - glVertex3fv(cube[3]); - glVertex3fv(cube[4]); - glVertex3fv(cube[7]); - glVertex3fv(cube[2]); - - glColor3f(0.0, 0.0, 1.0); - glVertex3fv(cube[0]); - glVertex3fv(cube[5]); - glVertex3fv(cube[6]); - glVertex3fv(cube[1]); - - glColor3f(0.0, 1.0, 1.0); - glVertex3fv(cube[5]); - glVertex3fv(cube[4]); - glVertex3fv(cube[7]); - glVertex3fv(cube[6]); - - glColor3f(1.0, 1.0, 0.0); - glVertex3fv(cube[5]); - glVertex3fv(cube[0]); - glVertex3fv(cube[3]); - glVertex3fv(cube[4]); - - glColor3f(1.0, 0.0, 1.0); - glVertex3fv(cube[6]); - glVertex3fv(cube[1]); - glVertex3fv(cube[2]); - glVertex3fv(cube[7]); -#endif /* SHADED_CUBE */ - - glEnd(); - - glMatrixMode(GL_MODELVIEW); - glRotatef(5.0, 1.0, 1.0, 1.0); -} - -int -main(int argc, char *argv[]) -{ - int fsaa, accel; - int value; - int i, done; - SDL_DisplayMode mode; - SDL_Event event; - Uint32 then, now, frames; - int status; - - /* Initialize parameters */ - fsaa = 0; - accel = -1; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - if (SDL_strcasecmp(argv[i], "--fsaa") == 0) { - ++fsaa; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--accel") == 0 && i+1 < argc) { - accel = atoi(argv[i+1]); - consumed = 2; - } else { - consumed = -1; - } - } - if (consumed < 0) { - fprintf(stderr, "Usage: %s %s [--fsaa] [--accel n]\n", argv[0], - CommonUsage(state)); - quit(1); - } - i += consumed; - } - - /* Set OpenGL parameters */ - state->window_flags |= SDL_WINDOW_OPENGL; - state->gl_red_size = 5; - state->gl_green_size = 5; - state->gl_blue_size = 5; - state->gl_depth_size = 16; - state->gl_double_buffer = 1; - if (fsaa) { - state->gl_multisamplebuffers = 1; - state->gl_multisamplesamples = fsaa; - } - if (accel >= 0) { - state->gl_accelerated = accel; - } - - if (!CommonInit(state)) { - quit(2); - } - - /* Create OpenGL context */ - context = SDL_GL_CreateContext(state->windows[0]); - if (!context) { - fprintf(stderr, "SDL_GL_CreateContext(): %s\n", SDL_GetError()); - quit(2); - } - - if (state->render_flags & SDL_RENDERER_PRESENTVSYNC) { - SDL_GL_SetSwapInterval(1); - } else { - SDL_GL_SetSwapInterval(0); - } - - SDL_GetCurrentDisplayMode(0, &mode); - printf("Screen BPP: %d\n", SDL_BITSPERPIXEL(mode.format)); - printf("\n"); - printf("Vendor : %s\n", glGetString(GL_VENDOR)); - printf("Renderer : %s\n", glGetString(GL_RENDERER)); - printf("Version : %s\n", glGetString(GL_VERSION)); - printf("Extensions : %s\n", glGetString(GL_EXTENSIONS)); - printf("\n"); - - status = SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); - if (!status) { - printf("SDL_GL_RED_SIZE: requested %d, got %d\n", 5, value); - } else { - printf("Failed to get SDL_GL_RED_SIZE: %s\n", SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &value); - if (!status) { - printf("SDL_GL_GREEN_SIZE: requested %d, got %d\n", 5, value); - } else { - printf("Failed to get SDL_GL_GREEN_SIZE: %s\n", SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &value); - if (!status) { - printf("SDL_GL_BLUE_SIZE: requested %d, got %d\n", 5, value); - } else { - printf("Failed to get SDL_GL_BLUE_SIZE: %s\n", SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &value); - if (!status) { - printf("SDL_GL_DEPTH_SIZE: requested %d, got %d\n", 16, value); - } else { - printf("Failed to get SDL_GL_DEPTH_SIZE: %s\n", SDL_GetError()); - } - if (fsaa) { - status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &value); - if (!status) { - printf("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value); - } else { - printf("Failed to get SDL_GL_MULTISAMPLEBUFFERS: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &value); - if (!status) { - printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, - value); - } else { - printf("Failed to get SDL_GL_MULTISAMPLESAMPLES: %s\n", - SDL_GetError()); - } - } - if (accel >= 0) { - status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); - if (!status) { - printf("SDL_GL_ACCELERATED_VISUAL: requested %d, got %d\n", accel, - value); - } else { - printf("Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n", - SDL_GetError()); - } - } - - /* Set rendering settings */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-2.0, 2.0, -2.0, 2.0, -20.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_SMOOTH); - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - } - for (i = 0; i < state->num_windows; ++i) { - int w, h; - SDL_GL_MakeCurrent(state->windows[i], context); - SDL_GetWindowSize(state->windows[i], &w, &h); - glViewport(0, 0, w, h); - Render(); - SDL_GL_SwapWindow(state->windows[i]); - } - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - printf("%2.2f frames per second\n", - ((double) frames * 1000) / (now - then)); - } - quit(0); - return 0; -} - -#else /* HAVE_OPENGL */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGL */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testgles.c b/3rdparty/SDL-1.3.0-5387/test/testgles.c deleted file mode 100644 index 99410f8b0f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testgles.c +++ /dev/null @@ -1,334 +0,0 @@ -#include -#include -#include -#include - -#include "common.h" - -#if defined(__IPHONEOS__) || defined(__ANDROID__) -#define HAVE_OPENGLES -#endif - -#ifdef HAVE_OPENGLES - -#include "SDL_opengles.h" - -static CommonState *state; -static SDL_GLContext *context = NULL; -static int depth = 16; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - int i; - - if (context != NULL) { - for (i = 0; i < state->num_windows; i++) { - if (context[i]) { - SDL_GL_DeleteContext(context[i]); - } - } - - SDL_free(context); - } - - CommonQuit(state); - exit(rc); -} - -static void -Render() -{ - static GLubyte color[8][4] = { {255, 0, 0, 0}, - {255, 0, 0, 255}, - {0, 255, 0, 255}, - {0, 255, 0, 255}, - {0, 255, 0, 255}, - {255, 255, 255, 255}, - {255, 0, 255, 255}, - {0, 0, 255, 255} - }; - static GLfloat cube[8][3] = { {0.5, 0.5, -0.5}, - {0.5f, -0.5f, -0.5f}, - {-0.5f, -0.5f, -0.5f}, - {-0.5f, 0.5f, -0.5f}, - {-0.5f, 0.5f, 0.5f}, - {0.5f, 0.5f, 0.5f}, - {0.5f, -0.5f, 0.5f}, - {-0.5f, -0.5f, 0.5f} - }; - static GLubyte indices[36] = { 0, 3, 4, - 4, 5, 0, - 0, 5, 6, - 6, 1, 0, - 6, 7, 2, - 2, 1, 6, - 7, 4, 3, - 3, 2, 7, - 5, 4, 7, - 7, 6, 5, - 2, 3, 1, - 3, 0, 1 - }; - - - /* Do our drawing, too. */ - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* Draw the cube */ - glColorPointer(4, GL_UNSIGNED_BYTE, 0, color); - glEnableClientState(GL_COLOR_ARRAY); - glVertexPointer(3, GL_FLOAT, 0, cube); - glEnableClientState(GL_VERTEX_ARRAY); - glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, indices); - - glMatrixMode(GL_MODELVIEW); - glRotatef(5.0, 1.0, 1.0, 1.0); -} - -int -main(int argc, char *argv[]) -{ - int fsaa, accel; - int value; - int i, done; - SDL_DisplayMode mode; - SDL_Event event; - Uint32 then, now, frames; - int status; - - /* Initialize parameters */ - fsaa = 0; - accel = 0; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - if (SDL_strcasecmp(argv[i], "--fsaa") == 0) { - ++fsaa; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--accel") == 0) { - ++accel; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--zdepth") == 0) { - i++; - if (!argv[i]) { - consumed = -1; - } else { - depth = SDL_atoi(argv[i]); - consumed = 1; - } - } else { - consumed = -1; - } - } - if (consumed < 0) { - fprintf(stderr, "Usage: %s %s [--fsaa] [--accel] [--zdepth %%d]\n", argv[0], - CommonUsage(state)); - quit(1); - } - i += consumed; - } - - /* Set OpenGL parameters */ - state->window_flags |= SDL_WINDOW_OPENGL; - state->gl_red_size = 5; - state->gl_green_size = 5; - state->gl_blue_size = 5; - state->gl_depth_size = depth; - if (fsaa) { - state->gl_multisamplebuffers=1; - state->gl_multisamplesamples=fsaa; - } - if (accel) { - state->gl_accelerated=1; - } - if (!CommonInit(state)) { - quit(2); - } - - context = SDL_calloc(state->num_windows, sizeof(context)); - if (context == NULL) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - - /* Create OpenGL ES contexts */ - for (i = 0; i < state->num_windows; i++) { - context[i] = SDL_GL_CreateContext(state->windows[i]); - if (!context[i]) { - fprintf(stderr, "SDL_GL_CreateContext(): %s\n", SDL_GetError()); - quit(2); - } - } - - if (state->render_flags & SDL_RENDERER_PRESENTVSYNC) { - SDL_GL_SetSwapInterval(1); - } else { - SDL_GL_SetSwapInterval(0); - } - - SDL_GetCurrentDisplayMode(0, &mode); - printf("Screen bpp: %d\n", SDL_BITSPERPIXEL(mode.format)); - printf("\n"); - printf("Vendor : %s\n", glGetString(GL_VENDOR)); - printf("Renderer : %s\n", glGetString(GL_RENDERER)); - printf("Version : %s\n", glGetString(GL_VERSION)); - printf("Extensions : %s\n", glGetString(GL_EXTENSIONS)); - printf("\n"); - - status = SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); - if (!status) { - printf("SDL_GL_RED_SIZE: requested %d, got %d\n", 5, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_RED_SIZE: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &value); - if (!status) { - printf("SDL_GL_GREEN_SIZE: requested %d, got %d\n", 5, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_GREEN_SIZE: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &value); - if (!status) { - printf("SDL_GL_BLUE_SIZE: requested %d, got %d\n", 5, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_BLUE_SIZE: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &value); - if (!status) { - printf("SDL_GL_DEPTH_SIZE: requested %d, got %d\n", depth, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_DEPTH_SIZE: %s\n", - SDL_GetError()); - } - if (fsaa) { - status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &value); - if (!status) { - printf("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value); - } else { - fprintf(stderr, "Failed to get SDL_GL_MULTISAMPLEBUFFERS: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &value); - if (!status) { - printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, - value); - } else { - fprintf(stderr, "Failed to get SDL_GL_MULTISAMPLESAMPLES: %s\n", - SDL_GetError()); - } - } - if (accel) { - status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); - if (!status) { - printf("SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value); - } else { - fprintf(stderr, "Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n", - SDL_GetError()); - } - } - - /* Set rendering settings for each context */ - for (i = 0; i < state->num_windows; ++i) { - float aspectAdjust; - - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - - /* Continue for next window */ - continue; - } - - aspectAdjust = (4.0f / 3.0f) / ((float)state->window_w / state->window_h); - glViewport(0, 0, state->window_w, state->window_h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrthof(-2.0, 2.0, -2.0 * aspectAdjust, 2.0 * aspectAdjust, -20.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_SMOOTH); - } - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_WINDOWEVENT: - switch (event.window.event) { - case SDL_WINDOWEVENT_RESIZED: - for (i = 0; i < state->num_windows; ++i) { - if (event.window.windowID == SDL_GetWindowID(state->windows[i])) { - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - break; - } - /* Change view port to the new window dimensions */ - glViewport(0, 0, event.window.data1, event.window.data2); - /* Update window content */ - Render(); - SDL_GL_SwapWindow(state->windows[i]); - break; - } - } - break; - } - } - CommonEvent(state, &event, &done); - } - for (i = 0; i < state->num_windows; ++i) { - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - - /* Continue for next window */ - continue; - } - Render(); - SDL_GL_SwapWindow(state->windows[i]); - } - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - printf("%2.2f frames per second\n", - ((double) frames * 1000) / (now - then)); - } - quit(0); - return 0; -} - -#else /* HAVE_OPENGLES */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL ES support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGLES */ - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testhaptic.c b/3rdparty/SDL-1.3.0-5387/test/testhaptic.c deleted file mode 100644 index 34975117c6..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testhaptic.c +++ /dev/null @@ -1,277 +0,0 @@ -/* -Copyright (c) 2008, Edgar Simo Serra -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of the Simple Directmedia Layer (SDL) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * includes - */ -#include -#include "SDL.h" -#include "SDL_haptic.h" - -#include /* printf */ -#include /* strstr */ -#include /* isdigit */ - - -static SDL_Haptic *haptic; - - -/* - * prototypes - */ -static void abort_execution(void); -static void HapticPrintSupported(SDL_Haptic * haptic); - - -/** - * @brief The entry point of this force feedback demo. - * @param[in] argc Number of arguments. - * @param[in] argv Array of argc arguments. - */ -int -main(int argc, char **argv) -{ - int i; - char *name; - int index; - SDL_HapticEffect efx[5]; - int id[5]; - int nefx; - unsigned int supported; - - name = NULL; - index = -1; - if (argc > 1) { - name = argv[1]; - if ((strcmp(name, "--help") == 0) || (strcmp(name, "-h") == 0)) { - printf("USAGE: %s [device]\n" - "If device is a two-digit number it'll use it as an index, otherwise\n" - "it'll use it as if it were part of the device's name.\n", - argv[0]); - return 0; - } - - i = strlen(name); - if ((i < 3) && isdigit(name[0]) && ((i == 1) || isdigit(name[1]))) { - index = atoi(name); - name = NULL; - } - } - - /* Initialize the force feedbackness */ - SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_JOYSTICK | - SDL_INIT_HAPTIC); - printf("%d Haptic devices detected.\n", SDL_NumHaptics()); - if (SDL_NumHaptics() > 0) { - /* We'll just use index or the first force feedback device found */ - if (name == NULL) { - i = (index != -1) ? index : 0; - } - /* Try to find matching device */ - else { - for (i = 0; i < SDL_NumHaptics(); i++) { - if (strstr(SDL_HapticName(i), name) != NULL) - break; - } - - if (i >= SDL_NumHaptics()) { - printf("Unable to find device matching '%s', aborting.\n", - name); - return 1; - } - } - - haptic = SDL_HapticOpen(i); - if (haptic == NULL) { - printf("Unable to create the haptic device: %s\n", - SDL_GetError()); - return 1; - } - printf("Device: %s\n", SDL_HapticName(i)); - HapticPrintSupported(haptic); - } else { - printf("No Haptic devices found!\n"); - return 1; - } - - /* We only want force feedback errors. */ - SDL_ClearError(); - - /* Create effects. */ - memset(&efx, 0, sizeof(efx)); - nefx = 0; - supported = SDL_HapticQuery(haptic); - - printf("\nUploading effects\n"); - /* First we'll try a SINE effect. */ - if (supported & SDL_HAPTIC_SINE) { - printf(" effect %d: Sine Wave\n", nefx); - efx[nefx].type = SDL_HAPTIC_SINE; - efx[nefx].periodic.period = 1000; - efx[nefx].periodic.magnitude = 0x4000; - efx[nefx].periodic.length = 5000; - efx[nefx].periodic.attack_length = 1000; - efx[nefx].periodic.fade_length = 1000; - id[nefx] = SDL_HapticNewEffect(haptic, &efx[nefx]); - if (id[nefx] < 0) { - printf("UPLOADING EFFECT ERROR: %s\n", SDL_GetError()); - abort_execution(); - } - nefx++; - } - /* Now we'll try a SAWTOOTHUP */ - if (supported & SDL_HAPTIC_SAWTOOTHUP) { - printf(" effect %d: Sawtooth Up\n", nefx); - efx[nefx].type = SDL_HAPTIC_SQUARE; - efx[nefx].periodic.period = 500; - efx[nefx].periodic.magnitude = 0x5000; - efx[nefx].periodic.length = 5000; - efx[nefx].periodic.attack_length = 1000; - efx[nefx].periodic.fade_length = 1000; - id[nefx] = SDL_HapticNewEffect(haptic, &efx[nefx]); - if (id[nefx] < 0) { - printf("UPLOADING EFFECT ERROR: %s\n", SDL_GetError()); - abort_execution(); - } - nefx++; - } - /* Now the classical constant effect. */ - if (supported & SDL_HAPTIC_CONSTANT) { - printf(" effect %d: Constant Force\n", nefx); - efx[nefx].type = SDL_HAPTIC_CONSTANT; - efx[nefx].constant.direction.type = SDL_HAPTIC_POLAR; - efx[nefx].constant.direction.dir[0] = 20000; /* Force comes from the south-west. */ - efx[nefx].constant.length = 5000; - efx[nefx].constant.level = 0x6000; - efx[nefx].constant.attack_length = 1000; - efx[nefx].constant.fade_length = 1000; - id[nefx] = SDL_HapticNewEffect(haptic, &efx[nefx]); - if (id[nefx] < 0) { - printf("UPLOADING EFFECT ERROR: %s\n", SDL_GetError()); - abort_execution(); - } - nefx++; - } - /* The cute spring effect. */ - if (supported & SDL_HAPTIC_SPRING) { - printf(" effect %d: Condition Spring\n", nefx); - efx[nefx].type = SDL_HAPTIC_SPRING; - efx[nefx].condition.length = 5000; - for (i = 0; i < SDL_HapticNumAxes(haptic); i++) { - efx[nefx].condition.right_sat[i] = 0x7FFF; - efx[nefx].condition.left_sat[i] = 0x7FFF; - efx[nefx].condition.right_coeff[i] = 0x2000; - efx[nefx].condition.left_coeff[i] = 0x2000; - efx[nefx].condition.center[i] = 0x1000; /* Displace the center for it to move. */ - } - id[nefx] = SDL_HapticNewEffect(haptic, &efx[nefx]); - if (id[nefx] < 0) { - printf("UPLOADING EFFECT ERROR: %s\n", SDL_GetError()); - abort_execution(); - } - nefx++; - } - /* The pretty awesome inertia effect. */ - if (supported & SDL_HAPTIC_INERTIA) { - printf(" effect %d: Condition Inertia\n", nefx); - efx[nefx].type = SDL_HAPTIC_SPRING; - efx[nefx].condition.length = 5000; - for (i = 0; i < SDL_HapticNumAxes(haptic); i++) { - efx[nefx].condition.right_sat[i] = 0x7FFF; - efx[nefx].condition.left_sat[i] = 0x7FFF; - efx[nefx].condition.right_coeff[i] = 0x2000; - efx[nefx].condition.left_coeff[i] = 0x2000; - } - id[nefx] = SDL_HapticNewEffect(haptic, &efx[nefx]); - if (id[nefx] < 0) { - printf("UPLOADING EFFECT ERROR: %s\n", SDL_GetError()); - abort_execution(); - } - nefx++; - } - - printf - ("\nNow playing effects for 5 seconds each with 1 second delay between\n"); - for (i = 0; i < nefx; i++) { - printf(" Playing effect %d\n", i); - SDL_HapticRunEffect(haptic, id[i], 1); - SDL_Delay(6000); /* Effects only have length 5000 */ - } - - /* Quit */ - if (haptic != NULL) - SDL_HapticClose(haptic); - SDL_Quit(); - - return 0; -} - - -/* - * Cleans up a bit. - */ -static void -abort_execution(void) -{ - printf("\nAborting program execution.\n"); - - SDL_HapticClose(haptic); - SDL_Quit(); - - exit(1); -} - - -/* - * Displays information about the haptic device. - */ -static void -HapticPrintSupported(SDL_Haptic * haptic) -{ - unsigned int supported; - - supported = SDL_HapticQuery(haptic); - printf(" Supported effects [%d effects, %d playing]:\n", - SDL_HapticNumEffects(haptic), SDL_HapticNumEffectsPlaying(haptic)); - if (supported & SDL_HAPTIC_CONSTANT) - printf(" constant\n"); - if (supported & SDL_HAPTIC_SINE) - printf(" sine\n"); - if (supported & SDL_HAPTIC_SQUARE) - printf(" square\n"); - if (supported & SDL_HAPTIC_TRIANGLE) - printf(" triangle\n"); - if (supported & SDL_HAPTIC_SAWTOOTHUP) - printf(" sawtoothup\n"); - if (supported & SDL_HAPTIC_SAWTOOTHDOWN) - printf(" sawtoothdown\n"); - if (supported & SDL_HAPTIC_RAMP) - printf(" ramp\n"); - if (supported & SDL_HAPTIC_FRICTION) - printf(" friction\n"); - if (supported & SDL_HAPTIC_SPRING) - printf(" spring\n"); - if (supported & SDL_HAPTIC_DAMPER) - printf(" damper\n"); - if (supported & SDL_HAPTIC_INERTIA) - printf(" intertia\n"); - if (supported & SDL_HAPTIC_CUSTOM) - printf(" custom\n"); - printf(" Supported capabilities:\n"); - if (supported & SDL_HAPTIC_GAIN) - printf(" gain\n"); - if (supported & SDL_HAPTIC_AUTOCENTER) - printf(" autocenter\n"); - if (supported & SDL_HAPTIC_STATUS) - printf(" status\n"); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testhread.c b/3rdparty/SDL-1.3.0-5387/test/testhread.c deleted file mode 100644 index 0676036bfb..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testhread.c +++ /dev/null @@ -1,76 +0,0 @@ - -/* Simple test of the SDL threading code */ - -#include -#include -#include - -#include "SDL.h" -#include "SDL_thread.h" - -static int alive = 0; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int SDLCALL -ThreadFunc(void *data) -{ - printf("Started thread %s: My thread id is %lu\n", - (char *) data, SDL_ThreadID()); - while (alive) { - printf("Thread '%s' is alive!\n", (char *) data); - SDL_Delay(1 * 1000); - } - printf("Thread '%s' exiting!\n", (char *) data); - return (0); -} - -static void -killed(int sig) -{ - printf("Killed with SIGTERM, waiting 5 seconds to exit\n"); - SDL_Delay(5 * 1000); - alive = 0; - quit(0); -} - -int -main(int argc, char *argv[]) -{ - SDL_Thread *thread; - - /* Load the SDL library */ - if (SDL_Init(0) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - alive = 1; - thread = SDL_CreateThread(ThreadFunc, "#1"); - if (thread == NULL) { - fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); - quit(1); - } - SDL_Delay(5 * 1000); - printf("Waiting for thread #1\n"); - alive = 0; - SDL_WaitThread(thread, NULL); - - alive = 1; - signal(SIGTERM, killed); - thread = SDL_CreateThread(ThreadFunc, "#2"); - if (thread == NULL) { - fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); - quit(1); - } - raise(SIGTERM); - - SDL_Quit(); /* Never reached */ - return (0); /* Never reached */ -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testiconv.c b/3rdparty/SDL-1.3.0-5387/test/testiconv.c deleted file mode 100644 index 0ffce65b67..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testiconv.c +++ /dev/null @@ -1,77 +0,0 @@ - -#include - -#include "SDL.h" - -static size_t -widelen(char *data) -{ - size_t len = 0; - Uint32 *p = (Uint32 *) data; - while (*p++) { - ++len; - } - return len; -} - -int -main(int argc, char *argv[]) -{ - const char *formats[] = { - "UTF8", - "UTF-8", - "UTF16BE", - "UTF-16BE", - "UTF16LE", - "UTF-16LE", - "UTF32BE", - "UTF-32BE", - "UTF32LE", - "UTF-32LE", - "UCS4", - "UCS-4", - }; - char buffer[BUFSIZ]; - char *ucs4; - char *test[2]; - int i, index = 0; - FILE *file; - int errors = 0; - - if (!argv[1]) { - argv[1] = "utf8.txt"; - } - file = fopen(argv[1], "rb"); - if (!file) { - fprintf(stderr, "Unable to open %s\n", argv[1]); - return (1); - } - - while (fgets(buffer, sizeof(buffer), file)) { - /* Convert to UCS-4 */ - size_t len; - ucs4 = - SDL_iconv_string("UCS-4", "UTF-8", buffer, - SDL_strlen(buffer) + 1); - len = (widelen(ucs4) + 1) * 4; - for (i = 0; i < SDL_arraysize(formats); ++i) { - test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len); - test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len); - if (!test[1] || SDL_memcmp(test[1], ucs4, len) != 0) { - fprintf(stderr, "FAIL: %s\n", formats[i]); - ++errors; - } - if (test[0]) { - SDL_free(test[0]); - } - if (test[1]) { - SDL_free(test[1]); - } - } - test[0] = SDL_iconv_string("UTF-8", "UCS-4", ucs4, len); - SDL_free(ucs4); - fputs(test[0], stdout); - SDL_free(test[0]); - } - return (errors ? errors + 1 : 0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testime.c b/3rdparty/SDL-1.3.0-5387/test/testime.c deleted file mode 100644 index a8d3cab94e..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testime.c +++ /dev/null @@ -1,376 +0,0 @@ -/* A simple program to test the Input Method support in the SDL library (1.3+) */ - -#include -#include -#include - -#include "SDL.h" -#ifdef HAVE_SDL_TTF -#include "SDL_ttf.h" -#endif - -#define DEFAULT_PTSIZE 30 -#define DEFAULT_FONT "/System/Library/Fonts/å�Žæ–‡ç»†é»‘.ttf" -#define MAX_TEXT_LENGTH 256 - -SDL_Surface *screen; - -#ifdef HAVE_SDL_TTF -TTF_Font *font; -#endif -SDL_Rect textRect, markedRect; -Uint32 lineColor, backColor; -SDL_Color textColor = { 0, 0, 0 }; -char text[MAX_TEXT_LENGTH], markedText[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; -int cursor = 0; - -size_t utf8_length(unsigned char c) -{ - c = (unsigned char)(0xff & c); - if (c < 0x80) - return 1; - else if ((c >> 5) ==0x6) - return 2; - else if ((c >> 4) == 0xe) - return 3; - else if ((c >> 3) == 0x1e) - return 4; - else - return 0; -} - -char *utf8_next(char *p) -{ - size_t len = utf8_length(*p); - size_t i = 0; - if (!len) - return 0; - - for (; i < len; ++i) - { - ++p; - if (!*p) - return 0; - } - return p; -} - -char *utf8_advance(char *p, size_t distance) -{ - size_t i = 0; - for (; i < distance && p; ++i) - { - p = utf8_next(p); - } - return p; -} - -void usage() -{ - printf("usage: testime [--font fontfile] [--fullscreen]\n"); - exit(0); -} - -void InitVideo(int argc, char *argv[]) -{ - int width = 640, height = 480; - int flags = SDL_HWSURFACE; - const char *fontname = DEFAULT_FONT; - int fullscreen = 0; - - for (argc--, argv++; argc > 0; argc--, argv++) - { - if (strcmp(argv[0], "--help") == 0) - usage(); - - else if (strcmp(argv[0], "--fullscreen") == 0) - fullscreen = 1; - - else if (strcmp(argv[0], "--font") == 0) - { - argc--; - argv++; - - if (argc > 0) - fontname = argv[0]; - else - usage(); - } - } - - SDL_setenv("SDL_VIDEO_WINDOW_POS", "center", 1); - if (SDL_Init(SDL_INIT_VIDEO) < 0) - { - fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); - exit(-1); - } - -#ifdef HAVE_SDL_TTF - /* Initialize fonts */ - TTF_Init(); - - font = TTF_OpenFont(fontname, DEFAULT_PTSIZE); - if (! font) - { - fprintf(stderr, "Failed to find font: %s\n", TTF_GetError()); - exit(-1); - } -#endif - - printf("Using font: %s\n", fontname); - atexit(SDL_Quit); - - if (fullscreen) - { - /* Use the desktop mode */ - width = 0; - height = 0; - flags |= SDL_FULLSCREEN; - } - - /* Create window */ - screen = SDL_SetVideoMode(width, height, 32, flags); - if (screen == NULL) - { - fprintf(stderr, "Unable to set %dx%d video: %s\n", - width, height, SDL_GetError()); - exit(-1); - } -} - -void CleanupVideo() -{ - SDL_StopTextInput(); -#ifdef HAVE_SDL_TTF - TTF_CloseFont(font); - TTF_Quit(); -#endif -} - -void InitInput() -{ - backColor = SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF); - lineColor = SDL_MapRGB(screen->format, 0x0, 0x0, 0x0); - - /* Prepare a rect for text input */ - textRect.x = textRect.y = 100; - textRect.w = screen->w - 2 * textRect.x; - textRect.h = 50; - - text[0] = 0; - markedRect = textRect; - markedText[0] = 0; - - SDL_StartTextInput(); -} - -#ifdef HAVE_SDL_TTF -static void RenderText(SDL_Surface *sur, - TTF_Font *font, - const char *text, - int x, int y, - SDL_Color color) -{ - if (text && *text) { - SDL_Surface *textSur = TTF_RenderUTF8_Blended(font, text, color); - SDL_Rect dest = { x, y, textSur->w, textSur->h }; - - SDL_BlitSurface(textSur, NULL, sur, &dest); - SDL_FreeSurface(textSur); - } -} -#endif - -void Redraw() -{ - int w = 0, h = textRect.h; - SDL_Rect cursorRect, underlineRect; - - SDL_FillRect(screen, &textRect, backColor); - -#ifdef HAVE_SDL_TTF - if (*text) - { - RenderText(screen, font, text, textRect.x, textRect.y, textColor); - TTF_SizeUTF8(font, text, &w, &h); - } -#endif - - markedRect.x = textRect.x + w; - markedRect.w = textRect.w - w; - if (markedRect.w < 0) - { - SDL_Flip(screen); - // Stop text input because we cannot hold any more characters - SDL_StopTextInput(); - return; - } - else - { - SDL_StartTextInput(); - } - - cursorRect = markedRect; - cursorRect.w = 2; - cursorRect.h = h; - - SDL_FillRect(screen, &markedRect, backColor); - if (markedText[0]) - { -#ifdef HAVE_SDL_TTF - if (cursor) - { - char *p = utf8_advance(markedText, cursor); - char c = 0; - if (!p) - p = &markedText[strlen(markedText)]; - - c = *p; - *p = 0; - TTF_SizeUTF8(font, markedText, &w, 0); - cursorRect.x += w; - *p = c; - } - RenderText(screen, font, markedText, markedRect.x, markedRect.y, textColor); - TTF_SizeUTF8(font, markedText, &w, &h); -#endif - - underlineRect = markedRect; - underlineRect.y += (h - 2); - underlineRect.h = 2; - underlineRect.w = w; - - SDL_FillRect(screen, &underlineRect, lineColor); - } - - SDL_FillRect(screen, &cursorRect, lineColor); - - SDL_Flip(screen); - - SDL_SetTextInputRect(&markedRect); -} - -void -HotKey_ToggleFullScreen(void) -{ - SDL_Surface *screen; - - screen = SDL_GetVideoSurface(); - if (SDL_WM_ToggleFullScreen(screen)) { - printf("Toggled fullscreen mode - now %s\n", - (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); - } else { - printf("Unable to toggle fullscreen mode\n"); - } -} - -int main(int argc, char *argv[]) -{ - SDL_Event event; - int done = 0; - - InitVideo(argc, argv); - InitInput(); - Redraw(); - - while (! done && SDL_WaitEvent(&event)) - { - switch (event.type) - { - case SDL_KEYDOWN: - switch (event.key.keysym.sym) - { - case SDLK_ESCAPE: - done = 1; - break; - case SDLK_RETURN: - text[0]=0x00; - Redraw(); - break; - case SDLK_BACKSPACE: - { - int textlen=SDL_strlen(text); - - do { - if (textlen==0) - { - break; - } - if ((text[textlen-1] & 0x80) == 0x00) - { - /* One byte */ - text[textlen-1]=0x00; - break; - } - if ((text[textlen-1] & 0xC0) == 0x80) - { - /* Byte from the multibyte sequence */ - text[textlen-1]=0x00; - textlen--; - } - if ((text[textlen-1] & 0xC0) == 0xC0) - { - /* First byte of multibyte sequence */ - text[textlen-1]=0x00; - break; - } - } while(1); - - Redraw(); - } - break; - } - - if (done) - { - break; - } - - fprintf(stderr, - "Keyboard: scancode 0x%08X = %s, keycode 0x%08X = %s\n", - event.key.keysym.scancode, - SDL_GetScancodeName(event.key.keysym.scancode), - event.key.keysym.sym, SDL_GetKeyName(event.key.keysym.sym)); - break; - - case SDL_TEXTINPUT: - if (SDL_strlen(event.text.text) == 0 || event.text.text[0] == '\n' || - markedRect.w < 0) - break; - - fprintf(stderr, "Keyboard: text input \"%s\"\n", event.text.text); - - if (SDL_strlen(text) + SDL_strlen(event.text.text) < sizeof(text)) - SDL_strlcat(text, event.text.text, sizeof(text)); - - fprintf(stderr, "text inputed: %s\n", text); - - // After text inputed, we can clear up markedText because it - // is committed - markedText[0] = 0; - Redraw(); - break; - - case SDL_TEXTEDITING: - fprintf(stderr, "text editing \"%s\", selected range (%d, %d)\n", - event.edit.text, event.edit.start, event.edit.length); - - strcpy(markedText, event.edit.text); - cursor = event.edit.start; - Redraw(); - break; - - case SDL_QUIT: - done = 1; - break; - - default: - break; - } - } - - CleanupVideo(); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testintersections.c b/3rdparty/SDL-1.3.0-5387/test/testintersections.c deleted file mode 100644 index fa3120421c..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testintersections.c +++ /dev/null @@ -1,325 +0,0 @@ - -/* Simple program: draw as many random objects on the screen as possible */ - -#include -#include -#include - -#include "common.h" - -#define SWAP(typ,a,b) do{typ t=a;a=b;b=t;}while(0) -#define NUM_OBJECTS 100 - -static CommonState *state; -static int num_objects; -static SDL_bool cycle_color; -static SDL_bool cycle_alpha; -static int cycle_direction = 1; -static int current_alpha = 255; -static int current_color = 255; -static SDL_BlendMode blendMode = SDL_BLENDMODE_NONE; - -void -DrawPoints(SDL_Renderer * renderer) -{ - int i; - int x, y; - SDL_Rect viewport; - - /* Query the sizes */ - SDL_RenderGetViewport(renderer, &viewport); - - for (i = 0; i < num_objects * 4; ++i) { - /* Cycle the color and alpha, if desired */ - if (cycle_color) { - current_color += cycle_direction; - if (current_color < 0) { - current_color = 0; - cycle_direction = -cycle_direction; - } - if (current_color > 255) { - current_color = 255; - cycle_direction = -cycle_direction; - } - } - if (cycle_alpha) { - current_alpha += cycle_direction; - if (current_alpha < 0) { - current_alpha = 0; - cycle_direction = -cycle_direction; - } - if (current_alpha > 255) { - current_alpha = 255; - cycle_direction = -cycle_direction; - } - } - SDL_SetRenderDrawColor(renderer, 255, (Uint8) current_color, - (Uint8) current_color, (Uint8) current_alpha); - - x = rand() % viewport.w; - y = rand() % viewport.h; - SDL_RenderDrawPoint(renderer, x, y); - } -} - -#define MAX_LINES 16 -int num_lines = 0; -SDL_Rect lines[MAX_LINES]; -static int -add_line(int x1, int y1, int x2, int y2) -{ - if (num_lines >= MAX_LINES) - return 0; - if ((x1 == x2) && (y1 == y2)) - return 0; - - printf("adding line (%d, %d), (%d, %d)\n", x1, y1, x2, y2); - lines[num_lines].x = x1; - lines[num_lines].y = y1; - lines[num_lines].w = x2; - lines[num_lines].h = y2; - - return ++num_lines; -} - - -void -DrawLines(SDL_Renderer * renderer) -{ - int i; - int x1, y1, x2, y2; - SDL_Rect viewport; - - /* Query the sizes */ - SDL_RenderGetViewport(renderer, &viewport); - - SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); - - for (i = 0; i < num_lines; ++i) { - if (i == -1) { - SDL_RenderDrawLine(renderer, 0, 0, viewport.w - 1, viewport.h - 1); - SDL_RenderDrawLine(renderer, 0, viewport.h - 1, viewport.w - 1, 0); - SDL_RenderDrawLine(renderer, 0, viewport.h / 2, viewport.w - 1, viewport.h / 2); - SDL_RenderDrawLine(renderer, viewport.w / 2, 0, viewport.w / 2, viewport.h - 1); - } else { - SDL_RenderDrawLine(renderer, lines[i].x, lines[i].y, lines[i].w, lines[i].h); - } - } -} - -#define MAX_RECTS 16 -int num_rects = 0; -SDL_Rect rects[MAX_RECTS]; -static int -add_rect(int x1, int y1, int x2, int y2) -{ - if (num_rects >= MAX_RECTS) - return 0; - if ((x1 == x2) || (y1 == y2)) - return 0; - - if (x1 > x2) - SWAP(int, x1, x2); - if (y1 > y2) - SWAP(int, y1, y2); - - printf("adding rect (%d, %d), (%d, %d) [%dx%d]\n", x1, y1, x2, y2, - x2 - x1, y2 - y1); - - rects[num_rects].x = x1; - rects[num_rects].y = y1; - rects[num_rects].w = x2 - x1; - rects[num_rects].h = y2 - y1; - - return ++num_rects; -} - -static void -DrawRects(SDL_Renderer * renderer) -{ - SDL_SetRenderDrawColor(renderer, 255, 127, 0, 255); - SDL_RenderFillRects(renderer, rects, num_rects); -} - -static void -DrawRectLineIntersections(SDL_Renderer * renderer) -{ - int i, j; - - SDL_SetRenderDrawColor(renderer, 0, 255, 55, 255); - - for (i = 0; i < num_rects; i++) - for (j = 0; j < num_lines; j++) { - int x1, y1, x2, y2; - SDL_Rect r; - - r = rects[i]; - x1 = lines[j].x; - y1 = lines[j].y; - x2 = lines[j].w; - y2 = lines[j].h; - - if (SDL_IntersectRectAndLine(&r, &x1, &y1, &x2, &y2)) { - SDL_RenderDrawLine(renderer, x1, y1, x2, y2); - } - } -} - -static void -DrawRectRectIntersections(SDL_Renderer * renderer) -{ - int i, j; - - SDL_SetRenderDrawColor(renderer, 255, 200, 0, 255); - - for (i = 0; i < num_rects; i++) - for (j = i + 1; j < num_rects; j++) { - SDL_Rect r; - if (SDL_IntersectRect(&rects[i], &rects[j], &r)) { - SDL_RenderFillRect(renderer, &r); - } - } -} - -int -main(int argc, char *argv[]) -{ - int mouse_begin_x = -1, mouse_begin_y = -1; - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - /* Initialize parameters */ - num_objects = NUM_OBJECTS; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - consumed = -1; - if (SDL_strcasecmp(argv[i], "--blend") == 0) { - if (argv[i + 1]) { - if (SDL_strcasecmp(argv[i + 1], "none") == 0) { - blendMode = SDL_BLENDMODE_NONE; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) { - blendMode = SDL_BLENDMODE_BLEND; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "add") == 0) { - blendMode = SDL_BLENDMODE_ADD; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) { - blendMode = SDL_BLENDMODE_MOD; - consumed = 2; - } - } - } else if (SDL_strcasecmp(argv[i], "--cyclecolor") == 0) { - cycle_color = SDL_TRUE; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--cyclealpha") == 0) { - cycle_alpha = SDL_TRUE; - consumed = 1; - } else if (SDL_isdigit(*argv[i])) { - num_objects = SDL_atoi(argv[i]); - consumed = 1; - } - } - if (consumed < 0) { - fprintf(stderr, - "Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n", - argv[0], CommonUsage(state)); - return 1; - } - i += consumed; - } - if (!CommonInit(state)) { - return 2; - } - - /* Create the windows and initialize the renderers */ - for (i = 0; i < state->num_windows; ++i) { - SDL_Renderer *renderer = state->renderers[i]; - SDL_SetRenderDrawBlendMode(renderer, blendMode); - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - } - - srand(time(NULL)); - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - switch (event.type) { - case SDL_MOUSEBUTTONDOWN: - mouse_begin_x = event.button.x; - mouse_begin_y = event.button.y; - break; - case SDL_MOUSEBUTTONUP: - if (event.button.button == 3) - add_line(mouse_begin_x, mouse_begin_y, event.button.x, - event.button.y); - if (event.button.button == 1) - add_rect(mouse_begin_x, mouse_begin_y, event.button.x, - event.button.y); - break; - case SDL_KEYDOWN: - switch (event.key.keysym.sym) { - case 'l': - if (event.key.keysym.mod & KMOD_SHIFT) - num_lines = 0; - else - add_line(rand() % 640, rand() % 480, rand() % 640, - rand() % 480); - break; - case 'r': - if (event.key.keysym.mod & KMOD_SHIFT) - num_rects = 0; - else - add_rect(rand() % 640, rand() % 480, rand() % 640, - rand() % 480); - break; - } - break; - default: - break; - } - } - for (i = 0; i < state->num_windows; ++i) { - SDL_Renderer *renderer = state->renderers[i]; - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - - DrawRects(renderer); - DrawPoints(renderer); - DrawRectRectIntersections(renderer); - DrawLines(renderer); - DrawRectLineIntersections(renderer); - - SDL_RenderPresent(renderer); - } - } - - CommonQuit(state); - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - double fps = ((double) frames * 1000) / (now - then); - printf("%2.2f frames per second\n", fps); - } - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testjoystick.c b/3rdparty/SDL-1.3.0-5387/test/testjoystick.c deleted file mode 100644 index 53f98d918a..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testjoystick.c +++ /dev/null @@ -1,193 +0,0 @@ - -/* Simple program to test the SDL joystick routines */ - -#include -#include -#include - -#include "SDL.h" - -#ifdef __IPHONEOS__ -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 480 -#else -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 -#endif - -void -WatchJoystick(SDL_Joystick * joystick) -{ - SDL_Surface *screen; - const char *name; - int i, done; - SDL_Event event; - int x, y, draw; - SDL_Rect axis_area[6][2]; - - /* Set a video mode to display joystick axis position */ - screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0); - if (screen == NULL) { - fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError()); - return; - } - - /* Print info about the joystick we are watching */ - name = SDL_JoystickName(SDL_JoystickIndex(joystick)); - printf("Watching joystick %d: (%s)\n", SDL_JoystickIndex(joystick), - name ? name : "Unknown Joystick"); - printf("Joystick has %d axes, %d hats, %d balls, and %d buttons\n", - SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick), - SDL_JoystickNumBalls(joystick), SDL_JoystickNumButtons(joystick)); - - /* Initialize drawing rectangles */ - memset(axis_area, 0, (sizeof axis_area)); - draw = 0; - - /* Loop, getting joystick events! */ - done = 0; - while (!done) { - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_JOYAXISMOTION: - printf("Joystick %d axis %d value: %d\n", - event.jaxis.which, - event.jaxis.axis, event.jaxis.value); - break; - case SDL_JOYHATMOTION: - printf("Joystick %d hat %d value:", - event.jhat.which, event.jhat.hat); - if (event.jhat.value == SDL_HAT_CENTERED) - printf(" centered"); - if (event.jhat.value & SDL_HAT_UP) - printf(" up"); - if (event.jhat.value & SDL_HAT_RIGHT) - printf(" right"); - if (event.jhat.value & SDL_HAT_DOWN) - printf(" down"); - if (event.jhat.value & SDL_HAT_LEFT) - printf(" left"); - printf("\n"); - break; - case SDL_JOYBALLMOTION: - printf("Joystick %d ball %d delta: (%d,%d)\n", - event.jball.which, - event.jball.ball, event.jball.xrel, event.jball.yrel); - break; - case SDL_JOYBUTTONDOWN: - printf("Joystick %d button %d down\n", - event.jbutton.which, event.jbutton.button); - break; - case SDL_JOYBUTTONUP: - printf("Joystick %d button %d up\n", - event.jbutton.which, event.jbutton.button); - break; - case SDL_KEYDOWN: - if (event.key.keysym.sym != SDLK_ESCAPE) { - break; - } - /* Fall through to signal quit */ - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - /* Update visual joystick state */ - for (i = 0; i < SDL_JoystickNumButtons(joystick); ++i) { - SDL_Rect area; - - area.x = i * 34; - area.y = SCREEN_HEIGHT - 34; - area.w = 32; - area.h = 32; - if (SDL_JoystickGetButton(joystick, i) == SDL_PRESSED) { - SDL_FillRect(screen, &area, 0xFFFF); - } else { - SDL_FillRect(screen, &area, 0x0000); - } - SDL_UpdateRects(screen, 1, &area); - } - - for (i = 0; - i < SDL_JoystickNumAxes(joystick) / 2 - && i < SDL_arraysize(axis_area); ++i) { - /* Erase previous axes */ - SDL_FillRect(screen, &axis_area[i][draw], 0x0000); - - /* Draw the X/Y axis */ - draw = !draw; - x = (((int) SDL_JoystickGetAxis(joystick, i * 2 + 0)) + 32768); - x *= SCREEN_WIDTH; - x /= 65535; - if (x < 0) { - x = 0; - } else if (x > (SCREEN_WIDTH - 16)) { - x = SCREEN_WIDTH - 16; - } - y = (((int) SDL_JoystickGetAxis(joystick, i * 2 + 1)) + 32768); - y *= SCREEN_HEIGHT; - y /= 65535; - if (y < 0) { - y = 0; - } else if (y > (SCREEN_HEIGHT - 16)) { - y = SCREEN_HEIGHT - 16; - } - - axis_area[i][draw].x = (Sint16) x; - axis_area[i][draw].y = (Sint16) y; - axis_area[i][draw].w = 16; - axis_area[i][draw].h = 16; - SDL_FillRect(screen, &axis_area[i][draw], 0xFFFF); - - SDL_UpdateRects(screen, 2, axis_area[i]); - } - } -} - -int -main(int argc, char *argv[]) -{ - const char *name; - int i; - SDL_Joystick *joystick; - - /* Initialize SDL (Note: video is required to start event loop) */ - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - - /* Print information about the joysticks */ - printf("There are %d joysticks attached\n", SDL_NumJoysticks()); - for (i = 0; i < SDL_NumJoysticks(); ++i) { - name = SDL_JoystickName(i); - printf("Joystick %d: %s\n", i, name ? name : "Unknown Joystick"); - joystick = SDL_JoystickOpen(i); - if (joystick == NULL) { - fprintf(stderr, "SDL_JoystickOpen(%d) failed: %s\n", i, - SDL_GetError()); - } else { - printf(" axes: %d\n", SDL_JoystickNumAxes(joystick)); - printf(" balls: %d\n", SDL_JoystickNumBalls(joystick)); - printf(" hats: %d\n", SDL_JoystickNumHats(joystick)); - printf(" buttons: %d\n", SDL_JoystickNumButtons(joystick)); - SDL_JoystickClose(joystick); - } - } - - if (argv[1]) { - joystick = SDL_JoystickOpen(atoi(argv[1])); - if (joystick == NULL) { - printf("Couldn't open joystick %d: %s\n", atoi(argv[1]), - SDL_GetError()); - } else { - WatchJoystick(joystick); - SDL_JoystickClose(joystick); - } - } - SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); - - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testkeys.c b/3rdparty/SDL-1.3.0-5387/test/testkeys.c deleted file mode 100644 index e12fbfad42..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testkeys.c +++ /dev/null @@ -1,26 +0,0 @@ - -/* Print out all the scancodes we have, just to verify them */ - -#include -#include -#include -#include - -#include "SDL.h" - -int -main(int argc, char *argv[]) -{ - SDL_Scancode scancode; - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - for (scancode = 0; scancode < SDL_NUM_SCANCODES; ++scancode) { - printf("Scancode #%d, \"%s\"\n", scancode, - SDL_GetScancodeName(scancode)); - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testloadso.c b/3rdparty/SDL-1.3.0-5387/test/testloadso.c deleted file mode 100644 index d0e129879f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testloadso.c +++ /dev/null @@ -1,71 +0,0 @@ - -/* Test program to test dynamic loading with the loadso subsystem. -*/ - -#include -#include -#include - -#include "SDL.h" - -typedef int (*fntype) (const char *); - -int -main(int argc, char *argv[]) -{ - int retval = 0; - int hello = 0; - const char *libname = NULL; - const char *symname = NULL; - void *lib = NULL; - fntype fn = NULL; - - if (argc != 3) { - const char *app = argv[0]; - fprintf(stderr, "USAGE: %s \n", app); - fprintf(stderr, " %s --hello \n", app); - return 1; - } - - /* Initialize SDL */ - if (SDL_Init(0) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return 2; - } - - if (strcmp(argv[1], "--hello") == 0) { - hello = 1; - libname = argv[2]; - symname = "puts"; - } else { - libname = argv[1]; - symname = argv[2]; - } - - lib = SDL_LoadObject(libname); - if (lib == NULL) { - fprintf(stderr, "SDL_LoadObject('%s') failed: %s\n", - libname, SDL_GetError()); - retval = 3; - } else { - fn = (fntype) SDL_LoadFunction(lib, symname); - if (fn == NULL) { - fprintf(stderr, "SDL_LoadFunction('%s') failed: %s\n", - symname, SDL_GetError()); - retval = 4; - } else { - printf("Found %s in %s at %p\n", symname, libname, fn); - if (hello) { - printf("Calling function...\n"); - fflush(stdout); - fn(" HELLO, WORLD!\n"); - printf("...apparently, we survived. :)\n"); - printf("Unloading library...\n"); - fflush(stdout); - } - } - SDL_UnloadObject(lib); - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testlock.c b/3rdparty/SDL-1.3.0-5387/test/testlock.c deleted file mode 100644 index 545abaf07b..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testlock.c +++ /dev/null @@ -1,111 +0,0 @@ - -/* Test the thread and mutex locking functions - Also exercises the system's signal/thread interaction -*/ - -#include -#include - -#include "SDL.h" -#include "SDL_mutex.h" -#include "SDL_thread.h" - -static SDL_mutex *mutex = NULL; -static SDL_threadID mainthread; -static SDL_Thread *threads[6]; -static volatile int doterminate = 0; - -/* - * SDL_Quit() shouldn't be used with atexit() directly because - * calling conventions may differ... - */ -static void -SDL_Quit_Wrapper(void) -{ - SDL_Quit(); -} - -void -printid(void) -{ - printf("Process %lu: exiting\n", SDL_ThreadID()); -} - -void -terminate(int sig) -{ - signal(SIGINT, terminate); - doterminate = 1; -} - -void -closemutex(int sig) -{ - SDL_threadID id = SDL_ThreadID(); - int i; - printf("Process %lu: Cleaning up...\n", id == mainthread ? 0 : id); - doterminate = 1; - for (i = 0; i < 6; ++i) - SDL_WaitThread(threads[i], NULL); - SDL_DestroyMutex(mutex); - exit(sig); -} - -int SDLCALL -Run(void *data) -{ - if (SDL_ThreadID() == mainthread) - signal(SIGTERM, closemutex); - while (!doterminate) { - printf("Process %lu ready to work\n", SDL_ThreadID()); - if (SDL_mutexP(mutex) < 0) { - fprintf(stderr, "Couldn't lock mutex: %s", SDL_GetError()); - exit(1); - } - printf("Process %lu, working!\n", SDL_ThreadID()); - SDL_Delay(1 * 1000); - printf("Process %lu, done!\n", SDL_ThreadID()); - if (SDL_mutexV(mutex) < 0) { - fprintf(stderr, "Couldn't unlock mutex: %s", SDL_GetError()); - exit(1); - } - /* If this sleep isn't done, then threads may starve */ - SDL_Delay(10); - } - if (SDL_ThreadID() == mainthread && doterminate) { - printf("Process %lu: raising SIGTERM\n", SDL_ThreadID()); - raise(SIGTERM); - } - return (0); -} - -int -main(int argc, char *argv[]) -{ - int i; - int maxproc = 6; - - /* Load the SDL library */ - if (SDL_Init(0) < 0) { - fprintf(stderr, "%s\n", SDL_GetError()); - exit(1); - } - atexit(SDL_Quit_Wrapper); - - if ((mutex = SDL_CreateMutex()) == NULL) { - fprintf(stderr, "Couldn't create mutex: %s\n", SDL_GetError()); - exit(1); - } - - mainthread = SDL_ThreadID(); - printf("Main thread: %lu\n", mainthread); - atexit(printid); - for (i = 0; i < maxproc; ++i) { - if ((threads[i] = SDL_CreateThread(Run, NULL)) == NULL) - fprintf(stderr, "Couldn't create thread!\n"); - } - signal(SIGINT, terminate); - Run(NULL); - - return (0); /* Never reached */ -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testmultiaudio.c b/3rdparty/SDL-1.3.0-5387/test/testmultiaudio.c deleted file mode 100644 index 5d6fc04bf2..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testmultiaudio.c +++ /dev/null @@ -1,141 +0,0 @@ -#include "SDL.h" - -static SDL_AudioSpec spec; -static Uint8 *sound = NULL; /* Pointer to wave data */ -static Uint32 soundlen = 0; /* Length of wave data */ - -typedef struct -{ - SDL_AudioDeviceID dev; - int soundpos; - volatile int done; -} callback_data; - -void SDLCALL -play_through_once(void *arg, Uint8 * stream, int len) -{ - callback_data *cbd = (callback_data *) arg; - Uint8 *waveptr = sound + cbd->soundpos; - int waveleft = soundlen - cbd->soundpos; - int cpy = len; - if (cpy > waveleft) - cpy = waveleft; - - SDL_memcpy(stream, waveptr, cpy); - len -= cpy; - cbd->soundpos += cpy; - if (len > 0) { - stream += cpy; - SDL_memset(stream, spec.silence, len); - cbd->done++; - } -} - -static void -test_multi_audio(int devcount) -{ - callback_data cbd[64]; - int keep_going = 1; - int i; - - if (devcount > 64) { - fprintf(stderr, "Too many devices (%d), clamping to 64...\n", - devcount); - devcount = 64; - } - - spec.callback = play_through_once; - - for (i = 0; i < devcount; i++) { - const char *devname = SDL_GetAudioDeviceName(i, 0); - printf("playing on device #%d: ('%s')...", i, devname); - fflush(stdout); - - SDL_memset(&cbd[0], '\0', sizeof(callback_data)); - spec.userdata = &cbd[0]; - cbd[0].dev = SDL_OpenAudioDevice(devname, 0, &spec, NULL, 0); - if (cbd[0].dev == 0) { - printf("\nOpen device failed: %s\n", SDL_GetError()); - } else { - SDL_PauseAudioDevice(cbd[0].dev, 0); - while (!cbd[0].done) - SDL_Delay(100); - SDL_PauseAudioDevice(cbd[0].dev, 1); - printf("done.\n"); - SDL_CloseAudioDevice(cbd[0].dev); - } - } - - SDL_memset(cbd, '\0', sizeof(cbd)); - - printf("playing on all devices...\n"); - for (i = 0; i < devcount; i++) { - const char *devname = SDL_GetAudioDeviceName(i, 0); - spec.userdata = &cbd[i]; - cbd[i].dev = SDL_OpenAudioDevice(devname, 0, &spec, NULL, 0); - if (cbd[i].dev == 0) { - printf("Open device %d failed: %s\n", i, SDL_GetError()); - } - } - - for (i = 0; i < devcount; i++) { - if (cbd[i].dev) { - SDL_PauseAudioDevice(cbd[i].dev, 0); - } - } - - while (keep_going) { - keep_going = 0; - for (i = 0; i < devcount; i++) { - if ((cbd[i].dev) && (!cbd[i].done)) { - keep_going = 1; - } - } - SDL_Delay(100); - } - - for (i = 0; i < devcount; i++) { - if (cbd[i].dev) { - SDL_PauseAudioDevice(cbd[i].dev, 1); - SDL_CloseAudioDevice(cbd[i].dev); - } - } - - printf("All done!\n"); -} - - -int -main(int argc, char **argv) -{ - int devcount = 0; - - /* Load the SDL library */ - if (SDL_Init(SDL_INIT_AUDIO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - printf("Using audio driver: %s\n", SDL_GetCurrentAudioDriver()); - - devcount = SDL_GetNumAudioDevices(0); - if (devcount < 1) { - fprintf(stderr, "Don't see any specific audio devices!\n"); - } else { - if (argv[1] == NULL) { - argv[1] = "sample.wav"; - } - - /* Load the wave file into memory */ - if (SDL_LoadWAV(argv[1], &spec, &sound, &soundlen) == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", argv[1], - SDL_GetError()); - } else { - test_multi_audio(devcount); - SDL_FreeWAV(sound); - } - } - - SDL_Quit(); - return 0; -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testnative.c b/3rdparty/SDL-1.3.0-5387/test/testnative.c deleted file mode 100644 index bf30670b44..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testnative.c +++ /dev/null @@ -1,221 +0,0 @@ -/* Simple program: Create a native window and attach an SDL renderer */ - -#include - -#include "testnative.h" - -#define WINDOW_W 640 -#define WINDOW_H 480 -#define NUM_SPRITES 100 -#define MAX_SPEED 1 - -static NativeWindowFactory *factories[] = { -#ifdef TEST_NATIVE_WINDOWS - &WindowsWindowFactory, -#endif -#ifdef TEST_NATIVE_X11 - &X11WindowFactory, -#endif -#ifdef TEST_NATIVE_COCOA - &CocoaWindowFactory, -#endif - NULL -}; -static NativeWindowFactory *factory = NULL; -static void *native_window; -static SDL_Rect *positions, *velocities; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_VideoQuit(); - if (native_window) { - factory->DestroyNativeWindow(native_window); - } - exit(rc); -} - -SDL_Texture * -LoadSprite(SDL_Window * window, char *file) -{ - SDL_Surface *temp; - SDL_Texture *sprite; - - /* Load the sprite image */ - temp = SDL_LoadBMP(file); - if (temp == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return 0; - } - - /* Set transparent pixel as the pixel at (0,0) */ - if (temp->format->palette) { - SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint8 *) temp->pixels); - } - - /* Create textures from the image */ - SDL_SelectRenderer(window); - sprite = SDL_CreateTextureFromSurface(0, temp); - if (!sprite) { - fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); - SDL_FreeSurface(temp); - return 0; - } - SDL_FreeSurface(temp); - - /* We're ready to roll. :) */ - return sprite; -} - -void -MoveSprites(SDL_Window * window, SDL_Texture * sprite) -{ - int i, n; - int window_w, window_h; - int sprite_w, sprite_h; - SDL_Rect *position, *velocity; - - SDL_SelectRenderer(window); - - /* Query the sizes */ - SDL_GetWindowSize(window, &window_w, &window_h); - SDL_QueryTexture(sprite, NULL, NULL, &sprite_w, &sprite_h); - - /* Move the sprite, bounce at the wall, and draw */ - n = 0; - SDL_SetRenderDrawColor(0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(); - for (i = 0; i < NUM_SPRITES; ++i) { - position = &positions[i]; - velocity = &velocities[i]; - position->x += velocity->x; - if ((position->x < 0) || (position->x >= (window_w - sprite_w))) { - velocity->x = -velocity->x; - position->x += velocity->x; - } - position->y += velocity->y; - if ((position->y < 0) || (position->y >= (window_h - sprite_h))) { - velocity->y = -velocity->y; - position->y += velocity->y; - } - - /* Blit the sprite onto the screen */ - SDL_RenderCopy(sprite, NULL, position); - } - - /* Update the screen! */ - SDL_RenderPresent(); -} - -int -main(int argc, char *argv[]) -{ - int i, done; - const char *driver; - SDL_Window *window; - SDL_Texture *sprite; - int window_w, window_h; - int sprite_w, sprite_h; - SDL_Event event; - - if (SDL_VideoInit(NULL, 0) < 0) { - fprintf(stderr, "Couldn't initialize SDL video: %s\n", - SDL_GetError()); - exit(1); - } - driver = SDL_GetCurrentVideoDriver(); - - /* Find a native window driver and create a native window */ - for (i = 0; factories[i]; ++i) { - if (SDL_strcmp(driver, factories[i]->tag) == 0) { - factory = factories[i]; - break; - } - } - if (!factory) { - fprintf(stderr, "Couldn't find native window code for %s driver\n", - driver); - quit(2); - } - printf("Creating native window for %s driver\n", driver); - native_window = factory->CreateNativeWindow(WINDOW_W, WINDOW_H); - if (!native_window) { - fprintf(stderr, "Couldn't create native window\n"); - quit(3); - } - window = SDL_CreateWindowFrom(native_window); - if (!window) { - fprintf(stderr, "Couldn't create SDL window: %s\n", SDL_GetError()); - quit(4); - } - SDL_SetWindowTitle(window, "SDL Native Window Test"); - - /* Create the renderer */ - if (SDL_CreateRenderer(window, -1, 0) < 0) { - fprintf(stderr, "Couldn't create renderer: %s\n", SDL_GetError()); - quit(5); - } - - /* Clear the window, load the sprite and go! */ - SDL_SelectRenderer(window); - SDL_SetRenderDrawColor(0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(); - - sprite = LoadSprite(window, "icon.bmp"); - if (!sprite) { - quit(6); - } - - /* Allocate memory for the sprite info */ - SDL_GetWindowSize(window, &window_w, &window_h); - SDL_QueryTexture(sprite, NULL, NULL, &sprite_w, &sprite_h); - positions = (SDL_Rect *) SDL_malloc(NUM_SPRITES * sizeof(SDL_Rect)); - velocities = (SDL_Rect *) SDL_malloc(NUM_SPRITES * sizeof(SDL_Rect)); - if (!positions || !velocities) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - srand(time(NULL)); - for (i = 0; i < NUM_SPRITES; ++i) { - positions[i].x = rand() % (window_w - sprite_w); - positions[i].y = rand() % (window_h - sprite_h); - positions[i].w = sprite_w; - positions[i].h = sprite_h; - velocities[i].x = 0; - velocities[i].y = 0; - while (!velocities[i].x && !velocities[i].y) { - velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - } - } - - /* Main render loop */ - done = 0; - while (!done) { - /* Check for events */ - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_WINDOWEVENT: - switch (event.window.event) { - case SDL_WINDOWEVENT_EXPOSED: - SDL_SelectRenderer(event.window.windowID); - SDL_SetRenderDrawColor(0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(); - break; - } - break; - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - MoveSprites(window, sprite); - } - - quit(0); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testnative.h b/3rdparty/SDL-1.3.0-5387/test/testnative.h deleted file mode 100644 index 9060feb4f7..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testnative.h +++ /dev/null @@ -1,37 +0,0 @@ - -/* Definitions for platform dependent windowing functions to test SDL - integration with native windows -*/ - -#include "SDL.h" - -/* This header includes all the necessary system headers for native windows */ -#include "SDL_syswm.h" - -typedef struct -{ - const char *tag; - void *(*CreateNativeWindow) (int w, int h); - void (*DestroyNativeWindow) (void *window); -} NativeWindowFactory; - -#ifdef SDL_VIDEO_DRIVER_WINDOWS -#define TEST_NATIVE_WINDOWS -extern NativeWindowFactory WindowsWindowFactory; -#endif - -#ifdef SDL_VIDEO_DRIVER_X11 -#define TEST_NATIVE_X11 -extern NativeWindowFactory X11WindowFactory; -#endif - -#ifdef SDL_VIDEO_DRIVER_COCOA -/* Actually, we don't really do this, since it involves adding Objective C - support to the build system, which is a little tricky. You can uncomment - it manually though and link testnativecocoa.m into the test application. -*/ -#if 1 -#define TEST_NATIVE_COCOA -extern NativeWindowFactory CocoaWindowFactory; -#endif -#endif diff --git a/3rdparty/SDL-1.3.0-5387/test/testnativecocoa.m b/3rdparty/SDL-1.3.0-5387/test/testnativecocoa.m deleted file mode 100644 index 030607d665..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testnativecocoa.m +++ /dev/null @@ -1,51 +0,0 @@ - -#include "testnative.h" - -#ifdef TEST_NATIVE_COCOA - -#include - -static void *CreateWindowCocoa(int w, int h); -static void DestroyWindowCocoa(void *window); - -NativeWindowFactory CocoaWindowFactory = { - "cocoa", - CreateWindowCocoa, - DestroyWindowCocoa -}; - -static void *CreateWindowCocoa(int w, int h) -{ - NSAutoreleasePool *pool; - NSWindow *nswindow; - NSRect rect; - unsigned int style; - - pool = [[NSAutoreleasePool alloc] init]; - - rect.origin.x = 0; - rect.origin.y = 0; - rect.size.width = w; - rect.size.height = h; - rect.origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - rect.origin.y - rect.size.height; - - style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask); - - nswindow = [[NSWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:FALSE]; - [nswindow makeKeyAndOrderFront:nil]; - - [pool release]; - - return nswindow; -} - -static void DestroyWindowCocoa(void *window) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSWindow *nswindow = (NSWindow *)window; - - [nswindow close]; - [pool release]; -} - -#endif diff --git a/3rdparty/SDL-1.3.0-5387/test/testnativew32.c b/3rdparty/SDL-1.3.0-5387/test/testnativew32.c deleted file mode 100644 index af98339545..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testnativew32.c +++ /dev/null @@ -1,75 +0,0 @@ - -#include "testnative.h" - -#ifdef TEST_NATIVE_WINDOWS - -static void *CreateWindowNative(int w, int h); -static void DestroyWindowNative(void *window); - -NativeWindowFactory WindowsWindowFactory = { - "windows", - CreateWindowNative, - DestroyWindowNative -}; - -LRESULT CALLBACK -WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_CLOSE: - DestroyWindow(hwnd); - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - default: - return DefWindowProc(hwnd, msg, wParam, lParam); - } - return 0; -} - -static void * -CreateWindowNative(int w, int h) -{ - HWND hwnd; - WNDCLASS wc; - - wc.style = 0; - wc.lpfnWndProc = WndProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = GetModuleHandle(NULL); - wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); - wc.lpszMenuName = NULL; - wc.lpszClassName = "SDL Test"; - - if (!RegisterClass(&wc)) { - MessageBox(NULL, "Window Registration Failed!", "Error!", - MB_ICONEXCLAMATION | MB_OK); - return 0; - } - - hwnd = - CreateWindow("SDL Test", "", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, - CW_USEDEFAULT, w, h, NULL, NULL, GetModuleHandle(NULL), - NULL); - if (hwnd == NULL) { - MessageBox(NULL, "Window Creation Failed!", "Error!", - MB_ICONEXCLAMATION | MB_OK); - return 0; - } - - ShowWindow(hwnd, SW_SHOW); - - return hwnd; -} - -static void -DestroyWindowNative(void *window) -{ - DestroyWindow((HWND) window); -} - -#endif diff --git a/3rdparty/SDL-1.3.0-5387/test/testnativex11.c b/3rdparty/SDL-1.3.0-5387/test/testnativex11.c deleted file mode 100644 index 0f84aa9741..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testnativex11.c +++ /dev/null @@ -1,42 +0,0 @@ - -#include "testnative.h" - -#ifdef TEST_NATIVE_X11 - -static void *CreateWindowX11(int w, int h); -static void DestroyWindowX11(void *window); - -NativeWindowFactory X11WindowFactory = { - "x11", - CreateWindowX11, - DestroyWindowX11 -}; - -static Display *dpy; - -static void * -CreateWindowX11(int w, int h) -{ - Window window = 0; - - dpy = XOpenDisplay(NULL); - if (dpy) { - window = - XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, w, h, 0, 0, - 0); - XMapRaised(dpy, window); - XSync(dpy, False); - } - return (void *) window; -} - -static void -DestroyWindowX11(void *window) -{ - if (dpy) { - XDestroyWindow(dpy, (Window) window); - XCloseDisplay(dpy); - } -} - -#endif diff --git a/3rdparty/SDL-1.3.0-5387/test/testoverlay.c b/3rdparty/SDL-1.3.0-5387/test/testoverlay.c deleted file mode 100644 index 8613970be3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testoverlay.c +++ /dev/null @@ -1,560 +0,0 @@ - -/* Bring up a window and play with it */ - -#include -#include -#include - -#define BENCHMARK_SDL - -#define NOTICE(X) printf("%s", X); - -#define WINDOW_WIDTH 640 -#define WINDOW_HEIGHT 480 - -#include "SDL.h" - -SDL_Surface *screen, *pic; -SDL_Overlay *overlay; -int scale; -int monochrome; -int luminance; -int w, h; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -/* NOTE: These RGB conversion functions are not intended for speed, - only as examples. -*/ - -void -RGBtoYUV(Uint8 * rgb, int *yuv, int monochrome, int luminance) -{ - if (monochrome) { -#if 1 /* these are the two formulas that I found on the FourCC site... */ - yuv[0] = (int)(0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]); - yuv[1] = 128; - yuv[2] = 128; -#else - yuv[0] = (int)((0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16); - yuv[1] = 128; - yuv[2] = 128; -#endif - } else { -#if 1 /* these are the two formulas that I found on the FourCC site... */ - yuv[0] = (int)(0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]); - yuv[1] = (int)((rgb[2] - yuv[0]) * 0.565 + 128); - yuv[2] = (int)((rgb[0] - yuv[0]) * 0.713 + 128); -#else - yuv[0] = (int)((0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16); - yuv[1] = (int)(128 - (0.148 * rgb[0]) - (0.291 * rgb[1]) + (0.439 * rgb[2])); - yuv[2] = (int)(128 + (0.439 * rgb[0]) - (0.368 * rgb[1]) - (0.071 * rgb[2])); -#endif - } - - if (luminance != 100) { - yuv[0] = yuv[0] * luminance / 100; - if (yuv[0] > 255) - yuv[0] = 255; - } - - /* clamp values...if you need to, we don't seem to have a need */ - /* - for(i=0;i<3;i++) - { - if(yuv[i]<0) - yuv[i]=0; - if(yuv[i]>255) - yuv[i]=255; - } - */ -} - -void -ConvertRGBtoYV12(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op[3]; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - /* Black initialization */ - /* - memset(o->pixels[0],0,o->pitches[0]*o->h); - memset(o->pixels[1],128,o->pitches[1]*((o->h+1)/2)); - memset(o->pixels[2],128,o->pitches[2]*((o->h+1)/2)); - */ - - /* Convert */ - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op[0] = o->pixels[0] + o->pitches[0] * y; - op[1] = o->pixels[1] + o->pitches[1] * (y / 2); - op[2] = o->pixels[2] + o->pitches[2] * (y / 2); - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - *(op[0]++) = yuv[0]; - if (x % 2 == 0 && y % 2 == 0) { - *(op[1]++) = yuv[2]; - *(op[2]++) = yuv[1]; - } - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoIYUV(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op[3]; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - /* Black initialization */ - /* - memset(o->pixels[0],0,o->pitches[0]*o->h); - memset(o->pixels[1],128,o->pitches[1]*((o->h+1)/2)); - memset(o->pixels[2],128,o->pitches[2]*((o->h+1)/2)); - */ - - /* Convert */ - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op[0] = o->pixels[0] + o->pitches[0] * y; - op[1] = o->pixels[1] + o->pitches[1] * (y / 2); - op[2] = o->pixels[2] + o->pitches[2] * (y / 2); - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - *(op[0]++) = yuv[0]; - if (x % 2 == 0 && y % 2 == 0) { - *(op[1]++) = yuv[1]; - *(op[2]++) = yuv[2]; - } - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoUYVY(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op = o->pixels[0] + o->pitches[0] * y; - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - if (x % 2 == 0) { - *(op++) = yuv[1]; - *(op++) = yuv[0]; - *(op++) = yuv[2]; - } else - *(op++) = yuv[0]; - - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoYVYU(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op = o->pixels[0] + o->pitches[0] * y; - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - if (x % 2 == 0) { - *(op++) = yuv[0]; - *(op++) = yuv[2]; - op[1] = yuv[1]; - } else { - *op = yuv[0]; - op += 2; - } - - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoYUY2(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op = o->pixels[0] + o->pitches[0] * y; - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - if (x % 2 == 0) { - *(op++) = yuv[0]; - *(op++) = yuv[1]; - op[1] = yuv[2]; - } else { - *op = yuv[0]; - op += 2; - } - - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -Draw() -{ - SDL_Rect rect; - int i; - int disp; - - if (!scale) { - rect.w = overlay->w; - rect.h = overlay->h; - for (i = 0; i < h - rect.h && i < w - rect.w; i++) { - rect.x = i; - rect.y = i; - SDL_DisplayYUVOverlay(overlay, &rect); - } - } else { - rect.w = overlay->w / 2; - rect.h = overlay->h / 2; - rect.x = (w - rect.w) / 2; - rect.y = (h - rect.h) / 2; - disp = rect.y - 1; - for (i = 0; i < disp; i++) { - rect.w += 2; - rect.h += 2; - rect.x--; - rect.y--; - SDL_DisplayYUVOverlay(overlay, &rect); - } - } - printf("Displayed %d times.\n", i); -} - -static void -PrintUsage(char *argv0) -{ - fprintf(stderr, "Usage: %s [arg] [arg] [arg] ...\n", argv0); - fprintf(stderr, "Where 'arg' is one of:\n"); - fprintf(stderr, " -delay \n"); - fprintf(stderr, " -width \n"); - fprintf(stderr, " -height \n"); - fprintf(stderr, " -bpp \n"); - fprintf(stderr, - " -format (one of the: YV12, IYUV, YUY2, UYVY, YVYU)\n"); - fprintf(stderr, " -hw\n"); - fprintf(stderr, " -flip\n"); - fprintf(stderr, - " -scale (test scaling features, from 50%% upto window size)\n"); - fprintf(stderr, " -mono (use monochromatic RGB2YUV conversion)\n"); - fprintf(stderr, - " -lum (use luminance correction during RGB2YUV conversion,\n"); - fprintf(stderr, - " from 0%% to unlimited, normal is 100%%)\n"); - fprintf(stderr, " -help (shows this help)\n"); - fprintf(stderr, " -fullscreen (test overlay in fullscreen mode)\n"); -} - -int -main(int argc, char **argv) -{ - char *argv0 = argv[0]; - int flip; - int delay; - int desired_bpp; - Uint32 video_flags, overlay_format; - char *bmpfile; -#ifdef BENCHMARK_SDL - Uint32 then, now; -#endif - int i; - - /* Set default options and check command-line */ - flip = 0; - scale = 0; - monochrome = 0; - luminance = 100; - delay = 1; - w = WINDOW_WIDTH; - h = WINDOW_HEIGHT; - desired_bpp = 0; - video_flags = 0; - overlay_format = SDL_YV12_OVERLAY; - - while (argc > 1) { - if (strcmp(argv[1], "-delay") == 0) { - if (argv[2]) { - delay = atoi(argv[2]); - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -delay option requires an argument\n"); - return (1); - } - } else if (strcmp(argv[1], "-width") == 0) { - if (argv[2] && ((w = atoi(argv[2])) > 0)) { - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -width option requires an argument\n"); - return (1); - } - } else if (strcmp(argv[1], "-height") == 0) { - if (argv[2] && ((h = atoi(argv[2])) > 0)) { - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -height option requires an argument\n"); - return (1); - } - } else if (strcmp(argv[1], "-bpp") == 0) { - if (argv[2]) { - desired_bpp = atoi(argv[2]); - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -bpp option requires an argument\n"); - return (1); - } - } else if (strcmp(argv[1], "-lum") == 0) { - if (argv[2]) { - luminance = atoi(argv[2]); - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -lum option requires an argument\n"); - return (1); - } - } else if (strcmp(argv[1], "-format") == 0) { - if (argv[2]) { - if (!strcmp(argv[2], "YV12")) - overlay_format = SDL_YV12_OVERLAY; - else if (!strcmp(argv[2], "IYUV")) - overlay_format = SDL_IYUV_OVERLAY; - else if (!strcmp(argv[2], "YUY2")) - overlay_format = SDL_YUY2_OVERLAY; - else if (!strcmp(argv[2], "UYVY")) - overlay_format = SDL_UYVY_OVERLAY; - else if (!strcmp(argv[2], "YVYU")) - overlay_format = SDL_YVYU_OVERLAY; - else { - fprintf(stderr, - "The -format option %s is not recognized\n", - argv[2]); - return (1); - } - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -format option requires an argument\n"); - return (1); - } - } else if (strcmp(argv[1], "-hw") == 0) { - video_flags |= SDL_HWSURFACE; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-flip") == 0) { - video_flags |= SDL_DOUBLEBUF; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-scale") == 0) { - scale = 1; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-mono") == 0) { - monochrome = 1; - argv += 1; - argc -= 1; - } else if ((strcmp(argv[1], "-help") == 0) - || (strcmp(argv[1], "-h") == 0)) { - PrintUsage(argv0); - return (1); - } else if (strcmp(argv[1], "-fullscreen") == 0) { - video_flags |= SDL_FULLSCREEN; - argv += 1; - argc -= 1; - } else - break; - } - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Initialize the display */ - screen = SDL_SetVideoMode(w, h, desired_bpp, video_flags); - if (screen == NULL) { - fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", - w, h, desired_bpp, SDL_GetError()); - quit(1); - } - printf("Set%s %dx%dx%d mode\n", - screen->flags & SDL_FULLSCREEN ? " fullscreen" : "", - screen->w, screen->h, screen->format->BitsPerPixel); - printf("(video surface located in %s memory)\n", - (screen->flags & SDL_HWSURFACE) ? "video" : "system"); - if (screen->flags & SDL_DOUBLEBUF) { - printf("Double-buffering enabled\n"); - flip = 1; - } - - /* Set the window manager title bar */ - SDL_WM_SetCaption("SDL test overlay", "testoverlay"); - - /* Load picture */ - bmpfile = (argv[1] ? argv[1] : "sample.bmp"); - pic = SDL_LoadBMP(bmpfile); - if (pic == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); - quit(1); - } - - /* Convert the picture to 32bits, for easy conversion */ - { - SDL_Surface *newsurf; - SDL_PixelFormat format; - - format.palette = NULL; - format.BitsPerPixel = 32; - format.BytesPerPixel = 4; -#if SDL_BYTEORDER == SDL_LIL_ENDIAN - format.Rshift = 0; - format.Gshift = 8; - format.Bshift = 16; -#else - format.Rshift = 24; - format.Gshift = 16; - format.Bshift = 8; -#endif - format.Ashift = 0; - format.Rmask = 0xff << format.Rshift; - format.Gmask = 0xff << format.Gshift; - format.Bmask = 0xff << format.Bshift; - format.Amask = 0; - format.Rloss = 0; - format.Gloss = 0; - format.Bloss = 0; - format.Aloss = 8; - - newsurf = SDL_ConvertSurface(pic, &format, SDL_SWSURFACE); - if (!newsurf) { - fprintf(stderr, "Couldn't convert picture to 32bits RGB: %s\n", - SDL_GetError()); - quit(1); - } - SDL_FreeSurface(pic); - pic = newsurf; - } - - /* Create the overlay */ - overlay = SDL_CreateYUVOverlay(pic->w, pic->h, overlay_format, screen); - if (overlay == NULL) { - fprintf(stderr, "Couldn't create overlay: %s\n", SDL_GetError()); - quit(1); - } - printf("Created %dx%dx%d %s %s overlay\n", overlay->w, overlay->h, - overlay->planes, overlay->hw_overlay ? "hardware" : "software", - overlay->format == SDL_YV12_OVERLAY ? "YV12" : overlay->format == - SDL_IYUV_OVERLAY ? "IYUV" : overlay->format == - SDL_YUY2_OVERLAY ? "YUY2" : overlay->format == - SDL_UYVY_OVERLAY ? "UYVY" : overlay->format == - SDL_YVYU_OVERLAY ? "YVYU" : "Unknown"); - for (i = 0; i < overlay->planes; i++) { - printf(" plane %d: pitch=%d\n", i, overlay->pitches[i]); - } - - /* Convert to YUV, and draw to the overlay */ -#ifdef BENCHMARK_SDL - then = SDL_GetTicks(); -#endif - switch (overlay->format) { - case SDL_YV12_OVERLAY: - ConvertRGBtoYV12(pic, overlay, monochrome, luminance); - break; - case SDL_UYVY_OVERLAY: - ConvertRGBtoUYVY(pic, overlay, monochrome, luminance); - break; - case SDL_YVYU_OVERLAY: - ConvertRGBtoYVYU(pic, overlay, monochrome, luminance); - break; - case SDL_YUY2_OVERLAY: - ConvertRGBtoYUY2(pic, overlay, monochrome, luminance); - break; - case SDL_IYUV_OVERLAY: - ConvertRGBtoIYUV(pic, overlay, monochrome, luminance); - break; - default: - printf("cannot convert RGB picture to obtained YUV format!\n"); - quit(1); - break; - } -#ifdef BENCHMARK_SDL - now = SDL_GetTicks(); - printf("Conversion Time: %d milliseconds\n", now - then); -#endif - - /* Do all the drawing work */ -#ifdef BENCHMARK_SDL - then = SDL_GetTicks(); -#endif - Draw(); -#ifdef BENCHMARK_SDL - now = SDL_GetTicks(); - printf("Time: %d milliseconds\n", now - then); -#endif - SDL_Delay(delay * 1000); - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testoverlay2.c b/3rdparty/SDL-1.3.0-5387/test/testoverlay2.c deleted file mode 100644 index 9a8ef72dc3..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testoverlay2.c +++ /dev/null @@ -1,584 +0,0 @@ -/******************************************************************************** - * * - * Test of the overlay used for moved pictures, test more closed to real life. * - * Running trojan moose :) Coded by Mike Gorchak. * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "SDL.h" - -#define MOOSEPIC_W 64 -#define MOOSEPIC_H 88 - -#define MOOSEFRAME_SIZE (MOOSEPIC_W * MOOSEPIC_H) -#define MOOSEFRAMES_COUNT 10 - -SDL_Color MooseColors[84] = { - {49, 49, 49} - , {66, 24, 0} - , {66, 33, 0} - , {66, 66, 66} - , - {66, 115, 49} - , {74, 33, 0} - , {74, 41, 16} - , {82, 33, 8} - , - {82, 41, 8} - , {82, 49, 16} - , {82, 82, 82} - , {90, 41, 8} - , - {90, 41, 16} - , {90, 57, 24} - , {99, 49, 16} - , {99, 66, 24} - , - {99, 66, 33} - , {99, 74, 33} - , {107, 57, 24} - , {107, 82, 41} - , - {115, 57, 33} - , {115, 66, 33} - , {115, 66, 41} - , {115, 74, 0} - , - {115, 90, 49} - , {115, 115, 115} - , {123, 82, 0} - , {123, 99, 57} - , - {132, 66, 41} - , {132, 74, 41} - , {132, 90, 8} - , {132, 99, 33} - , - {132, 99, 66} - , {132, 107, 66} - , {140, 74, 49} - , {140, 99, 16} - , - {140, 107, 74} - , {140, 115, 74} - , {148, 107, 24} - , {148, 115, 82} - , - {148, 123, 74} - , {148, 123, 90} - , {156, 115, 33} - , {156, 115, 90} - , - {156, 123, 82} - , {156, 132, 82} - , {156, 132, 99} - , {156, 156, 156} - , - {165, 123, 49} - , {165, 123, 90} - , {165, 132, 82} - , {165, 132, 90} - , - {165, 132, 99} - , {165, 140, 90} - , {173, 132, 57} - , {173, 132, 99} - , - {173, 140, 107} - , {173, 140, 115} - , {173, 148, 99} - , {173, 173, 173} - , - {181, 140, 74} - , {181, 148, 115} - , {181, 148, 123} - , {181, 156, 107} - , - {189, 148, 123} - , {189, 156, 82} - , {189, 156, 123} - , {189, 156, 132} - , - {189, 189, 189} - , {198, 156, 123} - , {198, 165, 132} - , {206, 165, 99} - , - {206, 165, 132} - , {206, 173, 140} - , {206, 206, 206} - , {214, 173, 115} - , - {214, 173, 140} - , {222, 181, 148} - , {222, 189, 132} - , {222, 189, 156} - , - {222, 222, 222} - , {231, 198, 165} - , {231, 231, 231} - , {239, 206, 173} -}; - - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -/* All RGB2YUV conversion code and some other parts of code has been taken from testoverlay.c */ - -/* NOTE: These RGB conversion functions are not intended for speed, - only as examples. -*/ - -void -RGBtoYUV(Uint8 * rgb, int *yuv, int monochrome, int luminance) -{ - if (monochrome) { -#if 1 /* these are the two formulas that I found on the FourCC site... */ - yuv[0] = (int)(0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]); - yuv[1] = 128; - yuv[2] = 128; -#else - yuv[0] = (int)(0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16; - yuv[1] = 128; - yuv[2] = 128; -#endif - } else { -#if 1 /* these are the two formulas that I found on the FourCC site... */ - yuv[0] = (int)(0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]); - yuv[1] = (int)((rgb[2] - yuv[0]) * 0.565 + 128); - yuv[2] = (int)((rgb[0] - yuv[0]) * 0.713 + 128); -#else - yuv[0] = (0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16; - yuv[1] = 128 - (0.148 * rgb[0]) - (0.291 * rgb[1]) + (0.439 * rgb[2]); - yuv[2] = 128 + (0.439 * rgb[0]) - (0.368 * rgb[1]) - (0.071 * rgb[2]); -#endif - } - - if (luminance != 100) { - yuv[0] = yuv[0] * luminance / 100; - if (yuv[0] > 255) - yuv[0] = 255; - } -} - -void -ConvertRGBtoYV12(Uint8 *rgb, Uint8 *out, int w, int h, - int monochrome, int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *op[3]; - - op[0] = out; - op[1] = op[0] + w*h; - op[2] = op[1] + w*h/4; - for (y = 0; y < h; ++y) { - for (x = 0; x < w; ++x) { - RGBtoYUV(rgb, yuv, monochrome, luminance); - *(op[0]++) = yuv[0]; - if (x % 2 == 0 && y % 2 == 0) { - *(op[1]++) = yuv[2]; - *(op[2]++) = yuv[1]; - } - rgb += 3; - } - } -} - -void -ConvertRGBtoIYUV(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op[3]; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - /* Convert */ - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op[0] = o->pixels[0] + o->pitches[0] * y; - op[1] = o->pixels[1] + o->pitches[1] * (y / 2); - op[2] = o->pixels[2] + o->pitches[2] * (y / 2); - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - *(op[0]++) = yuv[0]; - if (x % 2 == 0 && y % 2 == 0) { - *(op[1]++) = yuv[1]; - *(op[2]++) = yuv[2]; - } - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoUYVY(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op = o->pixels[0] + o->pitches[0] * y; - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - if (x % 2 == 0) { - *(op++) = yuv[1]; - *(op++) = yuv[0]; - *(op++) = yuv[2]; - } else - *(op++) = yuv[0]; - - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoYVYU(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op = o->pixels[0] + o->pitches[0] * y; - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - if (x % 2 == 0) { - *(op++) = yuv[0]; - *(op++) = yuv[2]; - op[1] = yuv[1]; - } else { - *op = yuv[0]; - op += 2; - } - - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -void -ConvertRGBtoYUY2(SDL_Surface * s, SDL_Overlay * o, int monochrome, - int luminance) -{ - int x, y; - int yuv[3]; - Uint8 *p, *op; - - SDL_LockSurface(s); - SDL_LockYUVOverlay(o); - - for (y = 0; y < s->h && y < o->h; y++) { - p = ((Uint8 *) s->pixels) + s->pitch * y; - op = o->pixels[0] + o->pitches[0] * y; - for (x = 0; x < s->w && x < o->w; x++) { - RGBtoYUV(p, yuv, monochrome, luminance); - if (x % 2 == 0) { - *(op++) = yuv[0]; - *(op++) = yuv[1]; - op[1] = yuv[2]; - } else { - *op = yuv[0]; - op += 2; - } - - p += s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); - SDL_UnlockSurface(s); -} - -static void -PrintUsage(char *argv0) -{ - fprintf(stderr, "Usage: %s [arg] [arg] [arg] ...\n", argv0); - fprintf(stderr, "\n"); - fprintf(stderr, "Where 'arg' is any of the following options:\n"); - fprintf(stderr, "\n"); - fprintf(stderr, " -fps \n"); - fprintf(stderr, " -nodelay\n"); - fprintf(stderr, " -format (one of the: YV12, IYUV, YUY2, UYVY, YVYU)\n"); - fprintf(stderr, " -scale (initial scale of the overlay)\n"); - fprintf(stderr, " -help (shows this help)\n"); - fprintf(stderr, "\n"); - fprintf(stderr, - "Press ESC to exit, or SPACE to freeze the movie while application running.\n"); - fprintf(stderr, "\n"); -} - -int -main(int argc, char **argv) -{ - Uint8 *RawMooseData; - SDL_RWops *handle; - int window_w; - int window_h; - SDL_Window *window; - SDL_Renderer *renderer; - Uint8 MooseFrame[MOOSEFRAMES_COUNT][MOOSEFRAME_SIZE*2]; - SDL_Texture *MooseTexture; - SDL_Rect displayrect; - SDL_Event event; - int paused = 0; - int i, j; - int fps = 12; - int fpsdelay; - int nodelay = 0; - Uint32 pixel_format = SDL_PIXELFORMAT_YV12; - int scale = 5; - SDL_bool done = SDL_FALSE; - - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return 3; - } - - while (argc > 1) { - if (strcmp(argv[1], "-fps") == 0) { - if (argv[2]) { - fps = atoi(argv[2]); - if (fps == 0) { - fprintf(stderr, - "The -fps option requires an argument [from 1 to 1000], default is 12.\n"); - quit(10); - } - if ((fps < 0) || (fps > 1000)) { - fprintf(stderr, - "The -fps option must be in range from 1 to 1000, default is 12.\n"); - quit(10); - } - argv += 2; - argc -= 2; - } else { - fprintf(stderr, - "The -fps option requires an argument [from 1 to 1000], default is 12.\n"); - quit(10); - } - } else if (strcmp(argv[1], "-nodelay") == 0) { - nodelay = 1; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-format") == 0) { - if (argv[2]) { - if (!strcmp(argv[2], "YV12")) - pixel_format = SDL_PIXELFORMAT_YV12; - else if (!strcmp(argv[2], "IYUV")) - pixel_format = SDL_PIXELFORMAT_IYUV; - else if (!strcmp(argv[2], "YUY2")) - pixel_format = SDL_PIXELFORMAT_YUY2; - else if (!strcmp(argv[2], "UYVY")) - pixel_format = SDL_PIXELFORMAT_UYVY; - else if (!strcmp(argv[2], "YVYU")) - pixel_format = SDL_PIXELFORMAT_YVYU; - else { - fprintf(stderr, - "The -format option %s is not recognized, see help for info.\n", - argv[2]); - quit(10); - } - argv += 2; - argc -= 2; - } else { - fprintf(stderr, - "The -format option requires an argument, default is YUY2.\n"); - quit(10); - } - } else if (strcmp(argv[1], "-scale") == 0) { - if (argv[2]) { - scale = atoi(argv[2]); - if (scale == 0) { - fprintf(stderr, - "The -scale option requires an argument [from 1 to 50], default is 5.\n"); - quit(10); - } - if ((scale < 0) || (scale > 50)) { - fprintf(stderr, - "The -scale option must be in range from 1 to 50, default is 5.\n"); - quit(10); - } - argv += 2; - argc -= 2; - } else { - fprintf(stderr, - "The -fps option requires an argument [from 1 to 1000], default is 12.\n"); - quit(10); - } - } else if ((strcmp(argv[1], "-help") == 0) - || (strcmp(argv[1], "-h") == 0)) { - PrintUsage(argv[0]); - quit(0); - } else { - fprintf(stderr, "Unrecognized option: %s.\n", argv[1]); - quit(10); - } - break; - } - - RawMooseData = (Uint8 *) malloc(MOOSEFRAME_SIZE * MOOSEFRAMES_COUNT); - if (RawMooseData == NULL) { - fprintf(stderr, "Can't allocate memory for movie !\n"); - free(RawMooseData); - quit(1); - } - - /* load the trojan moose images */ - handle = SDL_RWFromFile("moose.dat", "rb"); - if (handle == NULL) { - fprintf(stderr, "Can't find the file moose.dat !\n"); - free(RawMooseData); - quit(2); - } - - SDL_RWread(handle, RawMooseData, MOOSEFRAME_SIZE, MOOSEFRAMES_COUNT); - - SDL_RWclose(handle); - - /* Create the window and renderer */ - window_w = MOOSEPIC_W * scale; - window_h = MOOSEPIC_H * scale; - window = SDL_CreateWindow("Happy Moose", - SDL_WINDOWPOS_UNDEFINED, - SDL_WINDOWPOS_UNDEFINED, - window_w, window_h, - SDL_WINDOW_SHOWN|SDL_WINDOW_RESIZABLE); - if (!window) { - fprintf(stderr, "Couldn't set create window: %s\n", SDL_GetError()); - free(RawMooseData); - quit(4); - } - - renderer = SDL_CreateRenderer(window, -1, 0); - if (!renderer) { - fprintf(stderr, "Couldn't set create renderer: %s\n", SDL_GetError()); - free(RawMooseData); - quit(4); - } - - MooseTexture = SDL_CreateTexture(renderer, pixel_format, SDL_TEXTUREACCESS_STREAMING, MOOSEPIC_W, MOOSEPIC_H); - if (!MooseTexture) { - fprintf(stderr, "Couldn't set create texture: %s\n", SDL_GetError()); - free(RawMooseData); - quit(5); - } - - for (i = 0; i < MOOSEFRAMES_COUNT; i++) { - Uint8 MooseFrameRGB[MOOSEFRAME_SIZE*3]; - Uint8 *rgb; - Uint8 *frame; - - rgb = MooseFrameRGB; - frame = RawMooseData + i * MOOSEFRAME_SIZE; - for (j = 0; j < MOOSEFRAME_SIZE; ++j) { - rgb[0] = MooseColors[frame[j]].r; - rgb[1] = MooseColors[frame[j]].g; - rgb[2] = MooseColors[frame[j]].b; - rgb += 3; - } - ConvertRGBtoYV12(MooseFrameRGB, MooseFrame[i], MOOSEPIC_W, MOOSEPIC_H, 0, 100); - } - - free(RawMooseData); - - /* set the start frame */ - i = 0; - if (nodelay) { - fpsdelay = 0; - } else { - fpsdelay = 1000 / fps; - } - - displayrect.x = 0; - displayrect.y = 0; - displayrect.w = window_w; - displayrect.h = window_h; - - /* Ignore key up events, they don't even get filtered */ - SDL_EventState(SDL_KEYUP, SDL_IGNORE); - - /* Loop, waiting for QUIT or RESIZE */ - while (!done) { - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_WINDOWEVENT: - if (event.window.event == SDL_WINDOWEVENT_RESIZED) { - SDL_RenderSetViewport(renderer, NULL); - displayrect.w = window_w = event.window.data1; - displayrect.h = window_h = event.window.data2; - } - break; - case SDL_MOUSEBUTTONDOWN: - displayrect.x = event.button.x - window_w / 2; - displayrect.y = event.button.y - window_h / 2; - break; - case SDL_MOUSEMOTION: - if (event.motion.state) { - displayrect.x = event.motion.x - window_w / 2; - displayrect.y = event.motion.y - window_h / 2; - } - break; - case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_SPACE) { - paused = !paused; - break; - } - if (event.key.keysym.sym != SDLK_ESCAPE) { - break; - } - case SDL_QUIT: - done = SDL_TRUE; - break; - } - } - SDL_Delay(fpsdelay); - - if (!paused) { - i = (i + 1) % MOOSEFRAMES_COUNT; - - SDL_UpdateTexture(MooseTexture, NULL, MooseFrame[i], MOOSEPIC_W*SDL_BYTESPERPIXEL(pixel_format)); - } - SDL_RenderClear(renderer); - SDL_RenderCopy(renderer, MooseTexture, NULL, &displayrect); - SDL_RenderPresent(renderer); - } - SDL_DestroyRenderer(renderer); - quit(0); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testplatform.c b/3rdparty/SDL-1.3.0-5387/test/testplatform.c deleted file mode 100644 index f2b125479c..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testplatform.c +++ /dev/null @@ -1,193 +0,0 @@ - -#include - -#include "SDL.h" -#include "SDL_endian.h" -#include "SDL_cpuinfo.h" -#include "SDL_assert.h" - -/* - * Watcom C flags these as Warning 201: "Unreachable code" if you just - * compare them directly, so we push it through a function to keep the - * compiler quiet. --ryan. - */ -static int -badsize(size_t sizeoftype, size_t hardcodetype) -{ - return sizeoftype != hardcodetype; -} - -int -TestTypes(SDL_bool verbose) -{ - int error = 0; - - if (badsize(sizeof(Uint8), 1)) { - if (verbose) - printf("sizeof(Uint8) != 1, instead = %u\n", - (unsigned int)sizeof(Uint8)); - ++error; - } - if (badsize(sizeof(Uint16), 2)) { - if (verbose) - printf("sizeof(Uint16) != 2, instead = %u\n", - (unsigned int)sizeof(Uint16)); - ++error; - } - if (badsize(sizeof(Uint32), 4)) { - if (verbose) - printf("sizeof(Uint32) != 4, instead = %u\n", - (unsigned int)sizeof(Uint32)); - ++error; - } -#ifdef SDL_HAS_64BIT_TYPE - if (badsize(sizeof(Uint64), 8)) { - if (verbose) - printf("sizeof(Uint64) != 8, instead = %u\n", - (unsigned int)sizeof(Uint64)); - ++error; - } -#else - if (verbose) { - printf("WARNING: No 64-bit datatype on this platform\n"); - } -#endif - if (verbose && !error) - printf("All data types are the expected size.\n"); - - return (error ? 1 : 0); -} - -int -TestEndian(SDL_bool verbose) -{ - int error = 0; - Uint16 value = 0x1234; - int real_byteorder; - Uint16 value16 = 0xCDAB; - Uint16 swapped16 = 0xABCD; - Uint32 value32 = 0xEFBEADDE; - Uint32 swapped32 = 0xDEADBEEF; -#ifdef SDL_HAS_64BIT_TYPE - Uint64 value64, swapped64; - value64 = 0xEFBEADDE; - value64 <<= 32; - value64 |= 0xCDAB3412; - swapped64 = 0x1234ABCD; - swapped64 <<= 32; - swapped64 |= 0xDEADBEEF; -#endif - - if (verbose) { - printf("Detected a %s endian machine.\n", - (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big"); - } - if ((*((char *) &value) >> 4) == 0x1) { - real_byteorder = SDL_BIG_ENDIAN; - } else { - real_byteorder = SDL_LIL_ENDIAN; - } - if (real_byteorder != SDL_BYTEORDER) { - if (verbose) { - printf("Actually a %s endian machine!\n", - (real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big"); - } - ++error; - } - if (verbose) { - printf("Value 16 = 0x%X, swapped = 0x%X\n", value16, - SDL_Swap16(value16)); - } - if (SDL_Swap16(value16) != swapped16) { - if (verbose) { - printf("16 bit value swapped incorrectly!\n"); - } - ++error; - } - if (verbose) { - printf("Value 32 = 0x%X, swapped = 0x%X\n", value32, - SDL_Swap32(value32)); - } - if (SDL_Swap32(value32) != swapped32) { - if (verbose) { - printf("32 bit value swapped incorrectly!\n"); - } - ++error; - } -#ifdef SDL_HAS_64BIT_TYPE - if (verbose) { -#ifdef _MSC_VER - printf("Value 64 = 0x%I64X, swapped = 0x%I64X\n", value64, - SDL_Swap64(value64)); -#else - printf("Value 64 = 0x%llX, swapped = 0x%llX\n", value64, - SDL_Swap64(value64)); -#endif - } - if (SDL_Swap64(value64) != swapped64) { - if (verbose) { - printf("64 bit value swapped incorrectly!\n"); - } - ++error; - } -#endif - return (error ? 1 : 0); -} - - -int -TestCPUInfo(SDL_bool verbose) -{ - if (verbose) { - printf("CPU count: %d\n", SDL_GetCPUCount()); - printf("CPU cache line size: %d\n", SDL_GetCPUCacheLineSize()); - printf("RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected"); - printf("MMX %s\n", SDL_HasMMX()? "detected" : "not detected"); - printf("SSE %s\n", SDL_HasSSE()? "detected" : "not detected"); - printf("SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected"); - printf("SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected"); - printf("SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected"); - printf("SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected"); - } - return (0); -} - -int -TestAssertions(SDL_bool verbose) -{ - SDL_assert(1); - SDL_assert_release(1); - SDL_assert_paranoid(1); - SDL_assert(0 || 1); - SDL_assert_release(0 || 1); - SDL_assert_paranoid(0 || 1); - -#if 0 /* enable this to test assertion failures. */ - SDL_assert_release(1 == 2); - SDL_assert_release(5 < 4); - SDL_assert_release(0 && "This is a test"); -#endif - - return (0); -} - -int -main(int argc, char *argv[]) -{ - SDL_bool verbose = SDL_TRUE; - int status = 0; - - if (argv[1] && (SDL_strcmp(argv[1], "-q") == 0)) { - verbose = SDL_FALSE; - } - if (verbose) { - printf("This system is running %s\n", SDL_GetPlatform()); - } - - status += TestTypes(verbose); - status += TestEndian(verbose); - status += TestCPUInfo(verbose); - status += TestAssertions(verbose); - - return status; -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testpower.c b/3rdparty/SDL-1.3.0-5387/test/testpower.c deleted file mode 100644 index fe91514fed..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testpower.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Simple test of power subsystem. */ - -#include -#include "SDL.h" - -static void -report_power(void) -{ - int seconds, percent; - const SDL_PowerState state = SDL_GetPowerInfo(&seconds, &percent); - char *statestr = NULL; - - printf("SDL-reported power info...\n"); - switch (state) { - case SDL_POWERSTATE_UNKNOWN: - statestr = "Unknown"; - break; - case SDL_POWERSTATE_ON_BATTERY: - statestr = "On battery"; - break; - case SDL_POWERSTATE_NO_BATTERY: - statestr = "No battery"; - break; - case SDL_POWERSTATE_CHARGING: - statestr = "Charging"; - break; - case SDL_POWERSTATE_CHARGED: - statestr = "Charged"; - break; - default: - statestr = "!!API ERROR!!"; - break; - } - - printf("State: %s\n", statestr); - - if (percent == -1) { - printf("Percent left: unknown\n"); - } else { - printf("Percent left: %d%%\n", percent); - } - - if (seconds == -1) { - printf("Time left: unknown\n"); - } else { - printf("Time left: %d minutes, %d seconds\n", (int) (seconds / 60), - (int) (seconds % 60)); - } -} - - -int -main(int argc, char *argv[]) -{ - if (SDL_Init(SDL_INIT_VIDEO) == -1) { - fprintf(stderr, "SDL_Init() failed: %s\n", SDL_GetError()); - return 1; - } - - report_power(); - - SDL_Quit(); - return 0; -} - -/* end of testpower.c ... */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testresample.c b/3rdparty/SDL-1.3.0-5387/test/testresample.c deleted file mode 100644 index 9acc345c6f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testresample.c +++ /dev/null @@ -1,104 +0,0 @@ -#include -#include "SDL.h" - -int -main(int argc, char **argv) -{ - SDL_AudioSpec spec; - SDL_AudioCVT cvt; - Uint32 len = 0; - Uint8 *data = NULL; - int cvtfreq = 0; - int bitsize = 0; - int blockalign = 0; - int avgbytes = 0; - SDL_RWops *io = NULL; - - if (argc != 4) { - fprintf(stderr, "USAGE: %s in.wav out.wav newfreq\n", argv[0]); - return 1; - } - - cvtfreq = atoi(argv[3]); - - if (SDL_Init(SDL_INIT_AUDIO) == -1) { - fprintf(stderr, "SDL_Init() failed: %s\n", SDL_GetError()); - return 2; - } - - if (SDL_LoadWAV(argv[1], &spec, &data, &len) == NULL) { - fprintf(stderr, "failed to load %s: %s\n", argv[1], SDL_GetError()); - SDL_Quit(); - return 3; - } - - if (SDL_BuildAudioCVT(&cvt, spec.format, spec.channels, spec.freq, - spec.format, spec.channels, cvtfreq) == -1) { - fprintf(stderr, "failed to build CVT: %s\n", SDL_GetError()); - SDL_FreeWAV(data); - SDL_Quit(); - return 4; - } - - cvt.len = len; - cvt.buf = (Uint8 *) malloc(len * cvt.len_mult); - if (cvt.buf == NULL) { - fprintf(stderr, "Out of memory.\n"); - SDL_FreeWAV(data); - SDL_Quit(); - return 5; - } - memcpy(cvt.buf, data, len); - - if (SDL_ConvertAudio(&cvt) == -1) { - fprintf(stderr, "Conversion failed: %s\n", SDL_GetError()); - free(cvt.buf); - SDL_FreeWAV(data); - SDL_Quit(); - return 6; - } - - /* write out a WAV header... */ - io = SDL_RWFromFile(argv[2], "wb"); - if (io == NULL) { - fprintf(stderr, "fopen('%s') failed: %s\n", argv[2], SDL_GetError()); - free(cvt.buf); - SDL_FreeWAV(data); - SDL_Quit(); - return 7; - } - - bitsize = SDL_AUDIO_BITSIZE(spec.format); - blockalign = (bitsize / 8) * spec.channels; - avgbytes = cvtfreq * blockalign; - - SDL_WriteLE32(io, 0x46464952); /* RIFF */ - SDL_WriteLE32(io, len * cvt.len_mult + 36); - SDL_WriteLE32(io, 0x45564157); /* WAVE */ - SDL_WriteLE32(io, 0x20746D66); /* fmt */ - SDL_WriteLE32(io, 16); /* chunk size */ - SDL_WriteLE16(io, 1); /* uncompressed */ - SDL_WriteLE16(io, spec.channels); /* channels */ - SDL_WriteLE32(io, cvtfreq); /* sample rate */ - SDL_WriteLE32(io, avgbytes); /* average bytes per second */ - SDL_WriteLE16(io, blockalign); /* block align */ - SDL_WriteLE16(io, bitsize); /* significant bits per sample */ - SDL_WriteLE32(io, 0x61746164); /* data */ - SDL_WriteLE32(io, cvt.len_cvt); /* size */ - SDL_RWwrite(io, cvt.buf, cvt.len_cvt, 1); - - if (SDL_RWclose(io) == -1) { - fprintf(stderr, "fclose('%s') failed: %s\n", argv[2], SDL_GetError()); - free(cvt.buf); - SDL_FreeWAV(data); - SDL_Quit(); - return 8; - } // if - - free(cvt.buf); - SDL_FreeWAV(data); - SDL_Quit(); - return 0; -} // main - -// end of resample_test.c ... diff --git a/3rdparty/SDL-1.3.0-5387/test/testrumble.c b/3rdparty/SDL-1.3.0-5387/test/testrumble.c deleted file mode 100644 index 3ff9830322..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testrumble.c +++ /dev/null @@ -1,133 +0,0 @@ -/* -Copyright (c) 2011, Edgar Simo Serra -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of the Simple Directmedia Layer (SDL) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * includes - */ -#include -#include "SDL.h" -#include "SDL_haptic.h" - -#include /* printf */ -#include /* strstr */ -#include /* isdigit */ - - -static SDL_Haptic *haptic; - - -/** - * @brief The entry point of this force feedback demo. - * @param[in] argc Number of arguments. - * @param[in] argv Array of argc arguments. - */ -int -main(int argc, char **argv) -{ - int i; - char *name; - int index; - SDL_HapticEffect efx[5]; - int id[5]; - int nefx; - unsigned int supported; - - name = NULL; - index = -1; - if (argc > 1) { - name = argv[1]; - if ((strcmp(name, "--help") == 0) || (strcmp(name, "-h") == 0)) { - printf("USAGE: %s [device]\n" - "If device is a two-digit number it'll use it as an index, otherwise\n" - "it'll use it as if it were part of the device's name.\n", - argv[0]); - return 0; - } - - i = strlen(name); - if ((i < 3) && isdigit(name[0]) && ((i == 1) || isdigit(name[1]))) { - index = atoi(name); - name = NULL; - } - } - - /* Initialize the force feedbackness */ - SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_JOYSTICK | - SDL_INIT_HAPTIC); - printf("%d Haptic devices detected.\n", SDL_NumHaptics()); - if (SDL_NumHaptics() > 0) { - /* We'll just use index or the first force feedback device found */ - if (name == NULL) { - i = (index != -1) ? index : 0; - } - /* Try to find matching device */ - else { - for (i = 0; i < SDL_NumHaptics(); i++) { - if (strstr(SDL_HapticName(i), name) != NULL) - break; - } - - if (i >= SDL_NumHaptics()) { - printf("Unable to find device matching '%s', aborting.\n", - name); - return 1; - } - } - - haptic = SDL_HapticOpen(i); - if (haptic == NULL) { - printf("Unable to create the haptic device: %s\n", - SDL_GetError()); - return 1; - } - printf("Device: %s\n", SDL_HapticName(i)); - } else { - printf("No Haptic devices found!\n"); - return 1; - } - - /* We only want force feedback errors. */ - SDL_ClearError(); - - if (SDL_HapticRumbleSupported(haptic) == SDL_FALSE) { - printf("\nRumble not supported!\n"); - return 1; - } - if (SDL_HapticRumbleInit(haptic) != 0) { - printf("\nFailed to initialize rumble: %s\n", SDL_GetError()); - return 1; - } - printf("Playing 2 second rumble at 0.5 magnitude.\n"); - if (SDL_HapticRumblePlay(haptic, 0.5, 5000) != 0) { - printf("\nFailed to play rumble: %s\n", SDL_GetError() ); - return 1; - } - SDL_Delay(2000); - printf("Stopping rumble.\n"); - SDL_HapticRumbleStop(haptic); - SDL_Delay(2000); - printf("Playing 2 second rumble at 0.3 magnitude.\n"); - if (SDL_HapticRumblePlay(haptic, 0.3, 5000) != 0) { - printf("\nFailed to play rumble: %s\n", SDL_GetError() ); - return 1; - } - SDL_Delay(2000); - - /* Quit */ - if (haptic != NULL) - SDL_HapticClose(haptic); - SDL_Quit(); - - return 0; -} - diff --git a/3rdparty/SDL-1.3.0-5387/test/testscale.c b/3rdparty/SDL-1.3.0-5387/test/testscale.c deleted file mode 100644 index 30fca1ef9e..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testscale.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Simple program: Move N sprites around on the screen as fast as possible */ - -#include -#include -#include - -#include "SDL.h" -#include "common.h" - -#define WINDOW_WIDTH 640 -#define WINDOW_HEIGHT 480 - -static CommonState *state; - -typedef struct { - SDL_Window *window; - SDL_Renderer *renderer; - SDL_Texture *background; - SDL_Texture *sprite; - SDL_Rect sprite_rect; - int scale_direction; -} DrawState; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - CommonQuit(state); - exit(rc); -} - -SDL_Texture * -LoadTexture(SDL_Renderer *renderer, char *file, SDL_bool transparent) -{ - SDL_Surface *temp; - SDL_Texture *texture; - - /* Load the sprite image */ - temp = SDL_LoadBMP(file); - if (temp == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return NULL; - } - - /* Set transparent pixel as the pixel at (0,0) */ - if (transparent) { - if (temp->format->palette) { - SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels); - } else { - switch (temp->format->BitsPerPixel) { - case 15: - SDL_SetColorKey(temp, SDL_TRUE, - (*(Uint16 *) temp->pixels) & 0x00007FFF); - break; - case 16: - SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels); - break; - case 24: - SDL_SetColorKey(temp, SDL_TRUE, - (*(Uint32 *) temp->pixels) & 0x00FFFFFF); - break; - case 32: - SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels); - break; - } - } - } - - /* Create textures from the image */ - texture = SDL_CreateTextureFromSurface(renderer, temp); - if (!texture) { - fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); - SDL_FreeSurface(temp); - return NULL; - } - SDL_FreeSurface(temp); - - /* We're ready to roll. :) */ - return texture; -} - -void -Draw(DrawState *s) -{ - SDL_Rect viewport; - - SDL_RenderGetViewport(s->renderer, &viewport); - - /* Draw the background */ - SDL_RenderCopy(s->renderer, s->background, NULL, NULL); - - /* Scale and draw the sprite */ - s->sprite_rect.w += s->scale_direction; - s->sprite_rect.h += s->scale_direction; - if (s->scale_direction > 0) { - if (s->sprite_rect.w >= viewport.w || s->sprite_rect.h >= viewport.h) { - s->scale_direction = -1; - } - } else { - if (s->sprite_rect.w <= 1 || s->sprite_rect.h <= 1) { - s->scale_direction = 1; - } - } - s->sprite_rect.x = (viewport.w - s->sprite_rect.w) / 2; - s->sprite_rect.y = (viewport.h - s->sprite_rect.h) / 2; - - SDL_RenderCopy(s->renderer, s->sprite, NULL, &s->sprite_rect); - - /* Update the screen! */ - SDL_RenderPresent(s->renderer); -} - -int -main(int argc, char *argv[]) -{ - DrawState *drawstates; - int i, done; - SDL_Event event; - int frames; - Uint32 then, now; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state)); - return 1; - } - i += consumed; - } - if (!CommonInit(state)) { - quit(2); - } - - drawstates = SDL_stack_alloc(DrawState, state->num_windows); - for (i = 0; i < state->num_windows; ++i) { - DrawState *drawstate = &drawstates[i]; - - drawstate->window = state->windows[i]; - drawstate->renderer = state->renderers[i]; - drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE); - drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE); - if (!drawstate->sprite || !drawstate->background) { - quit(2); - } - SDL_QueryTexture(drawstate->sprite, NULL, NULL, - &drawstate->sprite_rect.w, &drawstate->sprite_rect.h); - drawstate->scale_direction = 1; - } - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - } - for (i = 0; i < state->num_windows; ++i) { - Draw(&drawstates[i]); - } - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - double fps = ((double) frames * 1000) / (now - then); - printf("%2.2f frames per second\n", fps); - } - - SDL_stack_free(drawstates); - - quit(0); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testsem.c b/3rdparty/SDL-1.3.0-5387/test/testsem.c deleted file mode 100644 index c4787e9b8a..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testsem.c +++ /dev/null @@ -1,112 +0,0 @@ - -/* Simple test of the SDL semaphore code */ - -#include -#include -#include - -#include "SDL.h" -#include "SDL_thread.h" - -#define NUM_THREADS 10 - -static SDL_sem *sem; -int alive = 1; - -int SDLCALL -ThreadFunc(void *data) -{ - int threadnum = (int) (uintptr_t) data; - while (alive) { - SDL_SemWait(sem); - fprintf(stderr, - "Thread number %d has got the semaphore (value = %d)!\n", - threadnum, SDL_SemValue(sem)); - SDL_Delay(200); - SDL_SemPost(sem); - fprintf(stderr, - "Thread number %d has released the semaphore (value = %d)!\n", - threadnum, SDL_SemValue(sem)); - SDL_Delay(1); /* For the scheduler */ - } - printf("Thread number %d exiting.\n", threadnum); - return 0; -} - -static void -killed(int sig) -{ - alive = 0; -} - -static void -TestWaitTimeout(void) -{ - Uint32 start_ticks; - Uint32 end_ticks; - Uint32 duration; - - sem = SDL_CreateSemaphore(0); - printf("Waiting 2 seconds on semaphore\n"); - - start_ticks = SDL_GetTicks(); - SDL_SemWaitTimeout(sem, 2000); - end_ticks = SDL_GetTicks(); - - duration = end_ticks - start_ticks; - - /* Accept a little offset in the effective wait */ - if (duration > 1900 && duration < 2050) - printf("Wait done.\n"); - else - fprintf(stderr, "Wait took %d milliseconds\n", duration); -} - -int -main(int argc, char **argv) -{ - SDL_Thread *threads[NUM_THREADS]; - uintptr_t i; - int init_sem; - - if (argc < 2) { - fprintf(stderr, "Usage: %s init_value\n", argv[0]); - return (1); - } - - /* Load the SDL library */ - if (SDL_Init(0) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - signal(SIGTERM, killed); - signal(SIGINT, killed); - - init_sem = atoi(argv[1]); - sem = SDL_CreateSemaphore(init_sem); - - printf("Running %d threads, semaphore value = %d\n", NUM_THREADS, - init_sem); - /* Create all the threads */ - for (i = 0; i < NUM_THREADS; ++i) { - threads[i] = SDL_CreateThread(ThreadFunc, (void *) i); - } - - /* Wait 10 seconds */ - SDL_Delay(10 * 1000); - - /* Wait for all threads to finish */ - printf("Waiting for threads to finish\n"); - alive = 0; - for (i = 0; i < NUM_THREADS; ++i) { - SDL_WaitThread(threads[i], NULL); - } - printf("Finished waiting for threads\n"); - - SDL_DestroySemaphore(sem); - - TestWaitTimeout(); - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testshader.c b/3rdparty/SDL-1.3.0-5387/test/testshader.c deleted file mode 100644 index 72e5c106c4..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testshader.c +++ /dev/null @@ -1,487 +0,0 @@ -/* This is a simple example of using GLSL shaders with SDL */ - -#include "SDL.h" - -#ifdef HAVE_OPENGL - -#include "SDL_opengl.h" - - -static SDL_bool shaders_supported; -static int current_shader = 0; - -enum { - SHADER_COLOR, - SHADER_TEXTURE, - SHADER_TEXCOORDS, - NUM_SHADERS -}; - -typedef struct { - GLuint program; - GLuint vert_shader; - GLuint frag_shader; - const char *vert_source; - const char *frag_source; -} ShaderData; - -static ShaderData shaders[NUM_SHADERS] = { - - /* SHADER_COLOR */ - { 0, 0, 0, - /* vertex shader */ -"varying vec4 v_color;\n" -"\n" -"void main()\n" -"{\n" -" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" -" v_color = gl_Color;\n" -"}", - /* fragment shader */ -"varying vec4 v_color;\n" -"\n" -"void main()\n" -"{\n" -" gl_FragColor = v_color;\n" -"}" - }, - - /* SHADER_TEXTURE */ - { 0, 0, 0, - /* vertex shader */ -"varying vec4 v_color;\n" -"varying vec2 v_texCoord;\n" -"\n" -"void main()\n" -"{\n" -" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" -" v_color = gl_Color;\n" -" v_texCoord = vec2(gl_MultiTexCoord0);\n" -"}", - /* fragment shader */ -"varying vec4 v_color;\n" -"varying vec2 v_texCoord;\n" -"uniform sampler2D tex0;\n" -"\n" -"void main()\n" -"{\n" -" gl_FragColor = texture2D(tex0, v_texCoord) * v_color;\n" -"}" - }, - - /* SHADER_TEXCOORDS */ - { 0, 0, 0, - /* vertex shader */ -"varying vec2 v_texCoord;\n" -"\n" -"void main()\n" -"{\n" -" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" -" v_texCoord = vec2(gl_MultiTexCoord0);\n" -"}", - /* fragment shader */ -"varying vec2 v_texCoord;\n" -"\n" -"void main()\n" -"{\n" -" vec4 color;\n" -" vec2 delta;\n" -" float dist;\n" -"\n" -" delta = vec2(0.5, 0.5) - v_texCoord;\n" -" dist = dot(delta, delta);\n" -"\n" -" color.r = v_texCoord.x;\n" -" color.g = v_texCoord.x * v_texCoord.y;\n" -" color.b = v_texCoord.y;\n" -" color.a = 1.0 - (dist * 4.0);\n" -" gl_FragColor = color;\n" -"}" - }, -}; - -static PFNGLATTACHOBJECTARBPROC glAttachObjectARB; -static PFNGLCOMPILESHADERARBPROC glCompileShaderARB; -static PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; -static PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; -static PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; -static PFNGLGETINFOLOGARBPROC glGetInfoLogARB; -static PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; -static PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; -static PFNGLLINKPROGRAMARBPROC glLinkProgramARB; -static PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -static PFNGLUNIFORM1IARBPROC glUniform1iARB; -static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; - -static SDL_bool CompileShader(GLenum shader, const char *source) -{ - GLint status; - - glShaderSourceARB(shader, 1, &source, NULL); - glCompileShaderARB(shader); - glGetObjectParameterivARB(shader, GL_OBJECT_COMPILE_STATUS_ARB, &status); - if (status == 0) { - GLint length; - char *info; - - glGetObjectParameterivARB(shader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length); - info = SDL_stack_alloc(char, length+1); - glGetInfoLogARB(shader, length, NULL, info); - fprintf(stderr, "Failed to compile shader:\n%s\n%s", source, info); - SDL_stack_free(info); - - return SDL_FALSE; - } else { - return SDL_TRUE; - } -} - -static SDL_bool CompileShaderProgram(ShaderData *data) -{ - const int num_tmus_bound = 4; - int i; - GLint location; - - glGetError(); - - /* Create one program object to rule them all */ - data->program = glCreateProgramObjectARB(); - - /* Create the vertex shader */ - data->vert_shader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB); - if (!CompileShader(data->vert_shader, data->vert_source)) { - return SDL_FALSE; - } - - /* Create the fragment shader */ - data->frag_shader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB); - if (!CompileShader(data->frag_shader, data->frag_source)) { - return SDL_FALSE; - } - - /* ... and in the darkness bind them */ - glAttachObjectARB(data->program, data->vert_shader); - glAttachObjectARB(data->program, data->frag_shader); - glLinkProgramARB(data->program); - - /* Set up some uniform variables */ - glUseProgramObjectARB(data->program); - for (i = 0; i < num_tmus_bound; ++i) { - char tex_name[5]; - SDL_snprintf(tex_name, SDL_arraysize(tex_name), "tex%d", i); - location = glGetUniformLocationARB(data->program, tex_name); - if (location >= 0) { - glUniform1iARB(location, i); - } - } - glUseProgramObjectARB(0); - - return (glGetError() == GL_NO_ERROR); -} - -static void DestroyShaderProgram(ShaderData *data) -{ - if (shaders_supported) { - glDeleteObjectARB(data->vert_shader); - glDeleteObjectARB(data->frag_shader); - glDeleteObjectARB(data->program); - } -} - -static SDL_bool InitShaders() -{ - int i; - - /* Check for shader support */ - shaders_supported = SDL_FALSE; - if (SDL_GL_ExtensionSupported("GL_ARB_shader_objects") && - SDL_GL_ExtensionSupported("GL_ARB_shading_language_100") && - SDL_GL_ExtensionSupported("GL_ARB_vertex_shader") && - SDL_GL_ExtensionSupported("GL_ARB_fragment_shader")) { - glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) SDL_GL_GetProcAddress("glAttachObjectARB"); - glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) SDL_GL_GetProcAddress("glCompileShaderARB"); - glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) SDL_GL_GetProcAddress("glCreateProgramObjectARB"); - glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) SDL_GL_GetProcAddress("glCreateShaderObjectARB"); - glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC) SDL_GL_GetProcAddress("glDeleteObjectARB"); - glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC) SDL_GL_GetProcAddress("glGetInfoLogARB"); - glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) SDL_GL_GetProcAddress("glGetObjectParameterivARB"); - glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) SDL_GL_GetProcAddress("glGetUniformLocationARB"); - glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) SDL_GL_GetProcAddress("glLinkProgramARB"); - glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) SDL_GL_GetProcAddress("glShaderSourceARB"); - glUniform1iARB = (PFNGLUNIFORM1IARBPROC) SDL_GL_GetProcAddress("glUniform1iARB"); - glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) SDL_GL_GetProcAddress("glUseProgramObjectARB"); - if (glAttachObjectARB && - glCompileShaderARB && - glCreateProgramObjectARB && - glCreateShaderObjectARB && - glDeleteObjectARB && - glGetInfoLogARB && - glGetObjectParameterivARB && - glGetUniformLocationARB && - glLinkProgramARB && - glShaderSourceARB && - glUniform1iARB && - glUseProgramObjectARB) { - shaders_supported = SDL_TRUE; - } - } - - if (!shaders_supported) { - return SDL_FALSE; - } - - /* Compile all the shaders */ - for (i = 0; i < NUM_SHADERS; ++i) { - if (!CompileShaderProgram(&shaders[i])) { - fprintf(stderr, "Unable to compile shader!\n"); - return SDL_FALSE; - } - } - - /* We're done! */ - return SDL_TRUE; -} - -static void QuitShaders() -{ - int i; - - for (i = 0; i < NUM_SHADERS; ++i) { - DestroyShaderProgram(&shaders[i]); - } -} - -/* Quick utility function for texture creation */ -static int -power_of_two(int input) -{ - int value = 1; - - while (value < input) { - value <<= 1; - } - return value; -} - -GLuint -SDL_GL_LoadTexture(SDL_Surface * surface, GLfloat * texcoord) -{ - GLuint texture; - int w, h; - SDL_Surface *image; - SDL_Rect area; - Uint32 saved_flags; - Uint8 saved_alpha; - - /* Use the surface width and height expanded to powers of 2 */ - w = power_of_two(surface->w); - h = power_of_two(surface->h); - texcoord[0] = 0.0f; /* Min X */ - texcoord[1] = 0.0f; /* Min Y */ - texcoord[2] = (GLfloat) surface->w / w; /* Max X */ - texcoord[3] = (GLfloat) surface->h / h; /* Max Y */ - - image = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, -#if SDL_BYTEORDER == SDL_LIL_ENDIAN /* OpenGL RGBA masks */ - 0x000000FF, - 0x0000FF00, 0x00FF0000, 0xFF000000 -#else - 0xFF000000, - 0x00FF0000, 0x0000FF00, 0x000000FF -#endif - ); - if (image == NULL) { - return 0; - } - - /* Save the alpha blending attributes */ - saved_flags = surface->flags & (SDL_SRCALPHA | SDL_RLEACCELOK); - SDL_GetSurfaceAlphaMod(surface, &saved_alpha); - if ((saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA) { - SDL_SetAlpha(surface, 0, 0); - } - - /* Copy the surface into the GL texture image */ - area.x = 0; - area.y = 0; - area.w = surface->w; - area.h = surface->h; - SDL_BlitSurface(surface, &area, image, &area); - - /* Restore the alpha blending attributes */ - if ((saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA) { - SDL_SetAlpha(surface, saved_flags, saved_alpha); - } - - /* Create an OpenGL texture for the image */ - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, - 0, - GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels); - SDL_FreeSurface(image); /* No longer needed */ - - return texture; -} - -/* A general OpenGL initialization function. Sets all of the initial parameters. */ -void InitGL(int Width, int Height) // We call this right after our OpenGL window is created. -{ - GLdouble aspect; - - glViewport(0, 0, Width, Height); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black - glClearDepth(1.0); // Enables Clearing Of The Depth Buffer - glDepthFunc(GL_LESS); // The Type Of Depth Test To Do - glEnable(GL_DEPTH_TEST); // Enables Depth Testing - glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); // Reset The Projection Matrix - - aspect = (GLdouble)Width / Height; - glOrtho(-3.0, 3.0, -3.0 / aspect, 3.0 / aspect, 0.0, 1.0); - - glMatrixMode(GL_MODELVIEW); -} - -/* The main drawing function. */ -void DrawGLScene(GLuint texture, GLfloat * texcoord) -{ - /* Texture coordinate lookup, to make it simple */ - enum { - MINX, - MINY, - MAXX, - MAXY - }; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer - glLoadIdentity(); // Reset The View - - glTranslatef(-1.5f,0.0f,0.0f); // Move Left 1.5 Units - - // draw a triangle (in smooth coloring mode) - glBegin(GL_POLYGON); // start drawing a polygon - glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red - glVertex3f( 0.0f, 1.0f, 0.0f); // Top - glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green - glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right - glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue - glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left - glEnd(); // we're done with the polygon (smooth color interpolation) - - glTranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units - - // Enable blending - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - // draw a textured square (quadrilateral) - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, texture); - glColor3f(1.0f,1.0f,1.0f); - if (shaders_supported) { - glUseProgramObjectARB(shaders[current_shader].program); - } - - glBegin(GL_QUADS); // start drawing a polygon (4 sided) - glTexCoord2f(texcoord[MINX], texcoord[MINY]); - glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left - glTexCoord2f(texcoord[MAXX], texcoord[MINY]); - glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right - glTexCoord2f(texcoord[MAXX], texcoord[MAXY]); - glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right - glTexCoord2f(texcoord[MINX], texcoord[MAXY]); - glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left - glEnd(); // done with the polygon - - if (shaders_supported) { - glUseProgramObjectARB(0); - } - glDisable(GL_TEXTURE_2D); - - // swap buffers to display, since we're double buffered. - SDL_GL_SwapBuffers(); -} - -int main(int argc, char **argv) -{ - int done; - SDL_Surface *surface; - GLuint texture; - GLfloat texcoords[4]; - - /* Initialize SDL for video output */ - if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { - fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - - /* Create a 640x480 OpenGL screen */ - if ( SDL_SetVideoMode(640, 480, 0, SDL_OPENGL) == NULL ) { - fprintf(stderr, "Unable to create OpenGL screen: %s\n", SDL_GetError()); - SDL_Quit(); - exit(2); - } - - /* Set the title bar in environments that support it */ - SDL_WM_SetCaption("Shader Demo", NULL); - - surface = SDL_LoadBMP("icon.bmp"); - if ( ! surface ) { - fprintf(stderr, "Unable to load icon.bmp: %s\n", SDL_GetError()); - SDL_Quit(); - exit(3); - } - texture = SDL_GL_LoadTexture(surface, texcoords); - SDL_FreeSurface(surface); - - /* Loop, drawing and checking events */ - InitGL(640, 480); - if (InitShaders()) { - printf("Shaders supported, press SPACE to cycle them.\n"); - } else { - printf("Shaders not supported!\n"); - } - done = 0; - while ( ! done ) { - DrawGLScene(texture, texcoords); - - /* This could go in a separate function */ - { SDL_Event event; - while ( SDL_PollEvent(&event) ) { - if ( event.type == SDL_QUIT ) { - done = 1; - } - if ( event.type == SDL_KEYDOWN ) { - if ( event.key.keysym.sym == SDLK_SPACE ) { - current_shader = (current_shader + 1) % NUM_SHADERS; - } - if ( event.key.keysym.sym == SDLK_ESCAPE ) { - done = 1; - } - } - } - } - } - QuitShaders(); - SDL_Quit(); - return 1; -} - -#else /* HAVE_OPENGL */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGL */ - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testshape.c b/3rdparty/SDL-1.3.0-5387/test/testshape.c deleted file mode 100644 index 2d3d774ed4..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testshape.c +++ /dev/null @@ -1,193 +0,0 @@ -#include -#include -#include -#include "SDL.h" -#include "SDL_shape.h" - -#define SHAPED_WINDOW_X 150 -#define SHAPED_WINDOW_Y 150 -#define SHAPED_WINDOW_DIMENSION 640 - -#define TICK_INTERVAL 1000/10 - -typedef struct LoadedPicture { - SDL_Surface *surface; - SDL_Texture *texture; - SDL_WindowShapeMode mode; -} LoadedPicture; - -void render(SDL_Renderer *renderer,SDL_Texture *texture,SDL_Rect texture_dimensions) -{ - //Clear render-target to blue. - SDL_SetRenderDrawColor(renderer,0x00,0x00,0xff,0xff); - SDL_RenderClear(renderer); - - //Render the texture. - SDL_RenderCopy(renderer,texture,&texture_dimensions,&texture_dimensions); - - SDL_RenderPresent(renderer); -} - -static Uint32 next_time; - -Uint32 time_left() -{ - Uint32 now = SDL_GetTicks(); - if(next_time <= now) - return 0; - else - return next_time - now; -} - -int main(int argc,char** argv) -{ - Uint8 num_pictures; - LoadedPicture* pictures; - int i, j; - SDL_PixelFormat* format = NULL; - SDL_Window *window; - SDL_Renderer *renderer; - SDL_Color black = {0,0,0,0xff}; - SDL_Event event; - int event_pending = 0; - int should_exit = 0; - unsigned int current_picture; - int button_down; - Uint32 pixelFormat = 0; - int access = 0; - SDL_Rect texture_dimensions;; - - if(argc < 2) { - printf("SDL_Shape requires at least one bitmap file as argument.\n"); - exit(-1); - } - - if(SDL_VideoInit(NULL) == -1) { - printf("Could not initialize SDL video.\n"); - exit(-2); - } - - num_pictures = argc - 1; - pictures = (LoadedPicture *)malloc(sizeof(LoadedPicture)*num_pictures); - for(i=0;iformat; - if(format->Amask != 0) { - pictures[i].mode.mode = ShapeModeBinarizeAlpha; - pictures[i].mode.parameters.binarizationCutoff = 255; - } - else { - pictures[i].mode.mode = ShapeModeColorKey; - pictures[i].mode.parameters.colorKey = black; - } - } - - window = SDL_CreateShapedWindow("SDL_Shape test",SHAPED_WINDOW_X,SHAPED_WINDOW_Y,SHAPED_WINDOW_DIMENSION,SHAPED_WINDOW_DIMENSION,SDL_WINDOW_RESIZABLE | SDL_WINDOW_SHOWN); - if(window == NULL) { - for(i=0;i= num_pictures) - current_picture = 0; - SDL_QueryTexture(pictures[current_picture].texture,(Uint32 *)&pixelFormat,(int *)&access,&texture_dimensions.w,&texture_dimensions.h); - SDL_SetWindowSize(window,texture_dimensions.w,texture_dimensions.h); - SDL_SetWindowShape(window,pictures[current_picture].surface,&pictures[current_picture].mode); - } - if(event.type == SDL_QUIT) - should_exit = 1; - event_pending = 0; - } - render(renderer,pictures[current_picture].texture,texture_dimensions); - SDL_Delay(time_left()); - next_time += TICK_INTERVAL; - } - - //Free the textures. - for(i=0;i -#include -#include -#include -#include -#include - -#include "SDL.h" - -#define NUM_SPRITES 100 -#define MAX_SPEED 1 - -SDL_Surface *sprite; -int numsprites; -SDL_Rect *sprite_rects; -SDL_Rect *positions; -SDL_Rect *velocities; -int sprites_visible; -int debug_flip; -Uint16 sprite_w, sprite_h; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int -LoadSprite(char *file) -{ - SDL_Surface *temp; - - /* Load the sprite image */ - sprite = SDL_LoadBMP(file); - if (sprite == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return (-1); - } - - /* Set transparent pixel as the pixel at (0,0) */ - if (sprite->format->palette) { - SDL_SetColorKey(sprite, (SDL_SRCCOLORKEY | SDL_RLEACCEL), - *(Uint8 *) sprite->pixels); - } - - /* Convert sprite to video format */ - temp = SDL_DisplayFormat(sprite); - SDL_FreeSurface(sprite); - if (temp == NULL) { - fprintf(stderr, "Couldn't convert background: %s\n", SDL_GetError()); - return (-1); - } - sprite = temp; - - /* We're ready to roll. :) */ - return (0); -} - -void -MoveSprites(SDL_Surface * screen, Uint32 background) -{ - int i, nupdates; - SDL_Rect area, *position, *velocity; - - nupdates = 0; - /* Erase all the sprites if necessary */ - if (sprites_visible) { - SDL_FillRect(screen, NULL, background); - } - - /* Move the sprite, bounce at the wall, and draw */ - for (i = 0; i < numsprites; ++i) { - position = &positions[i]; - velocity = &velocities[i]; - position->x += velocity->x; - if ((position->x < 0) || (position->x >= (screen->w - sprite_w))) { - velocity->x = -velocity->x; - position->x += velocity->x; - } - position->y += velocity->y; - if ((position->y < 0) || (position->y >= (screen->h - sprite_w))) { - velocity->y = -velocity->y; - position->y += velocity->y; - } - - /* Blit the sprite onto the screen */ - area = *position; - SDL_BlitSurface(sprite, NULL, screen, &area); - sprite_rects[nupdates++] = area; - } - - if (debug_flip) { - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - static int t = 0; - - Uint32 color = SDL_MapRGB(screen->format, 255, 0, 0); - SDL_Rect r; - r.x = - (int)((sin((float) t * 2 * 3.1459) + 1.0) / 2.0 * (screen->w - 20)); - r.y = 0; - r.w = 20; - r.h = screen->h; - - SDL_FillRect(screen, &r, color); - t += 2; - } - } - - /* Update the screen! */ - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - SDL_Flip(screen); - } else { - SDL_UpdateRects(screen, nupdates, sprite_rects); - } - sprites_visible = 1; -} - -/* This is a way of telling whether or not to use hardware surfaces */ -Uint32 -FastestFlags(Uint32 flags, int width, int height, int bpp) -{ - const SDL_VideoInfo *info; - - /* Hardware acceleration is only used in fullscreen mode */ - flags |= SDL_FULLSCREEN; - - /* Check for various video capabilities */ - info = SDL_GetVideoInfo(); - if (info->blit_hw_CC && info->blit_fill) { - /* We use accelerated colorkeying and color filling */ - flags |= SDL_HWSURFACE; - } - /* If we have enough video memory, and will use accelerated - blits directly to it, then use page flipping. - */ - if ((flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - /* Direct hardware blitting without double-buffering - causes really bad flickering. - */ - if (info->video_mem * 1024 > (Uint32)(height * width * bpp / 8)) { - flags |= SDL_DOUBLEBUF; - } else { - flags &= ~SDL_HWSURFACE; - } - } - - /* Return the flags */ - return (flags); -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - Uint8 *mem; - int width, height; - Uint8 video_bpp; - Uint32 videoflags; - Uint32 background; - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - numsprites = NUM_SPRITES; - videoflags = SDL_SWSURFACE | SDL_ANYFORMAT | SDL_RESIZABLE; - width = 640; - height = 480; - video_bpp = 8; - debug_flip = 0; - while (argc > 1) { - --argc; - if (strcmp(argv[argc - 1], "-width") == 0) { - width = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc - 1], "-height") == 0) { - height = atoi(argv[argc]); - --argc; - } else if (strcmp(argv[argc - 1], "-bpp") == 0) { - video_bpp = atoi(argv[argc]); - videoflags &= ~SDL_ANYFORMAT; - --argc; - } else if (strcmp(argv[argc], "-fast") == 0) { - videoflags = FastestFlags(videoflags, width, height, video_bpp); - } else if (strcmp(argv[argc], "-hw") == 0) { - videoflags ^= SDL_HWSURFACE; - } else if (strcmp(argv[argc], "-flip") == 0) { - videoflags ^= SDL_DOUBLEBUF; - } else if (strcmp(argv[argc], "-debugflip") == 0) { - debug_flip ^= 1; - } else if (strcmp(argv[argc], "-fullscreen") == 0) { - videoflags ^= SDL_FULLSCREEN; - } else if (isdigit(argv[argc][0])) { - numsprites = atoi(argv[argc]); - } else { - fprintf(stderr, - "Usage: %s [-bpp N] [-hw] [-flip] [-fast] [-fullscreen] [numsprites]\n", - argv[0]); - quit(1); - } - } - - /* Set video mode */ - screen = SDL_SetVideoMode(width, height, video_bpp, videoflags); - if (!screen) { - fprintf(stderr, "Couldn't set %dx%d video mode: %s\n", - width, height, SDL_GetError()); - quit(2); - } - - /* Load the sprite */ - if (LoadSprite("icon.bmp") < 0) { - quit(1); - } - - /* Allocate memory for the sprite info */ - mem = (Uint8 *) malloc(4 * sizeof(SDL_Rect) * numsprites); - if (mem == NULL) { - SDL_FreeSurface(sprite); - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - sprite_rects = (SDL_Rect *) mem; - positions = sprite_rects; - sprite_rects += numsprites; - velocities = sprite_rects; - sprite_rects += numsprites; - sprite_w = sprite->w; - sprite_h = sprite->h; - srand((unsigned int)time(NULL)); - for (i = 0; i < numsprites; ++i) { - positions[i].x = rand() % (screen->w - sprite_w); - positions[i].y = rand() % (screen->h - sprite_h); - positions[i].w = sprite->w; - positions[i].h = sprite->h; - velocities[i].x = 0; - velocities[i].y = 0; - while (!velocities[i].x && !velocities[i].y) { - velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - } - } - - /* Clear the background to grey */ - background = SDL_MapRGB(screen->format, 0xA0, 0xA0, 0xA0); - SDL_FillRect(screen, NULL, background); - SDL_Flip(screen); - - /* Print out information about our surfaces */ - printf("Screen is at %d bits per pixel\n", screen->format->BitsPerPixel); - if ((screen->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - printf("Screen is in video memory\n"); - } else { - printf("Screen is in system memory\n"); - } - if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { - printf("Screen has double-buffering enabled\n"); - } - if ((sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { - printf("Sprite is in video memory\n"); - } else { - printf("Sprite is in system memory\n"); - } - /* Run a sample blit to trigger blit acceleration */ - { - SDL_Rect dst; - dst.x = 0; - dst.y = 0; - dst.w = sprite->w; - dst.h = sprite->h; - SDL_BlitSurface(sprite, NULL, screen, &dst); - SDL_FillRect(screen, &dst, background); - } - if ((sprite->flags & SDL_HWACCEL) == SDL_HWACCEL) { - printf("Sprite blit uses hardware acceleration\n"); - } - if ((sprite->flags & SDL_RLEACCEL) == SDL_RLEACCEL) { - printf("Sprite blit uses RLE acceleration\n"); - } - - /* Loop, blitting sprites and waiting for a keystroke */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - sprites_visible = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_VIDEORESIZE: - screen = SDL_SetVideoMode(event.resize.w, event.resize.h, video_bpp, videoflags); - break; - case SDL_MOUSEBUTTONDOWN: - SDL_WarpMouse(screen->w / 2, screen->h / 2); - break; - case SDL_KEYDOWN: - /* Any keypress quits the app... */ - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - MoveSprites(screen, background); - } - SDL_FreeSurface(sprite); - free(mem); - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - double fps = ((double) frames * 1000) / (now - then); - printf("%2.2f frames per second\n", fps); - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testsprite2.c b/3rdparty/SDL-1.3.0-5387/test/testsprite2.c deleted file mode 100644 index 0b20328042..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testsprite2.c +++ /dev/null @@ -1,329 +0,0 @@ -/* Simple program: Move N sprites around on the screen as fast as possible */ - -#include -#include -#include - -#include "common.h" - -#define NUM_SPRITES 100 -#define MAX_SPEED 1 - -static CommonState *state; -static int num_sprites; -static SDL_Texture **sprites; -static SDL_bool cycle_color; -static SDL_bool cycle_alpha; -static int cycle_direction = 1; -static int current_alpha = 0; -static int current_color = 0; -static SDL_Rect *positions; -static SDL_Rect *velocities; -static int sprite_w, sprite_h; -static SDL_BlendMode blendMode = SDL_BLENDMODE_BLEND; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - if (sprites) { - SDL_free(sprites); - } - if (positions) { - SDL_free(positions); - } - if (velocities) { - SDL_free(velocities); - } - CommonQuit(state); - exit(rc); -} - -int -LoadSprite(char *file) -{ - int i; - SDL_Surface *temp; - - /* Load the sprite image */ - temp = SDL_LoadBMP(file); - if (temp == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return (-1); - } - sprite_w = temp->w; - sprite_h = temp->h; - - /* Set transparent pixel as the pixel at (0,0) */ - if (temp->format->palette) { - SDL_SetColorKey(temp, 1, *(Uint8 *) temp->pixels); - } else { - switch (temp->format->BitsPerPixel) { - case 15: - SDL_SetColorKey(temp, 1, (*(Uint16 *) temp->pixels) & 0x00007FFF); - break; - case 16: - SDL_SetColorKey(temp, 1, *(Uint16 *) temp->pixels); - break; - case 24: - SDL_SetColorKey(temp, 1, (*(Uint32 *) temp->pixels) & 0x00FFFFFF); - break; - case 32: - SDL_SetColorKey(temp, 1, *(Uint32 *) temp->pixels); - break; - } - } - - /* Create textures from the image */ - for (i = 0; i < state->num_windows; ++i) { - SDL_Renderer *renderer = state->renderers[i]; - sprites[i] = SDL_CreateTextureFromSurface(renderer, temp); - if (!sprites[i]) { - fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); - SDL_FreeSurface(temp); - return (-1); - } - SDL_SetTextureBlendMode(sprites[i], blendMode); - } - SDL_FreeSurface(temp); - - /* We're ready to roll. :) */ - return (0); -} - -void -MoveSprites(SDL_Renderer * renderer, SDL_Texture * sprite) -{ - int i, n; - SDL_Rect viewport, temp; - SDL_Rect *position, *velocity; - - /* Query the sizes */ - SDL_RenderGetViewport(renderer, &viewport); - - /* Cycle the color and alpha, if desired */ - if (cycle_color) { - current_color += cycle_direction; - if (current_color < 0) { - current_color = 0; - cycle_direction = -cycle_direction; - } - if (current_color > 255) { - current_color = 255; - cycle_direction = -cycle_direction; - } - SDL_SetTextureColorMod(sprite, 255, (Uint8) current_color, - (Uint8) current_color); - } - if (cycle_alpha) { - current_alpha += cycle_direction; - if (current_alpha < 0) { - current_alpha = 0; - cycle_direction = -cycle_direction; - } - if (current_alpha > 255) { - current_alpha = 255; - cycle_direction = -cycle_direction; - } - SDL_SetTextureAlphaMod(sprite, (Uint8) current_alpha); - } - - /* Draw a gray background */ - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - - /* Test points */ - SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF); - SDL_RenderDrawPoint(renderer, 0, 0); - SDL_RenderDrawPoint(renderer, viewport.w-1, 0); - SDL_RenderDrawPoint(renderer, 0, viewport.h-1); - SDL_RenderDrawPoint(renderer, viewport.w-1, viewport.h-1); - - /* Test horizontal and vertical lines */ - SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF); - SDL_RenderDrawLine(renderer, 1, 0, viewport.w-2, 0); - SDL_RenderDrawLine(renderer, 1, viewport.h-1, viewport.w-2, viewport.h-1); - SDL_RenderDrawLine(renderer, 0, 1, 0, viewport.h-2); - SDL_RenderDrawLine(renderer, viewport.w-1, 1, viewport.w-1, viewport.h-2); - - /* Test fill and copy */ - SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); - temp.x = 1; - temp.y = 1; - temp.w = sprite_w; - temp.h = sprite_h; - SDL_RenderFillRect(renderer, &temp); - SDL_RenderCopy(renderer, sprite, NULL, &temp); - temp.x = viewport.w-sprite_w-1; - temp.y = 1; - temp.w = sprite_w; - temp.h = sprite_h; - SDL_RenderFillRect(renderer, &temp); - SDL_RenderCopy(renderer, sprite, NULL, &temp); - temp.x = 1; - temp.y = viewport.h-sprite_h-1; - temp.w = sprite_w; - temp.h = sprite_h; - SDL_RenderFillRect(renderer, &temp); - SDL_RenderCopy(renderer, sprite, NULL, &temp); - temp.x = viewport.w-sprite_w-1; - temp.y = viewport.h-sprite_h-1; - temp.w = sprite_w; - temp.h = sprite_h; - SDL_RenderFillRect(renderer, &temp); - SDL_RenderCopy(renderer, sprite, NULL, &temp); - - /* Test diagonal lines */ - SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF); - SDL_RenderDrawLine(renderer, sprite_w, sprite_h, - viewport.w-sprite_w-2, viewport.h-sprite_h-2); - SDL_RenderDrawLine(renderer, viewport.w-sprite_w-2, sprite_h, - sprite_w, viewport.h-sprite_h-2); - - /* Move the sprite, bounce at the wall, and draw */ - n = 0; - for (i = 0; i < num_sprites; ++i) { - position = &positions[i]; - velocity = &velocities[i]; - position->x += velocity->x; - if ((position->x < 0) || (position->x >= (viewport.w - sprite_w))) { - velocity->x = -velocity->x; - position->x += velocity->x; - } - position->y += velocity->y; - if ((position->y < 0) || (position->y >= (viewport.h - sprite_h))) { - velocity->y = -velocity->y; - position->y += velocity->y; - } - - /* Blit the sprite onto the screen */ - SDL_RenderCopy(renderer, sprite, NULL, position); - } - - /* Update the screen! */ - SDL_RenderPresent(renderer); -} - -int -main(int argc, char *argv[]) -{ - int i, done; - SDL_Event event; - Uint32 then, now, frames; - - /* Initialize parameters */ - num_sprites = NUM_SPRITES; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - consumed = -1; - if (SDL_strcasecmp(argv[i], "--blend") == 0) { - if (argv[i + 1]) { - if (SDL_strcasecmp(argv[i + 1], "none") == 0) { - blendMode = SDL_BLENDMODE_NONE; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) { - blendMode = SDL_BLENDMODE_BLEND; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "add") == 0) { - blendMode = SDL_BLENDMODE_ADD; - consumed = 2; - } else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) { - blendMode = SDL_BLENDMODE_MOD; - consumed = 2; - } - } - } else if (SDL_strcasecmp(argv[i], "--cyclecolor") == 0) { - cycle_color = SDL_TRUE; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--cyclealpha") == 0) { - cycle_alpha = SDL_TRUE; - consumed = 1; - } else if (SDL_isdigit(*argv[i])) { - num_sprites = SDL_atoi(argv[i]); - consumed = 1; - } - } - if (consumed < 0) { - fprintf(stderr, - "Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n", - argv[0], CommonUsage(state)); - quit(1); - } - i += consumed; - } - if (!CommonInit(state)) { - quit(2); - } - - /* Create the windows, initialize the renderers, and load the textures */ - sprites = - (SDL_Texture **) SDL_malloc(state->num_windows * sizeof(*sprites)); - if (!sprites) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - for (i = 0; i < state->num_windows; ++i) { - SDL_Renderer *renderer = state->renderers[i]; - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - } - if (LoadSprite("icon.bmp") < 0) { - quit(2); - } - - /* Allocate memory for the sprite info */ - positions = (SDL_Rect *) SDL_malloc(num_sprites * sizeof(SDL_Rect)); - velocities = (SDL_Rect *) SDL_malloc(num_sprites * sizeof(SDL_Rect)); - if (!positions || !velocities) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - srand((unsigned int)time(NULL)); - for (i = 0; i < num_sprites; ++i) { - positions[i].x = rand() % (state->window_w - sprite_w); - positions[i].y = rand() % (state->window_h - sprite_h); - positions[i].w = sprite_w; - positions[i].h = sprite_h; - velocities[i].x = 0; - velocities[i].y = 0; - while (!velocities[i].x && !velocities[i].y) { - velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - } - } - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - } - for (i = 0; i < state->num_windows; ++i) { - MoveSprites(state->renderers[i], sprites[i]); - } - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - double fps = ((double) frames * 1000) / (now - then); - printf("%2.2f frames per second\n", fps); - } - quit(0); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testspriteminimal.c b/3rdparty/SDL-1.3.0-5387/test/testspriteminimal.c deleted file mode 100644 index e4124e65b5..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testspriteminimal.c +++ /dev/null @@ -1,166 +0,0 @@ -/* Simple program: Move N sprites around on the screen as fast as possible */ - -#include -#include -#include - -#include "SDL.h" - -#define WINDOW_WIDTH 640 -#define WINDOW_HEIGHT 480 -#define NUM_SPRITES 100 -#define MAX_SPEED 1 - -static SDL_Texture *sprite; -static SDL_Rect positions[NUM_SPRITES]; -static SDL_Rect velocities[NUM_SPRITES]; -static int sprite_w, sprite_h; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - exit(rc); -} - -int -LoadSprite(char *file, SDL_Renderer *renderer) -{ - SDL_Surface *temp; - - /* Load the sprite image */ - temp = SDL_LoadBMP(file); - if (temp == NULL) { - fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError()); - return (-1); - } - sprite_w = temp->w; - sprite_h = temp->h; - - /* Set transparent pixel as the pixel at (0,0) */ - if (temp->format->palette) { - SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels); - } else { - switch (temp->format->BitsPerPixel) { - case 15: - SDL_SetColorKey(temp, SDL_TRUE, - (*(Uint16 *) temp->pixels) & 0x00007FFF); - break; - case 16: - SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels); - break; - case 24: - SDL_SetColorKey(temp, SDL_TRUE, - (*(Uint32 *) temp->pixels) & 0x00FFFFFF); - break; - case 32: - SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels); - break; - } - } - - /* Create textures from the image */ - sprite = SDL_CreateTextureFromSurface(renderer, temp); - if (!sprite) { - fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); - SDL_FreeSurface(temp); - return (-1); - } - SDL_FreeSurface(temp); - - /* We're ready to roll. :) */ - return (0); -} - -void -MoveSprites(SDL_Window * window, SDL_Renderer * renderer, SDL_Texture * sprite) -{ - int i; - int window_w = WINDOW_WIDTH; - int window_h = WINDOW_HEIGHT; - SDL_Rect *position, *velocity; - - /* Draw a gray background */ - SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); - SDL_RenderClear(renderer); - - /* Move the sprite, bounce at the wall, and draw */ - for (i = 0; i < NUM_SPRITES; ++i) { - position = &positions[i]; - velocity = &velocities[i]; - position->x += velocity->x; - if ((position->x < 0) || (position->x >= (window_w - sprite_w))) { - velocity->x = -velocity->x; - position->x += velocity->x; - } - position->y += velocity->y; - if ((position->y < 0) || (position->y >= (window_h - sprite_h))) { - velocity->y = -velocity->y; - position->y += velocity->y; - } - - /* Blit the sprite onto the screen */ - SDL_RenderCopy(renderer, sprite, NULL, position); - } - - /* Update the screen! */ - SDL_RenderPresent(renderer); -} - -int -main(int argc, char *argv[]) -{ - SDL_Window *window; - SDL_Renderer *renderer; - int i, done; - SDL_Event event; - - window = SDL_CreateWindow("Happy Smileys", - SDL_WINDOWPOS_UNDEFINED, - SDL_WINDOWPOS_UNDEFINED, - WINDOW_WIDTH, WINDOW_HEIGHT, - SDL_WINDOW_SHOWN); - if (!window) { - quit(2); - } - - renderer = SDL_CreateRenderer(window, -1, 0); - if (!renderer) { - quit(2); - } - - if (LoadSprite("icon.bmp", renderer) < 0) { - quit(2); - } - - /* Initialize the sprite positions */ - srand(time(NULL)); - for (i = 0; i < NUM_SPRITES; ++i) { - positions[i].x = rand() % (WINDOW_WIDTH - sprite_w); - positions[i].y = rand() % (WINDOW_HEIGHT - sprite_h); - positions[i].w = sprite_w; - positions[i].h = sprite_h; - velocities[i].x = 0; - velocities[i].y = 0; - while (!velocities[i].x && !velocities[i].y) { - velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED; - } - } - - /* Main render loop */ - done = 0; - while (!done) { - /* Check for events */ - while (SDL_PollEvent(&event)) { - if (event.type == SDL_QUIT || event.type == SDL_KEYDOWN) { - done = 1; - } - } - MoveSprites(window, renderer, sprite); - } - - quit(0); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/teststreaming.c b/3rdparty/SDL-1.3.0-5387/test/teststreaming.c deleted file mode 100644 index 7c8e236589..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/teststreaming.c +++ /dev/null @@ -1,152 +0,0 @@ -/******************************************************************************** - * * - * Running moose :) Coded by Mike Gorchak. * - * * - ********************************************************************************/ - -#include -#include - -#include "SDL.h" - -#define MOOSEPIC_W 64 -#define MOOSEPIC_H 88 - -#define MOOSEFRAME_SIZE (MOOSEPIC_W * MOOSEPIC_H) -#define MOOSEFRAMES_COUNT 10 - -SDL_Color MooseColors[84] = { - {49, 49, 49}, {66, 24, 0}, {66, 33, 0}, {66, 66, 66}, - {66, 115, 49}, {74, 33, 0}, {74, 41, 16}, {82, 33, 8}, - {82, 41, 8}, {82, 49, 16}, {82, 82, 82}, {90, 41, 8}, - {90, 41, 16}, {90, 57, 24}, {99, 49, 16}, {99, 66, 24}, - {99, 66, 33}, {99, 74, 33}, {107, 57, 24}, {107, 82, 41}, - {115, 57, 33}, {115, 66, 33}, {115, 66, 41}, {115, 74, 0}, - {115, 90, 49}, {115, 115, 115}, {123, 82, 0}, {123, 99, 57}, - {132, 66, 41}, {132, 74, 41}, {132, 90, 8}, {132, 99, 33}, - {132, 99, 66}, {132, 107, 66}, {140, 74, 49}, {140, 99, 16}, - {140, 107, 74}, {140, 115, 74}, {148, 107, 24}, {148, 115, 82}, - {148, 123, 74}, {148, 123, 90}, {156, 115, 33}, {156, 115, 90}, - {156, 123, 82}, {156, 132, 82}, {156, 132, 99}, {156, 156, 156}, - {165, 123, 49}, {165, 123, 90}, {165, 132, 82}, {165, 132, 90}, - {165, 132, 99}, {165, 140, 90}, {173, 132, 57}, {173, 132, 99}, - {173, 140, 107}, {173, 140, 115}, {173, 148, 99}, {173, 173, 173}, - {181, 140, 74}, {181, 148, 115}, {181, 148, 123}, {181, 156, 107}, - {189, 148, 123}, {189, 156, 82}, {189, 156, 123}, {189, 156, 132}, - {189, 189, 189}, {198, 156, 123}, {198, 165, 132}, {206, 165, 99}, - {206, 165, 132}, {206, 173, 140}, {206, 206, 206}, {214, 173, 115}, - {214, 173, 140}, {222, 181, 148}, {222, 189, 132}, {222, 189, 156}, - {222, 222, 222}, {231, 198, 165}, {231, 231, 231}, {239, 206, 173} -}; - -Uint8 MooseFrames[MOOSEFRAMES_COUNT][MOOSEFRAME_SIZE]; - -void quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -void UpdateTexture(SDL_Texture *texture, int frame) -{ - SDL_Color *color; - Uint8 *src; - Uint32 *dst; - int row, col; - void *pixels; - int pitch; - - if (SDL_LockTexture(texture, NULL, &pixels, &pitch) < 0) { - fprintf(stderr, "Couldn't lock texture: %s\n", SDL_GetError()); - quit(5); - } - src = MooseFrames[frame]; - for (row = 0; row < MOOSEPIC_H; ++row) { - dst = (Uint32*)((Uint8*)pixels + row * pitch); - for (col = 0; col < MOOSEPIC_W; ++col) { - color = &MooseColors[*src++]; - *dst++ = (0xFF000000|(color->r<<16)|(color->g<<8)|color->b); - } - } - SDL_UnlockTexture(texture); -} - -int -main(int argc, char **argv) -{ - SDL_Window *window; - SDL_Renderer *renderer; - SDL_RWops *handle; - SDL_Texture *MooseTexture; - SDL_Event event; - SDL_bool done = SDL_FALSE; - int frame; - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return 1; - } - - /* load the moose images */ - handle = SDL_RWFromFile("moose.dat", "rb"); - if (handle == NULL) { - fprintf(stderr, "Can't find the file moose.dat !\n"); - quit(2); - } - SDL_RWread(handle, MooseFrames, MOOSEFRAME_SIZE, MOOSEFRAMES_COUNT); - SDL_RWclose(handle); - - - /* Create the window and renderer */ - window = SDL_CreateWindow("Happy Moose", - SDL_WINDOWPOS_UNDEFINED, - SDL_WINDOWPOS_UNDEFINED, - MOOSEPIC_W*4, MOOSEPIC_H*4, - SDL_WINDOW_SHOWN|SDL_WINDOW_RESIZABLE); - if (!window) { - fprintf(stderr, "Couldn't set create window: %s\n", SDL_GetError()); - quit(3); - } - - renderer = SDL_CreateRenderer(window, -1, 0); - if (!renderer) { - fprintf(stderr, "Couldn't set create renderer: %s\n", SDL_GetError()); - quit(4); - } - - MooseTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, MOOSEPIC_W, MOOSEPIC_H); - if (!MooseTexture) { - fprintf(stderr, "Couldn't set create texture: %s\n", SDL_GetError()); - quit(5); - } - - /* Loop, waiting for QUIT or the escape key */ - frame = 0; - while (!done) { - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_ESCAPE) { - done = SDL_TRUE; - } - break; - case SDL_QUIT: - done = SDL_TRUE; - break; - } - } - - frame = (frame + 1) % MOOSEFRAMES_COUNT; - UpdateTexture(MooseTexture, frame); - - SDL_RenderClear(renderer); - SDL_RenderCopy(renderer, MooseTexture, NULL, NULL); - SDL_RenderPresent(renderer); - } - SDL_DestroyRenderer(renderer); - - quit(0); - return 0; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/testtimer.c b/3rdparty/SDL-1.3.0-5387/test/testtimer.c deleted file mode 100644 index f58efbbda7..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testtimer.c +++ /dev/null @@ -1,90 +0,0 @@ - -/* Test program to check the resolution of the SDL timer on the current - platform -*/ - -#include -#include - -#include "SDL.h" - -#define DEFAULT_RESOLUTION 1 - -static int ticks = 0; - -static Uint32 SDLCALL -ticktock(Uint32 interval) -{ - ++ticks; - return (interval); -} - -static Uint32 SDLCALL -callback(Uint32 interval, void *param) -{ - printf("Timer %d : param = %d\n", interval, (int) (uintptr_t) param); - return interval; -} - -int -main(int argc, char *argv[]) -{ - int desired; - SDL_TimerID t1, t2, t3; - - if (SDL_Init(SDL_INIT_TIMER) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Start the timer */ - desired = 0; - if (argv[1]) { - desired = atoi(argv[1]); - } - if (desired == 0) { - desired = DEFAULT_RESOLUTION; - } - SDL_SetTimer(desired, ticktock); - - /* Wait 10 seconds */ - printf("Waiting 10 seconds\n"); - SDL_Delay(10 * 1000); - - /* Stop the timer */ - SDL_SetTimer(0, NULL); - - /* Print the results */ - if (ticks) { - fprintf(stderr, - "Timer resolution: desired = %d ms, actual = %f ms\n", - desired, (double) (10 * 1000) / ticks); - } - - /* Test multiple timers */ - printf("Testing multiple timers...\n"); - t1 = SDL_AddTimer(100, callback, (void *) 1); - if (!t1) - fprintf(stderr, "Could not create timer 1: %s\n", SDL_GetError()); - t2 = SDL_AddTimer(50, callback, (void *) 2); - if (!t2) - fprintf(stderr, "Could not create timer 2: %s\n", SDL_GetError()); - t3 = SDL_AddTimer(233, callback, (void *) 3); - if (!t3) - fprintf(stderr, "Could not create timer 3: %s\n", SDL_GetError()); - - /* Wait 10 seconds */ - printf("Waiting 10 seconds\n"); - SDL_Delay(10 * 1000); - - printf("Removing timer 1 and waiting 5 more seconds\n"); - SDL_RemoveTimer(t1); - - SDL_Delay(5 * 1000); - - SDL_RemoveTimer(t2); - SDL_RemoveTimer(t3); - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testver.c b/3rdparty/SDL-1.3.0-5387/test/testver.c deleted file mode 100644 index aaabc5467f..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testver.c +++ /dev/null @@ -1,33 +0,0 @@ - -/* Test program to compare the compile-time version of SDL with the linked - version of SDL -*/ - -#include -#include - -#include "SDL.h" -#include "SDL_revision.h" - -int -main(int argc, char *argv[]) -{ - SDL_version compiled; - SDL_version linked; - -#if SDL_VERSION_ATLEAST(1, 3, 0) - printf("Compiled with SDL 1.3 or newer\n"); -#else - printf("Compiled with SDL older than 1.3\n"); -#endif - SDL_VERSION(&compiled); - printf("Compiled version: %d.%d.%d.%d (%s)\n", - compiled.major, compiled.minor, compiled.patch, - SDL_REVISION_NUMBER, SDL_REVISION); - SDL_GetVersion(&linked); - printf("Linked version: %d.%d.%d.%d (%s)\n", - linked.major, linked.minor, linked.patch, - SDL_GetRevisionNumber(), SDL_GetRevision()); - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testvidinfo.c b/3rdparty/SDL-1.3.0-5387/test/testvidinfo.c deleted file mode 100644 index 48e63f06f4..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testvidinfo.c +++ /dev/null @@ -1,535 +0,0 @@ - -/* Simple program -- figure out what kind of video display we have */ - -#include -#include -#include -#include - -#include "SDL.h" - -#define NUM_BLITS 10 -#define NUM_UPDATES 500 - -#define FLAG_MASK (SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF | \ - SDL_SRCCOLORKEY | SDL_SRCALPHA | SDL_RLEACCEL | \ - SDL_RLEACCELOK) - -#if 0 -void -PrintFlags(Uint32 flags) -{ - printf("0x%8.8x", (flags & FLAG_MASK)); - if (flags & SDL_HWSURFACE) { - printf(" SDL_HWSURFACE"); - } else { - printf(" SDL_SWSURFACE"); - } - if (flags & SDL_FULLSCREEN) { - printf(" | SDL_FULLSCREEN"); - } - if (flags & SDL_DOUBLEBUF) { - printf(" | SDL_DOUBLEBUF"); - } - if (flags & SDL_SRCCOLORKEY) { - printf(" | SDL_SRCCOLORKEY"); - } - if (flags & SDL_SRCALPHA) { - printf(" | SDL_SRCALPHA"); - } - if (flags & SDL_RLEACCEL) { - printf(" | SDL_RLEACCEL"); - } - if (flags & SDL_RLEACCELOK) { - printf(" | SDL_RLEACCELOK"); - } -} - -int -RunBlitTests(SDL_Surface * screen, SDL_Surface * bmp, int blitcount) -{ - int i, j; - int maxx; - int maxy; - SDL_Rect dst; - - maxx = (int) screen->w - bmp->w + 1; - maxy = (int) screen->h - bmp->h + 1; - for (i = 0; i < NUM_UPDATES; ++i) { - for (j = 0; j < blitcount; ++j) { - if (maxx) { - dst.x = rand() % maxx; - } else { - dst.x = 0; - } - if (maxy) { - dst.y = rand() % maxy; - } else { - dst.y = 0; - } - dst.w = bmp->w; - dst.h = bmp->h; - SDL_BlitSurface(bmp, NULL, screen, &dst); - } - SDL_Flip(screen); - } - - return i; -} - -int -RunModeTests(SDL_Surface * screen) -{ - Uint32 then, now; - Uint32 frames; - float seconds; - int i; - Uint8 r, g, b; - SDL_Surface *bmp, *bmpcc, *tmp; - SDL_Event event; - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* First test fills and screen update speed */ - printf("Running color fill and fullscreen update test\n"); - then = SDL_GetTicks(); - frames = 0; - for (i = 0; i < 256; ++i) { - r = i; - g = 0; - b = 0; - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, r, g, b)); - SDL_Flip(screen); - ++frames; - } - for (i = 0; i < 256; ++i) { - r = 0; - g = i; - b = 0; - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, r, g, b)); - SDL_Flip(screen); - ++frames; - } - for (i = 0; i < 256; ++i) { - r = 0; - g = 0; - b = i; - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, r, g, b)); - SDL_Flip(screen); - ++frames; - } - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf("%d fills and flips in %2.2f seconds, %2.2f FPS\n", frames, - seconds, (float) frames / seconds); - } else { - printf("%d fills and flips in zero seconds!n", frames); - } - - /* clear the screen after fill test */ - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_Flip(screen); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* run the generic blit test */ - bmp = SDL_LoadBMP("sample.bmp"); - if (!bmp) { - printf("Couldn't load sample.bmp: %s\n", SDL_GetError()); - return 0; - } - printf("Running freshly loaded blit test: %dx%d at %d bpp, flags: ", - bmp->w, bmp->h, bmp->format->BitsPerPixel); - PrintFlags(bmp->flags); - printf("\n"); - then = SDL_GetTicks(); - frames = RunBlitTests(screen, bmp, NUM_BLITS); - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf("%d blits / %d updates in %2.2f seconds, %2.2f FPS\n", - NUM_BLITS * frames, frames, seconds, (float) frames / seconds); - } else { - printf("%d blits / %d updates in zero seconds!\n", - NUM_BLITS * frames, frames); - } - - /* clear the screen after blit test */ - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_Flip(screen); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* run the colorkeyed blit test */ - bmpcc = SDL_LoadBMP("sample.bmp"); - if (!bmpcc) { - printf("Couldn't load sample.bmp: %s\n", SDL_GetError()); - return 0; - } - printf("Running freshly loaded cc blit test: %dx%d at %d bpp, flags: ", - bmpcc->w, bmpcc->h, bmpcc->format->BitsPerPixel); - SDL_SetColorKey(bmpcc, SDL_SRCCOLORKEY | SDL_RLEACCEL, - *(Uint8 *) bmpcc->pixels); - - PrintFlags(bmpcc->flags); - printf("\n"); - then = SDL_GetTicks(); - frames = RunBlitTests(screen, bmpcc, NUM_BLITS); - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf("%d cc blits / %d updates in %2.2f seconds, %2.2f FPS\n", - NUM_BLITS * frames, frames, seconds, (float) frames / seconds); - } else { - printf("%d cc blits / %d updates in zero seconds!\n", - NUM_BLITS * frames, frames); - } - - /* clear the screen after cc blit test */ - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_Flip(screen); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* run the generic blit test */ - tmp = bmp; - bmp = SDL_DisplayFormat(bmp); - SDL_FreeSurface(tmp); - if (!bmp) { - printf("Couldn't convert sample.bmp: %s\n", SDL_GetError()); - return 0; - } - printf("Running display format blit test: %dx%d at %d bpp, flags: ", - bmp->w, bmp->h, bmp->format->BitsPerPixel); - PrintFlags(bmp->flags); - printf("\n"); - then = SDL_GetTicks(); - frames = RunBlitTests(screen, bmp, NUM_BLITS); - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf("%d blits / %d updates in %2.2f seconds, %2.2f FPS\n", - NUM_BLITS * frames, frames, seconds, (float) frames / seconds); - } else { - printf("%d blits / %d updates in zero seconds!\n", - NUM_BLITS * frames, frames); - } - - /* clear the screen after blit test */ - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_Flip(screen); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* run the colorkeyed blit test */ - tmp = bmpcc; - bmpcc = SDL_DisplayFormat(bmpcc); - SDL_FreeSurface(tmp); - if (!bmpcc) { - printf("Couldn't convert sample.bmp: %s\n", SDL_GetError()); - return 0; - } - printf("Running display format cc blit test: %dx%d at %d bpp, flags: ", - bmpcc->w, bmpcc->h, bmpcc->format->BitsPerPixel); - PrintFlags(bmpcc->flags); - printf("\n"); - then = SDL_GetTicks(); - frames = RunBlitTests(screen, bmpcc, NUM_BLITS); - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf("%d cc blits / %d updates in %2.2f seconds, %2.2f FPS\n", - NUM_BLITS * frames, frames, seconds, (float) frames / seconds); - } else { - printf("%d cc blits / %d updates in zero seconds!\n", - NUM_BLITS * frames, frames); - } - - /* clear the screen after cc blit test */ - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_Flip(screen); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* run the alpha blit test only if screen bpp>8 */ - if (bmp->format->BitsPerPixel > 8) { - SDL_FreeSurface(bmp); - bmp = SDL_LoadBMP("sample.bmp"); - SDL_SetAlpha(bmp, SDL_SRCALPHA, 85); /* 85 - 33% alpha */ - tmp = bmp; - bmp = SDL_DisplayFormat(bmp); - SDL_FreeSurface(tmp); - if (!bmp) { - printf("Couldn't convert sample.bmp: %s\n", SDL_GetError()); - return 0; - } - printf - ("Running display format alpha blit test: %dx%d at %d bpp, flags: ", - bmp->w, bmp->h, bmp->format->BitsPerPixel); - PrintFlags(bmp->flags); - printf("\n"); - then = SDL_GetTicks(); - frames = RunBlitTests(screen, bmp, NUM_BLITS); - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf - ("%d alpha blits / %d updates in %2.2f seconds, %2.2f FPS\n", - NUM_BLITS * frames, frames, seconds, - (float) frames / seconds); - } else { - printf("%d alpha blits / %d updates in zero seconds!\n", - NUM_BLITS * frames, frames); - } - } - - /* clear the screen after alpha blit test */ - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); - SDL_Flip(screen); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - - /* run the cc+alpha blit test only if screen bpp>8 */ - if (bmp->format->BitsPerPixel > 8) { - SDL_FreeSurface(bmpcc); - bmpcc = SDL_LoadBMP("sample.bmp"); - SDL_SetAlpha(bmpcc, SDL_SRCALPHA, 85); /* 85 - 33% alpha */ - SDL_SetColorKey(bmpcc, SDL_SRCCOLORKEY | SDL_RLEACCEL, - *(Uint8 *) bmpcc->pixels); - tmp = bmpcc; - bmpcc = SDL_DisplayFormat(bmpcc); - SDL_FreeSurface(tmp); - if (!bmpcc) { - printf("Couldn't convert sample.bmp: %s\n", SDL_GetError()); - return 0; - } - printf - ("Running display format cc+alpha blit test: %dx%d at %d bpp, flags: ", - bmpcc->w, bmpcc->h, bmpcc->format->BitsPerPixel); - PrintFlags(bmpcc->flags); - printf("\n"); - then = SDL_GetTicks(); - frames = RunBlitTests(screen, bmpcc, NUM_BLITS); - now = SDL_GetTicks(); - seconds = (float) (now - then) / 1000.0f; - if (seconds > 0.0f) { - printf - ("%d cc+alpha blits / %d updates in %2.2f seconds, %2.2f FPS\n", - NUM_BLITS * frames, frames, seconds, - (float) frames / seconds); - } else { - printf("%d cc+alpha blits / %d updates in zero seconds!\n", - NUM_BLITS * frames, frames); - } - } - - SDL_FreeSurface(bmpcc); - SDL_FreeSurface(bmp); - - while (SDL_PollEvent(&event)) { - if (event.type == SDL_KEYDOWN) - return 0; - } - return 1; -} - -void -RunVideoTests() -{ - static const struct - { - int w, h, bpp; - } mode_list[] = { - { - 640, 480, 8}, { - 640, 480, 16}, { - 640, 480, 32}, { - 800, 600, 8}, { - 800, 600, 16}, { - 800, 600, 32}, { - 1024, 768, 8}, { - 1024, 768, 16}, { - 1024, 768, 32} - }; - static const Uint32 flags[] = { - (SDL_SWSURFACE), - (SDL_SWSURFACE | SDL_FULLSCREEN), - (SDL_HWSURFACE | SDL_FULLSCREEN), - (SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF) - }; - int i, j; - SDL_Surface *screen; - - /* Test out several different video mode combinations */ - SDL_WM_SetCaption("SDL Video Benchmark", "vidtest"); - SDL_ShowCursor(0); - for (i = 0; i < SDL_TABLESIZE(mode_list); ++i) { - for (j = 0; j < SDL_TABLESIZE(flags); ++j) { - printf("===================================\n"); - printf("Setting video mode: %dx%d at %d bpp, flags: ", - mode_list[i].w, mode_list[i].h, mode_list[i].bpp); - PrintFlags(flags[j]); - printf("\n"); - screen = SDL_SetVideoMode(mode_list[i].w, - mode_list[i].h, - mode_list[i].bpp, flags[j]); - if (!screen) { - printf("Setting video mode failed: %s\n", SDL_GetError()); - continue; - } - if ((screen->flags & FLAG_MASK) != flags[j]) { - printf("Flags didn't match: "); - PrintFlags(screen->flags); - printf("\n"); - continue; - } - if (!RunModeTests(screen)) { - return; - } - } - } -} -#endif - -int -main(int argc, char *argv[]) -{ - const SDL_VideoInfo *info; - int i, d, n; - const char *driver; - SDL_DisplayMode mode; - int bpp; - Uint32 Rmask, Gmask, Bmask, Amask; - int nmodes; - - /* Print available video drivers */ - n = SDL_GetNumVideoDrivers(); - if (n == 0) { - printf("No built-in video drivers\n"); - } else { - printf("Built-in video drivers:"); - for (i = 0; i < n; ++i) { - if (i > 0) { - printf(","); - } - printf(" %s", SDL_GetVideoDriver(i)); - } - printf("\n"); - } - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - driver = SDL_GetCurrentVideoDriver(); - if (driver) { - printf("Video driver: %s\n", driver); - } - printf("Number of displays: %d\n", SDL_GetNumVideoDisplays()); - for (d = 0; d < SDL_GetNumVideoDisplays(); ++d) { - SDL_Rect bounds; - - SDL_GetDisplayBounds(d, &bounds); - printf("Display %d: %dx%d at %d,%d\n", d, - bounds.w, bounds.h, bounds.x, bounds.y); - - SDL_GetDesktopDisplayMode(d, &mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask, &Bmask, - &Amask); - printf(" Current mode: %dx%d@%dHz, %d bits-per-pixel\n", mode.w, - mode.h, mode.refresh_rate, bpp); - if (Rmask || Gmask || Bmask) { - printf(" Red Mask = 0x%.8x\n", Rmask); - printf(" Green Mask = 0x%.8x\n", Gmask); - printf(" Blue Mask = 0x%.8x\n", Bmask); - if (Amask) - printf(" Alpha Mask = 0x%.8x\n", Amask); - } - - /* Print available fullscreen video modes */ - nmodes = SDL_GetNumDisplayModes(d); - if (nmodes == 0) { - printf("No available fullscreen video modes\n"); - } else { - printf(" Fullscreen video modes:\n"); - for (i = 0; i < nmodes; ++i) { - SDL_GetDisplayMode(d, i, &mode); - SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, - &Gmask, &Bmask, &Amask); - printf(" Mode %d: %dx%d@%dHz, %d bits-per-pixel\n", i, - mode.w, mode.h, mode.refresh_rate, bpp); - if (Rmask || Gmask || Bmask) { - printf(" Red Mask = 0x%.8x\n", Rmask); - printf(" Green Mask = 0x%.8x\n", Gmask); - printf(" Blue Mask = 0x%.8x\n", Bmask); - if (Amask) - printf(" Alpha Mask = 0x%.8x\n", Amask); - } - } - } - } - - info = SDL_GetVideoInfo(); - if (info->wm_available) { - printf("A window manager is available\n"); - } - if (info->hw_available) { - printf("Hardware surfaces are available (%dK video memory)\n", - info->video_mem); - } - if (info->blit_hw) { - printf("Copy blits between hardware surfaces are accelerated\n"); - } - if (info->blit_hw_CC) { - printf("Colorkey blits between hardware surfaces are accelerated\n"); - } - if (info->blit_hw_A) { - printf("Alpha blits between hardware surfaces are accelerated\n"); - } - if (info->blit_sw) { - printf - ("Copy blits from software surfaces to hardware surfaces are accelerated\n"); - } - if (info->blit_sw_CC) { - printf - ("Colorkey blits from software surfaces to hardware surfaces are accelerated\n"); - } - if (info->blit_sw_A) { - printf - ("Alpha blits from software surfaces to hardware surfaces are accelerated\n"); - } - if (info->blit_fill) { - printf("Color fills on hardware surfaces are accelerated\n"); - } - printf("Current resolution: %dx%d\n", info->current_w, info->current_h); -#if 0 - if (argv[1] && (strcmp(argv[1], "-benchmark") == 0)) { - RunVideoTests(); - } -#endif - - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testwin.c b/3rdparty/SDL-1.3.0-5387/test/testwin.c deleted file mode 100644 index c939821611..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testwin.c +++ /dev/null @@ -1,340 +0,0 @@ - -/* Bring up a window and play with it */ - -#include -#include -#include - -#define BENCHMARK_SDL - -#define NOTICE(X) printf("%s", X); - -#include "SDL.h" - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -void -DrawPict(SDL_Surface * screen, char *bmpfile, - int speedy, int flip, int nofade) -{ - SDL_Surface *picture; - SDL_Rect dest, update; - int i, centered; - int ncolors; - SDL_Color *colors, *cmap; - - /* Load the image into a surface */ - if (bmpfile == NULL) { - bmpfile = "sample.bmp"; /* Sample image */ - } - fprintf(stderr, "Loading picture: %s\n", bmpfile); - picture = SDL_LoadBMP(bmpfile); - if (picture == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); - return; - } - - /* Set the display colors -- on a hicolor display this is a no-op */ - if (picture->format->palette) { - ncolors = picture->format->palette->ncolors; - colors = (SDL_Color *) malloc(ncolors * sizeof(SDL_Color)); - cmap = (SDL_Color *) malloc(ncolors * sizeof(SDL_Color)); - memcpy(colors, picture->format->palette->colors, - ncolors * sizeof(SDL_Color)); - } else { - int r, g, b; - - /* Allocate 256 color palette */ - ncolors = 256; - colors = (SDL_Color *) malloc(ncolors * sizeof(SDL_Color)); - cmap = (SDL_Color *) malloc(ncolors * sizeof(SDL_Color)); - - /* Set a 3,3,2 color cube */ - for (r = 0; r < 8; ++r) { - for (g = 0; g < 8; ++g) { - for (b = 0; b < 4; ++b) { - i = ((r << 5) | (g << 2) | b); - colors[i].r = r << 5; - colors[i].g = g << 5; - colors[i].b = b << 6; - } - } - } - } - NOTICE("testwin: setting colors\n"); - if (!SDL_SetColors(screen, colors, 0, ncolors) && - (screen->format->palette != NULL)) { - fprintf(stderr, - "Warning: Couldn't set all of the colors, but SDL will map the image\n" - " (colormap fading will suffer - try the -warp option)\n"); - } - - /* Display the picture */ - if (speedy) { - SDL_Surface *displayfmt; - - fprintf(stderr, "Converting picture\n"); - displayfmt = SDL_DisplayFormat(picture); - if (displayfmt == NULL) { - fprintf(stderr, "Couldn't convert image: %s\n", SDL_GetError()); - goto done; - } - SDL_FreeSurface(picture); - picture = displayfmt; - } - printf("(image surface located in %s memory)\n", - (picture->flags & SDL_HWSURFACE) ? "video" : "system"); - centered = (screen->w - picture->w) / 2; - if (centered < 0) { - centered = 0; - } - dest.y = (screen->h - picture->h) / 2; - dest.w = picture->w; - dest.h = picture->h; - NOTICE("testwin: moving image\n"); - for (i = 0; i <= centered; ++i) { - dest.x = i; - update = dest; - if (SDL_BlitSurface(picture, NULL, screen, &update) < 0) { - fprintf(stderr, "Blit failed: %s\n", SDL_GetError()); - break; - } - if (flip) { - SDL_Flip(screen); - } else { - SDL_UpdateRects(screen, 1, &update); - } - } - -#ifdef SCREENSHOT - if (SDL_SaveBMP(screen, "screen.bmp") < 0) - printf("Couldn't save screen: %s\n", SDL_GetError()); -#endif - -#ifndef BENCHMARK_SDL - /* Let it sit there for a while */ - SDL_Delay(5 * 1000); -#endif - /* Fade the colormap */ - if (!nofade) { - int maxstep; - SDL_Color final; - SDL_Color palcolors[256]; - struct - { - Sint16 r, g, b; - } cdist[256]; - - NOTICE("testwin: fading out...\n"); - memcpy(cmap, colors, ncolors * sizeof(SDL_Color)); - maxstep = 32 - 1; - final.r = 0xFF; - final.g = 0x00; - final.b = 0x00; - memcpy(palcolors, colors, ncolors * sizeof(SDL_Color)); - for (i = 0; i < ncolors; ++i) { - cdist[i].r = final.r - palcolors[i].r; - cdist[i].g = final.g - palcolors[i].g; - cdist[i].b = final.b - palcolors[i].b; - } - for (i = 0; i <= maxstep / 2; ++i) { /* halfway fade */ - int c; - for (c = 0; c < ncolors; ++c) { - colors[c].r = palcolors[c].r + ((cdist[c].r * i)) / maxstep; - colors[c].g = palcolors[c].g + ((cdist[c].g * i)) / maxstep; - colors[c].b = palcolors[c].b + ((cdist[c].b * i)) / maxstep; - } - SDL_SetColors(screen, colors, 0, ncolors); - SDL_Delay(1); - } - final.r = 0x00; - final.g = 0x00; - final.b = 0x00; - memcpy(palcolors, colors, ncolors * sizeof(SDL_Color)); - for (i = 0; i < ncolors; ++i) { - cdist[i].r = final.r - palcolors[i].r; - cdist[i].g = final.g - palcolors[i].g; - cdist[i].b = final.b - palcolors[i].b; - } - maxstep /= 2; - for (i = 0; i <= maxstep; ++i) { /* finish fade out */ - int c; - for (c = 0; c < ncolors; ++c) { - colors[c].r = palcolors[c].r + ((cdist[c].r * i)) / maxstep; - colors[c].g = palcolors[c].g + ((cdist[c].g * i)) / maxstep; - colors[c].b = palcolors[c].b + ((cdist[c].b * i)) / maxstep; - } - SDL_SetColors(screen, colors, 0, ncolors); - SDL_Delay(1); - } - for (i = 0; i < ncolors; ++i) { - colors[i].r = final.r; - colors[i].g = final.g; - colors[i].b = final.b; - } - SDL_SetColors(screen, colors, 0, ncolors); - NOTICE("testwin: fading in...\n"); - memcpy(palcolors, colors, ncolors * sizeof(SDL_Color)); - for (i = 0; i < ncolors; ++i) { - cdist[i].r = cmap[i].r - palcolors[i].r; - cdist[i].g = cmap[i].g - palcolors[i].g; - cdist[i].b = cmap[i].b - palcolors[i].b; - } - for (i = 0; i <= maxstep; ++i) { /* 32 step fade in */ - int c; - for (c = 0; c < ncolors; ++c) { - colors[c].r = palcolors[c].r + ((cdist[c].r * i)) / maxstep; - colors[c].g = palcolors[c].g + ((cdist[c].g * i)) / maxstep; - colors[c].b = palcolors[c].b + ((cdist[c].b * i)) / maxstep; - } - SDL_SetColors(screen, colors, 0, ncolors); - SDL_Delay(1); - } - NOTICE("testwin: fading over\n"); - } - - done: - /* Free the picture and return */ - SDL_FreeSurface(picture); - free(colors); - free(cmap); - return; -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - /* Options */ - int speedy, flip, nofade; - int delay; - int w, h; - int desired_bpp; - Uint32 video_flags; -#ifdef BENCHMARK_SDL - Uint32 then, now; -#endif - /* Set default options and check command-line */ - speedy = 0; - flip = 0; - nofade = 0; - delay = 1; - -#ifdef _WIN32_WCE - w = 240; - h = 320; - desired_bpp = 8; - video_flags = SDL_FULLSCREEN; -#else - w = 640; - h = 480; - desired_bpp = 0; - video_flags = 0; -#endif - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - while (argc > 1) { - if (strcmp(argv[1], "-speedy") == 0) { - speedy = 1; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-nofade") == 0) { - nofade = 1; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-delay") == 0) { - if (argv[2]) { - delay = atoi(argv[2]); - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -delay option requires an argument\n"); - quit(1); - } - } else if (strcmp(argv[1], "-width") == 0) { - if (argv[2] && ((w = atoi(argv[2])) > 0)) { - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -width option requires an argument\n"); - quit(1); - } - } else if (strcmp(argv[1], "-height") == 0) { - if (argv[2] && ((h = atoi(argv[2])) > 0)) { - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -height option requires an argument\n"); - quit(1); - } - } else if (strcmp(argv[1], "-bpp") == 0) { - if (argv[2]) { - desired_bpp = atoi(argv[2]); - argv += 2; - argc -= 2; - } else { - fprintf(stderr, "The -bpp option requires an argument\n"); - quit(1); - } - } else if (strcmp(argv[1], "-warp") == 0) { - video_flags |= SDL_HWPALETTE; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-hw") == 0) { - video_flags |= SDL_HWSURFACE; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-flip") == 0) { - video_flags |= SDL_DOUBLEBUF; - argv += 1; - argc -= 1; - } else if (strcmp(argv[1], "-fullscreen") == 0) { - video_flags |= SDL_FULLSCREEN; - argv += 1; - argc -= 1; - } else - break; - } - - /* Initialize the display */ - screen = SDL_SetVideoMode(w, h, desired_bpp, video_flags); - if (screen == NULL) { - fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", - w, h, desired_bpp, SDL_GetError()); - quit(1); - } - printf("Set%s %dx%dx%d mode\n", - screen->flags & SDL_FULLSCREEN ? " fullscreen" : "", - screen->w, screen->h, screen->format->BitsPerPixel); - printf("(video surface located in %s memory)\n", - (screen->flags & SDL_HWSURFACE) ? "video" : "system"); - if (screen->flags & SDL_DOUBLEBUF) { - printf("Double-buffering enabled\n"); - flip = 1; - } - - /* Set the window manager title bar */ - SDL_WM_SetCaption("SDL test window", "testwin"); - - /* Do all the drawing work */ -#ifdef BENCHMARK_SDL - then = SDL_GetTicks(); - DrawPict(screen, argv[1], speedy, flip, nofade); - now = SDL_GetTicks(); - printf("Time: %d milliseconds\n", now - then); -#else - DrawPict(screen, argv[1], speedy, flip, nofade); -#endif - SDL_Delay(delay * 1000); - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testwm.c b/3rdparty/SDL-1.3.0-5387/test/testwm.c deleted file mode 100644 index 5182c76d49..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testwm.c +++ /dev/null @@ -1,454 +0,0 @@ - -/* Test out the window manager interaction functions */ - -#include -#include -#include - -#include "SDL.h" - -/* Is the cursor visible? */ -static int visible = 1; - -static Uint8 video_bpp; -static Uint32 video_flags; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int -SetVideoMode(int w, int h) -{ - SDL_Surface *screen; - int i; - Uint8 *buffer; - SDL_Color palette[256]; - - screen = SDL_SetVideoMode(w, h, video_bpp, video_flags); - if (screen == NULL) { - fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", - w, h, video_bpp, SDL_GetError()); - return (-1); - } - printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? - "fullscreen" : "windowed"); - - /* Set the surface pixels and refresh! */ - for (i = 0; i < 256; ++i) { - palette[i].r = 255 - i; - palette[i].g = 255 - i; - palette[i].b = 255 - i; - } - SDL_SetColors(screen, palette, 0, 256); - if (SDL_LockSurface(screen) < 0) { - fprintf(stderr, "Couldn't lock display surface: %s\n", - SDL_GetError()); - return (-1); - } - buffer = (Uint8 *) screen->pixels; - for (i = 0; i < screen->h; ++i) { - memset(buffer, (i * 255) / screen->h, - screen->w * screen->format->BytesPerPixel); - buffer += screen->pitch; - } - SDL_UnlockSurface(screen); - SDL_UpdateRect(screen, 0, 0, 0, 0); - - return (0); -} - -SDL_Surface * -LoadIconSurface(char *file, Uint8 ** maskp) -{ - SDL_Surface *icon; - Uint8 *pixels; - Uint8 *mask; - int mlen, i, j; - - *maskp = NULL; - - /* Load the icon surface */ - icon = SDL_LoadBMP(file); - if (icon == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError()); - return (NULL); - } - - /* Check width and height - if ( (icon->w%8) != 0 ) { - fprintf(stderr, "Icon width must be a multiple of 8!\n"); - SDL_FreeSurface(icon); - return(NULL); - } - */ - - - if (icon->format->palette == NULL) { - fprintf(stderr, "Icon must have a palette!\n"); - SDL_FreeSurface(icon); - return (NULL); - } - - /* Set the colorkey */ - SDL_SetColorKey(icon, SDL_SRCCOLORKEY, *((Uint8 *) icon->pixels)); - - /* Create the mask */ - pixels = (Uint8 *) icon->pixels; - printf("Transparent pixel: (%d,%d,%d)\n", - icon->format->palette->colors[*pixels].r, - icon->format->palette->colors[*pixels].g, - icon->format->palette->colors[*pixels].b); - mlen = (icon->w * icon->h + 7) / 8; - mask = (Uint8 *) malloc(mlen); - if (mask == NULL) { - fprintf(stderr, "Out of memory!\n"); - SDL_FreeSurface(icon); - return (NULL); - } - memset(mask, 0, mlen); - for (i = 0; i < icon->h; i++) - for (j = 0; j < icon->w; j++) { - int pindex = i * icon->pitch + j; - int mindex = i * icon->w + j; - if (pixels[pindex] != *pixels) - mask[mindex >> 3] |= 1 << (7 - (mindex & 7)); - } - *maskp = mask; - return (icon); -} - -void -HotKey_ToggleFullScreen(void) -{ - SDL_Surface *screen; - - screen = SDL_GetVideoSurface(); - if (SDL_WM_ToggleFullScreen(screen)) { - printf("Toggled fullscreen mode - now %s\n", - (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); - } else { - printf("Unable to toggle fullscreen mode\n"); - video_flags ^= SDL_FULLSCREEN; - SetVideoMode(screen->w, screen->h); - } -} - -void -HotKey_ToggleGrab(void) -{ - SDL_GrabMode mode; - - printf("Ctrl-G: toggling input grab!\n"); - mode = SDL_WM_GrabInput(SDL_GRAB_QUERY); - if (mode == SDL_GRAB_ON) { - printf("Grab was on\n"); - } else { - printf("Grab was off\n"); - } - mode = SDL_WM_GrabInput(mode ? SDL_GRAB_OFF : SDL_GRAB_ON); - if (mode == SDL_GRAB_ON) { - printf("Grab is now on\n"); - } else { - printf("Grab is now off\n"); - } -} - -void -HotKey_Iconify(void) -{ - printf("Ctrl-Z: iconifying window!\n"); - SDL_WM_IconifyWindow(); -} - -void -HotKey_Quit(void) -{ - SDL_Event event; - - printf("Posting internal quit request\n"); - event.type = SDL_USEREVENT; - SDL_PushEvent(&event); -} - - -static void -print_modifiers(void) -{ - int mod; - printf(" modifiers:"); - mod = SDL_GetModState(); - if(!mod) { - printf(" (none)"); - return; - } - if(mod & KMOD_LSHIFT) - printf(" LSHIFT"); - if(mod & KMOD_RSHIFT) - printf(" RSHIFT"); - if(mod & KMOD_LCTRL) - printf(" LCTRL"); - if(mod & KMOD_RCTRL) - printf(" RCTRL"); - if(mod & KMOD_LALT) - printf(" LALT"); - if(mod & KMOD_RALT) - printf(" RALT"); - if(mod & KMOD_LMETA) - printf(" LMETA"); - if(mod & KMOD_RMETA) - printf(" RMETA"); - if(mod & KMOD_NUM) - printf(" NUM"); - if(mod & KMOD_CAPS) - printf(" CAPS"); - if(mod & KMOD_MODE) - printf(" MODE"); -} - -static void PrintKey(const SDL_Keysym *sym, int pressed) -{ - /* Print the keycode, name and state */ - if ( sym->sym ) { - printf("Key %s: %d-%s ", pressed ? "pressed" : "released", - sym->sym, SDL_GetKeyName(sym->sym)); - } else { - printf("Unknown Key (scancode = %d) %s ", sym->scancode, - pressed ? "pressed" : "released"); - } - - /* Print the translated character, if one exists */ - if ( sym->unicode ) { - /* Is it a control-character? */ - if ( sym->unicode < ' ' ) { - printf(" (^%c)", sym->unicode+'@'); - } else { -#ifdef UNICODE - printf(" (%c)", sym->unicode); -#else - /* This is a Latin-1 program, so only show 8-bits */ - if ( !(sym->unicode & 0xFF00) ) - printf(" (%c)", sym->unicode); - else - printf(" (0x%X)", sym->unicode); -#endif - } - } - print_modifiers(); - printf("\n"); -} - - -static int (SDLCALL * old_filterfunc) (void *, SDL_Event *); -static void *old_filterdata; - -int SDLCALL -FilterEvents(void *userdata, SDL_Event * event) -{ - static int reallyquit = 0; - - if (old_filterfunc) { - old_filterfunc(old_filterdata, event); - } - - switch (event->type) { - - case SDL_ACTIVEEVENT: - /* See what happened */ - printf("App %s ", event->active.gain ? "gained" : "lost"); - if (event->active.state & SDL_APPACTIVE) - printf("active "); - if (event->active.state & SDL_APPINPUTFOCUS) - printf("input "); - if (event->active.state & SDL_APPMOUSEFOCUS) - printf("mouse "); - printf("focus\n"); - - /* See if we are iconified or restored */ - if (event->active.state & SDL_APPACTIVE) { - printf("App has been %s\n", - event->active.gain ? "restored" : "iconified"); - } - return (0); - - /* We want to toggle visibility on buttonpress */ - case SDL_MOUSEBUTTONDOWN: - case SDL_MOUSEBUTTONUP: - if (event->button.state == SDL_PRESSED) { - visible = !visible; - SDL_ShowCursor(visible); - } - printf("Mouse button %d has been %s at %d,%d\n", - event->button.button, - (event->button.state == SDL_PRESSED) ? "pressed" : "released", - event->button.x, event->button.y); - return (0); - - /* Show relative mouse motion */ - case SDL_MOUSEMOTION: -#if 0 - printf("Mouse motion: {%d,%d} (%d,%d)\n", - event->motion.x, event->motion.y, - event->motion.xrel, event->motion.yrel); -#endif - return (0); - - case SDL_KEYDOWN: - PrintKey(&event->key.keysym, 1); - if (event->key.keysym.sym == SDLK_ESCAPE) { - HotKey_Quit(); - } - if ((event->key.keysym.sym == SDLK_g) && - (event->key.keysym.mod & KMOD_CTRL)) { - HotKey_ToggleGrab(); - } - if ((event->key.keysym.sym == SDLK_z) && - (event->key.keysym.mod & KMOD_CTRL)) { - HotKey_Iconify(); - } - if ((event->key.keysym.sym == SDLK_RETURN) && - (event->key.keysym.mod & (KMOD_ALT|KMOD_META))) { - HotKey_ToggleFullScreen(); - } - return (0); - - case SDL_KEYUP: - PrintKey(&event->key.keysym, 0); - return(0); - - /* Pass the video resize event through .. */ - case SDL_VIDEORESIZE: - return (1); - - /* This is important! Queue it if we want to quit. */ - case SDL_QUIT: - if (!reallyquit) { - reallyquit = 1; - printf("Quit requested\n"); - return (0); - } - printf("Quit demanded\n"); - return (1); - - /* This will never happen because events queued directly - to the event queue are not filtered. - */ - case SDL_USEREVENT: - return (1); - - /* Drop all other events */ - default: - return (0); - } -} - -int -main(int argc, char *argv[]) -{ - SDL_Event event; - const char *title; - SDL_Surface *icon; - Uint8 *icon_mask; - int parsed; - int w, h; - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Check command line arguments */ - w = 640; - h = 480; - video_bpp = 8; - video_flags = SDL_SWSURFACE; - parsed = 1; - while (parsed) { - if ((argc >= 2) && (strcmp(argv[1], "-fullscreen") == 0)) { - video_flags |= SDL_FULLSCREEN; - argc -= 1; - argv += 1; - } else if ((argc >= 2) && (strcmp(argv[1], "-resize") == 0)) { - video_flags |= SDL_RESIZABLE; - argc -= 1; - argv += 1; - } else if ((argc >= 2) && (strcmp(argv[1], "-noframe") == 0)) { - video_flags |= SDL_NOFRAME; - argc -= 1; - argv += 1; - } else if ((argc >= 3) && (strcmp(argv[1], "-width") == 0)) { - w = atoi(argv[2]); - argc -= 2; - argv += 2; - } else if ((argc >= 3) && (strcmp(argv[1], "-height") == 0)) { - h = atoi(argv[2]); - argc -= 2; - argv += 2; - } else if ((argc >= 3) && (strcmp(argv[1], "-bpp") == 0)) { - video_bpp = atoi(argv[2]); - argc -= 2; - argv += 2; - } else { - parsed = 0; - } - } - - /* Set the icon -- this must be done before the first mode set */ - icon = LoadIconSurface("icon.bmp", &icon_mask); - if (icon != NULL) { - SDL_WM_SetIcon(icon, icon_mask); - } - if (icon_mask != NULL) - free(icon_mask); - - /* Set the title bar */ - if (argv[1] == NULL) - title = "Testing 1.. 2.. 3..."; - else - title = argv[1]; - SDL_WM_SetCaption(title, "testwm"); - - /* See if it's really set */ - SDL_WM_GetCaption(&title, NULL); - if (title) - printf("Title was set to: %s\n", title); - else - printf("No window title was set!\n"); - - /* Initialize the display */ - if (SetVideoMode(w, h) < 0) { - quit(1); - } - - /* Set an event filter that discards everything but QUIT */ - SDL_GetEventFilter(&old_filterfunc, &old_filterdata); - SDL_SetEventFilter(FilterEvents, NULL); - - /* Loop, waiting for QUIT */ - while (SDL_WaitEvent(&event)) { - switch (event.type) { - case SDL_VIDEORESIZE: - printf("Got a resize event: %dx%d\n", - event.resize.w, event.resize.h); - SetVideoMode(event.resize.w, event.resize.h); - break; - case SDL_USEREVENT: - printf("Handling internal quit request\n"); - /* Fall through to the quit handler */ - case SDL_QUIT: - printf("Bye bye..\n"); - quit(0); - default: - /* This should never happen */ - printf("Warning: Event %d wasn't filtered\n", event.type); - break; - } - } - printf("SDL_WaitEvent() error: %s\n", SDL_GetError()); - SDL_Quit(); - return (255); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/testwm2.c b/3rdparty/SDL-1.3.0-5387/test/testwm2.c deleted file mode 100644 index 49ac73b2b6..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/testwm2.c +++ /dev/null @@ -1,72 +0,0 @@ - -#include -#include - -#include "common.h" - -static CommonState *state; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - CommonQuit(state); - exit(rc); -} - -int -main(int argc, char *argv[]) -{ - int i, done; - SDL_Event event; - - /* Initialize test framework */ - state = CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - state->skip_renderer = SDL_TRUE; - for (i = 1; i < argc;) { - int consumed; - - consumed = CommonArg(state, i); - if (consumed == 0) { - consumed = -1; - } - if (consumed < 0) { - fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state)); - quit(1); - } - i += consumed; - } - if (!CommonInit(state)) { - quit(2); - } - - /* Main render loop */ - done = 0; - while (!done) { - /* Check for events */ - while (SDL_PollEvent(&event)) { - CommonEvent(state, &event, &done); - - if (event.type == SDL_WINDOWEVENT) { - if (event.window.event == SDL_WINDOWEVENT_MOVED) { - SDL_Window *window = SDL_GetWindowFromID(event.window.windowID); - if (window) { - printf("Window %d moved to %d,%d (display %d)\n", - event.window.windowID, - event.window.data1, - event.window.data2, - SDL_GetWindowDisplay(window)); - } - } - } - } - } - quit(0); - // keep the compiler happy ... - return(0); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/3rdparty/SDL-1.3.0-5387/test/threadwin.c b/3rdparty/SDL-1.3.0-5387/test/threadwin.c deleted file mode 100644 index 08c149f92b..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/threadwin.c +++ /dev/null @@ -1,326 +0,0 @@ - -/* Test out the multi-threaded event handling functions */ - -#include -#include -#include - -#include "SDL.h" -#include "SDL_thread.h" - -/* Are we done yet? */ -static int done = 0; - -/* Is the cursor visible? */ -static int visible = 1; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -SDL_Surface * -LoadIconSurface(char *file, Uint8 ** maskp) -{ - SDL_Surface *icon; - Uint8 *pixels; - Uint8 *mask; - int mlen, i; - - *maskp = NULL; - - /* Load the icon surface */ - icon = SDL_LoadBMP(file); - if (icon == NULL) { - fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError()); - return (NULL); - } - - /* Check width and height */ - if ((icon->w % 8) != 0) { - fprintf(stderr, "Icon width must be a multiple of 8!\n"); - SDL_FreeSurface(icon); - return (NULL); - } - if (icon->format->palette == NULL) { - fprintf(stderr, "Icon must have a palette!\n"); - SDL_FreeSurface(icon); - return (NULL); - } - - /* Set the colorkey */ - SDL_SetColorKey(icon, SDL_SRCCOLORKEY, *((Uint8 *) icon->pixels)); - - /* Create the mask */ - pixels = (Uint8 *) icon->pixels; - printf("Transparent pixel: (%d,%d,%d)\n", - icon->format->palette->colors[*pixels].r, - icon->format->palette->colors[*pixels].g, - icon->format->palette->colors[*pixels].b); - mlen = icon->w * icon->h; - mask = (Uint8 *) malloc(mlen / 8); - if (mask == NULL) { - fprintf(stderr, "Out of memory!\n"); - SDL_FreeSurface(icon); - return (NULL); - } - memset(mask, 0, mlen / 8); - for (i = 0; i < mlen;) { - if (pixels[i] != *pixels) - mask[i / 8] |= 0x01; - ++i; - if ((i % 8) != 0) - mask[i / 8] <<= 1; - } - *maskp = mask; - return (icon); -} - -int SDLCALL -FilterEvents(void *userdata, SDL_Event * event) -{ - static int reallyquit = 0; - - switch (event->type) { - - case SDL_ACTIVEEVENT: - /* See what happened */ - printf("App %s ", event->active.gain ? "gained" : "lost"); - if (event->active.state & SDL_APPACTIVE) - printf("active "); - if (event->active.state & SDL_APPMOUSEFOCUS) - printf("mouse "); - if (event->active.state & SDL_APPINPUTFOCUS) - printf("input "); - printf("focus\n"); - - /* See if we are iconified or restored */ - if (event->active.state & SDL_APPACTIVE) { - printf("App has been %s\n", - event->active.gain ? "restored" : "iconified"); - } - return (0); - - /* This is important! Queue it if we want to quit. */ - case SDL_QUIT: - if (!reallyquit) { - reallyquit = 1; - printf("Quit requested\n"); - return (0); - } - printf("Quit demanded\n"); - return (1); - - /* Mouse and keyboard events go to threads */ - case SDL_MOUSEMOTION: - case SDL_MOUSEBUTTONDOWN: - case SDL_MOUSEBUTTONUP: - case SDL_KEYDOWN: - case SDL_KEYUP: - return (1); - - /* Drop all other events */ - default: - return (0); - } -} - -int SDLCALL -HandleMouse(void *unused) -{ - SDL_Event events[10]; - int i, found; - - /* Handle mouse events here */ - while (!done) { - found = SDL_PeepEvents(events, 10, SDL_GETEVENT, SDL_MOUSEMOTION, SDL_MOUSEBUTTONUP); - for (i = 0; i < found; ++i) { - switch (events[i].type) { - /* We want to toggle visibility on buttonpress */ - case SDL_MOUSEBUTTONDOWN: - case SDL_MOUSEBUTTONUP: - if (events[i].button.state == SDL_PRESSED) { - visible = !visible; - SDL_ShowCursor(visible); - } - printf("Mouse button %d has been %s\n", - events[i].button.button, - (events[i].button.state == SDL_PRESSED) ? - "pressed" : "released"); - break; - /* Show relative mouse motion */ - case SDL_MOUSEMOTION: - printf("Mouse relative motion: {%d,%d}\n", - events[i].motion.xrel, events[i].motion.yrel); - break; - } - } - /* Give up some CPU to allow events to arrive */ - SDL_Delay(20); - } - return (0); -} - -int SDLCALL -HandleKeyboard(void *unused) -{ - SDL_Event events[10]; - int i, found; - - /* Handle mouse events here */ - while (!done) { - found = SDL_PeepEvents(events, 10, SDL_GETEVENT, SDL_KEYDOWN, SDL_KEYUP); - for (i = 0; i < found; ++i) { - switch (events[i].type) { - /* We want to toggle visibility on buttonpress */ - case SDL_KEYDOWN: - case SDL_KEYUP: - printf("Key '%c' (keysym==%d) has been %s\n", - events[i].key.keysym.unicode, - (int) events[i].key.keysym.sym, - (events[i].key.state == SDL_PRESSED) ? - "pressed" : "released"); - - /* Allow hitting to quit the app */ - if (events[i].key.keysym.sym == SDLK_ESCAPE) { - done = 1; - } - - /* skip events now that aren't KEYUPs... */ - if (events[i].key.state == SDL_PRESSED) - break; - - if (events[i].key.keysym.sym == SDLK_f) { - int rc = 0; - printf("attempting to toggle fullscreen...\n"); - rc = SDL_WM_ToggleFullScreen(SDL_GetVideoSurface()); - printf("SDL_WM_ToggleFullScreen returned %d.\n", rc); - } - - if (events[i].key.keysym.sym == SDLK_g) { - SDL_GrabMode m; - m = SDL_WM_GrabInput(SDL_GRAB_QUERY) == - SDL_GRAB_ON ? SDL_GRAB_OFF : SDL_GRAB_ON; - printf - ("attempting to toggle input grab to %s...\n", - m == SDL_GRAB_ON ? "ON" : "OFF"); - SDL_WM_GrabInput(m); - printf("attempt finished.\n"); - } - - break; - } - } - /* Give up some CPU to allow events to arrive */ - SDL_Delay(20); - } - return (0); -} - -int -main(int argc, char *argv[]) -{ - SDL_Surface *screen; - SDL_Surface *icon; - Uint8 *icon_mask; - int i, parsed; - Uint8 *buffer; - SDL_Color palette[256]; - Uint32 init_flags; - Uint8 video_bpp; - Uint32 video_flags; - SDL_Thread *mouse_thread; - SDL_Thread *keybd_thread; - - /* Set the options, based on command line arguments */ - init_flags = SDL_INIT_VIDEO; - video_bpp = 8; - video_flags = SDL_SWSURFACE; - parsed = 1; - while (parsed) { - if ((argc >= 2) && (strcmp(argv[1], "-fullscreen") == 0)) { - video_flags |= SDL_FULLSCREEN; - argc -= 1; - argv += 1; - } else if ((argc >= 3) && (strcmp(argv[1], "-bpp") == 0)) { - video_bpp = atoi(argv[2]); - argc -= 2; - argv += 2; - } else { - parsed = 0; - } - } - - /* Initialize SDL with the requested flags */ - if (SDL_Init(init_flags) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - /* Set the icon -- this must be done before the first mode set */ - icon = LoadIconSurface("icon.bmp", &icon_mask); - if (icon != NULL) { - SDL_WM_SetIcon(icon, icon_mask); - } - if (icon_mask != NULL) - free(icon_mask); - - /* Initialize the display */ - screen = SDL_SetVideoMode(640, 480, video_bpp, video_flags); - if (screen == NULL) { - fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n", - video_bpp, SDL_GetError()); - quit(1); - } - printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? - "fullscreen" : "windowed"); - - /* Enable printable characters */ - SDL_EnableUNICODE(1); - - /* Set an event filter that discards everything but QUIT */ - SDL_SetEventFilter(FilterEvents, NULL); - - /* Create the event handling threads */ - mouse_thread = SDL_CreateThread(HandleMouse, NULL); - keybd_thread = SDL_CreateThread(HandleKeyboard, NULL); - - /* Set the surface pixels and refresh! */ - for (i = 0; i < 256; ++i) { - palette[i].r = 255 - i; - palette[i].g = 255 - i; - palette[i].b = 255 - i; - } - SDL_SetColors(screen, palette, 0, 256); - if (SDL_LockSurface(screen) < 0) { - fprintf(stderr, "Couldn't lock display surface: %s\n", - SDL_GetError()); - quit(2); - } - buffer = (Uint8 *) screen->pixels; - for (i = 0; i < screen->h; ++i) { - memset(buffer, (i * 255) / screen->h, - screen->w * screen->format->BytesPerPixel); - buffer += screen->pitch; - } - SDL_UnlockSurface(screen); - SDL_UpdateRect(screen, 0, 0, 0, 0); - - /* Loop, waiting for QUIT */ - while (!done) { - SDL_PumpEvents(); - - if (SDL_PeepEvents(NULL, 0, SDL_PEEKEVENT, SDL_QUIT, SDL_QUIT)) { - done = 1; - } - /* Give up some CPU so the events can accumulate */ - SDL_Delay(20); - } - SDL_WaitThread(mouse_thread, NULL); - SDL_WaitThread(keybd_thread, NULL); - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/torturethread.c b/3rdparty/SDL-1.3.0-5387/test/torturethread.c deleted file mode 100644 index 0952ac51f8..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/torturethread.c +++ /dev/null @@ -1,96 +0,0 @@ - -/* Simple test of the SDL threading code */ - -#include -#include -#include -#include - -#include "SDL.h" -#include "SDL_thread.h" - -#define NUMTHREADS 10 - -static char volatile time_for_threads_to_die[NUMTHREADS]; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - SDL_Quit(); - exit(rc); -} - -int SDLCALL -SubThreadFunc(void *data) -{ - while (!*(int volatile *) data) { - ; /*SDL_Delay(10); *//* do nothing */ - } - return 0; -} - -int SDLCALL -ThreadFunc(void *data) -{ - SDL_Thread *sub_threads[NUMTHREADS]; - int flags[NUMTHREADS]; - int i; - int tid = (int) (uintptr_t) data; - - fprintf(stderr, "Creating Thread %d\n", tid); - - for (i = 0; i < NUMTHREADS; i++) { - flags[i] = 0; - sub_threads[i] = SDL_CreateThread(SubThreadFunc, &flags[i]); - } - - printf("Thread '%d' waiting for signal\n", tid); - while (time_for_threads_to_die[tid] != 1) { - ; /* do nothing */ - } - - printf("Thread '%d' sending signals to subthreads\n", tid); - for (i = 0; i < NUMTHREADS; i++) { - flags[i] = 1; - SDL_WaitThread(sub_threads[i], NULL); - } - - printf("Thread '%d' exiting!\n", tid); - - return 0; -} - -int -main(int argc, char *argv[]) -{ - SDL_Thread *threads[NUMTHREADS]; - int i; - - /* Load the SDL library */ - if (SDL_Init(0) < 0) { - fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); - return (1); - } - - signal(SIGSEGV, SIG_DFL); - for (i = 0; i < NUMTHREADS; i++) { - time_for_threads_to_die[i] = 0; - threads[i] = SDL_CreateThread(ThreadFunc, (void *) (uintptr_t) i); - - if (threads[i] == NULL) { - fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); - quit(1); - } - } - - for (i = 0; i < NUMTHREADS; i++) { - time_for_threads_to_die[i] = 1; - } - - for (i = 0; i < NUMTHREADS; i++) { - SDL_WaitThread(threads[i], NULL); - } - SDL_Quit(); - return (0); -} diff --git a/3rdparty/SDL-1.3.0-5387/test/utf8.txt b/3rdparty/SDL-1.3.0-5387/test/utf8.txt deleted file mode 100644 index aab22f1d02..0000000000 --- a/3rdparty/SDL-1.3.0-5387/test/utf8.txt +++ /dev/null @@ -1,287 +0,0 @@ -UTF-8 decoder capability and stress test ----------------------------------------- - -Markus Kuhn - 2003-02-19 - -This test file can help you examine, how your UTF-8 decoder handles -various types of correct, malformed, or otherwise interesting UTF-8 -sequences. This file is not meant to be a conformance test. It does -not prescribes any particular outcome and therefore there is no way to -"pass" or "fail" this test file, even though the texts suggests a -preferable decoder behaviour at some places. The aim is instead to -help you think about and test the behaviour of your UTF-8 on a -systematic collection of unusual inputs. Experience so far suggests -that most first-time authors of UTF-8 decoders find at least one -serious problem in their decoder by using this file. - -The test lines below cover boundary conditions, malformed UTF-8 -sequences as well as correctly encoded UTF-8 sequences of Unicode code -points that should never occur in a correct UTF-8 file. - -According to ISO 10646-1:2000, sections D.7 and 2.3c, a device -receiving UTF-8 shall interpret a "malformed sequence in the same way -that it interprets a character that is outside the adopted subset" and -"characters that are not within the adopted subset shall be indicated -to the user" by a receiving device. A quite commonly used approach in -UTF-8 decoders is to replace any malformed UTF-8 sequence by a -replacement character (U+FFFD), which looks a bit like an inverted -question mark, or a similar symbol. It might be a good idea to -visually distinguish a malformed UTF-8 sequence from a correctly -encoded Unicode character that is just not available in the current -font but otherwise fully legal, even though ISO 10646-1 doesn't -mandate this. In any case, just ignoring malformed sequences or -unavailable characters does not conform to ISO 10646, will make -debugging more difficult, and can lead to user confusion. - -Please check, whether a malformed UTF-8 sequence is (1) represented at -all, (2) represented by exactly one single replacement character (or -equivalent signal), and (3) the following quotation mark after an -illegal UTF-8 sequence is correctly displayed, i.e. proper -resynchronization takes place immageately after any malformed -sequence. This file says "THE END" in the last line, so if you don't -see that, your decoder crashed somehow before, which should always be -cause for concern. - -All lines in this file are exactly 79 characters long (plus the line -feed). In addition, all lines end with "|", except for the two test -lines 2.1.1 and 2.2.1, which contain non-printable ASCII controls -U+0000 and U+007F. If you display this file with a fixed-width font, -these "|" characters should all line up in column 79 (right margin). -This allows you to test quickly, whether your UTF-8 decoder finds the -correct number of characters in every line, that is whether each -malformed sequences is replaced by a single replacement character. - -Note that as an alternative to the notion of malformed sequence used -here, it is also a perfectly acceptable (and in some situations even -preferable) solution to represent each individual byte of a malformed -sequence by a replacement character. If you follow this strategy in -your decoder, then please ignore the "|" column. - - -Here come the tests: | - | -1 Some correct UTF-8 text | - | -(The codepoints for this test are: | - U+03BA U+1F79 U+03C3 U+03BC U+03B5 --ryan.) | - | -You should see the Greek word 'kosme': "κόσμε" | - | - | -2 Boundary condition test cases | - | -2.1 First possible sequence of a certain length | - | -(byte zero skipped...there's a null added at the end of the test. --ryan.) | - | -2.1.2 2 bytes (U-00000080): "€" | -2.1.3 3 bytes (U-00000800): "à €" | -2.1.4 4 bytes (U-00010000): "ð�€€" | - | -(5 and 6 byte sequences were made illegal in rfc3629. --ryan.) | -2.1.5 5 bytes (U-00200000): "øˆ€€€" | -2.1.6 6 bytes (U-04000000): "ü„€€€€" | - | -2.2 Last possible sequence of a certain length | - | -2.2.1 1 byte (U-0000007F): "" | -2.2.2 2 bytes (U-000007FF): "ß¿" | - | -(Section 5.3.2 below calls this illegal. --ryan.) | -2.2.3 3 bytes (U-0000FFFF): "ï¿¿" | - | -(5 and 6 bytes sequences, and 4 bytes sequences > 0x10FFFF were made illegal | - in rfc3629, so these next three should be replaced with a invalid | - character codepoint. --ryan.) | -2.2.4 4 bytes (U-001FFFFF): "÷¿¿¿" | -2.2.5 5 bytes (U-03FFFFFF): "û¿¿¿¿" | -2.2.6 6 bytes (U-7FFFFFFF): "ý¿¿¿¿¿" | - | -2.3 Other boundary conditions | - | -2.3.1 U-0000D7FF = ed 9f bf = "퟿" | -2.3.2 U-0000E000 = ee 80 80 = "" | -2.3.3 U-0000FFFD = ef bf bd = "�" | -2.3.4 U-0010FFFF = f4 8f bf bf = "ô�¿¿" | - | -(This one is bogus in rfc3629. --ryan.) | -2.3.5 U-00110000 = f4 90 80 80 = "ô�€€" | - | -3 Malformed sequences | - | -3.1 Unexpected continuation bytes | - | -Each unexpected continuation byte should be separately signalled as a | -malformed sequence of its own. | - | -3.1.1 First continuation byte 0x80: "€" | -3.1.2 Last continuation byte 0xbf: "¿" | - | -3.1.3 2 continuation bytes: "€¿" | -3.1.4 3 continuation bytes: "€¿€" | -3.1.5 4 continuation bytes: "€¿€¿" | -3.1.6 5 continuation bytes: "€¿€¿€" | -3.1.7 6 continuation bytes: "€¿€¿€¿" | -3.1.8 7 continuation bytes: "€¿€¿€¿€" | - | -3.1.9 Sequence of all 64 possible continuation bytes (0x80-0xbf): | - | - "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž� | - �‘’“”•–—˜™š›œ�žŸ | -  ¡¢£¤¥¦§¨©ª«¬­®¯ | - °±²³´µ¶·¸¹º»¼½¾¿" | - | -3.2 Lonely start characters | - | -3.2.1 All 32 first bytes of 2-byte sequences (0xc0-0xdf), | - each followed by a space character: | - | - "À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï | - Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß " | - | -3.2.2 All 16 first bytes of 3-byte sequences (0xe0-0xef), | - each followed by a space character: | - | - "à á â ã ä å æ ç è é ê ë ì í î ï " | - | -3.2.3 All 8 first bytes of 4-byte sequences (0xf0-0xf7), | - each followed by a space character: | - | - "ð ñ ò ó ô õ ö ÷ " | - | -3.2.4 All 4 first bytes of 5-byte sequences (0xf8-0xfb), | - each followed by a space character: | - | - "ø ù ú û " | - | -3.2.5 All 2 first bytes of 6-byte sequences (0xfc-0xfd), | - each followed by a space character: | - | - "ü ý " | - | -3.3 Sequences with last continuation byte missing | - | -All bytes of an incomplete sequence should be signalled as a single | -malformed sequence, i.e., you should see only a single replacement | -character in each of the next 10 tests. (Characters as in section 2) | - | -3.3.1 2-byte sequence with last byte missing (U+0000): "À" | -3.3.2 3-byte sequence with last byte missing (U+0000): "à€" | -3.3.3 4-byte sequence with last byte missing (U+0000): "ð€€" | -3.3.4 5-byte sequence with last byte missing (U+0000): "ø€€€" | -3.3.5 6-byte sequence with last byte missing (U+0000): "ü€€€€" | -3.3.6 2-byte sequence with last byte missing (U-000007FF): "ß" | -3.3.7 3-byte sequence with last byte missing (U-0000FFFF): "ï¿" | -3.3.8 4-byte sequence with last byte missing (U-001FFFFF): "÷¿¿" | -3.3.9 5-byte sequence with last byte missing (U-03FFFFFF): "û¿¿¿" | -3.3.10 6-byte sequence with last byte missing (U-7FFFFFFF): "ý¿¿¿¿" | - | -3.4 Concatenation of incomplete sequences | - | -All the 10 sequences of 3.3 concatenated, you should see 10 malformed | -sequences being signalled: | - | - "Àà€ð€€ø€€€ü€€€€ßï¿÷¿¿û¿¿¿ý¿¿¿¿" | - | -3.5 Impossible bytes | - | -The following two bytes cannot appear in a correct UTF-8 string | - | -3.5.1 fe = "þ" | -3.5.2 ff = "ÿ" | -3.5.3 fe fe ff ff = "þþÿÿ" | - | -4 Overlong sequences | - | -The following sequences are not malformed according to the letter of | -the Unicode 2.0 standard. However, they are longer then necessary and | -a correct UTF-8 encoder is not allowed to produce them. A "safe UTF-8 | -decoder" should reject them just like malformed sequences for two | -reasons: (1) It helps to debug applications if overlong sequences are | -not treated as valid representations of characters, because this helps | -to spot problems more quickly. (2) Overlong sequences provide | -alternative representations of characters, that could maliciously be | -used to bypass filters that check only for ASCII characters. For | -instance, a 2-byte encoded line feed (LF) would not be caught by a | -line counter that counts only 0x0a bytes, but it would still be | -processed as a line feed by an unsafe UTF-8 decoder later in the | -pipeline. From a security point of view, ASCII compatibility of UTF-8 | -sequences means also, that ASCII characters are *only* allowed to be | -represented by ASCII bytes in the range 0x00-0x7f. To ensure this | -aspect of ASCII compatibility, use only "safe UTF-8 decoders" that | -reject overlong UTF-8 sequences for which a shorter encoding exists. | - | -4.1 Examples of an overlong ASCII character | - | -With a safe UTF-8 decoder, all of the following five overlong | -representations of the ASCII character slash ("/") should be rejected | -like a malformed UTF-8 sequence, for instance by substituting it with | -a replacement character. If you see a slash below, you do not have a | -safe UTF-8 decoder! | - | -4.1.1 U+002F = c0 af = "À¯" | -4.1.2 U+002F = e0 80 af = "à€¯" | -4.1.3 U+002F = f0 80 80 af = "ð€€¯" | -4.1.4 U+002F = f8 80 80 80 af = "ø€€€¯" | -4.1.5 U+002F = fc 80 80 80 80 af = "ü€€€€¯" | - | -4.2 Maximum overlong sequences | - | -Below you see the highest Unicode value that is still resulting in an | -overlong sequence if represented with the given number of bytes. This | -is a boundary test for safe UTF-8 decoders. All five characters should | -be rejected like malformed UTF-8 sequences. | - | -4.2.1 U-0000007F = c1 bf = "Á¿" | -4.2.2 U-000007FF = e0 9f bf = "àŸ¿" | -4.2.3 U-0000FFFF = f0 8f bf bf = "ð�¿¿" | -4.2.4 U-001FFFFF = f8 87 bf bf bf = "ø‡¿¿¿" | -4.2.5 U-03FFFFFF = fc 83 bf bf bf bf = "üƒ¿¿¿¿" | - | -4.3 Overlong representation of the NUL character | - | -The following five sequences should also be rejected like malformed | -UTF-8 sequences and should not be treated like the ASCII NUL | -character. | - | -4.3.1 U+0000 = c0 80 = "À€" | -4.3.2 U+0000 = e0 80 80 = "à€€" | -4.3.3 U+0000 = f0 80 80 80 = "ð€€€" | -4.3.4 U+0000 = f8 80 80 80 80 = "ø€€€€" | -4.3.5 U+0000 = fc 80 80 80 80 80 = "ü€€€€€" | - | -5 Illegal code positions | - | -The following UTF-8 sequences should be rejected like malformed | -sequences, because they never represent valid ISO 10646 characters and | -a UTF-8 decoder that accepts them might introduce security problems | -comparable to overlong UTF-8 sequences. | - | -5.1 Single UTF-16 surrogates | - | -5.1.1 U+D800 = ed a0 80 = "í €" | -5.1.2 U+DB7F = ed ad bf = "í­¿" | -5.1.3 U+DB80 = ed ae 80 = "í®€" | -5.1.4 U+DBFF = ed af bf = "í¯¿" | -5.1.5 U+DC00 = ed b0 80 = "í°€" | -5.1.6 U+DF80 = ed be 80 = "í¾€" | -5.1.7 U+DFFF = ed bf bf = "í¿¿" | - | -5.2 Paired UTF-16 surrogates | - | -5.2.1 U+D800 U+DC00 = ed a0 80 ed b0 80 = "𐀀" | -5.2.2 U+D800 U+DFFF = ed a0 80 ed bf bf = "𐏿" | -5.2.3 U+DB7F U+DC00 = ed ad bf ed b0 80 = "í­¿í°€" | -5.2.4 U+DB7F U+DFFF = ed ad bf ed bf bf = "í­¿í¿¿" | -5.2.5 U+DB80 U+DC00 = ed ae 80 ed b0 80 = "󰀀" | -5.2.6 U+DB80 U+DFFF = ed ae 80 ed bf bf = "󰏿" | -5.2.7 U+DBFF U+DC00 = ed af bf ed b0 80 = "􏰀" | -5.2.8 U+DBFF U+DFFF = ed af bf ed bf bf = "􏿿" | - | -5.3 Other illegal code positions | - | -5.3.1 U+FFFE = ef bf be = "￾" | -5.3.2 U+FFFF = ef bf bf = "ï¿¿" | - | -THE END | -