Merged 'default' into branch 'iOS-improvements' iOS-improvements
authorAlex Szpakowski <slime73@gmail.com>
Thu, 31 Jul 2014 03:14:10 -0300
branchiOS-improvements
changeset 9507b1e690e9c5b3
parent 9506 18e3f94bd860
parent 9037 e9d67ac0c6f8
child 9508 39c47dcd5d50
Merged 'default' into branch 'iOS-improvements'
.hgignore
README-SDL.txt
README-android.txt
README-cmake.txt
README-directfb.txt
README-dynapi.txt
README-gesture.txt
README-hg.txt
README-ios.txt
README-linux.txt
README-macosx.txt
README-nacl.txt
README-pandora.txt
README-platforms.txt
README-porting.txt
README-psp.txt
README-raspberrypi.txt
README-touch.txt
README-wince.txt
README-windows.txt
README-winrt.txt
README.txt
include/doxyfile
     1.1 --- a/.hgignore	Tue Jul 29 00:36:12 2014 -0300
     1.2 +++ b/.hgignore	Thu Jul 31 03:14:10 2014 -0300
     1.3 @@ -76,6 +76,7 @@
     1.4  test/SDL2.dll
     1.5  test/checkkeys
     1.6  test/loopwave
     1.7 +test/loopwavequeue
     1.8  test/testatomic
     1.9  test/testaudioinfo
    1.10  test/testautomation
     2.1 --- a/INSTALL.txt	Tue Jul 29 00:36:12 2014 -0300
     2.2 +++ b/INSTALL.txt	Thu Jul 31 03:14:10 2014 -0300
     2.3 @@ -9,7 +9,7 @@
     2.4          * Run './configure; make; make install'
     2.5  
     2.6          Mac OS X with Xcode:
     2.7 -        * Read README-macosx.txt
     2.8 +        * Read docs/README-macosx.md
     2.9  
    2.10          Mac OS X from the command line:
    2.11          * Run './configure; make; make install'
    2.12 @@ -18,13 +18,13 @@
    2.13          * Run './configure; make; make install'
    2.14  
    2.15          Android:
    2.16 -        * Read README-android.txt
    2.17 +        * Read docs/README-android.md
    2.18  
    2.19          iOS:
    2.20 -        * Read README-ios.txt
    2.21 +        * Read docs/README-ios.md
    2.22  
    2.23          Using Cmake:
    2.24 -        * Read README-cmake.txt
    2.25 +        * Read docs/README-cmake.md
    2.26  
    2.27      2.  Look at the example programs in ./test, and check out the online
    2.28          documentation at http://wiki.libsdl.org/
     3.1 --- a/README-android.txt	Tue Jul 29 00:36:12 2014 -0300
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,438 +0,0 @@
     3.4 -================================================================================
     3.5 -Simple DirectMedia Layer for Android
     3.6 -================================================================================
     3.7 -
     3.8 -Requirements:
     3.9 -
    3.10 -Android SDK (version 12 or later)
    3.11 -http://developer.android.com/sdk/index.html
    3.12 -
    3.13 -Android NDK r7 or later
    3.14 -http://developer.android.com/tools/sdk/ndk/index.html
    3.15 -
    3.16 -Minimum API level supported by SDL: 10 (Android 2.3.3)
    3.17 -Joystick support is available for API level >=12 devices.
    3.18 -
    3.19 -================================================================================
    3.20 - How the port works
    3.21 -================================================================================
    3.22 -
    3.23 -- Android applications are Java-based, optionally with parts written in C
    3.24 -- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to 
    3.25 -the SDL library
    3.26 -- This means that your application C code must be placed inside an Android 
    3.27 -Java project, along with some C support code that communicates with Java
    3.28 -- This eventually produces a standard Android .apk package
    3.29 -
    3.30 -The Android Java code implements an "Activity" and can be found in:
    3.31 -android-project/src/org/libsdl/app/SDLActivity.java
    3.32 -
    3.33 -The Java code loads your game code, the SDL shared library, and
    3.34 -dispatches to native functions implemented in the SDL library:
    3.35 -src/core/android/SDL_android.c
    3.36 -
    3.37 -Your project must include some glue code that starts your main() routine:
    3.38 -src/main/android/SDL_android_main.c
    3.39 -
    3.40 -
    3.41 -================================================================================
    3.42 - Building an app
    3.43 -================================================================================
    3.44 -
    3.45 -For simple projects you can use the script located at build-scripts/androidbuild.sh
    3.46 -
    3.47 -There's two ways of using it:
    3.48 -
    3.49 -androidbuild.sh com.yourcompany.yourapp < sources.list
    3.50 -androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
    3.51 -
    3.52 -sources.list should be a text file with a source file name in each line
    3.53 -Filenames should be specified relative to the current directory, for example if
    3.54 -you are in the build-scripts directory and want to create the testgles.c test, you'll
    3.55 -run:
    3.56 -    
    3.57 -./androidbuild.sh org.libsdl.testgles ../test/testgles.c
    3.58 -
    3.59 -One limitation of this script is that all sources provided will be aggregated into
    3.60 -a single directory, thus all your source files should have a unique name.
    3.61 -
    3.62 -Once the project is complete the script will tell you where the debug APK is located.
    3.63 -If you want to create a signed release APK, you can use the project created by this
    3.64 -utility to generate it.
    3.65 -
    3.66 -Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
    3.67 -done in the build directory for the app!
    3.68 -
    3.69 -
    3.70 -For more complex projects, follow these instructions:
    3.71 -    
    3.72 -1. Copy the android-project directory wherever you want to keep your projects
    3.73 -   and rename it to the name of your project.
    3.74 -2. Move or symlink this SDL directory into the <project>/jni directory
    3.75 -3. Edit <project>/jni/src/Android.mk to include your source files
    3.76 -4. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
    3.77 -
    3.78 -If you want to use the Eclipse IDE, skip to the Eclipse section below.
    3.79 -
    3.80 -5. Create <project>/local.properties and use that to point to the Android SDK directory, by writing a line with the following form:
    3.81 -sdk.dir=PATH_TO_ANDROID_SDK
    3.82 -6. Run 'ant debug' in android/project. This compiles the .java and eventually 
    3.83 -   creates a .apk with the native code embedded
    3.84 -7. 'ant debug install' will push the apk to the device or emulator (if connected)
    3.85 -
    3.86 -Here's an explanation of the files in the Android project, so you can customize them:
    3.87 -
    3.88 -android-project/
    3.89 -	AndroidManifest.xml	- package manifest. Among others, it contains the class name
    3.90 -				  of the main Activity and the package name of the application.
    3.91 -	build.properties	- empty
    3.92 -	build.xml		- build description file, used by ant. The actual application name
    3.93 -				  is specified here.
    3.94 -	default.properties	- holds the target ABI for the application, android-10 and up
    3.95 -	project.properties	- holds the target ABI for the application, android-10 and up
    3.96 -	local.properties	- holds the SDK path, you should change this to the path to your SDK
    3.97 -	jni/			- directory holding native code
    3.98 -	jni/Android.mk		- Android makefile that can call recursively the Android.mk files
    3.99 -				  in all subdirectories
   3.100 -	jni/SDL/		- (symlink to) directory holding the SDL library files
   3.101 -	jni/SDL/Android.mk	- Android makefile for creating the SDL shared library
   3.102 -	jni/src/		- directory holding your C/C++ source
   3.103 -	jni/src/Android.mk	- Android makefile that you should customize to include your 
   3.104 -                                  source code and any library references
   3.105 -	res/			- directory holding resources for your application
   3.106 -	res/drawable-*		- directories holding icons for different phone hardware. Could be
   3.107 -				  one dir called "drawable".
   3.108 -	res/layout/main.xml	- Usually contains a file main.xml, which declares the screen layout.
   3.109 -				  We don't need it because we use the SDL video output.
   3.110 -	res/values/strings.xml	- strings used in your application, including the application name
   3.111 -				  shown on the phone.
   3.112 -	src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding
   3.113 -				  to SDL.  Be very careful changing this, as the SDL library relies
   3.114 -				  on this implementation.
   3.115 -
   3.116 -
   3.117 -================================================================================
   3.118 - Build an app with static linking of libSDL
   3.119 -================================================================================
   3.120 -
   3.121 -This build uses the Android NDK module system.
   3.122 -
   3.123 -Instructions:
   3.124 -1. Copy the android-project directory wherever you want to keep your projects
   3.125 -   and rename it to the name of your project.
   3.126 -2. Rename <project>/jni/src/Android_static.mk to <project>/jni/src/Android.mk
   3.127 -   (overwrite the existing one)
   3.128 -3. Edit <project>/jni/src/Android.mk to include your source files
   3.129 -4. create and export an environment variable named NDK_MODULE_PATH that points
   3.130 -   to the parent directory of this SDL directory. e.g.:
   3.131 -
   3.132 -   export NDK_MODULE_PATH="$PWD"/..
   3.133 -
   3.134 -5. Edit <project>/src/org/libsdl/app/SDLActivity.java and remove the call to
   3.135 -   System.loadLibrary("SDL2") line 42.
   3.136 -6. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
   3.137 -
   3.138 -
   3.139 -================================================================================
   3.140 - Customizing your application name
   3.141 -================================================================================
   3.142 -
   3.143 -To customize your application name, edit AndroidManifest.xml and replace
   3.144 -"org.libsdl.app" with an identifier for your product package.
   3.145 -
   3.146 -Then create a Java class extending SDLActivity and place it in a directory
   3.147 -under src matching your package, e.g.
   3.148 -	src/com/gamemaker/game/MyGame.java
   3.149 -
   3.150 -Here's an example of a minimal class file:
   3.151 ---- MyGame.java --------------------------
   3.152 -package com.gamemaker.game;
   3.153 -
   3.154 -import org.libsdl.app.SDLActivity; 
   3.155 -
   3.156 -/* 
   3.157 - * A sample wrapper class that just calls SDLActivity 
   3.158 - */ 
   3.159 -
   3.160 -public class MyGame extends SDLActivity { }
   3.161 -
   3.162 -------------------------------------------
   3.163 -
   3.164 -Then replace "SDLActivity" in AndroidManifest.xml with the name of your
   3.165 -class, .e.g. "MyGame"
   3.166 -
   3.167 -================================================================================
   3.168 - Customizing your application icon
   3.169 -================================================================================
   3.170 -
   3.171 -Conceptually changing your icon is just replacing the "ic_launcher.png" files in
   3.172 -the drawable directories under the res directory. There are four directories for
   3.173 -different screen sizes. These can be replaced with one dir called "drawable",
   3.174 -containing an icon file "ic_launcher.png" with dimensions 48x48 or 72x72.
   3.175 -
   3.176 -You may need to change the name of your icon in AndroidManifest.xml to match
   3.177 -this icon filename.
   3.178 -
   3.179 -================================================================================
   3.180 - Loading assets
   3.181 -================================================================================
   3.182 -
   3.183 -Any files you put in the "assets" directory of your android-project directory
   3.184 -will get bundled into the application package and you can load them using the
   3.185 -standard functions in SDL_rwops.h.
   3.186 -
   3.187 -There are also a few Android specific functions that allow you to get other
   3.188 -useful paths for saving and loading data:
   3.189 -SDL_AndroidGetInternalStoragePath()
   3.190 -SDL_AndroidGetExternalStorageState()
   3.191 -SDL_AndroidGetExternalStoragePath()
   3.192 -
   3.193 -See SDL_system.h for more details on these functions.
   3.194 -
   3.195 -The asset packaging system will, by default, compress certain file extensions.
   3.196 -SDL includes two asset file access mechanisms, the preferred one is the so
   3.197 -called "File Descriptor" method, which is faster and doesn't involve the Dalvik
   3.198 -GC, but given this method does not work on compressed assets, there is also the
   3.199 -"Input Stream" method, which is automatically used as a fall back by SDL. You
   3.200 -may want to keep this fact in mind when building your APK, specially when large
   3.201 -files are involved.
   3.202 -For more information on which extensions get compressed by default and how to
   3.203 -disable this behaviour, see for example:
   3.204 -    
   3.205 -http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
   3.206 -
   3.207 -================================================================================
   3.208 - Pause / Resume behaviour
   3.209 -================================================================================
   3.210 -
   3.211 -If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
   3.212 -the event loop will block itself when the app is paused (ie, when the user
   3.213 -returns to the main Android dashboard). Blocking is better in terms of battery
   3.214 -use, and it allows your app to spring back to life instantaneously after resume
   3.215 -(versus polling for a resume message).
   3.216 -
   3.217 -Upon resume, SDL will attempt to restore the GL context automatically.
   3.218 -In modern devices (Android 3.0 and up) this will most likely succeed and your
   3.219 -app can continue to operate as it was.
   3.220 -
   3.221 -However, there's a chance (on older hardware, or on systems under heavy load),
   3.222 -where the GL context can not be restored. In that case you have to listen for
   3.223 -a specific message, (which is not yet implemented!) and restore your textures
   3.224 -manually or quit the app (which is actually the kind of behaviour you'll see
   3.225 -under iOS, if the OS can not restore your GL context it will just kill your app)
   3.226 -
   3.227 -================================================================================
   3.228 - Threads and the Java VM
   3.229 -================================================================================
   3.230 -
   3.231 -For a quick tour on how Linux native threads interoperate with the Java VM, take
   3.232 -a look here: http://developer.android.com/guide/practices/jni.html
   3.233 -If you want to use threads in your SDL app, it's strongly recommended that you
   3.234 -do so by creating them using SDL functions. This way, the required attach/detach
   3.235 -handling is managed by SDL automagically. If you have threads created by other
   3.236 -means and they make calls to SDL functions, make sure that you call
   3.237 -Android_JNI_SetupThread before doing anything else otherwise SDL will attach
   3.238 -your thread automatically anyway (when you make an SDL call), but it'll never
   3.239 -detach it.
   3.240 -
   3.241 -================================================================================
   3.242 - Using STL
   3.243 -================================================================================
   3.244 -
   3.245 -You can use STL in your project by creating an Application.mk file in the jni
   3.246 -folder and adding the following line:
   3.247 -APP_STL := stlport_static
   3.248 -
   3.249 -For more information check out CPLUSPLUS-SUPPORT.html in the NDK documentation.
   3.250 -
   3.251 -================================================================================
   3.252 - Additional documentation
   3.253 -================================================================================
   3.254 -
   3.255 -The documentation in the NDK docs directory is very helpful in understanding the
   3.256 -build process and how to work with native code on the Android platform.
   3.257 -
   3.258 -The best place to start is with docs/OVERVIEW.TXT
   3.259 -
   3.260 -
   3.261 -================================================================================
   3.262 - Using Eclipse
   3.263 -================================================================================
   3.264 -
   3.265 -First make sure that you've installed Eclipse and the Android extensions as described here:
   3.266 -	http://developer.android.com/tools/sdk/eclipse-adt.html
   3.267 -
   3.268 -Once you've copied the SDL android project and customized it, you can create an Eclipse project from it:
   3.269 - * File -> New -> Other
   3.270 - * Select the Android -> Android Project wizard and click Next
   3.271 - * Enter the name you'd like your project to have
   3.272 - * Select "Create project from existing source" and browse for your project directory
   3.273 - * Make sure the Build Target is set to Android 2.0
   3.274 - * Click Finish
   3.275 -
   3.276 -
   3.277 -================================================================================
   3.278 - Using the emulator
   3.279 -================================================================================
   3.280 -
   3.281 -There are some good tips and tricks for getting the most out of the
   3.282 -emulator here: http://developer.android.com/tools/devices/emulator.html
   3.283 -
   3.284 -Especially useful is the info on setting up OpenGL ES 2.0 emulation.
   3.285 -
   3.286 -Notice that this software emulator is incredibly slow and needs a lot of disk space.
   3.287 -Using a real device works better.
   3.288 -
   3.289 -================================================================================
   3.290 - Troubleshooting
   3.291 -================================================================================
   3.292 -
   3.293 -You can create and run an emulator from the Eclipse IDE:
   3.294 - * Window -> Android SDK and AVD Manager
   3.295 -
   3.296 -You can see if adb can see any devices with the following command:
   3.297 -	adb devices
   3.298 -
   3.299 -You can see the output of log messages on the default device with:
   3.300 -	adb logcat
   3.301 -
   3.302 -You can push files to the device with:
   3.303 -	adb push local_file remote_path_and_file
   3.304 -
   3.305 -You can push files to the SD Card at /sdcard, for example:
   3.306 -	adb push moose.dat /sdcard/moose.dat
   3.307 -
   3.308 -You can see the files on the SD card with a shell command:
   3.309 -	adb shell ls /sdcard/
   3.310 -
   3.311 -You can start a command shell on the default device with:
   3.312 -	adb shell
   3.313 -
   3.314 -You can remove the library files of your project (and not the SDL lib files) with:
   3.315 -	ndk-build clean
   3.316 -
   3.317 -You can do a build with the following command:
   3.318 -	ndk-build
   3.319 -
   3.320 -You can see the complete command line that ndk-build is using by passing V=1 on the command line:
   3.321 -	ndk-build V=1
   3.322 -
   3.323 -If your application crashes in native code, you can use addr2line to convert the
   3.324 -addresses in the stack trace to lines in your code.
   3.325 -
   3.326 -For example, if your crash looks like this:
   3.327 -I/DEBUG   (   31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
   3.328 -I/DEBUG   (   31):  r0 00000000  r1 00001000  r2 00000003  r3 400085d4
   3.329 -I/DEBUG   (   31):  r4 400085d0  r5 40008000  r6 afd41504  r7 436c6a7c
   3.330 -I/DEBUG   (   31):  r8 436c6b30  r9 435c6fb0  10 435c6f9c  fp 4168d82c
   3.331 -I/DEBUG   (   31):  ip 8346aff0  sp 436c6a60  lr afd1c8ff  pc afd1c902  cpsr 60000030
   3.332 -I/DEBUG   (   31):          #00  pc 0001c902  /system/lib/libc.so
   3.333 -I/DEBUG   (   31):          #01  pc 0001ccf6  /system/lib/libc.so
   3.334 -I/DEBUG   (   31):          #02  pc 000014bc  /data/data/org.libsdl.app/lib/libmain.so
   3.335 -I/DEBUG   (   31):          #03  pc 00001506  /data/data/org.libsdl.app/lib/libmain.so
   3.336 -
   3.337 -You can see that there's a crash in the C library being called from the main code.
   3.338 -I run addr2line with the debug version of my code:
   3.339 -	arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
   3.340 -and then paste in the number after "pc" in the call stack, from the line that I care about:
   3.341 -000014bc
   3.342 -
   3.343 -I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
   3.344 -
   3.345 -You can add logging to your code to help show what's happening:
   3.346 -
   3.347 -#include <android/log.h>
   3.348 -
   3.349 -	__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
   3.350 -
   3.351 -If you need to build without optimization turned on, you can create a file called
   3.352 -"Application.mk" in the jni directory, with the following line in it:
   3.353 -APP_OPTIM := debug
   3.354 -
   3.355 -
   3.356 -================================================================================
   3.357 - Memory debugging
   3.358 -================================================================================
   3.359 -
   3.360 -The best (and slowest) way to debug memory issues on Android is valgrind.
   3.361 -Valgrind has support for Android out of the box, just grab code using:
   3.362 -	svn co svn://svn.valgrind.org/valgrind/trunk valgrind
   3.363 -... and follow the instructions in the file README.android to build it.
   3.364 -
   3.365 -One thing I needed to do on Mac OS X was change the path to the toolchain,
   3.366 -and add ranlib to the environment variables:
   3.367 -export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
   3.368 -
   3.369 -Once valgrind is built, you can create a wrapper script to launch your
   3.370 -application with it, changing org.libsdl.app to your package identifier:
   3.371 ---- start_valgrind_app -------------------
   3.372 -#!/system/bin/sh
   3.373 -export TMPDIR=/data/data/org.libsdl.app
   3.374 -exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
   3.375 -------------------------------------------
   3.376 -
   3.377 -Then push it to the device:
   3.378 -	adb push start_valgrind_app /data/local
   3.379 -
   3.380 -and make it executable:
   3.381 -	adb shell chmod 755 /data/local/start_valgrind_app
   3.382 -
   3.383 -and tell Android to use the script to launch your application:
   3.384 -	adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
   3.385 -
   3.386 -If the setprop command says "could not set property", it's likely that
   3.387 -your package name is too long and you should make it shorter by changing
   3.388 -AndroidManifest.xml and the path to your class file in android-project/src
   3.389 -
   3.390 -You can then launch your application normally and waaaaaaaiiittt for it.
   3.391 -You can monitor the startup process with the logcat command above, and
   3.392 -when it's done (or even while it's running) you can grab the valgrind
   3.393 -output file:
   3.394 -	adb pull /sdcard/valgrind.log
   3.395 -
   3.396 -When you're done instrumenting with valgrind, you can disable the wrapper:
   3.397 -	adb shell setprop wrap.org.libsdl.app ""
   3.398 -
   3.399 -================================================================================
   3.400 - Why is API level 10 the minimum required?
   3.401 -================================================================================
   3.402 -
   3.403 -API level 10 is the minimum required level at runtime (that is, on the device) 
   3.404 -because SDL requires some functionality for running not
   3.405 -available on older devices. Since the incorporation of joystick support into SDL,
   3.406 -the minimum SDK required to *build* SDL is version 12. Devices running API levels
   3.407 -10-11 are still supported, only with the joystick functionality disabled.
   3.408 -
   3.409 -Support for native OpenGL ES and ES2 applications was introduced in the NDK for
   3.410 -API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which
   3.411 -has since then been obsoleted, with the recommendation to developers to bump the
   3.412 -required API level to 10.
   3.413 -As of this writing, according to http://developer.android.com/about/dashboards/index.html
   3.414 -about 90% of the Android devices accessing Google Play support API level 10 or
   3.415 -higher (March 2013).
   3.416 -
   3.417 -================================================================================
   3.418 - A note regarding the use of the "dirty rectangles" rendering technique
   3.419 -================================================================================
   3.420 -
   3.421 -If your app uses a variation of the "dirty rectangles" rendering technique,
   3.422 -where you only update a portion of the screen on each frame, you may notice a
   3.423 -variety of visual glitches on Android, that are not present on other platforms.
   3.424 -This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
   3.425 -contexts, in particular the use of the eglSwapBuffers function. As stated in the
   3.426 -documentation for the function "The contents of ancillary buffers are always 
   3.427 -undefined after calling eglSwapBuffers".
   3.428 -Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
   3.429 -is not possible for SDL as it requires EGL 1.4, available only on the API level
   3.430 -17+, so the only workaround available on this platform is to redraw the entire
   3.431 -screen each frame.
   3.432 -
   3.433 -Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
   3.434 -
   3.435 -================================================================================
   3.436 - Known issues
   3.437 -================================================================================
   3.438 -
   3.439 -- The number of buttons reported for each joystick is hardcoded to be 36, which
   3.440 -is the current maximum number of buttons Android can report.
   3.441 -
     4.1 --- a/README-cmake.txt	Tue Jul 29 00:36:12 2014 -0300
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,31 +0,0 @@
     4.4 -================================================================================
     4.5 -CMake build system for SDL (www.cmake.org)
     4.6 -================================================================================
     4.7 -
     4.8 -SDL's build system was traditionally based on autotools. Over time, this
     4.9 -approach has suffered from several issues across the different supported 
    4.10 -platforms.
    4.11 -To solve these problems, a new build system based on CMake is under development.
    4.12 -It works in parallel to the legacy system, so users can experiment with it
    4.13 -without complication.
    4.14 -While still experimental, the build system should be usable on the following
    4.15 -platforms:
    4.16 -    
    4.17 -    * FreeBSD
    4.18 -    * Linux
    4.19 -    * VS.NET 2010
    4.20 -    * MinGW and Msys
    4.21 -    * OS X with support for XCode
    4.22 -    
    4.23 -================================================================================
    4.24 -Usage
    4.25 -================================================================================
    4.26 -
    4.27 -Assuming the source for SDL is located at ~/sdl
    4.28 -
    4.29 -cd ~
    4.30 -mkdir build
    4.31 -cd build
    4.32 -cmake ../sdl
    4.33 -
    4.34 -This will build the static and dynamic versions of SDL in the ~/build directory.
     5.1 --- a/README-directfb.txt	Tue Jul 29 00:36:12 2014 -0300
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,106 +0,0 @@
     5.4 -SDL on DirectFB
     5.5 -
     5.6 -Supports:
     5.7 -
     5.8 -- Hardware YUV overlays
     5.9 -- OpenGL - software only
    5.10 -- 2D/3D accelerations (depends on directfb driver)
    5.11 -- multiple displays
    5.12 -- windows
    5.13 -
    5.14 -What you need:
    5.15 -
    5.16 -DirectFB 1.0.1, 1.2.x, 1.3.0
    5.17 -Kernel-Framebuffer support: required: vesafb, radeonfb .... 
    5.18 -Mesa 7.0.x	   - optional for OpenGL
    5.19 -
    5.20 -/etc/directfbrc
    5.21 -
    5.22 -This file should contain the following lines to make
    5.23 -your joystick work and avoid crashes:
    5.24 -------------------------
    5.25 -disable-module=joystick
    5.26 -disable-module=cle266
    5.27 -disable-module=cyber5k
    5.28 -no-linux-input-grab
    5.29 -------------------------
    5.30 -
    5.31 -To disable to use x11 backend when DISPLAY variable is found use
    5.32 -
    5.33 -export SDL_DIRECTFB_X11_CHECK=0
    5.34 -
    5.35 -To disable the use of linux input devices, i.e. multimice/multikeyboard support,
    5.36 -use
    5.37 -
    5.38 -export SDL_DIRECTFB_LINUX_INPUT=0
    5.39 -
    5.40 -To use hardware accelerated YUV-overlays for YUV-textures, use:
    5.41 -
    5.42 -export SDL_DIRECTFB_YUV_DIRECT=1
    5.43 -
    5.44 -This is disabled by default. It will only support one 
    5.45 -YUV texture, namely the first. Every other YUV texture will be
    5.46 -rendered in software.
    5.47 -
    5.48 -In addition, you may use (directfb-1.2.x)
    5.49 -
    5.50 -export SDL_DIRECTFB_YUV_UNDERLAY=1
    5.51 -
    5.52 -to make the YUV texture an underlay. This will make the cursor to
    5.53 -be shown.
    5.54 -
    5.55 -Simple Window Manager
    5.56 -=====================
    5.57 -
    5.58 -The driver has support for a very, very basic window manager you may
    5.59 -want to use when running with "wm=default". Use
    5.60 -
    5.61 -export SDL_DIRECTFB_WM=1
    5.62 -
    5.63 -to enable basic window borders. In order to have the window title rendered,
    5.64 -you need to have the following font installed:
    5.65 -
    5.66 -/usr/share/fonts/truetype/freefont/FreeSans.ttf
    5.67 -
    5.68 -OpenGL Support
    5.69 -==============
    5.70 -
    5.71 -The following instructions will give you *software* OpenGL. However this
    5.72 -works at least on all directfb supported platforms.
    5.73 -
    5.74 -As of this writing 20100802 you need to pull Mesa from git and do the following:
    5.75 -
    5.76 -------------------------
    5.77 -git clone git://anongit.freedesktop.org/git/mesa/mesa
    5.78 -cd mesa 
    5.79 -git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
    5.80 -------------------------
    5.81 -
    5.82 -Edit configs/linux-directfb so that the Directories-section looks like
    5.83 -------------------------
    5.84 -# Directories
    5.85 -SRC_DIRS     = mesa glu 
    5.86 -GLU_DIRS     = sgi
    5.87 -DRIVER_DIRS  = directfb
    5.88 -PROGRAM_DIRS = 
    5.89 -------------------------
    5.90 -
    5.91 -make linux-directfb
    5.92 -make
    5.93 -
    5.94 -echo Installing - please enter sudo pw.
    5.95 -
    5.96 -sudo make install INSTALL_DIR=/usr/local/dfb_GL
    5.97 -cd src/mesa/drivers/directfb
    5.98 -make
    5.99 -sudo make install INSTALL_DIR=/usr/local/dfb_GL
   5.100 -------------------------
   5.101 -
   5.102 -To run the SDL - testprograms:
   5.103 -
   5.104 -export SDL_VIDEODRIVER=directfb
   5.105 -export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
   5.106 -export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
   5.107 -
   5.108 -./testgl
   5.109 -
     6.1 --- a/README-dynapi.txt	Tue Jul 29 00:36:12 2014 -0300
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,130 +0,0 @@
     6.4 -================================================================================
     6.5 -Dynamic API
     6.6 -================================================================================
     6.7 -Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
     6.8 -
     6.9 -Background:
    6.10 -
    6.11 -- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, 
    6.12 -  but developers are shipping their own SDL2 with individual Steam games. 
    6.13 -  These games might stop getting updates, but a newer SDL2 might be needed later. 
    6.14 -  Certainly we'll always be fixing bugs in SDL, even if a new video target isn't 
    6.15 -  ever needed, and these fixes won't make it to a game shipping its own SDL.
    6.16 -- Even if we replace the SDL2 in those games with a compatible one, that is to 
    6.17 -  say, edit a developer's Steam depot (yuck!), there are developers that are 
    6.18 -  statically linking SDL2 that we can't do this for. We can't even force the 
    6.19 -  dynamic loader to ignore their SDL2 in this case, of course.
    6.20 -- If you don't ship an SDL2 with the game in some form, people that disabled the
    6.21 -  Steam Runtime, or just tried to run the game from the command line instead of 
    6.22 -  Steam might find themselves unable to run the game, due to a missing dependency.
    6.23 -- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
    6.24 -  generic Linux boxes that may or may not have SDL2 installed, you have to ship 
    6.25 -  the library or risk a total failure to launch. So now, you might have to have 
    6.26 -  a non-Steam build plus a Steam build (that is, one with and one without SDL2 
    6.27 -  included), which is inconvenient if you could have had one universal build 
    6.28 -  that works everywhere.
    6.29 -- We like the zlib license, but the biggest complaint from the open source 
    6.30 -  community about the license change is the static linking. The LGPL forced this 
    6.31 -  as a legal, not technical issue, but zlib doesn't care. Even those that aren't
    6.32 -  concerned about the GNU freedoms found themselves solving the same problems: 
    6.33 -  swapping in a newer SDL to an older game often times can save the day. 
    6.34 -  Static linking stops this dead.
    6.35 -
    6.36 -So here's what we did:
    6.37 -
    6.38 -SDL now has, internally, a table of function pointers. So, this is what SDL_Init
    6.39 -now looks like:
    6.40 -
    6.41 -    UInt32 SDL_Init(Uint32 flags)
    6.42 -    {
    6.43 -        return jump_table.SDL_Init(flags);
    6.44 -    }
    6.45 -
    6.46 -Except that is all done with a bunch of macro magic so we don't have to maintain
    6.47 -every one of these.
    6.48 -
    6.49 -What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
    6.50 -SDL_Init() that you've been calling all this time. But at startup, it looks more 
    6.51 -like this:
    6.52 -
    6.53 -    Uint32 SDL_Init_DEFAULT(Uint32 flags)
    6.54 -    {
    6.55 -        SDL_InitDynamicAPI();
    6.56 -        return jump_table.SDL_Init(flags);
    6.57 -    }
    6.58 -
    6.59 -SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function 
    6.60 -pointers, which means that this _DEFAULT function never gets called again. 
    6.61 -First call to any SDL function sets the whole thing up.
    6.62 -
    6.63 -So you might be asking, what was the value in that? Isn't this what the operating
    6.64 -system's dynamic loader was supposed to do for us? Yes, but now we've got this 
    6.65 -level of indirection, we can do things like this:
    6.66 -
    6.67 -    export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
    6.68 -    ./MyGameThatIsStaticallyLinkedToSDL2
    6.69 -
    6.70 -And now, this game that is staticallly linked to SDL, can still be overridden 
    6.71 -with a newer, or better, SDL. The statically linked one will only be used as 
    6.72 -far as calling into the jump table in this case. But in cases where no override
    6.73 -is desired, the statically linked version will provide its own jump table, 
    6.74 -and everyone is happy.
    6.75 -
    6.76 -So now:
    6.77 -- Developers can statically link SDL, and users can still replace it. 
    6.78 -  (We'd still rather you ship a shared library, though!)
    6.79 -- Developers can ship an SDL with their game, Valve can override it for, say, 
    6.80 -  new features on SteamOS, or distros can override it for their own needs, 
    6.81 -  but it'll also just work in the default case.
    6.82 -- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), 
    6.83 -  and it'll do the right thing.
    6.84 -- End users (and Valve) can update a game's SDL in almost any case, 
    6.85 -  to keep abandoned games running on newer platforms.
    6.86 -- Everyone develops with SDL exactly as they have been doing all along. 
    6.87 -  Same headers, same ABI. Just get the latest version to enable this magic.
    6.88 -
    6.89 -
    6.90 -A little more about SDL_InitDynamicAPI():
    6.91 -
    6.92 -Internally, InitAPI does some locking to make sure everything waits until a 
    6.93 -single thread initializes everything (although even SDL_CreateThread() goes 
    6.94 -through here before spinning a thread, too), and then decides if it should use
    6.95 -an external SDL library. If not, it sets up the jump table using the current 
    6.96 -SDL's function pointers (which might be statically linked into a program, or in
    6.97 -a shared library of its own). If so, it loads that library and looks for and 
    6.98 -calls a single function:
    6.99 -
   6.100 -    SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
   6.101 -
   6.102 -That function takes a version number (more on that in a moment), the address of
   6.103 -the jump table, and the size, in bytes, of the table. 
   6.104 -Now, we've got policy here: this table's layout never changes; new stuff gets 
   6.105 -added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all 
   6.106 -the needed functions if tablesize <= sizeof its own jump table. If tablesize is
   6.107 -bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
   6.108 -if it's smaller, we know we can provide the entire API that the caller needs.
   6.109 -
   6.110 -The version variable is a failsafe switch. 
   6.111 -Right now it's always 1. This number changes when there are major API changes 
   6.112 -(so we know if the tablesize might be smaller, or entries in it have changed). 
   6.113 -Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not 
   6.114 -inconceivable to have a small dispatch library that only supplies this one 
   6.115 -function and loads different, otherwise-incompatible SDL libraries and has the
   6.116 -right one initialize the jump table based on the version. For something that 
   6.117 -must generically catch lots of different versions of SDL over time, like the 
   6.118 -Steam Client, this isn't a bad option.
   6.119 -
   6.120 -Finally, I'm sure some people are reading this and thinking,
   6.121 -"I don't want that overhead in my project!"  
   6.122 -To which I would point out that the extra function call through the jump table 
   6.123 -probably wouldn't even show up in a profile, but lucky you: this can all be 
   6.124 -disabled. You can build SDL without this if you absolutely must, but we would 
   6.125 -encourage you not to do that. However, on heavily locked down platforms like 
   6.126 -iOS, or maybe when debugging,  it makes sense to disable it. The way this is 
   6.127 -designed in SDL, you just have to change one #define, and the entire system 
   6.128 -vaporizes out, and SDL functions exactly like it always did. Most of it is 
   6.129 -macro magic, so the system is contained to one C file and a few headers. 
   6.130 -However, this is on by default and you have to edit a header file to turn it 
   6.131 -off. Our hopes is that if we make it easy to disable, but not too easy, 
   6.132 -everyone will ultimately be able to get what they want, but we've gently 
   6.133 -nudged everyone towards what we think is the best solution.
     7.1 --- a/README-gesture.txt	Tue Jul 29 00:36:12 2014 -0300
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,72 +0,0 @@
     7.4 -===========================================================================
     7.5 -Dollar Gestures
     7.6 -===========================================================================
     7.7 -SDL Provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
     7.8 -
     7.9 -Gestures can be performed with any number of fingers (the centroid of the fingers must follow the path of the gesture), but the number of fingers must be constant (a finger cannot go down in the middle of a gesture). The path of a gesture is considered the path from the time when the final finger went down, to the first time any finger comes up. 
    7.10 -
    7.11 -Dollar gestures are assigned an Id based on a hash function. This is guaranteed to remain constant for a given gesture. There is a (small) chance that two different gestures will be assigned the same ID. In this case, simply re-recording one of the gestures should result in a different ID.
    7.12 -
    7.13 -Recording:
    7.14 -----------
    7.15 -To begin recording on a touch device call:
    7.16 -SDL_RecordGesture(SDL_TouchID touchId), where touchId is the id of the touch device you wish to record on, or -1 to record on all connected devices.
    7.17 -
    7.18 -Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
    7.19 -A SDL_DOLLARRECORD event is a dgesture with the following fields:
    7.20 -
    7.21 -event.dgesture.touchId   - the Id of the touch used to record the gesture.
    7.22 -event.dgesture.gestureId - the unique id of the recorded gesture.
    7.23 -
    7.24 -
    7.25 -Performing:
    7.26 ------------
    7.27 -As long as there is a dollar gesture assigned to a touch, every finger-up event will also cause an SDL_DOLLARGESTURE event with the following fields:
    7.28 -
    7.29 -event.dgesture.touchId    - the Id of the touch which performed the gesture.
    7.30 -event.dgesture.gestureId  - the unique id of the closest gesture to the performed stroke.
    7.31 -event.dgesture.error      - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
    7.32 -event.dgesture.numFingers - the number of fingers used to draw the stroke.
    7.33 -
    7.34 -Most programs will want to define an appropriate error threshold and check to be sure that the error of a gesture is not abnormally high (an indicator that no gesture was performed).
    7.35 -
    7.36 -
    7.37 -
    7.38 -Saving:
    7.39 --------
    7.40 -To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored.
    7.41 -
    7.42 -To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored.
    7.43 -
    7.44 -Both functions return the number of gestures successfully saved.
    7.45 -
    7.46 -
    7.47 -Loading:
    7.48 ---------
    7.49 -To load templates from a file, call SDL_LoadDollarTemplates(touchId,src) where touchId is the id of the touch to load to (or -1 to load to all touch devices), and src is an SDL_RWops pointer to a gesture save file. 
    7.50 -
    7.51 -SDL_LoadDollarTemplates returns the number of templates successfully loaded.
    7.52 -
    7.53 -
    7.54 -
    7.55 -===========================================================================
    7.56 -Multi Gestures
    7.57 -===========================================================================
    7.58 -SDL provides simple support for pinch/rotate/swipe gestures. 
    7.59 -Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
    7.60 -
    7.61 -event.mgesture.touchId - the Id of the touch on which the gesture was performed.
    7.62 -event.mgesture.x       - the normalized x coordinate of the gesture. (0..1)
    7.63 -event.mgesture.y       - the normalized y coordinate of the gesture. (0..1)
    7.64 -event.mgesture.dTheta  - the amount that the fingers rotated during this motion.
    7.65 -event.mgesture.dDist   - the amount that the fingers pinched during this motion.
    7.66 -event.mgesture.numFingers - the number of fingers used in the gesture.
    7.67 -
    7.68 -
    7.69 -===========================================================================
    7.70 -Notes
    7.71 -===========================================================================
    7.72 -For a complete example see test/testgesture.c
    7.73 -
    7.74 -Please direct questions/comments to:
    7.75 -   jim.tla+sdl_touch@gmail.com
     8.1 --- a/README-hg.txt	Tue Jul 29 00:36:12 2014 -0300
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,23 +0,0 @@
     8.4 -The latest development version of SDL is available via Mercurial.
     8.5 -Mercurial allows you to get up-to-the-minute fixes and enhancements;
     8.6 -as a developer works on a source tree, you can use "hg" to mirror that
     8.7 -source tree instead of waiting for an official release. Please look
     8.8 -at the Mercurial website ( http://mercurial.selenic.com/ ) for more
     8.9 -information on using hg, where you can also download software for
    8.10 -Mac OS X, Windows, and Unix systems.
    8.11 -
    8.12 -  hg clone http://hg.libsdl.org/SDL
    8.13 -
    8.14 -If you are building SDL with an IDE, you will need to copy the file
    8.15 -include/SDL_config.h.default to include/SDL_config.h before building.
    8.16 -
    8.17 -If you are building SDL via configure, you will need to run autogen.sh
    8.18 -before running configure.
    8.19 -
    8.20 -There is a web interface to the subversion repository at:
    8.21 -
    8.22 -	http://hg.libsdl.org/SDL/
    8.23 -
    8.24 -There is an RSS feed available at that URL, for those that want to
    8.25 -track commits in real time.
    8.26 -
     9.1 --- a/README-ios.txt	Tue Jul 29 00:36:12 2014 -0300
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,222 +0,0 @@
     9.4 -==============================================================================
     9.5 -Building the Simple DirectMedia Layer for iPhone OS 5.1
     9.6 -==============================================================================
     9.7 -
     9.8 -Requirements: Mac OS X v10.5 or later and the iPhone SDK.
     9.9 -
    9.10 -Instructions:
    9.11 -1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
    9.12 -2.  Select your desired target, and hit build.
    9.13 -
    9.14 -There are three build targets:
    9.15 -- libSDL.a:
    9.16 -	Build SDL as a statically linked library
    9.17 -- testsdl
    9.18 -	Build a test program (there are known test failures which are fine)
    9.19 -- Template:
    9.20 -	Package a project template together with the SDL for iPhone static libraries and copies of the SDL headers.  The template includes proper references to the SDL library and headers, skeleton code for a basic SDL program, and placeholder graphics for the application icon and startup screen.
    9.21 -
    9.22 -==============================================================================
    9.23 -Build SDL for iOS from the command line
    9.24 -==============================================================================
    9.25 -
    9.26 -1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
    9.27 -2. ./iosbuild.sh
    9.28 -
    9.29 -If everything goes fine, you should see a build/ios directory, inside there's
    9.30 -two directories "lib" and "include". 
    9.31 -"include" contains a copy of the SDL headers that you'll need for your project,
    9.32 -make sure to configure XCode to look for headers there.
    9.33 -"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
    9.34 -to your XCode project. These libraries contain three architectures in them,
    9.35 -armv6 for legacy devices, armv7, and i386 (for the simulator).
    9.36 -By default, iosbuild.sh will autodetect the SDK version you have installed using 
    9.37 -xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
    9.38 -by setting the MIN_OS_VERSION variable, ie:
    9.39 -
    9.40 -MIN_OS_VERSION=4.2 ./iosbuild.sh
    9.41 -
    9.42 -==============================================================================
    9.43 -Using the Simple DirectMedia Layer for iOS
    9.44 -==============================================================================
    9.45 -
    9.46 -FIXME: This needs to be updated for the latest methods
    9.47 -
    9.48 -Here is the easiest method:
    9.49 -1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
    9.50 -1.  Install the iPhone SDL Application template by copying it to one of XCode's template directories.  I recommend creating a directory called "SDL" in "/Developer/Platforms/iOS.platform/Developer/Library/XCode/Project Templates/" and placing it there.
    9.51 -2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
    9.52 -
    9.53 -Here is a more manual method:
    9.54 -1.  Create a new iPhone view based application.
    9.55 -2.  Build the SDL static libraries (libSDL.a and libSDLSimulator.a) for iPhone and include them in your project.  XCode will ignore the library that is not currently of the correct architecture, hence your app will work both on iPhone and in the iPhone Simulator.
    9.56 -3.  Include the SDL header files in your project.
    9.57 -4.  Remove the ApplicationDelegate.h and ApplicationDelegate.m files -- SDL for iPhone provides its own UIApplicationDelegate.  Remove MainWindow.xib -- SDL for iPhone produces its user interface programmatically.
    9.58 -5.  Delete the contents of main.m and program your app as a regular SDL program instead.  You may replace main.m with your own main.c, but you must tell XCode not to use the project prefix file, as it includes Objective-C code.
    9.59 -
    9.60 -==============================================================================
    9.61 -Notes -- Application events
    9.62 -==============================================================================
    9.63 -
    9.64 -On iOS the application goes through a fixed life cycle and you will get
    9.65 -notifications of state changes via application events. When these events
    9.66 -are delivered you must handle them in an event callback because the OS may
    9.67 -not give you any processing time after the events are delivered.
    9.68 -
    9.69 -e.g.
    9.70 -
    9.71 -int HandleAppEvents(void *userdata, SDL_Event *event)
    9.72 -{
    9.73 -    switch (event->type)
    9.74 -    {
    9.75 -    case SDL_APP_TERMINATING:
    9.76 -        /* Terminate the app.
    9.77 -           Shut everything down before returning from this function.
    9.78 -        */
    9.79 -        return 0;
    9.80 -    case SDL_APP_LOWMEMORY:
    9.81 -        /* You will get this when your app is paused and iOS wants more memory.
    9.82 -           Release as much memory as possible.
    9.83 -        */
    9.84 -        return 0;
    9.85 -    case SDL_APP_WILLENTERBACKGROUND:
    9.86 -        /* Prepare your app to go into the background.  Stop loops, etc.
    9.87 -           This gets called when the user hits the home button, or gets a call.
    9.88 -        */
    9.89 -        return 0;
    9.90 -    case SDL_APP_DIDENTERBACKGROUND:
    9.91 -        /* This will get called if the user accepted whatever sent your app to the background.
    9.92 -           If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
    9.93 -           When you get this, you have 5 seconds to save all your state or the app will be terminated.
    9.94 -           Your app is NOT active at this point.
    9.95 -        */
    9.96 -        return 0;
    9.97 -    case SDL_APP_WILLENTERFOREGROUND:
    9.98 -        /* This call happens when your app is coming back to the foreground.
    9.99 -           Restore all your state here.
   9.100 -        */
   9.101 -        return 0;
   9.102 -    case SDL_APP_DIDENTERFOREGROUND:
   9.103 -        /* Restart your loops here.
   9.104 -           Your app is interactive and getting CPU again.
   9.105 -        */
   9.106 -        return 0;
   9.107 -    default:
   9.108 -        /* No special processing, add it to the event queue */
   9.109 -        return 1;
   9.110 -    }
   9.111 -}
   9.112 -
   9.113 -int main(int argc, char *argv[])
   9.114 -{
   9.115 -    SDL_SetEventFilter(HandleAppEvents, NULL);
   9.116 -
   9.117 -    ... run your main loop
   9.118 -
   9.119 -    return 0;
   9.120 -}
   9.121 -
   9.122 -    
   9.123 -==============================================================================
   9.124 -Notes -- Accelerometer as Joystick
   9.125 -==============================================================================
   9.126 -
   9.127 -SDL for iPhone supports polling the built in accelerometer as a joystick device.  For an example on how to do this, see the accelerometer.c in the demos directory.
   9.128 -
   9.129 -The main thing to note when using the accelerometer with SDL is that while the iPhone natively reports accelerometer as floating point values in units of g-force, SDL_JoystickGetAxis reports joystick values as signed integers.  Hence, in order to convert between the two, some clamping and scaling is necessary on the part of the iPhone SDL joystick driver.  To convert SDL_JoystickGetAxis reported values BACK to units of g-force, simply multiply the values by SDL_IPHONE_MAX_GFORCE / 0x7FFF.
   9.130 -
   9.131 -==============================================================================
   9.132 -Notes -- OpenGL ES
   9.133 -==============================================================================
   9.134 -
   9.135 -Your SDL application for iPhone uses OpenGL ES for video by default.
   9.136 -
   9.137 -OpenGL ES for iPhone supports several display pixel formats, such as RGBA8 and RGB565, which provide a 32 bit and 16 bit color buffer respectively.  By default, the implementation uses RGB565, but you may use RGBA8 by setting each color component to 8 bits in SDL_GL_SetAttribute.
   9.138 -
   9.139 -If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0.
   9.140 -
   9.141 -Finally, if your application completely redraws the screen each frame, you may find significant performance improvement by setting the attribute SDL_GL_RETAINED_BACKING to 1.
   9.142 -
   9.143 -==============================================================================
   9.144 -Notes -- Keyboard
   9.145 -==============================================================================
   9.146 -
   9.147 -The SDL keyboard API has been extended to support on-screen keyboards:
   9.148 -
   9.149 -void SDL_StartTextInput()
   9.150 -	-- enables text events and reveals the onscreen keyboard.
   9.151 -void SDL_StopTextInput()
   9.152 -	-- disables text events and hides the onscreen keyboard.
   9.153 -SDL_bool SDL_IsTextInputActive()
   9.154 -	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
   9.155 -
   9.156 -==============================================================================
   9.157 -Notes -- Reading and Writing files
   9.158 -==============================================================================
   9.159 -
   9.160 -Each application installed on iPhone resides in a sandbox which includes its own Application Home directory.  Your application may not access files outside this directory.
   9.161 -
   9.162 -Once your application is installed its directory tree looks like:
   9.163 -
   9.164 -MySDLApp Home/
   9.165 -	MySDLApp.app
   9.166 -	Documents/
   9.167 -	Library/
   9.168 -		Preferences/
   9.169 -	tmp/
   9.170 -
   9.171 -When your SDL based iPhone application starts up, it sets the working directory to the main bundle (MySDLApp Home/MySDLApp.app), where your application resources are stored.  You cannot write to this directory.  Instead, I advise you to write document files to "../Documents/" and preferences to "../Library/Preferences".  
   9.172 -
   9.173 -More information on this subject is available here:
   9.174 -http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
   9.175 -
   9.176 -==============================================================================
   9.177 -Notes -- iPhone SDL limitations
   9.178 -==============================================================================
   9.179 -
   9.180 -Windows:
   9.181 -	Full-size, single window applications only.  You cannot create multi-window SDL applications for iPhone OS.  The application window will fill the display, though you have the option of turning on or off the menu-bar (pass SDL_CreateWindow the flag SDL_WINDOW_BORDERLESS).
   9.182 -
   9.183 -Textures:
   9.184 -	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
   9.185 -
   9.186 -Loading Shared Objects:
   9.187 -	This is disabled by default since it seems to break the terms of the iPhone SDK agreement.  It can be re-enabled in SDL_config_iphoneos.h.
   9.188 -
   9.189 -==============================================================================
   9.190 -Game Center 
   9.191 -==============================================================================
   9.192 -
   9.193 -Game Center integration requires that you break up your main loop in order to yield control back to the system. In other words, instead of running an endless main loop, you run each frame in a callback function, using:
   9.194 -    
   9.195 -int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
   9.196 -
   9.197 -This will set up the given function to be called back on the animation callback, and then you have to return from main() to let the Cocoa event loop run.
   9.198 -
   9.199 -e.g.
   9.200 -
   9.201 -extern "C"
   9.202 -void ShowFrame(void*)
   9.203 -{
   9.204 -    ... do event handling, frame logic and rendering
   9.205 -}
   9.206 -
   9.207 -int main(int argc, char *argv[])
   9.208 -{
   9.209 -   ... initialize game ...
   9.210 -
   9.211 -#if __IPHONEOS__
   9.212 -        // Initialize the Game Center for scoring and matchmaking
   9.213 -        InitGameCenter();
   9.214 -
   9.215 -        // Set up the game to run in the window animation callback on iOS
   9.216 -        // so that Game Center and so forth works correctly.
   9.217 -        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
   9.218 -#else
   9.219 -        while ( running ) {
   9.220 -                ShowFrame(0);
   9.221 -                DelayFrame();
   9.222 -        }
   9.223 -#endif
   9.224 -        return 0;
   9.225 -}
    10.1 --- a/README-linux.txt	Tue Jul 29 00:36:12 2014 -0300
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,83 +0,0 @@
    10.4 -================================================================================
    10.5 -Simple DirectMedia Layer for Linux
    10.6 -================================================================================
    10.7 -
    10.8 -By default SDL will only link against glibc, the rest of the features will be
    10.9 -enabled dynamically at runtime depending on the available features on the target
   10.10 -system. So, for example if you built SDL with Xinerama support and the target
   10.11 -system does not have the Xinerama libraries installed, it will be disabled
   10.12 -at runtime, and you won't get a missing library error, at least with the 
   10.13 -default configuration parameters.
   10.14 -
   10.15 -
   10.16 -================================================================================
   10.17 -Build Dependencies
   10.18 -================================================================================
   10.19 -    
   10.20 -Ubuntu 13.04, all available features enabled:
   10.21 -
   10.22 -sudo apt-get install build-essential mercurial make cmake autoconf automake \
   10.23 -libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \
   10.24 -libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \
   10.25 -libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \
   10.26 -libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
   10.27 -
   10.28 -Ubuntu 14.04 can also add "libwayland-dev libmirclient-dev libxkbcommon-dev"
   10.29 -to that command line for Wayland and Mir support.
   10.30 -
   10.31 -NOTES:
   10.32 -- This includes all the audio targets except arts, because Ubuntu pulled the 
   10.33 -  artsc0-dev package, but in theory SDL still supports it.
   10.34 -- DirectFB isn't included because the configure script (currently) fails to find
   10.35 -  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
   10.36 -  configure script to include DirectFB support. Send patches.  :)
   10.37 -
   10.38 -
   10.39 -================================================================================
   10.40 -Joystick does not work
   10.41 -================================================================================
   10.42 -
   10.43 -If you compiled or are using a version of SDL with udev support (and you should!)
   10.44 -there's a few issues that may cause SDL to fail to detect your joystick. To
   10.45 -debug this, start by installing the evtest utility. On Ubuntu/Debian:
   10.46 -
   10.47 -    sudo apt-get install evtest
   10.48 -    
   10.49 -Then run:
   10.50 -    
   10.51 -    sudo evtest
   10.52 -    
   10.53 -You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
   10.54 -Now run:
   10.55 -    
   10.56 -    cat /dev/input/event/XX
   10.57 -
   10.58 -If you get a permission error, you need to set a udev rule to change the mode of
   10.59 -your device (see below)    
   10.60 -    
   10.61 -Also, try:
   10.62 -    
   10.63 -    sudo udevadm info --query=all --name=input/eventXX
   10.64 -    
   10.65 -If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
   10.66 -you need to set up an udev rule to force this variable.
   10.67 -
   10.68 -A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks 
   10.69 -like:
   10.70 -    
   10.71 -   SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   10.72 -   SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   10.73 -   
   10.74 -You can set up similar rules for your device by changing the values listed in
   10.75 -idProduct and idVendor. To obtain these values, try:
   10.76 -    
   10.77 -    sudo udevadm info -a --name=input/eventXX | grep idVendor
   10.78 -    sudo udevadm info -a --name=input/eventXX | grep idProduct
   10.79 -    
   10.80 -If multiple values come up for each of these, the one you want is the first one of each.    
   10.81 -
   10.82 -On other systems which ship with an older udev (such as CentOS), you may need
   10.83 -to set up a rule such as:
   10.84 -    
   10.85 -    SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
   10.86 -
    11.1 --- a/README-macosx.txt	Tue Jul 29 00:36:12 2014 -0300
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,226 +0,0 @@
    11.4 -==============================================================================
    11.5 -Using the Simple DirectMedia Layer with Mac OS X
    11.6 -==============================================================================
    11.7 -
    11.8 -These instructions are for people using Apple's Mac OS X (pronounced
    11.9 -"ten").
   11.10 -
   11.11 -From the developer's point of view, OS X is a sort of hybrid Mac and
   11.12 -Unix system, and you have the option of using either traditional
   11.13 -command line tools or Apple's IDE Xcode.
   11.14 -
   11.15 -To build SDL using the command line, use the standard configure and make
   11.16 -process:
   11.17 -
   11.18 -	./configure
   11.19 -	make
   11.20 -	sudo make install
   11.21 -
   11.22 -You can also build SDL as a Universal library (a single binary for both
   11.23 -32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using
   11.24 -the fatbuild.sh script in build-scripts:
   11.25 -	sh build-scripts/fatbuild.sh
   11.26 -	sudo build-scripts/fatbuild.sh install
   11.27 -This script builds SDL with 10.5 ABI compatibility on i386 and 10.6
   11.28 -ABI compatibility on x86_64 architectures.  For best compatibility you
   11.29 -should compile your application the same way.  A script which wraps
   11.30 -gcc to make this easy is provided in test/gcc-fat.sh
   11.31 -
   11.32 -Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK
   11.33 -(even if you target back to 10.5 systems). PowerPC support for Mac OS X has
   11.34 -been officially dropped as of SDL 2.0.2.
   11.35 -
   11.36 -To use the library once it's built, you essential have two possibilities:
   11.37 -use the traditional autoconf/automake/make method, or use Xcode.
   11.38 -
   11.39 -==============================================================================
   11.40 -Caveats for using SDL with Mac OS X
   11.41 -==============================================================================
   11.42 -
   11.43 -Some things you have to be aware of when using SDL on Mac OS X:
   11.44 -
   11.45 -- If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
   11.46 -  SDL will not register its own. This means that SDL will not terminate using
   11.47 -  SDL_Quit if it receives a termination request, it will terminate like a 
   11.48 -  normal app, and it will not send a SDL_DROPFILE when you request to open a
   11.49 -  file with the app. To solve these issues, put the following code in your 
   11.50 -  NSApplicationDelegate implementation:
   11.51 -
   11.52 -  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
   11.53 -  {
   11.54 -      if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
   11.55 -          SDL_Event event;
   11.56 -          event.type = SDL_QUIT;
   11.57 -          SDL_PushEvent(&event);
   11.58 -      }
   11.59 -
   11.60 -      return NSTerminateCancel;
   11.61 -  }
   11.62 -
   11.63 -  - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   11.64 -  {
   11.65 -      if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
   11.66 -          SDL_Event event;
   11.67 -          event.type = SDL_DROPFILE;
   11.68 -          event.drop.file = SDL_strdup([filename UTF8String]);
   11.69 -          return (SDL_PushEvent(&event) > 0);
   11.70 -      }
   11.71 -
   11.72 -      return NO;
   11.73 -  }
   11.74 -
   11.75 -==============================================================================
   11.76 -Using the Simple DirectMedia Layer with a traditional Makefile
   11.77 -==============================================================================
   11.78 -
   11.79 -An existing autoconf/automake build system for your SDL app has good chances
   11.80 -to work almost unchanged on OS X. However, to produce a "real" Mac OS X binary
   11.81 -that you can distribute to users, you need to put the generated binary into a
   11.82 -so called "bundle", which basically is a fancy folder with a name like
   11.83 -"MyCoolGame.app".
   11.84 -
   11.85 -To get this build automatically, add something like the following rule to
   11.86 -your Makefile.am:
   11.87 -
   11.88 -bundle_contents = APP_NAME.app/Contents
   11.89 -APP_NAME_bundle: EXE_NAME
   11.90 -	mkdir -p $(bundle_contents)/MacOS
   11.91 -	mkdir -p $(bundle_contents)/Resources
   11.92 -	echo "APPL????" > $(bundle_contents)/PkgInfo
   11.93 -	$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
   11.94 -
   11.95 -You should replace EXE_NAME with the name of the executable. APP_NAME is what
   11.96 -will be visible to the user in the Finder. Usually it will be the same
   11.97 -as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME 
   11.98 -usually is "TestGame". You might also want to use @PACKAGE@ to use the package
   11.99 -name as specified in your configure.in file.
  11.100 -
  11.101 -If your project builds more than one application, you will have to do a bit
  11.102 -more. For each of your target applications, you need a separate rule.
  11.103 -
  11.104 -If you want the created bundles to be installed, you may want to add this
  11.105 -rule to your Makefile.am:
  11.106 -
  11.107 -install-exec-hook: APP_NAME_bundle
  11.108 -	rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
  11.109 -	mkdir -p $(DESTDIR)$(prefix)/Applications/
  11.110 -	cp -r $< /$(DESTDIR)$(prefix)Applications/
  11.111 -
  11.112 -This rule takes the Bundle created by the rule from step 3 and installs them
  11.113 -into $(DESTDIR)$(prefix)/Applications/.
  11.114 -
  11.115 -Again, if you want to install multiple applications, you will have to augment
  11.116 -the make rule accordingly.
  11.117 -
  11.118 -
  11.119 -But beware! That is only part of the story! With the above, you end up with
  11.120 -a bare bone .app bundle, which is double clickable from the Finder. But
  11.121 -there are some more things you should do before shipping your product...
  11.122 -
  11.123 -1) The bundle right now probably is dynamically linked against SDL. That 
  11.124 -   means that when you copy it to another computer, *it will not run*,
  11.125 -   unless you also install SDL on that other computer. A good solution
  11.126 -   for this dilemma is to static link against SDL. On OS X, you can
  11.127 -   achieve that by linking against the libraries listed by
  11.128 -     sdl-config --static-libs
  11.129 -   instead of those listed by
  11.130 -     sdl-config --libs
  11.131 -   Depending on how exactly SDL is integrated into your build systems, the
  11.132 -   way to achieve that varies, so I won't describe it here in detail
  11.133 -2) Add an 'Info.plist' to your application. That is a special XML file which
  11.134 -   contains some meta-information about your application (like some copyright
  11.135 -   information, the version of your app, the name of an optional icon file,
  11.136 -   and other things). Part of that information is displayed by the Finder
  11.137 -   when you click on the .app, or if you look at the "Get Info" window.
  11.138 -   More information about Info.plist files can be found on Apple's homepage.
  11.139 -
  11.140 -
  11.141 -As a final remark, let me add that I use some of the techniques (and some
  11.142 -variations of them) in Exult and ScummVM; both are available in source on
  11.143 -the net, so feel free to take a peek at them for inspiration!
  11.144 -
  11.145 -
  11.146 -==============================================================================
  11.147 -Using the Simple DirectMedia Layer with Xcode
  11.148 -==============================================================================
  11.149 -
  11.150 -These instructions are for using Apple's Xcode IDE to build SDL applications.
  11.151 -
  11.152 -- First steps
  11.153 -
  11.154 -The first thing to do is to unpack the Xcode.tar.gz archive in the
  11.155 -top level SDL directory (where the Xcode.tar.gz archive resides).
  11.156 -Because Stuffit Expander will unpack the archive into a subdirectory,
  11.157 -you should unpack the archive manually from the command line:
  11.158 -	cd [path_to_SDL_source]
  11.159 -	tar zxf Xcode.tar.gz
  11.160 -This will create a new folder called Xcode, which you can browse
  11.161 -normally from the Finder.
  11.162 -
  11.163 -- Building the Framework
  11.164 -
  11.165 -The SDL Library is packaged as a framework bundle, an organized
  11.166 -relocatable folder hierarchy of executable code, interface headers,
  11.167 -and additional resources. For practical purposes, you can think of a 
  11.168 -framework as a more user and system-friendly shared library, whose library
  11.169 -file behaves more or less like a standard UNIX shared library.
  11.170 -
  11.171 -To build the framework, simply open the framework project and build it. 
  11.172 -By default, the framework bundle "SDL.framework" is installed in 
  11.173 -/Library/Frameworks. Therefore, the testers and project stationary expect
  11.174 -it to be located there. However, it will function the same in any of the
  11.175 -following locations:
  11.176 -
  11.177 -    ~/Library/Frameworks
  11.178 -    /Local/Library/Frameworks
  11.179 -    /System/Library/Frameworks
  11.180 -
  11.181 -- Build Options
  11.182 -    There are two "Build Styles" (See the "Targets" tab) for SDL.
  11.183 -    "Deployment" should be used if you aren't tweaking the SDL library.
  11.184 -    "Development" should be used to debug SDL apps or the library itself.
  11.185 -
  11.186 -- Building the Testers
  11.187 -    Open the SDLTest project and build away!
  11.188 -
  11.189 -- Using the Project Stationary
  11.190 -    Copy the stationary to the indicated folders to access it from
  11.191 -    the "New Project" and "Add target" menus. What could be easier?
  11.192 -
  11.193 -- Setting up a new project by hand
  11.194 -    Some of you won't want to use the Stationary so I'll give some tips:
  11.195 -    * Create a new "Cocoa Application"
  11.196 -    * Add src/main/macosx/SDLMain.m , .h and .nib to your project
  11.197 -    * Remove "main.c" from your project
  11.198 -    * Remove "MainMenu.nib" from your project
  11.199 -    * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
  11.200 -    * Add "$(HOME)/Library/Frameworks" to the frameworks search path
  11.201 -    * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
  11.202 -    * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib"
  11.203 -    * Add your files
  11.204 -    * Clean and build
  11.205 -
  11.206 -- Building from command line
  11.207 -    Use pbxbuild in the same directory as your .pbproj file
  11.208 -
  11.209 -- Running your app
  11.210 -    You can send command line args to your app by either invoking it from
  11.211 -    the command line (in *.app/Contents/MacOS) or by entering them in the
  11.212 -    "Executables" panel of the target settings.
  11.213 -    
  11.214 -- Implementation Notes
  11.215 -    Some things that may be of interest about how it all works...
  11.216 -    * Working directory
  11.217 -        As defined in the SDL_main.m file, the working directory of your SDL app
  11.218 -        is by default set to its parent. You may wish to change this to better
  11.219 -        suit your needs.
  11.220 -    * You have a Cocoa App!
  11.221 -        Your SDL app is essentially a Cocoa application. When your app
  11.222 -        starts up and the libraries finish loading, a Cocoa procedure is called,
  11.223 -        which sets up the working directory and calls your main() method.
  11.224 -        You are free to modify your Cocoa app with generally no consequence 
  11.225 -        to SDL. You cannot, however, easily change the SDL window itself.
  11.226 -        Functionality may be added in the future to help this.
  11.227 -
  11.228 -
  11.229 -Known bugs are listed in the file "BUGS"
    12.1 --- a/README-nacl.txt	Tue Jul 29 00:36:12 2014 -0300
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,104 +0,0 @@
    12.4 -================================================================================
    12.5 -Simple DirectMedia Layer for Native Client
    12.6 -================================================================================
    12.7 -
    12.8 -Requirements: 
    12.9 -    
   12.10 -    * Native Client SDK (https://developer.chrome.com/native-client), 
   12.11 -      (tested with Pepper version 33 or higher).
   12.12 -
   12.13 -The SDL backend for Chrome's Native Client has been tested only with the PNaCl
   12.14 -toolchain, which generates binaries designed to run on ARM and x86_32/64 
   12.15 -platforms. This does not mean it won't work with the other toolchains!
   12.16 -
   12.17 -================================================================================
   12.18 -Building SDL for NaCl
   12.19 -================================================================================
   12.20 -
   12.21 -Set up the right environment variables (see naclbuild.sh), then configure SDL with:
   12.22 -
   12.23 -    configure --host=pnacl --prefix some/install/destination
   12.24 -    
   12.25 -Then "make". 
   12.26 -
   12.27 -As an example of how to create a deployable app a Makefile project is provided 
   12.28 -in test/nacl/Makefile, which includes some monkey patching of the common.mk file 
   12.29 -provided by NaCl, without which linking properly to SDL won't work (the search 
   12.30 -path can't be modified externally, so the linker won't find SDL's binaries unless 
   12.31 -you dump them into the SDK path, which is inconvenient).
   12.32 -Also provided in test/nacl is the required support file, such as index.html, 
   12.33 -manifest.json, etc.
   12.34 -SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
   12.35 -This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
   12.36 -hiding the asynchronous nature of the browser behind the scenes...which is not the
   12.37 -same as making it disappear!
   12.38 -
   12.39 -
   12.40 -================================================================================
   12.41 -Running tests
   12.42 -================================================================================
   12.43 -
   12.44 -Due to the nature of NaCl programs, building and running SDL tests is not as
   12.45 -straightforward as one would hope. The script naclbuild.sh in build-scripts 
   12.46 -automates the process and should serve as a guide for users of SDL trying to build 
   12.47 -their own applications.
   12.48 -
   12.49 -Basic usage:
   12.50 -    
   12.51 -    ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
   12.52 -    
   12.53 -This will build testgles2.c by default.
   12.54 -
   12.55 -If you want to build a different test, for example testrendercopyex.c:
   12.56 -    
   12.57 -    SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
   12.58 -    
   12.59 -Once the build finishes, you have to serve the contents with a web server (the
   12.60 -script will give you instructions on how to do that with Python).
   12.61 -
   12.62 -================================================================================
   12.63 -RWops and nacl_io
   12.64 -================================================================================
   12.65 -
   12.66 -SDL_RWops work transparently with nacl_io. Two functions control the mount points:
   12.67 -    
   12.68 -    int mount(const char* source, const char* target, 
   12.69 -                      const char* filesystemtype, 
   12.70 -                      unsigned long mountflags, const void *data);
   12.71 -    int umount(const char *target);
   12.72 -    
   12.73 -    For convenience, SDL will by default mount an httpfs tree at / before calling 
   12.74 -the app's main function. Such setting can be overridden by calling:
   12.75 -    
   12.76 -    umount("/");
   12.77 -
   12.78 -And then mounting a different filesystem at /
   12.79 -
   12.80 -It's important to consider that the asynchronous nature of file operations on a
   12.81 -browser is hidden from the application, effectively providing the developer with
   12.82 -a set of blocking file operations just like you get in a regular desktop 
   12.83 -environment, which eases the job of porting to Native Client, but also introduces 
   12.84 -a set of challenges of its own, in particular when big file sizes and slow 
   12.85 -connections are involved.
   12.86 -
   12.87 -For more information on how nacl_io and mount points work, see:
   12.88 -    
   12.89 -    https://developer.chrome.com/native-client/devguide/coding/nacl_io
   12.90 -    https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
   12.91 -
   12.92 -To be able to save into the directory "/save/" (like backup of game) :
   12.93 -
   12.94 -    mount("", "/save", "html5fs", 0, "type=PERSISTENT");
   12.95 -
   12.96 -And add to manifest.json :
   12.97 -
   12.98 -  "permissions": [
   12.99 -     "unlimitedStorage"
  12.100 -  ]
  12.101 -
  12.102 -================================================================================
  12.103 -TODO - Known Issues
  12.104 -================================================================================
  12.105 -* Testing of all systems with a real application (something other than SDL's tests)
  12.106 -* Key events don't seem to work properly
  12.107 -
    13.1 --- a/README-pandora.txt	Tue Jul 29 00:36:12 2014 -0300
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,16 +0,0 @@
    13.4 -SDL 2.0 with open pandora console support ( http://openpandora.org/ )
    13.5 -=====================================================================
    13.6 -
    13.7 -- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
    13.8 -support to work on the pandora under the framebuffer. This driver do not have
    13.9 -input support for now, so if you use it you will have to add your own control code.
   13.10 -The video driver name is "pandora" so if you have problem running it from
   13.11 -the framebuffer, try to set the following variable before starting your application :
   13.12 -"export SDL_VIDEODRIVER=pandora"
   13.13 -
   13.14 -- OpenGL ES support was added to the x11 driver, so it's working like the normal
   13.15 -x11 driver one with OpenGLX support, with SDL input event's etc..
   13.16 -
   13.17 -
   13.18 -David Carré (Cpasjuste)
   13.19 -cpasjuste@gmail.com
    14.1 --- a/README-platforms.txt	Tue Jul 29 00:36:12 2014 -0300
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,31 +0,0 @@
    14.4 -
    14.5 -This is a list of the platforms SDL supports, and who maintains them.
    14.6 -
    14.7 -Officially supported platforms
    14.8 -==============================
    14.9 -(code compiles, and thoroughly tested for release)
   14.10 -==============================
   14.11 -Windows XP/Vista/7/8
   14.12 -Mac OS X 10.5+
   14.13 -Linux 2.6+
   14.14 -iOS 5.1.1+
   14.15 -Android 2.3.3+
   14.16 -
   14.17 -Unofficially supported platforms
   14.18 -================================
   14.19 -(code compiles, but not thoroughly tested)
   14.20 -================================
   14.21 -FreeBSD
   14.22 -NetBSD
   14.23 -OpenBSD
   14.24 -Solaris
   14.25 -
   14.26 -Platforms supported by volunteers
   14.27 -=================================
   14.28 -Haiku - maintained by Axel Dörfler <axeld@pinc-software.de>
   14.29 -PSP - maintained by 527721088@qq.com
   14.30 -Pandora - maintained by Scott Smith <pickle136@sbcglobal.net>
   14.31 -NaCl - maintained by Gabriel Jacobo <gabomdq@gmail.com>
   14.32 -
   14.33 -Platforms that need maintainers
   14.34 -===============================
    15.1 --- a/README-porting.txt	Tue Jul 29 00:36:12 2014 -0300
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,61 +0,0 @@
    15.4 -
    15.5 -* Porting To A New Platform
    15.6 -
    15.7 -  The first thing you have to do when porting to a new platform, is look at
    15.8 -include/SDL_platform.h and create an entry there for your operating system.
    15.9 -The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
   15.10 -Ideally SDL_platform.h will be able to auto-detect the system it's building
   15.11 -on based on C preprocessor symbols.
   15.12 -
   15.13 -There are two basic ways of building SDL at the moment:
   15.14 -
   15.15 -1. The "UNIX" way:  ./configure; make; make install
   15.16 -
   15.17 -   If you have a GNUish system, then you might try this.  Edit configure.in,
   15.18 -   take a look at the large section labelled:
   15.19 -	"Set up the configuration based on the target platform!"
   15.20 -   Add a section for your platform, and then re-run autogen.sh and build!
   15.21 -
   15.22 -2. Using an IDE:
   15.23 -
   15.24 -   If you're using an IDE or other non-configure build system, you'll probably
   15.25 -   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
   15.26 -   add a section for your platform, and create a custom SDL_config_{platform}.h,
   15.27 -   based on SDL_config.h.minimal and SDL_config.h.in
   15.28 -
   15.29 -   Add the top level include directory to the header search path, and then add
   15.30 -   the following sources to the project:
   15.31 -	src/*.c
   15.32 -	src/atomic/*.c
   15.33 -	src/audio/*.c
   15.34 -	src/cpuinfo/*.c
   15.35 -	src/events/*.c
   15.36 -	src/file/*.c
   15.37 -	src/haptic/*.c
   15.38 -	src/joystick/*.c
   15.39 -	src/power/*.c
   15.40 -	src/render/*.c
   15.41 -	src/stdlib/*.c
   15.42 -	src/thread/*.c
   15.43 -	src/timer/*.c
   15.44 -	src/video/*.c
   15.45 -	src/audio/disk/*.c
   15.46 -	src/audio/dummy/*.c
   15.47 -	src/video/dummy/*.c
   15.48 -	src/haptic/dummy/*.c
   15.49 -	src/joystick/dummy/*.c
   15.50 -	src/main/dummy/*.c
   15.51 -	src/thread/generic/*.c
   15.52 -	src/timer/dummy/*.c
   15.53 -	src/loadso/dummy/*.c
   15.54 -
   15.55 -
   15.56 -Once you have a working library without any drivers, you can go back to each
   15.57 -of the major subsystems and start implementing drivers for your platform.
   15.58 -
   15.59 -If you have any questions, don't hesitate to ask on the SDL mailing list:
   15.60 -	http://www.libsdl.org/mailing-list.php
   15.61 -
   15.62 -Enjoy!
   15.63 -	Sam Lantinga				(slouken@libsdl.org)
   15.64 -
    16.1 --- a/README-psp.txt	Tue Jul 29 00:36:12 2014 -0300
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,17 +0,0 @@
    16.4 -SDL port for the Sony PSP contributed by 
    16.5 -   Captian Lex 
    16.6 -
    16.7 -Credit to
    16.8 -   Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
    16.9 -   Geecko for his PSP GU lib "Glib2d"
   16.10 -
   16.11 -Building
   16.12 ---------
   16.13 -To build for the PSP, make sure psp-config is in the path and run:
   16.14 -   make -f Makefile.psp
   16.15 -
   16.16 -
   16.17 -
   16.18 -To Do
   16.19 -------
   16.20 -PSP Screen Keyboard
    17.1 --- a/README-raspberrypi.txt	Tue Jul 29 00:36:12 2014 -0300
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,161 +0,0 @@
    17.4 -================================================================================
    17.5 -SDL2 for Raspberry Pi
    17.6 -================================================================================
    17.7 -
    17.8 -Requirements:
    17.9 -
   17.10 -Raspbian (other Linux distros may work as well).
   17.11 -
   17.12 -================================================================================
   17.13 - Features
   17.14 -================================================================================
   17.15 -
   17.16 -* Works without X11
   17.17 -* Hardware accelerated OpenGL ES 2.x
   17.18 -* Sound via ALSA
   17.19 -* Input (mouse/keyboard/joystick) via EVDEV
   17.20 -* Hotplugging of input devices via UDEV
   17.21 -
   17.22 -================================================================================
   17.23 - Raspbian Build Dependencies
   17.24 -================================================================================
   17.25 -
   17.26 -sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
   17.27 -
   17.28 -You also need the VideoCore binary stuff that ships in /opt/vc for EGL and 
   17.29 -OpenGL ES 2.x, it usually comes pre installed, but in any case:
   17.30 -    
   17.31 -sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
   17.32 -
   17.33 -================================================================================
   17.34 - Cross compiling from x86 Linux
   17.35 -================================================================================
   17.36 -
   17.37 -To cross compile SDL for Raspbian from your desktop machine, you'll need a
   17.38 -Raspbian system root and the cross compilation tools. We'll assume these tools
   17.39 -will be placed in /opt/rpi-tools
   17.40 -
   17.41 -    sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
   17.42 -
   17.43 -You'll also need a Rasbian binary image.
   17.44 -Get it from: http://downloads.raspberrypi.org/raspbian_latest 
   17.45 -After unzipping, you'll get file with a name like: <date>-wheezy-raspbian.img
   17.46 -Let's assume the sysroot will be built in /opt/rpi-sysroot.
   17.47 -
   17.48 -    export SYSROOT=/opt/rpi-sysroot
   17.49 -    sudo kpartx -a -v <path_to_raspbian_image>.img
   17.50 -    sudo mount -o loop /dev/mapper/loop0p2 /mnt
   17.51 -    sudo cp -r /mnt $SYSROOT
   17.52 -    sudo apt-get install qemu binfmt-support qemu-user-static
   17.53 -    sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
   17.54 -    sudo mount --bind /dev $SYSROOT/dev
   17.55 -    sudo mount --bind /proc $SYSROOT/proc
   17.56 -    sudo mount --bind /sys $SYSROOT/sys
   17.57 -
   17.58 -Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
   17.59 -edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
   17.60 -
   17.61 -    sudo chroot $SYSROOT
   17.62 -    apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev
   17.63 -    exit
   17.64 -    sudo umount $SYSROOT/dev
   17.65 -    sudo umount $SYSROOT/proc
   17.66 -    sudo umount $SYSROOT/sys
   17.67 -    sudo umount /mnt
   17.68 -    
   17.69 -There's one more fix required, as the libdl.so symlink uses an absolute path 
   17.70 -which doesn't quite work in our setup.
   17.71 -
   17.72 -    sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   17.73 -    sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   17.74 -
   17.75 -The final step is compiling SDL itself.
   17.76 -
   17.77 -    export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux"
   17.78 -    cd <SDL SOURCE>
   17.79 -    mkdir -p build;cd build
   17.80 -    ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
   17.81 -    make
   17.82 -    make install
   17.83 -
   17.84 -To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
   17.85 -    
   17.86 -    perl -w -pi -e "s#$PWD/rpi-sdl2-installed#/usr/local#g;" ./rpi-sdl2-installed/lib/libSDL2.la ./rpi-sdl2-installed/lib/pkgconfig/sdl2.pc ./rpi-sdl2-installed/bin/sdl2-config
   17.87 -    
   17.88 -================================================================================
   17.89 - Apps don't work or poor video/audio performance
   17.90 -================================================================================
   17.91 -
   17.92 -If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to 
   17.93 -update the RPi's firmware. Note that doing so will fix these problems, but it
   17.94 -will also render the CMA - Dynamic Memory Split functionality useless.
   17.95 -
   17.96 -Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
   17.97 -low in general, specially if a 1080p TV is hooked up.
   17.98 -
   17.99 -See here how to configure this setting: http://elinux.org/RPiconfig
  17.100 -
  17.101 -Using a fixed gpu_mem=128 is the best option (specially if you updated the 
  17.102 -firmware, using CMA probably won't work, at least it's the current case).
  17.103 -
  17.104 -================================================================================
  17.105 - No input
  17.106 -================================================================================
  17.107 -
  17.108 -Make sure you belong to the "input" group.
  17.109 -
  17.110 -    sudo usermod -aG input `whoami`
  17.111 -
  17.112 -================================================================================
  17.113 - No HDMI Audio
  17.114 -================================================================================
  17.115 -
  17.116 -If you notice that ALSA works but there's no audio over HDMI, try adding:
  17.117 -    
  17.118 -    hdmi_drive=2
  17.119 -    
  17.120 -to your config.txt file and reboot.
  17.121 -
  17.122 -Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
  17.123 -
  17.124 -================================================================================
  17.125 - Text Input API support
  17.126 -================================================================================
  17.127 -
  17.128 -The Text Input API is supported, with translation of scan codes done via the
  17.129 -kernel symbol tables. For this to work, SDL needs access to a valid console.
  17.130 -If you notice there's no SDL_TEXTINPUT message being emitted, double check that
  17.131 -your app has read access to one of the following:
  17.132 -    
  17.133 -* /proc/self/fd/0
  17.134 -* /dev/tty
  17.135 -* /dev/tty[0...6]
  17.136 -* /dev/vc/0
  17.137 -* /dev/console
  17.138 -
  17.139 -This is usually not a problem if you run from the physical terminal (as opposed
  17.140 -to running from a pseudo terminal, such as via SSH). If running from a PTS, a 
  17.141 -quick workaround is to run your app as root or add yourself to the tty group,
  17.142 -then re login to the system.
  17.143 -
  17.144 -   sudo usermod -aG tty `whoami`
  17.145 -    
  17.146 -The keyboard layout used by SDL is the same as the one the kernel uses.
  17.147 -To configure the layout on Raspbian:
  17.148 -    
  17.149 -    sudo dpkg-reconfigure keyboard-configuration
  17.150 -    
  17.151 -To configure the locale, which controls which keys are interpreted as letters,
  17.152 -this determining the CAPS LOCK behavior:
  17.153 -
  17.154 -    sudo dpkg-reconfigure locales
  17.155 -
  17.156 -================================================================================
  17.157 - Notes
  17.158 -================================================================================
  17.159 -
  17.160 -* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
  17.161 -  leaking into the console only if it has root privileges. Launching apps locally
  17.162 -  does not suffer from this issue.
  17.163 -  
  17.164 -
    18.1 --- a/README-touch.txt	Tue Jul 29 00:36:12 2014 -0300
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,84 +0,0 @@
    18.4 -===========================================================================
    18.5 -System Specific Notes
    18.6 -===========================================================================
    18.7 -Linux:
    18.8 -The linux touch system is currently based off event streams, and proc/bus/devices. The active user must be given permissions to read /dev/input/TOUCHDEVICE, where TOUCHDEVICE is the event stream for your device. Currently only Wacom tablets are supported. If you have an unsupported tablet contact me at jim.tla+sdl_touch@gmail.com and I will help you get support for it.
    18.9 -
   18.10 -Mac:
   18.11 -The Mac and iPhone APIs are pretty. If your touch device supports them then you'll be fine. If it doesn't, then there isn't much we can do.
   18.12 -
   18.13 -iPhone: 
   18.14 -Works out of box.
   18.15 -
   18.16 -Windows:
   18.17 -Unfortunately there is no windows support as of yet. Support for Windows 7 is planned, but we currently have no way to test. If you have a Windows 7 WM_TOUCH supported device, and are willing to help test please contact me at jim.tla+sdl_touch@gmail.com
   18.18 -
   18.19 -===========================================================================
   18.20 -Events
   18.21 -===========================================================================
   18.22 -SDL_FINGERDOWN:
   18.23 -Sent when a finger (or stylus) is placed on a touch device.
   18.24 -Fields:
   18.25 -event.tfinger.touchId  - the Id of the touch device.
   18.26 -event.tfinger.fingerId - the Id of the finger which just went down.
   18.27 -event.tfinger.x        - the x coordinate of the touch (0..1)
   18.28 -event.tfinger.y        - the y coordinate of the touch (0..1)
   18.29 -event.tfinger.pressure - the pressure of the touch (0..1)
   18.30 -
   18.31 -SDL_FINGERMOTION:
   18.32 -Sent when a finger (or stylus) is moved on the touch device.
   18.33 -Fields:
   18.34 -Same as SDL_FINGERDOWN but with additional:
   18.35 -event.tfinger.dx       - change in x coordinate during this motion event.
   18.36 -event.tfinger.dy       - change in y coordinate during this motion event.
   18.37 -
   18.38 -SDL_FINGERUP:
   18.39 -Sent when a finger (or stylus) is lifted from the touch device.
   18.40 -Fields:
   18.41 -Same as SDL_FINGERDOWN.
   18.42 -
   18.43 -
   18.44 -===========================================================================
   18.45 -Functions
   18.46 -===========================================================================
   18.47 -SDL provides the ability to access the underlying Finger structures.
   18.48 -These structures should _never_ be modified.
   18.49 -
   18.50 -The following functions are included from SDL_touch.h
   18.51 -
   18.52 -To get a SDL_TouchID call SDL_GetTouchDevice(index).
   18.53 -This returns a SDL_TouchID.
   18.54 -IMPORTANT: If the touch has been removed, or there is no touch with the given ID, SDL_GetTouchID will return 0. Be sure to check for this!
   18.55 -
   18.56 -The number of touch devices can be queried with SDL_GetNumTouchDevices().
   18.57 -
   18.58 -A SDL_TouchID may be used to get pointers to SDL_Finger.
   18.59 -
   18.60 -SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
   18.61 -
   18.62 -The most common reason to access SDL_Finger is to query the fingers outside the event. In most cases accessing the fingers is using the event. This would be accomplished by code like the following:
   18.63 -
   18.64 -      float x = event.tfinger.x;
   18.65 -      float y = event.tfinger.y;
   18.66 -
   18.67 -
   18.68 -
   18.69 -To get a SDL_Finger, call SDL_GetTouchFinger(touchID,index), where touchID is a SDL_TouchID, and index is the requested finger.
   18.70 -This returns a SDL_Finger*, or NULL if the finger does not exist, or has been removed.
   18.71 -A SDL_Finger is guaranteed to be persistent for the duration of a touch, but it will be de-allocated as soon as the finger is removed. This occurs when the SDL_FINGERUP event is _added_ to the event queue, and thus _before_ the SDL_FINGERUP event is polled.
   18.72 -As a result, be very careful to check for NULL return values.
   18.73 -
   18.74 -A SDL_Finger has the following fields:
   18.75 ->x,y,pressure:
   18.76 -	The current coordinates of the touch.
   18.77 ->pressure:
   18.78 -	The pressure of the touch.
   18.79 -
   18.80 -===========================================================================
   18.81 -Notes
   18.82 -===========================================================================
   18.83 -For a complete example see test/testgesture.c
   18.84 -
   18.85 -Please direct questions/comments to:
   18.86 -   jim.tla+sdl_touch@gmail.com
   18.87 -   (original author, API was changed since)
    19.1 --- a/README-wince.txt	Tue Jul 29 00:36:12 2014 -0300
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,8 +0,0 @@
    19.4 -
    19.5 -Windows CE is no longer supported by SDL.
    19.6 -
    19.7 -We have left the CE support in SDL 1.2 for those that must have it, and we
    19.8 -have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
    19.9 -
   19.10 ---ryan.
   19.11 -
    20.1 --- a/README-windows.txt	Tue Jul 29 00:36:12 2014 -0300
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,42 +0,0 @@
    20.4 -================================================================================
    20.5 -Simple DirectMedia Layer for Windows
    20.6 -================================================================================
    20.7 -
    20.8 -================================================================================
    20.9 -OpenGL ES 2.x support
   20.10 -================================================================================
   20.11 -
   20.12 -SDL has support for OpenGL ES 2.x under Windows via two alternative 
   20.13 -implementations. 
   20.14 -The most straightforward method consists in running your app in a system with 
   20.15 -a graphic card paired with a relatively recent (as of November of 2013) driver 
   20.16 -which supports the WGL_EXT_create_context_es2_profile extension. Vendors known 
   20.17 -to ship said extension on Windows currently include nVidia and Intel.
   20.18 -
   20.19 -The other method involves using the ANGLE library (https://code.google.com/p/angleproject/)
   20.20 -If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile
   20.21 -extension is found, SDL will try to load the libEGL.dll library provided by
   20.22 -ANGLE.
   20.23 -To obtain the ANGLE binaries, you can either compile from source from
   20.24 -https://chromium.googlesource.com/angle/angle or copy the relevant binaries from
   20.25 -a recent Chrome/Chromium install for Windows. The files you need are:
   20.26 -    
   20.27 -    * libEGL.dll
   20.28 -    * libGLESv2.dll
   20.29 -    * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler)
   20.30 -    or...
   20.31 -    * d3dcompiler_43.dll (supports Windows XP or later)
   20.32 -    
   20.33 -If you compile ANGLE from source, you can configure it so it does not need the
   20.34 -d3dcompiler_* DLL at all (for details on this, see their documentation). 
   20.35 -However, by default SDL will try to preload the d3dcompiler_46.dll to
   20.36 -comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to
   20.37 -support Windows XP) or to skip this step at all, you can use the 
   20.38 -SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details).
   20.39 -
   20.40 -Known Bugs:
   20.41 -    
   20.42 -    * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
   20.43 -      that there's a bug in the library which prevents the window contents from
   20.44 -      refreshing if this is set to anything other than the default value.
   20.45 -      
    21.1 --- a/README-winrt.txt	Tue Jul 29 00:36:12 2014 -0300
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,45 +0,0 @@
    21.4 -================================================================================
    21.5 -Simple DirectMedia Layer for WinRT
    21.6 -================================================================================
    21.7 -
    21.8 -SDL/WinRT layer allows SDL2-based applications to run on many of Microsoft's
    21.9 -platforms that utilize the "Windows Runtime" (aka "WinRT") APIs.  WinRT apps
   21.10 -are currently always full-screen apps, run in what Microsoft calls their
   21.11 -"Modern" environment (aka. "Metro"), and are distributed via Microsoft-run
   21.12 -online stores.  Some of the operating systems that support such apps include:
   21.13 -
   21.14 -* Windows 8.x
   21.15 -* Windows RT 8.x (aka. Windows 8.x for ARM processors)
   21.16 -* Windows Phone 8.x
   21.17 -
   21.18 -To note, WinRT applications that run on Windows 8.x and/or Windows RT are often
   21.19 -called "Windows Store" apps.
   21.20 -
   21.21 -
   21.22 ---------------------------------------------------------------------------------
   21.23 -Requirements
   21.24 ---------------------------------------------------------------------------------
   21.25 -- Microsoft Visual C++ 2012 -- Free, "Express" editions may be used, so long
   21.26 -  as they include support for either "Windows Store" or "Windows Phone" apps.
   21.27 -  (NOTE: MSVC 2013 support is pending.  2012 projects may be converted to 2013
   21.28 -  projects by MSVC, in the meantime.)
   21.29 -- A valid Microsoft account -- This requirement is not imposed by SDL, but
   21.30 -  rather by Microsoft's Visual C++ toolchain.
   21.31 -
   21.32 -
   21.33 ---------------------------------------------------------------------------------
   21.34 -TODO
   21.35 ---------------------------------------------------------------------------------
   21.36 -- Finish adding support for MSVC 2013, and "Universal" WinRT apps, which
   21.37 -  support Windows 8.1, Windows Phone 8.1, and in the future, Xbox One and
   21.38 -  Windows Desktop.
   21.39 -- Finish adding support for the SDL satellite libraries (SDL_image, SDL_mixer,
   21.40 -  SDL_ttf, etc.)
   21.41 -- Create templates for both MSVC 2012 and MSVC 2013, and have the corresponding
   21.42 -  VSIX packages either include pre-built copies of SDL, or reference binaries
   21.43 -  available via MSVC's NuGet servers
   21.44 -- Write setup instructions that use MSVC 201x templates
   21.45 -- Write setup instructions that don't use MSVC 201x templates, and use
   21.46 -  MSVC project-to-project references, rather than pre-built binaries
   21.47 -- Write a list of caveats found in SDL/WinRT, such as APIs that don't work due
   21.48 -  to platform restrictions, or things that need further work
    22.1 --- a/README.txt	Tue Jul 29 00:36:12 2014 -0300
    22.2 +++ b/README.txt	Thu Jul 31 03:14:10 2014 -0300
    22.3 @@ -14,29 +14,8 @@
    22.4  emulators, and popular games including Valve's award winning catalog
    22.5  and many Humble Bundle games.
    22.6  
    22.7 -SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
    22.8 -Support for other platforms may be found in the source code.
    22.9 -
   22.10 -SDL is written in C, works natively with C++, and there are bindings 
   22.11 -available for several other languages, including C# and Python.
   22.12 -
   22.13 -This library is distributed under the zlib license, which can be found
   22.14 -in the file "COPYING.txt".
   22.15 -
   22.16 -The best way to learn how to use SDL is to check out the header files in
   22.17 -the "include" subdirectory and the programs in the "test" subdirectory.
   22.18 -The header files and test programs are well commented and always up to date.
   22.19 -More documentation and FAQs are available online at:
   22.20 -	http://wiki.libsdl.org/
   22.21 -
   22.22 -If you need help with the library, or just want to discuss SDL related
   22.23 -issues, you can join the developers mailing list:
   22.24 -	http://www.libsdl.org/mailing-list.php
   22.25 -
   22.26 -If you want to report bugs or contribute patches, please submit them to
   22.27 -bugzilla:
   22.28 -    http://bugzilla.libsdl.org/
   22.29 +More extensive documentation is available in the docs directory, starting
   22.30 +with README.md
   22.31  
   22.32  Enjoy!
   22.33  	Sam Lantinga				(slouken@libsdl.org)
   22.34 -
    23.1 --- a/VisualC/SDL/SDL_VS2008.vcproj	Tue Jul 29 00:36:12 2014 -0300
    23.2 +++ b/VisualC/SDL/SDL_VS2008.vcproj	Thu Jul 31 03:14:10 2014 -0300
    23.3 @@ -61,6 +61,7 @@
    23.4  				Detect64BitPortabilityProblems="false"
    23.5  				DebugInformationFormat="4"
    23.6  				CompileAs="0"
    23.7 +				OmitDefaultLibName="true"
    23.8  			/>
    23.9  			<Tool
   23.10  				Name="VCManagedResourceCompilerTool"
   23.11 @@ -144,6 +145,7 @@
   23.12  				Detect64BitPortabilityProblems="false"
   23.13  				DebugInformationFormat="4"
   23.14  				CompileAs="0"
   23.15 +				OmitDefaultLibName="true"
   23.16  			/>
   23.17  			<Tool
   23.18  				Name="VCManagedResourceCompilerTool"
   23.19 @@ -232,6 +234,7 @@
   23.20  				Detect64BitPortabilityProblems="false"
   23.21  				DebugInformationFormat="3"
   23.22  				CompileAs="0"
   23.23 +				OmitDefaultLibName="true"
   23.24  			/>
   23.25  			<Tool
   23.26  				Name="VCManagedResourceCompilerTool"
   23.27 @@ -320,6 +323,7 @@
   23.28  				Detect64BitPortabilityProblems="false"
   23.29  				DebugInformationFormat="3"
   23.30  				CompileAs="0"
   23.31 +				OmitDefaultLibName="true"
   23.32  			/>
   23.33  			<Tool
   23.34  				Name="VCManagedResourceCompilerTool"
    24.1 --- a/VisualC/SDL/SDL_VS2010.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    24.2 +++ b/VisualC/SDL/SDL_VS2010.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    24.3 @@ -94,6 +94,7 @@
    24.4        <CompileAs>Default</CompileAs>
    24.5        <ExceptionHandling>false</ExceptionHandling>
    24.6        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
    24.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    24.8      </ClCompile>
    24.9      <ResourceCompile>
   24.10        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   24.11 @@ -127,6 +128,7 @@
   24.12        <WarningLevel>Level3</WarningLevel>
   24.13        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   24.14        <ExceptionHandling>false</ExceptionHandling>
   24.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   24.16      </ClCompile>
   24.17      <ResourceCompile>
   24.18        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   24.19 @@ -167,6 +169,7 @@
   24.20        <ExceptionHandling>false</ExceptionHandling>
   24.21        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   24.22        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
   24.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   24.24      </ClCompile>
   24.25      <ResourceCompile>
   24.26        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   24.27 @@ -203,6 +206,7 @@
   24.28        <WarningLevel>Level3</WarningLevel>
   24.29        <ExceptionHandling>false</ExceptionHandling>
   24.30        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   24.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   24.32      </ClCompile>
   24.33      <ResourceCompile>
   24.34        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   24.35 @@ -510,4 +514,4 @@
   24.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   24.37    <ImportGroup Label="ExtensionTargets">
   24.38    </ImportGroup>
   24.39 -</Project>
   24.40 +</Project>
   24.41 \ No newline at end of file
    25.1 --- a/VisualC/SDL/SDL_VS2012.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    25.2 +++ b/VisualC/SDL/SDL_VS2012.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    25.3 @@ -98,6 +98,7 @@
    25.4        <CompileAs>Default</CompileAs>
    25.5        <ExceptionHandling>false</ExceptionHandling>
    25.6        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
    25.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    25.8      </ClCompile>
    25.9      <ResourceCompile>
   25.10        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   25.11 @@ -131,6 +132,7 @@
   25.12        <WarningLevel>Level3</WarningLevel>
   25.13        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   25.14        <ExceptionHandling>false</ExceptionHandling>
   25.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   25.16      </ClCompile>
   25.17      <ResourceCompile>
   25.18        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   25.19 @@ -171,6 +173,7 @@
   25.20        <ExceptionHandling>false</ExceptionHandling>
   25.21        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   25.22        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
   25.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   25.24      </ClCompile>
   25.25      <ResourceCompile>
   25.26        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   25.27 @@ -207,6 +210,7 @@
   25.28        <WarningLevel>Level3</WarningLevel>
   25.29        <ExceptionHandling>false</ExceptionHandling>
   25.30        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   25.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   25.32      </ClCompile>
   25.33      <ResourceCompile>
   25.34        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   25.35 @@ -514,4 +518,4 @@
   25.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   25.37    <ImportGroup Label="ExtensionTargets">
   25.38    </ImportGroup>
   25.39 -</Project>
   25.40 +</Project>
   25.41 \ No newline at end of file
    26.1 --- a/VisualC/SDL/SDL_VS2013.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    26.2 +++ b/VisualC/SDL/SDL_VS2013.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    26.3 @@ -98,6 +98,7 @@
    26.4        <CompileAs>Default</CompileAs>
    26.5        <ExceptionHandling>false</ExceptionHandling>
    26.6        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
    26.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    26.8      </ClCompile>
    26.9      <ResourceCompile>
   26.10        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   26.11 @@ -131,6 +132,7 @@
   26.12        <WarningLevel>Level3</WarningLevel>
   26.13        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   26.14        <ExceptionHandling>false</ExceptionHandling>
   26.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   26.16      </ClCompile>
   26.17      <ResourceCompile>
   26.18        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   26.19 @@ -171,6 +173,7 @@
   26.20        <ExceptionHandling>false</ExceptionHandling>
   26.21        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   26.22        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
   26.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   26.24      </ClCompile>
   26.25      <ResourceCompile>
   26.26        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   26.27 @@ -207,6 +210,7 @@
   26.28        <WarningLevel>Level3</WarningLevel>
   26.29        <ExceptionHandling>false</ExceptionHandling>
   26.30        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   26.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   26.32      </ClCompile>
   26.33      <ResourceCompile>
   26.34        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    27.1 --- a/VisualC/SDLmain/SDLmain_VS2008.vcproj	Tue Jul 29 00:36:12 2014 -0300
    27.2 +++ b/VisualC/SDLmain/SDLmain_VS2008.vcproj	Thu Jul 31 03:14:10 2014 -0300
    27.3 @@ -56,6 +56,7 @@
    27.4  				SuppressStartupBanner="true"
    27.5  				DebugInformationFormat="1"
    27.6  				CompileAs="0"
    27.7 +				OmitDefaultLibName="true"
    27.8  			/>
    27.9  			<Tool
   27.10  				Name="VCManagedResourceCompilerTool"
   27.11 @@ -123,6 +124,7 @@
   27.12  				SuppressStartupBanner="true"
   27.13  				DebugInformationFormat="1"
   27.14  				CompileAs="0"
   27.15 +				OmitDefaultLibName="true"
   27.16  			/>
   27.17  			<Tool
   27.18  				Name="VCManagedResourceCompilerTool"
   27.19 @@ -316,6 +318,7 @@
   27.20  				SuppressStartupBanner="true"
   27.21  				DebugInformationFormat="1"
   27.22  				CompileAs="0"
   27.23 +				OmitDefaultLibName="true"
   27.24  			/>
   27.25  			<Tool
   27.26  				Name="VCManagedResourceCompilerTool"
   27.27 @@ -381,6 +384,7 @@
   27.28  				SuppressStartupBanner="true"
   27.29  				DebugInformationFormat="1"
   27.30  				CompileAs="0"
   27.31 +				OmitDefaultLibName="true"
   27.32  			/>
   27.33  			<Tool
   27.34  				Name="VCManagedResourceCompilerTool"
    28.1 --- a/VisualC/SDLmain/SDLmain_VS2010.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    28.2 +++ b/VisualC/SDLmain/SDLmain_VS2010.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    28.3 @@ -1,164 +1,168 @@
    28.4 -<?xml version="1.0" encoding="utf-8"?>
    28.5 -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    28.6 -  <ItemGroup Label="ProjectConfigurations">
    28.7 -    <ProjectConfiguration Include="Debug|Win32">
    28.8 -      <Configuration>Debug</Configuration>
    28.9 -      <Platform>Win32</Platform>
   28.10 -    </ProjectConfiguration>
   28.11 -    <ProjectConfiguration Include="Debug|x64">
   28.12 -      <Configuration>Debug</Configuration>
   28.13 -      <Platform>x64</Platform>
   28.14 -    </ProjectConfiguration>
   28.15 -    <ProjectConfiguration Include="Release|Win32">
   28.16 -      <Configuration>Release</Configuration>
   28.17 -      <Platform>Win32</Platform>
   28.18 -    </ProjectConfiguration>
   28.19 -    <ProjectConfiguration Include="Release|x64">
   28.20 -      <Configuration>Release</Configuration>
   28.21 -      <Platform>x64</Platform>
   28.22 -    </ProjectConfiguration>
   28.23 -  </ItemGroup>
   28.24 -  <PropertyGroup Label="Globals">
   28.25 -    <ProjectName>SDL2main</ProjectName>
   28.26 -    <ProjectGuid>{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}</ProjectGuid>
   28.27 -  </PropertyGroup>
   28.28 -  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   28.29 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   28.30 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   28.31 -    <UseOfMfc>false</UseOfMfc>
   28.32 -  </PropertyGroup>
   28.33 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
   28.34 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   28.35 -    <UseOfMfc>false</UseOfMfc>
   28.36 -  </PropertyGroup>
   28.37 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
   28.38 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   28.39 -    <UseOfMfc>false</UseOfMfc>
   28.40 -    <CharacterSet>MultiByte</CharacterSet>
   28.41 -  </PropertyGroup>
   28.42 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
   28.43 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   28.44 -    <UseOfMfc>false</UseOfMfc>
   28.45 -  </PropertyGroup>
   28.46 -  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   28.47 -  <ImportGroup Label="ExtensionSettings">
   28.48 -  </ImportGroup>
   28.49 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
   28.50 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   28.51 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   28.52 -  </ImportGroup>
   28.53 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
   28.54 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   28.55 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   28.56 -  </ImportGroup>
   28.57 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
   28.58 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   28.59 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   28.60 -  </ImportGroup>
   28.61 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
   28.62 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   28.63 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   28.64 -  </ImportGroup>
   28.65 -  <PropertyGroup Label="UserMacros" />
   28.66 -  <PropertyGroup>
   28.67 -    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
   28.68 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   28.69 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
   28.70 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   28.71 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
   28.72 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   28.73 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
   28.74 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   28.75 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
   28.76 -  </PropertyGroup>
   28.77 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   28.78 -    <PreBuildEvent />
   28.79 -    <ClCompile>
   28.80 -      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
   28.81 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
   28.82 -      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   28.83 -      <StringPooling>true</StringPooling>
   28.84 -      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
   28.85 -      <FunctionLevelLinking>true</FunctionLevelLinking>
   28.86 -      <PrecompiledHeader>
   28.87 -      </PrecompiledHeader>
   28.88 -      <WarningLevel>Level3</WarningLevel>
   28.89 -      <SuppressStartupBanner>true</SuppressStartupBanner>
   28.90 -      <CompileAs>Default</CompileAs>
   28.91 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
   28.92 -      <ExceptionHandling>false</ExceptionHandling>
   28.93 -    </ClCompile>
   28.94 -    <Lib>
   28.95 -      <SuppressStartupBanner>true</SuppressStartupBanner>
   28.96 -    </Lib>
   28.97 -  </ItemDefinitionGroup>
   28.98 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
   28.99 -    <Midl>
  28.100 -      <TargetEnvironment>X64</TargetEnvironment>
  28.101 -    </Midl>
  28.102 -    <ClCompile>
  28.103 -      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
  28.104 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.105 -      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.106 -      <StringPooling>true</StringPooling>
  28.107 -      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  28.108 -      <FunctionLevelLinking>true</FunctionLevelLinking>
  28.109 -      <PrecompiledHeader>
  28.110 -      </PrecompiledHeader>
  28.111 -      <WarningLevel>Level3</WarningLevel>
  28.112 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.113 -      <CompileAs>Default</CompileAs>
  28.114 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.115 -      <ExceptionHandling>false</ExceptionHandling>
  28.116 -    </ClCompile>
  28.117 -    <Lib>
  28.118 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.119 -    </Lib>
  28.120 -  </ItemDefinitionGroup>
  28.121 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  28.122 -    <PreBuildEvent />
  28.123 -    <ClCompile>
  28.124 -      <Optimization>Disabled</Optimization>
  28.125 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.126 -      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.127 -      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  28.128 -      <PrecompiledHeader>
  28.129 -      </PrecompiledHeader>
  28.130 -      <WarningLevel>Level3</WarningLevel>
  28.131 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.132 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.133 -      <CompileAs>Default</CompileAs>
  28.134 -      <ExceptionHandling>false</ExceptionHandling>
  28.135 -    </ClCompile>
  28.136 -    <Lib>
  28.137 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.138 -    </Lib>
  28.139 -  </ItemDefinitionGroup>
  28.140 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  28.141 -    <Midl>
  28.142 -      <TargetEnvironment>X64</TargetEnvironment>
  28.143 -    </Midl>
  28.144 -    <ClCompile>
  28.145 -      <Optimization>Disabled</Optimization>
  28.146 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.147 -      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.148 -      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  28.149 -      <PrecompiledHeader>
  28.150 -      </PrecompiledHeader>
  28.151 -      <WarningLevel>Level3</WarningLevel>
  28.152 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.153 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.154 -      <CompileAs>Default</CompileAs>
  28.155 -      <ExceptionHandling>false</ExceptionHandling>
  28.156 -    </ClCompile>
  28.157 -    <Lib>
  28.158 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.159 -    </Lib>
  28.160 -  </ItemDefinitionGroup>
  28.161 -  <ItemGroup>
  28.162 -    <ClCompile Include="..\..\src\main\windows\SDL_windows_main.c" />
  28.163 -  </ItemGroup>
  28.164 -  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  28.165 -  <ImportGroup Label="ExtensionTargets">
  28.166 -  </ImportGroup>
  28.167 +<?xml version="1.0" encoding="utf-8"?>
  28.168 +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  28.169 +  <ItemGroup Label="ProjectConfigurations">
  28.170 +    <ProjectConfiguration Include="Debug|Win32">
  28.171 +      <Configuration>Debug</Configuration>
  28.172 +      <Platform>Win32</Platform>
  28.173 +    </ProjectConfiguration>
  28.174 +    <ProjectConfiguration Include="Debug|x64">
  28.175 +      <Configuration>Debug</Configuration>
  28.176 +      <Platform>x64</Platform>
  28.177 +    </ProjectConfiguration>
  28.178 +    <ProjectConfiguration Include="Release|Win32">
  28.179 +      <Configuration>Release</Configuration>
  28.180 +      <Platform>Win32</Platform>
  28.181 +    </ProjectConfiguration>
  28.182 +    <ProjectConfiguration Include="Release|x64">
  28.183 +      <Configuration>Release</Configuration>
  28.184 +      <Platform>x64</Platform>
  28.185 +    </ProjectConfiguration>
  28.186 +  </ItemGroup>
  28.187 +  <PropertyGroup Label="Globals">
  28.188 +    <ProjectName>SDL2main</ProjectName>
  28.189 +    <ProjectGuid>{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}</ProjectGuid>
  28.190 +  </PropertyGroup>
  28.191 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  28.192 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
  28.193 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  28.194 +    <UseOfMfc>false</UseOfMfc>
  28.195 +  </PropertyGroup>
  28.196 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
  28.197 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  28.198 +    <UseOfMfc>false</UseOfMfc>
  28.199 +  </PropertyGroup>
  28.200 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
  28.201 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  28.202 +    <UseOfMfc>false</UseOfMfc>
  28.203 +    <CharacterSet>MultiByte</CharacterSet>
  28.204 +  </PropertyGroup>
  28.205 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  28.206 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  28.207 +    <UseOfMfc>false</UseOfMfc>
  28.208 +  </PropertyGroup>
  28.209 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  28.210 +  <ImportGroup Label="ExtensionSettings">
  28.211 +  </ImportGroup>
  28.212 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
  28.213 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  28.214 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  28.215 +  </ImportGroup>
  28.216 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
  28.217 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  28.218 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  28.219 +  </ImportGroup>
  28.220 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
  28.221 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  28.222 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  28.223 +  </ImportGroup>
  28.224 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
  28.225 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  28.226 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  28.227 +  </ImportGroup>
  28.228 +  <PropertyGroup Label="UserMacros" />
  28.229 +  <PropertyGroup>
  28.230 +    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
  28.231 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  28.232 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
  28.233 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  28.234 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
  28.235 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  28.236 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
  28.237 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  28.238 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
  28.239 +  </PropertyGroup>
  28.240 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
  28.241 +    <PreBuildEvent />
  28.242 +    <ClCompile>
  28.243 +      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
  28.244 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.245 +      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.246 +      <StringPooling>true</StringPooling>
  28.247 +      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  28.248 +      <FunctionLevelLinking>true</FunctionLevelLinking>
  28.249 +      <PrecompiledHeader>
  28.250 +      </PrecompiledHeader>
  28.251 +      <WarningLevel>Level3</WarningLevel>
  28.252 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.253 +      <CompileAs>Default</CompileAs>
  28.254 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.255 +      <ExceptionHandling>false</ExceptionHandling>
  28.256 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  28.257 +    </ClCompile>
  28.258 +    <Lib>
  28.259 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.260 +    </Lib>
  28.261 +  </ItemDefinitionGroup>
  28.262 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  28.263 +    <Midl>
  28.264 +      <TargetEnvironment>X64</TargetEnvironment>
  28.265 +    </Midl>
  28.266 +    <ClCompile>
  28.267 +      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
  28.268 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.269 +      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.270 +      <StringPooling>true</StringPooling>
  28.271 +      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  28.272 +      <FunctionLevelLinking>true</FunctionLevelLinking>
  28.273 +      <PrecompiledHeader>
  28.274 +      </PrecompiledHeader>
  28.275 +      <WarningLevel>Level3</WarningLevel>
  28.276 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.277 +      <CompileAs>Default</CompileAs>
  28.278 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.279 +      <ExceptionHandling>false</ExceptionHandling>
  28.280 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  28.281 +    </ClCompile>
  28.282 +    <Lib>
  28.283 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.284 +    </Lib>
  28.285 +  </ItemDefinitionGroup>
  28.286 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  28.287 +    <PreBuildEvent />
  28.288 +    <ClCompile>
  28.289 +      <Optimization>Disabled</Optimization>
  28.290 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.291 +      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.292 +      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  28.293 +      <PrecompiledHeader>
  28.294 +      </PrecompiledHeader>
  28.295 +      <WarningLevel>Level3</WarningLevel>
  28.296 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.297 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.298 +      <CompileAs>Default</CompileAs>
  28.299 +      <ExceptionHandling>false</ExceptionHandling>
  28.300 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  28.301 +    </ClCompile>
  28.302 +    <Lib>
  28.303 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.304 +    </Lib>
  28.305 +  </ItemDefinitionGroup>
  28.306 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  28.307 +    <Midl>
  28.308 +      <TargetEnvironment>X64</TargetEnvironment>
  28.309 +    </Midl>
  28.310 +    <ClCompile>
  28.311 +      <Optimization>Disabled</Optimization>
  28.312 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  28.313 +      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  28.314 +      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  28.315 +      <PrecompiledHeader>
  28.316 +      </PrecompiledHeader>
  28.317 +      <WarningLevel>Level3</WarningLevel>
  28.318 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.319 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  28.320 +      <CompileAs>Default</CompileAs>
  28.321 +      <ExceptionHandling>false</ExceptionHandling>
  28.322 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  28.323 +    </ClCompile>
  28.324 +    <Lib>
  28.325 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  28.326 +    </Lib>
  28.327 +  </ItemDefinitionGroup>
  28.328 +  <ItemGroup>
  28.329 +    <ClCompile Include="..\..\src\main\windows\SDL_windows_main.c" />
  28.330 +  </ItemGroup>
  28.331 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  28.332 +  <ImportGroup Label="ExtensionTargets">
  28.333 +  </ImportGroup>
  28.334  </Project>
  28.335 \ No newline at end of file
    29.1 --- a/VisualC/SDLmain/SDLmain_VS2012.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    29.2 +++ b/VisualC/SDLmain/SDLmain_VS2012.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    29.3 @@ -91,6 +91,7 @@
    29.4        <CompileAs>Default</CompileAs>
    29.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    29.6        <ExceptionHandling>false</ExceptionHandling>
    29.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    29.8      </ClCompile>
    29.9      <Lib>
   29.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   29.11 @@ -114,6 +115,7 @@
   29.12        <CompileAs>Default</CompileAs>
   29.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   29.14        <ExceptionHandling>false</ExceptionHandling>
   29.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   29.16      </ClCompile>
   29.17      <Lib>
   29.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   29.19 @@ -133,6 +135,7 @@
   29.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   29.21        <CompileAs>Default</CompileAs>
   29.22        <ExceptionHandling>false</ExceptionHandling>
   29.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   29.24      </ClCompile>
   29.25      <Lib>
   29.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   29.27 @@ -154,6 +157,7 @@
   29.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   29.29        <CompileAs>Default</CompileAs>
   29.30        <ExceptionHandling>false</ExceptionHandling>
   29.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   29.32      </ClCompile>
   29.33      <Lib>
   29.34        <SuppressStartupBanner>true</SuppressStartupBanner>
   29.35 @@ -165,4 +169,4 @@
   29.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   29.37    <ImportGroup Label="ExtensionTargets">
   29.38    </ImportGroup>
   29.39 -</Project>
   29.40 +</Project>
   29.41 \ No newline at end of file
    30.1 --- a/VisualC/SDLmain/SDLmain_VS2013.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    30.2 +++ b/VisualC/SDLmain/SDLmain_VS2013.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    30.3 @@ -91,6 +91,7 @@
    30.4        <CompileAs>Default</CompileAs>
    30.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    30.6        <ExceptionHandling>false</ExceptionHandling>
    30.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    30.8      </ClCompile>
    30.9      <Lib>
   30.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   30.11 @@ -114,6 +115,7 @@
   30.12        <CompileAs>Default</CompileAs>
   30.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   30.14        <ExceptionHandling>false</ExceptionHandling>
   30.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   30.16      </ClCompile>
   30.17      <Lib>
   30.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   30.19 @@ -133,6 +135,7 @@
   30.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   30.21        <CompileAs>Default</CompileAs>
   30.22        <ExceptionHandling>false</ExceptionHandling>
   30.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   30.24      </ClCompile>
   30.25      <Lib>
   30.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   30.27 @@ -154,6 +157,7 @@
   30.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   30.29        <CompileAs>Default</CompileAs>
   30.30        <ExceptionHandling>false</ExceptionHandling>
   30.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   30.32      </ClCompile>
   30.33      <Lib>
   30.34        <SuppressStartupBanner>true</SuppressStartupBanner>
    31.1 --- a/VisualC/SDLtest/SDLtest_VS2008.vcproj	Tue Jul 29 00:36:12 2014 -0300
    31.2 +++ b/VisualC/SDLtest/SDLtest_VS2008.vcproj	Thu Jul 31 03:14:10 2014 -0300
    31.3 @@ -56,6 +56,7 @@
    31.4  				SuppressStartupBanner="true"
    31.5  				DebugInformationFormat="1"
    31.6  				CompileAs="0"
    31.7 +				OmitDefaultLibName="true"
    31.8  			/>
    31.9  			<Tool
   31.10  				Name="VCManagedResourceCompilerTool"
   31.11 @@ -123,6 +124,7 @@
   31.12  				SuppressStartupBanner="true"
   31.13  				DebugInformationFormat="1"
   31.14  				CompileAs="0"
   31.15 +				OmitDefaultLibName="true"
   31.16  			/>
   31.17  			<Tool
   31.18  				Name="VCManagedResourceCompilerTool"
   31.19 @@ -316,6 +318,7 @@
   31.20  				SuppressStartupBanner="true"
   31.21  				DebugInformationFormat="1"
   31.22  				CompileAs="0"
   31.23 +				OmitDefaultLibName="true"
   31.24  			/>
   31.25  			<Tool
   31.26  				Name="VCManagedResourceCompilerTool"
   31.27 @@ -381,6 +384,7 @@
   31.28  				SuppressStartupBanner="true"
   31.29  				DebugInformationFormat="1"
   31.30  				CompileAs="0"
   31.31 +				OmitDefaultLibName="true"
   31.32  			/>
   31.33  			<Tool
   31.34  				Name="VCManagedResourceCompilerTool"
    32.1 --- a/VisualC/SDLtest/SDLtest_VS2010.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    32.2 +++ b/VisualC/SDLtest/SDLtest_VS2010.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    32.3 @@ -87,6 +87,7 @@
    32.4        <CompileAs>Default</CompileAs>
    32.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    32.6        <ExceptionHandling>false</ExceptionHandling>
    32.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    32.8      </ClCompile>
    32.9      <Lib>
   32.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   32.11 @@ -110,6 +111,7 @@
   32.12        <CompileAs>Default</CompileAs>
   32.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   32.14        <ExceptionHandling>false</ExceptionHandling>
   32.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   32.16      </ClCompile>
   32.17      <Lib>
   32.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   32.19 @@ -129,6 +131,7 @@
   32.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   32.21        <CompileAs>Default</CompileAs>
   32.22        <ExceptionHandling>false</ExceptionHandling>
   32.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   32.24      </ClCompile>
   32.25      <Lib>
   32.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   32.27 @@ -150,6 +153,7 @@
   32.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   32.29        <CompileAs>Default</CompileAs>
   32.30        <ExceptionHandling>false</ExceptionHandling>
   32.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   32.32      </ClCompile>
   32.33      <Lib>
   32.34        <SuppressStartupBanner>true</SuppressStartupBanner>
   32.35 @@ -189,4 +193,4 @@
   32.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   32.37    <ImportGroup Label="ExtensionTargets">
   32.38    </ImportGroup>
   32.39 -</Project>
   32.40 +</Project>
   32.41 \ No newline at end of file
    33.1 --- a/VisualC/SDLtest/SDLtest_VS2012.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    33.2 +++ b/VisualC/SDLtest/SDLtest_VS2012.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    33.3 @@ -91,6 +91,7 @@
    33.4        <CompileAs>Default</CompileAs>
    33.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    33.6        <ExceptionHandling>false</ExceptionHandling>
    33.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    33.8      </ClCompile>
    33.9      <Lib>
   33.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   33.11 @@ -114,6 +115,7 @@
   33.12        <CompileAs>Default</CompileAs>
   33.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   33.14        <ExceptionHandling>false</ExceptionHandling>
   33.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   33.16      </ClCompile>
   33.17      <Lib>
   33.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   33.19 @@ -133,6 +135,7 @@
   33.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   33.21        <CompileAs>Default</CompileAs>
   33.22        <ExceptionHandling>false</ExceptionHandling>
   33.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   33.24      </ClCompile>
   33.25      <Lib>
   33.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   33.27 @@ -154,6 +157,7 @@
   33.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   33.29        <CompileAs>Default</CompileAs>
   33.30        <ExceptionHandling>false</ExceptionHandling>
   33.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   33.32      </ClCompile>
   33.33      <Lib>
   33.34        <SuppressStartupBanner>true</SuppressStartupBanner>
   33.35 @@ -193,4 +197,4 @@
   33.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   33.37    <ImportGroup Label="ExtensionTargets">
   33.38    </ImportGroup>
   33.39 -</Project>
   33.40 +</Project>
   33.41 \ No newline at end of file
    34.1 --- a/VisualC/SDLtest/SDLtest_VS2013.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    34.2 +++ b/VisualC/SDLtest/SDLtest_VS2013.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    34.3 @@ -91,6 +91,7 @@
    34.4        <CompileAs>Default</CompileAs>
    34.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    34.6        <ExceptionHandling>false</ExceptionHandling>
    34.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    34.8      </ClCompile>
    34.9      <Lib>
   34.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   34.11 @@ -114,6 +115,7 @@
   34.12        <CompileAs>Default</CompileAs>
   34.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   34.14        <ExceptionHandling>false</ExceptionHandling>
   34.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   34.16      </ClCompile>
   34.17      <Lib>
   34.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   34.19 @@ -133,6 +135,7 @@
   34.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   34.21        <CompileAs>Default</CompileAs>
   34.22        <ExceptionHandling>false</ExceptionHandling>
   34.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   34.24      </ClCompile>
   34.25      <Lib>
   34.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   34.27 @@ -154,6 +157,7 @@
   34.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   34.29        <CompileAs>Default</CompileAs>
   34.30        <ExceptionHandling>false</ExceptionHandling>
   34.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   34.32      </ClCompile>
   34.33      <Lib>
   34.34        <SuppressStartupBanner>true</SuppressStartupBanner>
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/docs/README-android.md	Thu Jul 31 03:14:10 2014 -0300
    35.3 @@ -0,0 +1,437 @@
    35.4 +Android
    35.5 +================================================================================
    35.6 +
    35.7 +Requirements:
    35.8 +
    35.9 +Android SDK (version 12 or later)
   35.10 +http://developer.android.com/sdk/index.html
   35.11 +
   35.12 +Android NDK r7 or later
   35.13 +http://developer.android.com/tools/sdk/ndk/index.html
   35.14 +
   35.15 +Minimum API level supported by SDL: 10 (Android 2.3.3)
   35.16 +Joystick support is available for API level >=12 devices.
   35.17 +
   35.18 +================================================================================
   35.19 + How the port works
   35.20 +================================================================================
   35.21 +
   35.22 +- Android applications are Java-based, optionally with parts written in C
   35.23 +- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to 
   35.24 +the SDL library
   35.25 +- This means that your application C code must be placed inside an Android 
   35.26 +Java project, along with some C support code that communicates with Java
   35.27 +- This eventually produces a standard Android .apk package
   35.28 +
   35.29 +The Android Java code implements an "Activity" and can be found in:
   35.30 +android-project/src/org/libsdl/app/SDLActivity.java
   35.31 +
   35.32 +The Java code loads your game code, the SDL shared library, and
   35.33 +dispatches to native functions implemented in the SDL library:
   35.34 +src/core/android/SDL_android.c
   35.35 +
   35.36 +Your project must include some glue code that starts your main() routine:
   35.37 +src/main/android/SDL_android_main.c
   35.38 +
   35.39 +
   35.40 +================================================================================
   35.41 + Building an app
   35.42 +================================================================================
   35.43 +
   35.44 +For simple projects you can use the script located at build-scripts/androidbuild.sh
   35.45 +
   35.46 +There's two ways of using it:
   35.47 +
   35.48 +androidbuild.sh com.yourcompany.yourapp < sources.list
   35.49 +androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
   35.50 +
   35.51 +sources.list should be a text file with a source file name in each line
   35.52 +Filenames should be specified relative to the current directory, for example if
   35.53 +you are in the build-scripts directory and want to create the testgles.c test, you'll
   35.54 +run:
   35.55 +    
   35.56 +./androidbuild.sh org.libsdl.testgles ../test/testgles.c
   35.57 +
   35.58 +One limitation of this script is that all sources provided will be aggregated into
   35.59 +a single directory, thus all your source files should have a unique name.
   35.60 +
   35.61 +Once the project is complete the script will tell you where the debug APK is located.
   35.62 +If you want to create a signed release APK, you can use the project created by this
   35.63 +utility to generate it.
   35.64 +
   35.65 +Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
   35.66 +done in the build directory for the app!
   35.67 +
   35.68 +
   35.69 +For more complex projects, follow these instructions:
   35.70 +    
   35.71 +1. Copy the android-project directory wherever you want to keep your projects
   35.72 +   and rename it to the name of your project.
   35.73 +2. Move or symlink this SDL directory into the <project>/jni directory
   35.74 +3. Edit <project>/jni/src/Android.mk to include your source files
   35.75 +4. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
   35.76 +
   35.77 +If you want to use the Eclipse IDE, skip to the Eclipse section below.
   35.78 +
   35.79 +5. Create <project>/local.properties and use that to point to the Android SDK directory, by writing a line with the following form:
   35.80 +sdk.dir=PATH_TO_ANDROID_SDK
   35.81 +6. Run 'ant debug' in android/project. This compiles the .java and eventually 
   35.82 +   creates a .apk with the native code embedded
   35.83 +7. 'ant debug install' will push the apk to the device or emulator (if connected)
   35.84 +
   35.85 +Here's an explanation of the files in the Android project, so you can customize them:
   35.86 +
   35.87 +android-project/
   35.88 +	AndroidManifest.xml	- package manifest. Among others, it contains the class name
   35.89 +				  of the main Activity and the package name of the application.
   35.90 +	build.properties	- empty
   35.91 +	build.xml		- build description file, used by ant. The actual application name
   35.92 +				  is specified here.
   35.93 +	default.properties	- holds the target ABI for the application, android-10 and up
   35.94 +	project.properties	- holds the target ABI for the application, android-10 and up
   35.95 +	local.properties	- holds the SDK path, you should change this to the path to your SDK
   35.96 +	jni/			- directory holding native code
   35.97 +	jni/Android.mk		- Android makefile that can call recursively the Android.mk files
   35.98 +				  in all subdirectories
   35.99 +	jni/SDL/		- (symlink to) directory holding the SDL library files
  35.100 +	jni/SDL/Android.mk	- Android makefile for creating the SDL shared library
  35.101 +	jni/src/		- directory holding your C/C++ source
  35.102 +	jni/src/Android.mk	- Android makefile that you should customize to include your 
  35.103 +                                  source code and any library references
  35.104 +	res/			- directory holding resources for your application
  35.105 +	res/drawable-*		- directories holding icons for different phone hardware. Could be
  35.106 +				  one dir called "drawable".
  35.107 +	res/layout/main.xml	- Usually contains a file main.xml, which declares the screen layout.
  35.108 +				  We don't need it because we use the SDL video output.
  35.109 +	res/values/strings.xml	- strings used in your application, including the application name
  35.110 +				  shown on the phone.
  35.111 +	src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding
  35.112 +				  to SDL.  Be very careful changing this, as the SDL library relies
  35.113 +				  on this implementation.
  35.114 +
  35.115 +
  35.116 +================================================================================
  35.117 + Build an app with static linking of libSDL
  35.118 +================================================================================
  35.119 +
  35.120 +This build uses the Android NDK module system.
  35.121 +
  35.122 +Instructions:
  35.123 +1. Copy the android-project directory wherever you want to keep your projects
  35.124 +   and rename it to the name of your project.
  35.125 +2. Rename <project>/jni/src/Android_static.mk to <project>/jni/src/Android.mk
  35.126 +   (overwrite the existing one)
  35.127 +3. Edit <project>/jni/src/Android.mk to include your source files
  35.128 +4. create and export an environment variable named NDK_MODULE_PATH that points
  35.129 +   to the parent directory of this SDL directory. e.g.:
  35.130 +
  35.131 +   export NDK_MODULE_PATH="$PWD"/..
  35.132 +
  35.133 +5. Edit <project>/src/org/libsdl/app/SDLActivity.java and remove the call to
  35.134 +   System.loadLibrary("SDL2") line 42.
  35.135 +6. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
  35.136 +
  35.137 +
  35.138 +================================================================================
  35.139 + Customizing your application name
  35.140 +================================================================================
  35.141 +
  35.142 +To customize your application name, edit AndroidManifest.xml and replace
  35.143 +"org.libsdl.app" with an identifier for your product package.
  35.144 +
  35.145 +Then create a Java class extending SDLActivity and place it in a directory
  35.146 +under src matching your package, e.g.
  35.147 +	src/com/gamemaker/game/MyGame.java
  35.148 +
  35.149 +Here's an example of a minimal class file:
  35.150 +--- MyGame.java --------------------------
  35.151 +package com.gamemaker.game;
  35.152 +
  35.153 +import org.libsdl.app.SDLActivity; 
  35.154 +
  35.155 +/* 
  35.156 + * A sample wrapper class that just calls SDLActivity 
  35.157 + */ 
  35.158 +
  35.159 +public class MyGame extends SDLActivity { }
  35.160 +
  35.161 +------------------------------------------
  35.162 +
  35.163 +Then replace "SDLActivity" in AndroidManifest.xml with the name of your
  35.164 +class, .e.g. "MyGame"
  35.165 +
  35.166 +================================================================================
  35.167 + Customizing your application icon
  35.168 +================================================================================
  35.169 +
  35.170 +Conceptually changing your icon is just replacing the "ic_launcher.png" files in
  35.171 +the drawable directories under the res directory. There are four directories for
  35.172 +different screen sizes. These can be replaced with one dir called "drawable",
  35.173 +containing an icon file "ic_launcher.png" with dimensions 48x48 or 72x72.
  35.174 +
  35.175 +You may need to change the name of your icon in AndroidManifest.xml to match
  35.176 +this icon filename.
  35.177 +
  35.178 +================================================================================
  35.179 + Loading assets
  35.180 +================================================================================
  35.181 +
  35.182 +Any files you put in the "assets" directory of your android-project directory
  35.183 +will get bundled into the application package and you can load them using the
  35.184 +standard functions in SDL_rwops.h.
  35.185 +
  35.186 +There are also a few Android specific functions that allow you to get other
  35.187 +useful paths for saving and loading data:
  35.188 +SDL_AndroidGetInternalStoragePath()
  35.189 +SDL_AndroidGetExternalStorageState()
  35.190 +SDL_AndroidGetExternalStoragePath()
  35.191 +
  35.192 +See SDL_system.h for more details on these functions.
  35.193 +
  35.194 +The asset packaging system will, by default, compress certain file extensions.
  35.195 +SDL includes two asset file access mechanisms, the preferred one is the so
  35.196 +called "File Descriptor" method, which is faster and doesn't involve the Dalvik
  35.197 +GC, but given this method does not work on compressed assets, there is also the
  35.198 +"Input Stream" method, which is automatically used as a fall back by SDL. You
  35.199 +may want to keep this fact in mind when building your APK, specially when large
  35.200 +files are involved.
  35.201 +For more information on which extensions get compressed by default and how to
  35.202 +disable this behaviour, see for example:
  35.203 +    
  35.204 +http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
  35.205 +
  35.206 +================================================================================
  35.207 + Pause / Resume behaviour
  35.208 +================================================================================
  35.209 +
  35.210 +If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
  35.211 +the event loop will block itself when the app is paused (ie, when the user
  35.212 +returns to the main Android dashboard). Blocking is better in terms of battery
  35.213 +use, and it allows your app to spring back to life instantaneously after resume
  35.214 +(versus polling for a resume message).
  35.215 +
  35.216 +Upon resume, SDL will attempt to restore the GL context automatically.
  35.217 +In modern devices (Android 3.0 and up) this will most likely succeed and your
  35.218 +app can continue to operate as it was.
  35.219 +
  35.220 +However, there's a chance (on older hardware, or on systems under heavy load),
  35.221 +where the GL context can not be restored. In that case you have to listen for
  35.222 +a specific message, (which is not yet implemented!) and restore your textures
  35.223 +manually or quit the app (which is actually the kind of behaviour you'll see
  35.224 +under iOS, if the OS can not restore your GL context it will just kill your app)
  35.225 +
  35.226 +================================================================================
  35.227 + Threads and the Java VM
  35.228 +================================================================================
  35.229 +
  35.230 +For a quick tour on how Linux native threads interoperate with the Java VM, take
  35.231 +a look here: http://developer.android.com/guide/practices/jni.html
  35.232 +If you want to use threads in your SDL app, it's strongly recommended that you
  35.233 +do so by creating them using SDL functions. This way, the required attach/detach
  35.234 +handling is managed by SDL automagically. If you have threads created by other
  35.235 +means and they make calls to SDL functions, make sure that you call
  35.236 +Android_JNI_SetupThread before doing anything else otherwise SDL will attach
  35.237 +your thread automatically anyway (when you make an SDL call), but it'll never
  35.238 +detach it.
  35.239 +
  35.240 +================================================================================
  35.241 + Using STL
  35.242 +================================================================================
  35.243 +
  35.244 +You can use STL in your project by creating an Application.mk file in the jni
  35.245 +folder and adding the following line:
  35.246 +APP_STL := stlport_static
  35.247 +
  35.248 +For more information check out CPLUSPLUS-SUPPORT.html in the NDK documentation.
  35.249 +
  35.250 +================================================================================
  35.251 + Additional documentation
  35.252 +================================================================================
  35.253 +
  35.254 +The documentation in the NDK docs directory is very helpful in understanding the
  35.255 +build process and how to work with native code on the Android platform.
  35.256 +
  35.257 +The best place to start is with docs/OVERVIEW.TXT
  35.258 +
  35.259 +
  35.260 +================================================================================
  35.261 + Using Eclipse
  35.262 +================================================================================
  35.263 +
  35.264 +First make sure that you've installed Eclipse and the Android extensions as described here:
  35.265 +	http://developer.android.com/tools/sdk/eclipse-adt.html
  35.266 +
  35.267 +Once you've copied the SDL android project and customized it, you can create an Eclipse project from it:
  35.268 + * File -> New -> Other
  35.269 + * Select the Android -> Android Project wizard and click Next
  35.270 + * Enter the name you'd like your project to have
  35.271 + * Select "Create project from existing source" and browse for your project directory
  35.272 + * Make sure the Build Target is set to Android 2.0
  35.273 + * Click Finish
  35.274 +
  35.275 +
  35.276 +================================================================================
  35.277 + Using the emulator
  35.278 +================================================================================
  35.279 +
  35.280 +There are some good tips and tricks for getting the most out of the
  35.281 +emulator here: http://developer.android.com/tools/devices/emulator.html
  35.282 +
  35.283 +Especially useful is the info on setting up OpenGL ES 2.0 emulation.
  35.284 +
  35.285 +Notice that this software emulator is incredibly slow and needs a lot of disk space.
  35.286 +Using a real device works better.
  35.287 +
  35.288 +================================================================================
  35.289 + Troubleshooting
  35.290 +================================================================================
  35.291 +
  35.292 +You can create and run an emulator from the Eclipse IDE:
  35.293 + * Window -> Android SDK and AVD Manager
  35.294 +
  35.295 +You can see if adb can see any devices with the following command:
  35.296 +	adb devices
  35.297 +
  35.298 +You can see the output of log messages on the default device with:
  35.299 +	adb logcat
  35.300 +
  35.301 +You can push files to the device with:
  35.302 +	adb push local_file remote_path_and_file
  35.303 +
  35.304 +You can push files to the SD Card at /sdcard, for example:
  35.305 +	adb push moose.dat /sdcard/moose.dat
  35.306 +
  35.307 +You can see the files on the SD card with a shell command:
  35.308 +	adb shell ls /sdcard/
  35.309 +
  35.310 +You can start a command shell on the default device with:
  35.311 +	adb shell
  35.312 +
  35.313 +You can remove the library files of your project (and not the SDL lib files) with:
  35.314 +	ndk-build clean
  35.315 +
  35.316 +You can do a build with the following command:
  35.317 +	ndk-build
  35.318 +
  35.319 +You can see the complete command line that ndk-build is using by passing V=1 on the command line:
  35.320 +	ndk-build V=1
  35.321 +
  35.322 +If your application crashes in native code, you can use addr2line to convert the
  35.323 +addresses in the stack trace to lines in your code.
  35.324 +
  35.325 +For example, if your crash looks like this:
  35.326 +I/DEBUG   (   31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
  35.327 +I/DEBUG   (   31):  r0 00000000  r1 00001000  r2 00000003  r3 400085d4
  35.328 +I/DEBUG   (   31):  r4 400085d0  r5 40008000  r6 afd41504  r7 436c6a7c
  35.329 +I/DEBUG   (   31):  r8 436c6b30  r9 435c6fb0  10 435c6f9c  fp 4168d82c
  35.330 +I/DEBUG   (   31):  ip 8346aff0  sp 436c6a60  lr afd1c8ff  pc afd1c902  cpsr 60000030
  35.331 +I/DEBUG   (   31):          #00  pc 0001c902  /system/lib/libc.so
  35.332 +I/DEBUG   (   31):          #01  pc 0001ccf6  /system/lib/libc.so
  35.333 +I/DEBUG   (   31):          #02  pc 000014bc  /data/data/org.libsdl.app/lib/libmain.so
  35.334 +I/DEBUG   (   31):          #03  pc 00001506  /data/data/org.libsdl.app/lib/libmain.so
  35.335 +
  35.336 +You can see that there's a crash in the C library being called from the main code.
  35.337 +I run addr2line with the debug version of my code:
  35.338 +	arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
  35.339 +and then paste in the number after "pc" in the call stack, from the line that I care about:
  35.340 +000014bc
  35.341 +
  35.342 +I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
  35.343 +
  35.344 +You can add logging to your code to help show what's happening:
  35.345 +
  35.346 +#include <android/log.h>
  35.347 +
  35.348 +	__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
  35.349 +
  35.350 +If you need to build without optimization turned on, you can create a file called
  35.351 +"Application.mk" in the jni directory, with the following line in it:
  35.352 +APP_OPTIM := debug
  35.353 +
  35.354 +
  35.355 +================================================================================
  35.356 + Memory debugging
  35.357 +================================================================================
  35.358 +
  35.359 +The best (and slowest) way to debug memory issues on Android is valgrind.
  35.360 +Valgrind has support for Android out of the box, just grab code using:
  35.361 +	svn co svn://svn.valgrind.org/valgrind/trunk valgrind
  35.362 +... and follow the instructions in the file README.android to build it.
  35.363 +
  35.364 +One thing I needed to do on Mac OS X was change the path to the toolchain,
  35.365 +and add ranlib to the environment variables:
  35.366 +export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
  35.367 +
  35.368 +Once valgrind is built, you can create a wrapper script to launch your
  35.369 +application with it, changing org.libsdl.app to your package identifier:
  35.370 +--- start_valgrind_app -------------------
  35.371 +#!/system/bin/sh
  35.372 +export TMPDIR=/data/data/org.libsdl.app
  35.373 +exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
  35.374 +------------------------------------------
  35.375 +
  35.376 +Then push it to the device:
  35.377 +	adb push start_valgrind_app /data/local
  35.378 +
  35.379 +and make it executable:
  35.380 +	adb shell chmod 755 /data/local/start_valgrind_app
  35.381 +
  35.382 +and tell Android to use the script to launch your application:
  35.383 +	adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
  35.384 +
  35.385 +If the setprop command says "could not set property", it's likely that
  35.386 +your package name is too long and you should make it shorter by changing
  35.387 +AndroidManifest.xml and the path to your class file in android-project/src
  35.388 +
  35.389 +You can then launch your application normally and waaaaaaaiiittt for it.
  35.390 +You can monitor the startup process with the logcat command above, and
  35.391 +when it's done (or even while it's running) you can grab the valgrind
  35.392 +output file:
  35.393 +	adb pull /sdcard/valgrind.log
  35.394 +
  35.395 +When you're done instrumenting with valgrind, you can disable the wrapper:
  35.396 +	adb shell setprop wrap.org.libsdl.app ""
  35.397 +
  35.398 +================================================================================
  35.399 + Why is API level 10 the minimum required?
  35.400 +================================================================================
  35.401 +
  35.402 +API level 10 is the minimum required level at runtime (that is, on the device) 
  35.403 +because SDL requires some functionality for running not
  35.404 +available on older devices. Since the incorporation of joystick support into SDL,
  35.405 +the minimum SDK required to *build* SDL is version 12. Devices running API levels
  35.406 +10-11 are still supported, only with the joystick functionality disabled.
  35.407 +
  35.408 +Support for native OpenGL ES and ES2 applications was introduced in the NDK for
  35.409 +API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which
  35.410 +has since then been obsoleted, with the recommendation to developers to bump the
  35.411 +required API level to 10.
  35.412 +As of this writing, according to http://developer.android.com/about/dashboards/index.html
  35.413 +about 90% of the Android devices accessing Google Play support API level 10 or
  35.414 +higher (March 2013).
  35.415 +
  35.416 +================================================================================
  35.417 + A note regarding the use of the "dirty rectangles" rendering technique
  35.418 +================================================================================
  35.419 +
  35.420 +If your app uses a variation of the "dirty rectangles" rendering technique,
  35.421 +where you only update a portion of the screen on each frame, you may notice a
  35.422 +variety of visual glitches on Android, that are not present on other platforms.
  35.423 +This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
  35.424 +contexts, in particular the use of the eglSwapBuffers function. As stated in the
  35.425 +documentation for the function "The contents of ancillary buffers are always 
  35.426 +undefined after calling eglSwapBuffers".
  35.427 +Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
  35.428 +is not possible for SDL as it requires EGL 1.4, available only on the API level
  35.429 +17+, so the only workaround available on this platform is to redraw the entire
  35.430 +screen each frame.
  35.431 +
  35.432 +Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
  35.433 +
  35.434 +================================================================================
  35.435 + Known issues
  35.436 +================================================================================
  35.437 +
  35.438 +- The number of buttons reported for each joystick is hardcoded to be 36, which
  35.439 +is the current maximum number of buttons Android can report.
  35.440 +
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/docs/README-cmake.md	Thu Jul 31 03:14:10 2014 -0300
    36.3 @@ -0,0 +1,31 @@
    36.4 +CMake
    36.5 +================================================================================
    36.6 +(www.cmake.org)
    36.7 +
    36.8 +SDL's build system was traditionally based on autotools. Over time, this
    36.9 +approach has suffered from several issues across the different supported 
   36.10 +platforms.
   36.11 +To solve these problems, a new build system based on CMake is under development.
   36.12 +It works in parallel to the legacy system, so users can experiment with it
   36.13 +without complication.
   36.14 +While still experimental, the build system should be usable on the following
   36.15 +platforms:
   36.16 +    
   36.17 +    * FreeBSD
   36.18 +    * Linux
   36.19 +    * VS.NET 2010
   36.20 +    * MinGW and Msys
   36.21 +    * OS X with support for XCode
   36.22 +    
   36.23 +================================================================================
   36.24 +Usage
   36.25 +================================================================================
   36.26 +
   36.27 +Assuming the source for SDL is located at ~/sdl
   36.28 +
   36.29 +cd ~
   36.30 +mkdir build
   36.31 +cd build
   36.32 +cmake ../sdl
   36.33 +
   36.34 +This will build the static and dynamic versions of SDL in the ~/build directory.
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/docs/README-directfb.md	Thu Jul 31 03:14:10 2014 -0300
    37.3 @@ -0,0 +1,107 @@
    37.4 +DirectFB
    37.5 +========
    37.6 +
    37.7 +Supports:
    37.8 +
    37.9 +- Hardware YUV overlays
   37.10 +- OpenGL - software only
   37.11 +- 2D/3D accelerations (depends on directfb driver)
   37.12 +- multiple displays
   37.13 +- windows
   37.14 +
   37.15 +What you need:
   37.16 +
   37.17 +DirectFB 1.0.1, 1.2.x, 1.3.0
   37.18 +Kernel-Framebuffer support: required: vesafb, radeonfb .... 
   37.19 +Mesa 7.0.x	   - optional for OpenGL
   37.20 +
   37.21 +/etc/directfbrc
   37.22 +
   37.23 +This file should contain the following lines to make
   37.24 +your joystick work and avoid crashes:
   37.25 +------------------------
   37.26 +disable-module=joystick
   37.27 +disable-module=cle266
   37.28 +disable-module=cyber5k
   37.29 +no-linux-input-grab
   37.30 +------------------------
   37.31 +
   37.32 +To disable to use x11 backend when DISPLAY variable is found use
   37.33 +
   37.34 +export SDL_DIRECTFB_X11_CHECK=0
   37.35 +
   37.36 +To disable the use of linux input devices, i.e. multimice/multikeyboard support,
   37.37 +use
   37.38 +
   37.39 +export SDL_DIRECTFB_LINUX_INPUT=0
   37.40 +
   37.41 +To use hardware accelerated YUV-overlays for YUV-textures, use:
   37.42 +
   37.43 +export SDL_DIRECTFB_YUV_DIRECT=1
   37.44 +
   37.45 +This is disabled by default. It will only support one 
   37.46 +YUV texture, namely the first. Every other YUV texture will be
   37.47 +rendered in software.
   37.48 +
   37.49 +In addition, you may use (directfb-1.2.x)
   37.50 +
   37.51 +export SDL_DIRECTFB_YUV_UNDERLAY=1
   37.52 +
   37.53 +to make the YUV texture an underlay. This will make the cursor to
   37.54 +be shown.
   37.55 +
   37.56 +Simple Window Manager
   37.57 +=====================
   37.58 +
   37.59 +The driver has support for a very, very basic window manager you may
   37.60 +want to use when running with "wm=default". Use
   37.61 +
   37.62 +export SDL_DIRECTFB_WM=1
   37.63 +
   37.64 +to enable basic window borders. In order to have the window title rendered,
   37.65 +you need to have the following font installed:
   37.66 +
   37.67 +/usr/share/fonts/truetype/freefont/FreeSans.ttf
   37.68 +
   37.69 +OpenGL Support
   37.70 +==============
   37.71 +
   37.72 +The following instructions will give you *software* OpenGL. However this
   37.73 +works at least on all directfb supported platforms.
   37.74 +
   37.75 +As of this writing 20100802 you need to pull Mesa from git and do the following:
   37.76 +
   37.77 +------------------------
   37.78 +git clone git://anongit.freedesktop.org/git/mesa/mesa
   37.79 +cd mesa 
   37.80 +git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
   37.81 +------------------------
   37.82 +
   37.83 +Edit configs/linux-directfb so that the Directories-section looks like
   37.84 +------------------------
   37.85 +# Directories
   37.86 +SRC_DIRS     = mesa glu 
   37.87 +GLU_DIRS     = sgi
   37.88 +DRIVER_DIRS  = directfb
   37.89 +PROGRAM_DIRS = 
   37.90 +------------------------
   37.91 +
   37.92 +make linux-directfb
   37.93 +make
   37.94 +
   37.95 +echo Installing - please enter sudo pw.
   37.96 +
   37.97 +sudo make install INSTALL_DIR=/usr/local/dfb_GL
   37.98 +cd src/mesa/drivers/directfb
   37.99 +make
  37.100 +sudo make install INSTALL_DIR=/usr/local/dfb_GL
  37.101 +------------------------
  37.102 +
  37.103 +To run the SDL - testprograms:
  37.104 +
  37.105 +export SDL_VIDEODRIVER=directfb
  37.106 +export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
  37.107 +export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
  37.108 +
  37.109 +./testgl
  37.110 +
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/docs/README-dynapi.md	Thu Jul 31 03:14:10 2014 -0300
    38.3 @@ -0,0 +1,129 @@
    38.4 +Dynamic API
    38.5 +================================================================================
    38.6 +Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
    38.7 +
    38.8 +Background:
    38.9 +
   38.10 +- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, 
   38.11 +  but developers are shipping their own SDL2 with individual Steam games. 
   38.12 +  These games might stop getting updates, but a newer SDL2 might be needed later. 
   38.13 +  Certainly we'll always be fixing bugs in SDL, even if a new video target isn't 
   38.14 +  ever needed, and these fixes won't make it to a game shipping its own SDL.
   38.15 +- Even if we replace the SDL2 in those games with a compatible one, that is to 
   38.16 +  say, edit a developer's Steam depot (yuck!), there are developers that are 
   38.17 +  statically linking SDL2 that we can't do this for. We can't even force the 
   38.18 +  dynamic loader to ignore their SDL2 in this case, of course.
   38.19 +- If you don't ship an SDL2 with the game in some form, people that disabled the
   38.20 +  Steam Runtime, or just tried to run the game from the command line instead of 
   38.21 +  Steam might find themselves unable to run the game, due to a missing dependency.
   38.22 +- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
   38.23 +  generic Linux boxes that may or may not have SDL2 installed, you have to ship 
   38.24 +  the library or risk a total failure to launch. So now, you might have to have 
   38.25 +  a non-Steam build plus a Steam build (that is, one with and one without SDL2 
   38.26 +  included), which is inconvenient if you could have had one universal build 
   38.27 +  that works everywhere.
   38.28 +- We like the zlib license, but the biggest complaint from the open source 
   38.29 +  community about the license change is the static linking. The LGPL forced this 
   38.30 +  as a legal, not technical issue, but zlib doesn't care. Even those that aren't
   38.31 +  concerned about the GNU freedoms found themselves solving the same problems: 
   38.32 +  swapping in a newer SDL to an older game often times can save the day. 
   38.33 +  Static linking stops this dead.
   38.34 +
   38.35 +So here's what we did:
   38.36 +
   38.37 +SDL now has, internally, a table of function pointers. So, this is what SDL_Init
   38.38 +now looks like:
   38.39 +
   38.40 +    UInt32 SDL_Init(Uint32 flags)
   38.41 +    {
   38.42 +        return jump_table.SDL_Init(flags);
   38.43 +    }
   38.44 +
   38.45 +Except that is all done with a bunch of macro magic so we don't have to maintain
   38.46 +every one of these.
   38.47 +
   38.48 +What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
   38.49 +SDL_Init() that you've been calling all this time. But at startup, it looks more 
   38.50 +like this:
   38.51 +
   38.52 +    Uint32 SDL_Init_DEFAULT(Uint32 flags)
   38.53 +    {
   38.54 +        SDL_InitDynamicAPI();
   38.55 +        return jump_table.SDL_Init(flags);
   38.56 +    }
   38.57 +
   38.58 +SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function 
   38.59 +pointers, which means that this _DEFAULT function never gets called again. 
   38.60 +First call to any SDL function sets the whole thing up.
   38.61 +
   38.62 +So you might be asking, what was the value in that? Isn't this what the operating
   38.63 +system's dynamic loader was supposed to do for us? Yes, but now we've got this 
   38.64 +level of indirection, we can do things like this:
   38.65 +
   38.66 +    export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
   38.67 +    ./MyGameThatIsStaticallyLinkedToSDL2
   38.68 +
   38.69 +And now, this game that is staticallly linked to SDL, can still be overridden 
   38.70 +with a newer, or better, SDL. The statically linked one will only be used as 
   38.71 +far as calling into the jump table in this case. But in cases where no override
   38.72 +is desired, the statically linked version will provide its own jump table, 
   38.73 +and everyone is happy.
   38.74 +
   38.75 +So now:
   38.76 +- Developers can statically link SDL, and users can still replace it. 
   38.77 +  (We'd still rather you ship a shared library, though!)
   38.78 +- Developers can ship an SDL with their game, Valve can override it for, say, 
   38.79 +  new features on SteamOS, or distros can override it for their own needs, 
   38.80 +  but it'll also just work in the default case.
   38.81 +- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), 
   38.82 +  and it'll do the right thing.
   38.83 +- End users (and Valve) can update a game's SDL in almost any case, 
   38.84 +  to keep abandoned games running on newer platforms.
   38.85 +- Everyone develops with SDL exactly as they have been doing all along. 
   38.86 +  Same headers, same ABI. Just get the latest version to enable this magic.
   38.87 +
   38.88 +
   38.89 +A little more about SDL_InitDynamicAPI():
   38.90 +
   38.91 +Internally, InitAPI does some locking to make sure everything waits until a 
   38.92 +single thread initializes everything (although even SDL_CreateThread() goes 
   38.93 +through here before spinning a thread, too), and then decides if it should use
   38.94 +an external SDL library. If not, it sets up the jump table using the current 
   38.95 +SDL's function pointers (which might be statically linked into a program, or in
   38.96 +a shared library of its own). If so, it loads that library and looks for and 
   38.97 +calls a single function:
   38.98 +
   38.99 +    SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
  38.100 +
  38.101 +That function takes a version number (more on that in a moment), the address of
  38.102 +the jump table, and the size, in bytes, of the table. 
  38.103 +Now, we've got policy here: this table's layout never changes; new stuff gets 
  38.104 +added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all 
  38.105 +the needed functions if tablesize <= sizeof its own jump table. If tablesize is
  38.106 +bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
  38.107 +if it's smaller, we know we can provide the entire API that the caller needs.
  38.108 +
  38.109 +The version variable is a failsafe switch. 
  38.110 +Right now it's always 1. This number changes when there are major API changes 
  38.111 +(so we know if the tablesize might be smaller, or entries in it have changed). 
  38.112 +Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not 
  38.113 +inconceivable to have a small dispatch library that only supplies this one 
  38.114 +function and loads different, otherwise-incompatible SDL libraries and has the
  38.115 +right one initialize the jump table based on the version. For something that 
  38.116 +must generically catch lots of different versions of SDL over time, like the 
  38.117 +Steam Client, this isn't a bad option.
  38.118 +
  38.119 +Finally, I'm sure some people are reading this and thinking,
  38.120 +"I don't want that overhead in my project!"  
  38.121 +To which I would point out that the extra function call through the jump table 
  38.122 +probably wouldn't even show up in a profile, but lucky you: this can all be 
  38.123 +disabled. You can build SDL without this if you absolutely must, but we would 
  38.124 +encourage you not to do that. However, on heavily locked down platforms like 
  38.125 +iOS, or maybe when debugging,  it makes sense to disable it. The way this is 
  38.126 +designed in SDL, you just have to change one #define, and the entire system 
  38.127 +vaporizes out, and SDL functions exactly like it always did. Most of it is 
  38.128 +macro magic, so the system is contained to one C file and a few headers. 
  38.129 +However, this is on by default and you have to edit a header file to turn it 
  38.130 +off. Our hopes is that if we make it easy to disable, but not too easy, 
  38.131 +everyone will ultimately be able to get what they want, but we've gently 
  38.132 +nudged everyone towards what we think is the best solution.
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/docs/README-gesture.md	Thu Jul 31 03:14:10 2014 -0300
    39.3 @@ -0,0 +1,71 @@
    39.4 +Dollar Gestures
    39.5 +===========================================================================
    39.6 +SDL Provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
    39.7 +
    39.8 +Gestures can be performed with any number of fingers (the centroid of the fingers must follow the path of the gesture), but the number of fingers must be constant (a finger cannot go down in the middle of a gesture). The path of a gesture is considered the path from the time when the final finger went down, to the first time any finger comes up. 
    39.9 +
   39.10 +Dollar gestures are assigned an Id based on a hash function. This is guaranteed to remain constant for a given gesture. There is a (small) chance that two different gestures will be assigned the same ID. In this case, simply re-recording one of the gestures should result in a different ID.
   39.11 +
   39.12 +Recording:
   39.13 +----------
   39.14 +To begin recording on a touch device call:
   39.15 +SDL_RecordGesture(SDL_TouchID touchId), where touchId is the id of the touch device you wish to record on, or -1 to record on all connected devices.
   39.16 +
   39.17 +Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
   39.18 +A SDL_DOLLARRECORD event is a dgesture with the following fields:
   39.19 +
   39.20 +event.dgesture.touchId   - the Id of the touch used to record the gesture.
   39.21 +event.dgesture.gestureId - the unique id of the recorded gesture.
   39.22 +
   39.23 +
   39.24 +Performing:
   39.25 +-----------
   39.26 +As long as there is a dollar gesture assigned to a touch, every finger-up event will also cause an SDL_DOLLARGESTURE event with the following fields:
   39.27 +
   39.28 +event.dgesture.touchId    - the Id of the touch which performed the gesture.
   39.29 +event.dgesture.gestureId  - the unique id of the closest gesture to the performed stroke.
   39.30 +event.dgesture.error      - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
   39.31 +event.dgesture.numFingers - the number of fingers used to draw the stroke.
   39.32 +
   39.33 +Most programs will want to define an appropriate error threshold and check to be sure that the error of a gesture is not abnormally high (an indicator that no gesture was performed).
   39.34 +
   39.35 +
   39.36 +
   39.37 +Saving:
   39.38 +-------
   39.39 +To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored.
   39.40 +
   39.41 +To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored.
   39.42 +
   39.43 +Both functions return the number of gestures successfully saved.
   39.44 +
   39.45 +
   39.46 +Loading:
   39.47 +--------
   39.48 +To load templates from a file, call SDL_LoadDollarTemplates(touchId,src) where touchId is the id of the touch to load to (or -1 to load to all touch devices), and src is an SDL_RWops pointer to a gesture save file. 
   39.49 +
   39.50 +SDL_LoadDollarTemplates returns the number of templates successfully loaded.
   39.51 +
   39.52 +
   39.53 +
   39.54 +===========================================================================
   39.55 +Multi Gestures
   39.56 +===========================================================================
   39.57 +SDL provides simple support for pinch/rotate/swipe gestures. 
   39.58 +Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
   39.59 +
   39.60 +event.mgesture.touchId - the Id of the touch on which the gesture was performed.
   39.61 +event.mgesture.x       - the normalized x coordinate of the gesture. (0..1)
   39.62 +event.mgesture.y       - the normalized y coordinate of the gesture. (0..1)
   39.63 +event.mgesture.dTheta  - the amount that the fingers rotated during this motion.
   39.64 +event.mgesture.dDist   - the amount that the fingers pinched during this motion.
   39.65 +event.mgesture.numFingers - the number of fingers used in the gesture.
   39.66 +
   39.67 +
   39.68 +===========================================================================
   39.69 +Notes
   39.70 +===========================================================================
   39.71 +For a complete example see test/testgesture.c
   39.72 +
   39.73 +Please direct questions/comments to:
   39.74 +   jim.tla+sdl_touch@gmail.com
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/docs/README-hg.md	Thu Jul 31 03:14:10 2014 -0300
    40.3 @@ -0,0 +1,26 @@
    40.4 +Mercurial
    40.5 +=========
    40.6 +
    40.7 +The latest development version of SDL is available via Mercurial.
    40.8 +Mercurial allows you to get up-to-the-minute fixes and enhancements;
    40.9 +as a developer works on a source tree, you can use "hg" to mirror that
   40.10 +source tree instead of waiting for an official release. Please look
   40.11 +at the Mercurial website ( http://mercurial.selenic.com/ ) for more
   40.12 +information on using hg, where you can also download software for
   40.13 +Mac OS X, Windows, and Unix systems.
   40.14 +
   40.15 +  hg clone http://hg.libsdl.org/SDL
   40.16 +
   40.17 +If you are building SDL with an IDE, you will need to copy the file
   40.18 +include/SDL_config.h.default to include/SDL_config.h before building.
   40.19 +
   40.20 +If you are building SDL via configure, you will need to run autogen.sh
   40.21 +before running configure.
   40.22 +
   40.23 +There is a web interface to the subversion repository at:
   40.24 +
   40.25 +	http://hg.libsdl.org/SDL/
   40.26 +
   40.27 +There is an RSS feed available at that URL, for those that want to
   40.28 +track commits in real time.
   40.29 +
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/docs/README-ios.md	Thu Jul 31 03:14:10 2014 -0300
    41.3 @@ -0,0 +1,225 @@
    41.4 +iOS
    41.5 +======
    41.6 +
    41.7 +==============================================================================
    41.8 +Building the Simple DirectMedia Layer for iPhone OS 5.1
    41.9 +==============================================================================
   41.10 +
   41.11 +Requirements: Mac OS X v10.5 or later and the iPhone SDK.
   41.12 +
   41.13 +Instructions:
   41.14 +1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
   41.15 +2.  Select your desired target, and hit build.
   41.16 +
   41.17 +There are three build targets:
   41.18 +- libSDL.a:
   41.19 +	Build SDL as a statically linked library
   41.20 +- testsdl
   41.21 +	Build a test program (there are known test failures which are fine)
   41.22 +- Template:
   41.23 +	Package a project template together with the SDL for iPhone static libraries and copies of the SDL headers.  The template includes proper references to the SDL library and headers, skeleton code for a basic SDL program, and placeholder graphics for the application icon and startup screen.
   41.24 +
   41.25 +==============================================================================
   41.26 +Build SDL for iOS from the command line
   41.27 +==============================================================================
   41.28 +
   41.29 +1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
   41.30 +2. ./iosbuild.sh
   41.31 +
   41.32 +If everything goes fine, you should see a build/ios directory, inside there's
   41.33 +two directories "lib" and "include". 
   41.34 +"include" contains a copy of the SDL headers that you'll need for your project,
   41.35 +make sure to configure XCode to look for headers there.
   41.36 +"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
   41.37 +to your XCode project. These libraries contain three architectures in them,
   41.38 +armv6 for legacy devices, armv7, and i386 (for the simulator).
   41.39 +By default, iosbuild.sh will autodetect the SDK version you have installed using 
   41.40 +xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
   41.41 +by setting the MIN_OS_VERSION variable, ie:
   41.42 +
   41.43 +MIN_OS_VERSION=4.2 ./iosbuild.sh
   41.44 +
   41.45 +==============================================================================
   41.46 +Using the Simple DirectMedia Layer for iOS
   41.47 +==============================================================================
   41.48 +
   41.49 +FIXME: This needs to be updated for the latest methods
   41.50 +
   41.51 +Here is the easiest method:
   41.52 +1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
   41.53 +1.  Install the iPhone SDL Application template by copying it to one of XCode's template directories.  I recommend creating a directory called "SDL" in "/Developer/Platforms/iOS.platform/Developer/Library/XCode/Project Templates/" and placing it there.
   41.54 +2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
   41.55 +
   41.56 +Here is a more manual method:
   41.57 +1.  Create a new iPhone view based application.
   41.58 +2.  Build the SDL static libraries (libSDL.a and libSDLSimulator.a) for iPhone and include them in your project.  XCode will ignore the library that is not currently of the correct architecture, hence your app will work both on iPhone and in the iPhone Simulator.
   41.59 +3.  Include the SDL header files in your project.
   41.60 +4.  Remove the ApplicationDelegate.h and ApplicationDelegate.m files -- SDL for iPhone provides its own UIApplicationDelegate.  Remove MainWindow.xib -- SDL for iPhone produces its user interface programmatically.
   41.61 +5.  Delete the contents of main.m and program your app as a regular SDL program instead.  You may replace main.m with your own main.c, but you must tell XCode not to use the project prefix file, as it includes Objective-C code.
   41.62 +
   41.63 +==============================================================================
   41.64 +Notes -- Application events
   41.65 +==============================================================================
   41.66 +
   41.67 +On iOS the application goes through a fixed life cycle and you will get
   41.68 +notifications of state changes via application events. When these events
   41.69 +are delivered you must handle them in an event callback because the OS may
   41.70 +not give you any processing time after the events are delivered.
   41.71 +
   41.72 +e.g.
   41.73 +
   41.74 +int HandleAppEvents(void *userdata, SDL_Event *event)
   41.75 +{
   41.76 +    switch (event->type)
   41.77 +    {
   41.78 +    case SDL_APP_TERMINATING:
   41.79 +        /* Terminate the app.
   41.80 +           Shut everything down before returning from this function.
   41.81 +        */
   41.82 +        return 0;
   41.83 +    case SDL_APP_LOWMEMORY:
   41.84 +        /* You will get this when your app is paused and iOS wants more memory.
   41.85 +           Release as much memory as possible.
   41.86 +        */
   41.87 +        return 0;
   41.88 +    case SDL_APP_WILLENTERBACKGROUND:
   41.89 +        /* Prepare your app to go into the background.  Stop loops, etc.
   41.90 +           This gets called when the user hits the home button, or gets a call.
   41.91 +        */
   41.92 +        return 0;
   41.93 +    case SDL_APP_DIDENTERBACKGROUND:
   41.94 +        /* This will get called if the user accepted whatever sent your app to the background.
   41.95 +           If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
   41.96 +           When you get this, you have 5 seconds to save all your state or the app will be terminated.
   41.97 +           Your app is NOT active at this point.
   41.98 +        */
   41.99 +        return 0;
  41.100 +    case SDL_APP_WILLENTERFOREGROUND:
  41.101 +        /* This call happens when your app is coming back to the foreground.
  41.102 +           Restore all your state here.
  41.103 +        */
  41.104 +        return 0;
  41.105 +    case SDL_APP_DIDENTERFOREGROUND:
  41.106 +        /* Restart your loops here.
  41.107 +           Your app is interactive and getting CPU again.
  41.108 +        */
  41.109 +        return 0;
  41.110 +    default:
  41.111 +        /* No special processing, add it to the event queue */
  41.112 +        return 1;
  41.113 +    }
  41.114 +}
  41.115 +
  41.116 +int main(int argc, char *argv[])
  41.117 +{
  41.118 +    SDL_SetEventFilter(HandleAppEvents, NULL);
  41.119 +
  41.120 +    ... run your main loop
  41.121 +
  41.122 +    return 0;
  41.123 +}
  41.124 +
  41.125 +    
  41.126 +==============================================================================
  41.127 +Notes -- Accelerometer as Joystick
  41.128 +==============================================================================
  41.129 +
  41.130 +SDL for iPhone supports polling the built in accelerometer as a joystick device.  For an example on how to do this, see the accelerometer.c in the demos directory.
  41.131 +
  41.132 +The main thing to note when using the accelerometer with SDL is that while the iPhone natively reports accelerometer as floating point values in units of g-force, SDL_JoystickGetAxis reports joystick values as signed integers.  Hence, in order to convert between the two, some clamping and scaling is necessary on the part of the iPhone SDL joystick driver.  To convert SDL_JoystickGetAxis reported values BACK to units of g-force, simply multiply the values by SDL_IPHONE_MAX_GFORCE / 0x7FFF.
  41.133 +
  41.134 +==============================================================================
  41.135 +Notes -- OpenGL ES
  41.136 +==============================================================================
  41.137 +
  41.138 +Your SDL application for iPhone uses OpenGL ES for video by default.
  41.139 +
  41.140 +OpenGL ES for iPhone supports several display pixel formats, such as RGBA8 and RGB565, which provide a 32 bit and 16 bit color buffer respectively.  By default, the implementation uses RGB565, but you may use RGBA8 by setting each color component to 8 bits in SDL_GL_SetAttribute.
  41.141 +
  41.142 +If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0.
  41.143 +
  41.144 +Finally, if your application completely redraws the screen each frame, you may find significant performance improvement by setting the attribute SDL_GL_RETAINED_BACKING to 1.
  41.145 +
  41.146 +==============================================================================
  41.147 +Notes -- Keyboard
  41.148 +==============================================================================
  41.149 +
  41.150 +The SDL keyboard API has been extended to support on-screen keyboards:
  41.151 +
  41.152 +void SDL_StartTextInput()
  41.153 +	-- enables text events and reveals the onscreen keyboard.
  41.154 +void SDL_StopTextInput()
  41.155 +	-- disables text events and hides the onscreen keyboard.
  41.156 +SDL_bool SDL_IsTextInputActive()
  41.157 +	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
  41.158 +
  41.159 +==============================================================================
  41.160 +Notes -- Reading and Writing files
  41.161 +==============================================================================
  41.162 +
  41.163 +Each application installed on iPhone resides in a sandbox which includes its own Application Home directory.  Your application may not access files outside this directory.
  41.164 +
  41.165 +Once your application is installed its directory tree looks like:
  41.166 +
  41.167 +MySDLApp Home/
  41.168 +	MySDLApp.app
  41.169 +	Documents/
  41.170 +	Library/
  41.171 +		Preferences/
  41.172 +	tmp/
  41.173 +
  41.174 +When your SDL based iPhone application starts up, it sets the working directory to the main bundle (MySDLApp Home/MySDLApp.app), where your application resources are stored.  You cannot write to this directory.  Instead, I advise you to write document files to "../Documents/" and preferences to "../Library/Preferences".  
  41.175 +
  41.176 +More information on this subject is available here:
  41.177 +http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
  41.178 +
  41.179 +==============================================================================
  41.180 +Notes -- iPhone SDL limitations
  41.181 +==============================================================================
  41.182 +
  41.183 +Windows:
  41.184 +	Full-size, single window applications only.  You cannot create multi-window SDL applications for iPhone OS.  The application window will fill the display, though you have the option of turning on or off the menu-bar (pass SDL_CreateWindow the flag SDL_WINDOW_BORDERLESS).
  41.185 +
  41.186 +Textures:
  41.187 +	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
  41.188 +
  41.189 +Loading Shared Objects:
  41.190 +	This is disabled by default since it seems to break the terms of the iPhone SDK agreement.  It can be re-enabled in SDL_config_iphoneos.h.
  41.191 +
  41.192 +==============================================================================
  41.193 +Game Center 
  41.194 +==============================================================================
  41.195 +
  41.196 +Game Center integration requires that you break up your main loop in order to yield control back to the system. In other words, instead of running an endless main loop, you run each frame in a callback function, using:
  41.197 +    
  41.198 +int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
  41.199 +
  41.200 +This will set up the given function to be called back on the animation callback, and then you have to return from main() to let the Cocoa event loop run.
  41.201 +
  41.202 +e.g.
  41.203 +
  41.204 +extern "C"
  41.205 +void ShowFrame(void*)
  41.206 +{
  41.207 +    ... do event handling, frame logic and rendering
  41.208 +}
  41.209 +
  41.210 +int main(int argc, char *argv[])
  41.211 +{
  41.212 +   ... initialize game ...
  41.213 +
  41.214 +#if __IPHONEOS__
  41.215 +        // Initialize the Game Center for scoring and matchmaking
  41.216 +        InitGameCenter();
  41.217 +
  41.218 +        // Set up the game to run in the window animation callback on iOS
  41.219 +        // so that Game Center and so forth works correctly.
  41.220 +        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
  41.221 +#else
  41.222 +        while ( running ) {
  41.223 +                ShowFrame(0);
  41.224 +                DelayFrame();
  41.225 +        }
  41.226 +#endif
  41.227 +        return 0;
  41.228 +}
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/docs/README-linux.md	Thu Jul 31 03:14:10 2014 -0300
    42.3 @@ -0,0 +1,82 @@
    42.4 +Linux
    42.5 +================================================================================
    42.6 +
    42.7 +By default SDL will only link against glibc, the rest of the features will be
    42.8 +enabled dynamically at runtime depending on the available features on the target
    42.9 +system. So, for example if you built SDL with Xinerama support and the target
   42.10 +system does not have the Xinerama libraries installed, it will be disabled
   42.11 +at runtime, and you won't get a missing library error, at least with the 
   42.12 +default configuration parameters.
   42.13 +
   42.14 +
   42.15 +================================================================================
   42.16 +Build Dependencies
   42.17 +================================================================================
   42.18 +    
   42.19 +Ubuntu 13.04, all available features enabled:
   42.20 +
   42.21 +sudo apt-get install build-essential mercurial make cmake autoconf automake \
   42.22 +libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \
   42.23 +libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \
   42.24 +libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \
   42.25 +libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
   42.26 +
   42.27 +Ubuntu 14.04 can also add "libwayland-dev libmirclient-dev libxkbcommon-dev"
   42.28 +to that command line for Wayland and Mir support.
   42.29 +
   42.30 +NOTES:
   42.31 +- This includes all the audio targets except arts, because Ubuntu pulled the 
   42.32 +  artsc0-dev package, but in theory SDL still supports it.
   42.33 +- DirectFB isn't included because the configure script (currently) fails to find
   42.34 +  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
   42.35 +  configure script to include DirectFB support. Send patches.  :)
   42.36 +
   42.37 +
   42.38 +================================================================================
   42.39 +Joystick does not work
   42.40 +================================================================================
   42.41 +
   42.42 +If you compiled or are using a version of SDL with udev support (and you should!)
   42.43 +there's a few issues that may cause SDL to fail to detect your joystick. To
   42.44 +debug this, start by installing the evtest utility. On Ubuntu/Debian:
   42.45 +
   42.46 +    sudo apt-get install evtest
   42.47 +    
   42.48 +Then run:
   42.49 +    
   42.50 +    sudo evtest
   42.51 +    
   42.52 +You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
   42.53 +Now run:
   42.54 +    
   42.55 +    cat /dev/input/event/XX
   42.56 +
   42.57 +If you get a permission error, you need to set a udev rule to change the mode of
   42.58 +your device (see below)    
   42.59 +    
   42.60 +Also, try:
   42.61 +    
   42.62 +    sudo udevadm info --query=all --name=input/eventXX
   42.63 +    
   42.64 +If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
   42.65 +you need to set up an udev rule to force this variable.
   42.66 +
   42.67 +A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks 
   42.68 +like:
   42.69 +    
   42.70 +   SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   42.71 +   SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   42.72 +   
   42.73 +You can set up similar rules for your device by changing the values listed in
   42.74 +idProduct and idVendor. To obtain these values, try:
   42.75 +    
   42.76 +    sudo udevadm info -a --name=input/eventXX | grep idVendor
   42.77 +    sudo udevadm info -a --name=input/eventXX | grep idProduct
   42.78 +    
   42.79 +If multiple values come up for each of these, the one you want is the first one of each.    
   42.80 +
   42.81 +On other systems which ship with an older udev (such as CentOS), you may need
   42.82 +to set up a rule such as:
   42.83 +    
   42.84 +    SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
   42.85 +
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/docs/README-macosx.md	Thu Jul 31 03:14:10 2014 -0300
    43.3 @@ -0,0 +1,225 @@
    43.4 +Mac OS X
    43.5 +==============================================================================
    43.6 +
    43.7 +These instructions are for people using Apple's Mac OS X (pronounced
    43.8 +"ten").
    43.9 +
   43.10 +From the developer's point of view, OS X is a sort of hybrid Mac and
   43.11 +Unix system, and you have the option of using either traditional
   43.12 +command line tools or Apple's IDE Xcode.
   43.13 +
   43.14 +To build SDL using the command line, use the standard configure and make
   43.15 +process:
   43.16 +
   43.17 +	./configure
   43.18 +	make
   43.19 +	sudo make install
   43.20 +
   43.21 +You can also build SDL as a Universal library (a single binary for both
   43.22 +32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using
   43.23 +the fatbuild.sh script in build-scripts:
   43.24 +	sh build-scripts/fatbuild.sh
   43.25 +	sudo build-scripts/fatbuild.sh install
   43.26 +This script builds SDL with 10.5 ABI compatibility on i386 and 10.6
   43.27 +ABI compatibility on x86_64 architectures.  For best compatibility you
   43.28 +should compile your application the same way.  A script which wraps
   43.29 +gcc to make this easy is provided in test/gcc-fat.sh
   43.30 +
   43.31 +Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK
   43.32 +(even if you target back to 10.5 systems). PowerPC support for Mac OS X has
   43.33 +been officially dropped as of SDL 2.0.2.
   43.34 +
   43.35 +To use the library once it's built, you essential have two possibilities:
   43.36 +use the traditional autoconf/automake/make method, or use Xcode.
   43.37 +
   43.38 +==============================================================================
   43.39 +Caveats for using SDL with Mac OS X
   43.40 +==============================================================================
   43.41 +
   43.42 +Some things you have to be aware of when using SDL on Mac OS X:
   43.43 +
   43.44 +- If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
   43.45 +  SDL will not register its own. This means that SDL will not terminate using
   43.46 +  SDL_Quit if it receives a termination request, it will terminate like a 
   43.47 +  normal app, and it will not send a SDL_DROPFILE when you request to open a
   43.48 +  file with the app. To solve these issues, put the following code in your 
   43.49 +  NSApplicationDelegate implementation:
   43.50 +
   43.51 +  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
   43.52 +  {
   43.53 +      if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
   43.54 +          SDL_Event event;
   43.55 +          event.type = SDL_QUIT;
   43.56 +          SDL_PushEvent(&event);
   43.57 +      }
   43.58 +
   43.59 +      return NSTerminateCancel;
   43.60 +  }
   43.61 +
   43.62 +  - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   43.63 +  {
   43.64 +      if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
   43.65 +          SDL_Event event;
   43.66 +          event.type = SDL_DROPFILE;
   43.67 +          event.drop.file = SDL_strdup([filename UTF8String]);
   43.68 +          return (SDL_PushEvent(&event) > 0);
   43.69 +      }
   43.70 +
   43.71 +      return NO;
   43.72 +  }
   43.73 +
   43.74 +==============================================================================
   43.75 +Using the Simple DirectMedia Layer with a traditional Makefile
   43.76 +==============================================================================
   43.77 +
   43.78 +An existing autoconf/automake build system for your SDL app has good chances
   43.79 +to work almost unchanged on OS X. However, to produce a "real" Mac OS X binary
   43.80 +that you can distribute to users, you need to put the generated binary into a
   43.81 +so called "bundle", which basically is a fancy folder with a name like
   43.82 +"MyCoolGame.app".
   43.83 +
   43.84 +To get this build automatically, add something like the following rule to
   43.85 +your Makefile.am:
   43.86 +
   43.87 +bundle_contents = APP_NAME.app/Contents
   43.88 +APP_NAME_bundle: EXE_NAME
   43.89 +	mkdir -p $(bundle_contents)/MacOS
   43.90 +	mkdir -p $(bundle_contents)/Resources
   43.91 +	echo "APPL????" > $(bundle_contents)/PkgInfo
   43.92 +	$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
   43.93 +
   43.94 +You should replace EXE_NAME with the name of the executable. APP_NAME is what
   43.95 +will be visible to the user in the Finder. Usually it will be the same
   43.96 +as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME 
   43.97 +usually is "TestGame". You might also want to use @PACKAGE@ to use the package
   43.98 +name as specified in your configure.in file.
   43.99 +
  43.100 +If your project builds more than one application, you will have to do a bit
  43.101 +more. For each of your target applications, you need a separate rule.
  43.102 +
  43.103 +If you want the created bundles to be installed, you may want to add this
  43.104 +rule to your Makefile.am:
  43.105 +
  43.106 +install-exec-hook: APP_NAME_bundle
  43.107 +	rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
  43.108 +	mkdir -p $(DESTDIR)$(prefix)/Applications/
  43.109 +	cp -r $< /$(DESTDIR)$(prefix)Applications/
  43.110 +
  43.111 +This rule takes the Bundle created by the rule from step 3 and installs them
  43.112 +into $(DESTDIR)$(prefix)/Applications/.
  43.113 +
  43.114 +Again, if you want to install multiple applications, you will have to augment
  43.115 +the make rule accordingly.
  43.116 +
  43.117 +
  43.118 +But beware! That is only part of the story! With the above, you end up with
  43.119 +a bare bone .app bundle, which is double clickable from the Finder. But
  43.120 +there are some more things you should do before shipping your product...
  43.121 +
  43.122 +1) The bundle right now probably is dynamically linked against SDL. That 
  43.123 +   means that when you copy it to another computer, *it will not run*,
  43.124 +   unless you also install SDL on that other computer. A good solution
  43.125 +   for this dilemma is to static link against SDL. On OS X, you can
  43.126 +   achieve that by linking against the libraries listed by
  43.127 +     sdl-config --static-libs
  43.128 +   instead of those listed by
  43.129 +     sdl-config --libs
  43.130 +   Depending on how exactly SDL is integrated into your build systems, the
  43.131 +   way to achieve that varies, so I won't describe it here in detail
  43.132 +2) Add an 'Info.plist' to your application. That is a special XML file which
  43.133 +   contains some meta-information about your application (like some copyright
  43.134 +   information, the version of your app, the name of an optional icon file,
  43.135 +   and other things). Part of that information is displayed by the Finder
  43.136 +   when you click on the .app, or if you look at the "Get Info" window.
  43.137 +   More information about Info.plist files can be found on Apple's homepage.
  43.138 +
  43.139 +
  43.140 +As a final remark, let me add that I use some of the techniques (and some
  43.141 +variations of them) in Exult and ScummVM; both are available in source on
  43.142 +the net, so feel free to take a peek at them for inspiration!
  43.143 +
  43.144 +
  43.145 +==============================================================================
  43.146 +Using the Simple DirectMedia Layer with Xcode
  43.147 +==============================================================================
  43.148 +
  43.149 +These instructions are for using Apple's Xcode IDE to build SDL applications.
  43.150 +
  43.151 +- First steps
  43.152 +
  43.153 +The first thing to do is to unpack the Xcode.tar.gz archive in the
  43.154 +top level SDL directory (where the Xcode.tar.gz archive resides).
  43.155 +Because Stuffit Expander will unpack the archive into a subdirectory,
  43.156 +you should unpack the archive manually from the command line:
  43.157 +	cd [path_to_SDL_source]
  43.158 +	tar zxf Xcode.tar.gz
  43.159 +This will create a new folder called Xcode, which you can browse
  43.160 +normally from the Finder.
  43.161 +
  43.162 +- Building the Framework
  43.163 +
  43.164 +The SDL Library is packaged as a framework bundle, an organized
  43.165 +relocatable folder hierarchy of executable code, interface headers,
  43.166 +and additional resources. For practical purposes, you can think of a 
  43.167 +framework as a more user and system-friendly shared library, whose library
  43.168 +file behaves more or less like a standard UNIX shared library.
  43.169 +
  43.170 +To build the framework, simply open the framework project and build it. 
  43.171 +By default, the framework bundle "SDL.framework" is installed in 
  43.172 +/Library/Frameworks. Therefore, the testers and project stationary expect
  43.173 +it to be located there. However, it will function the same in any of the
  43.174 +following locations:
  43.175 +
  43.176 +    ~/Library/Frameworks
  43.177 +    /Local/Library/Frameworks
  43.178 +    /System/Library/Frameworks
  43.179 +
  43.180 +- Build Options
  43.181 +    There are two "Build Styles" (See the "Targets" tab) for SDL.
  43.182 +    "Deployment" should be used if you aren't tweaking the SDL library.
  43.183 +    "Development" should be used to debug SDL apps or the library itself.
  43.184 +
  43.185 +- Building the Testers
  43.186 +    Open the SDLTest project and build away!
  43.187 +
  43.188 +- Using the Project Stationary
  43.189 +    Copy the stationary to the indicated folders to access it from
  43.190 +    the "New Project" and "Add target" menus. What could be easier?
  43.191 +
  43.192 +- Setting up a new project by hand
  43.193 +    Some of you won't want to use the Stationary so I'll give some tips:
  43.194 +    * Create a new "Cocoa Application"
  43.195 +    * Add src/main/macosx/SDLMain.m , .h and .nib to your project
  43.196 +    * Remove "main.c" from your project
  43.197 +    * Remove "MainMenu.nib" from your project
  43.198 +    * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
  43.199 +    * Add "$(HOME)/Library/Frameworks" to the frameworks search path
  43.200 +    * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
  43.201 +    * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib"
  43.202 +    * Add your files
  43.203 +    * Clean and build
  43.204 +
  43.205 +- Building from command line
  43.206 +    Use pbxbuild in the same directory as your .pbproj file
  43.207 +
  43.208 +- Running your app
  43.209 +    You can send command line args to your app by either invoking it from
  43.210 +    the command line (in *.app/Contents/MacOS) or by entering them in the
  43.211 +    "Executables" panel of the target settings.
  43.212 +    
  43.213 +- Implementation Notes
  43.214 +    Some things that may be of interest about how it all works...
  43.215 +    * Working directory
  43.216 +        As defined in the SDL_main.m file, the working directory of your SDL app
  43.217 +        is by default set to its parent. You may wish to change this to better
  43.218 +        suit your needs.
  43.219 +    * You have a Cocoa App!
  43.220 +        Your SDL app is essentially a Cocoa application. When your app
  43.221 +        starts up and the libraries finish loading, a Cocoa procedure is called,
  43.222 +        which sets up the working directory and calls your main() method.
  43.223 +        You are free to modify your Cocoa app with generally no consequence 
  43.224 +        to SDL. You cannot, however, easily change the SDL window itself.
  43.225 +        Functionality may be added in the future to help this.
  43.226 +
  43.227 +
  43.228 +Known bugs are listed in the file "BUGS"
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/docs/README-nacl.md	Thu Jul 31 03:14:10 2014 -0300
    44.3 @@ -0,0 +1,103 @@
    44.4 +Native Client
    44.5 +================================================================================
    44.6 +
    44.7 +Requirements: 
    44.8 +    
    44.9 +    * Native Client SDK (https://developer.chrome.com/native-client), 
   44.10 +      (tested with Pepper version 33 or higher).
   44.11 +
   44.12 +The SDL backend for Chrome's Native Client has been tested only with the PNaCl
   44.13 +toolchain, which generates binaries designed to run on ARM and x86_32/64 
   44.14 +platforms. This does not mean it won't work with the other toolchains!
   44.15 +
   44.16 +================================================================================
   44.17 +Building SDL for NaCl
   44.18 +================================================================================
   44.19 +
   44.20 +Set up the right environment variables (see naclbuild.sh), then configure SDL with:
   44.21 +
   44.22 +    configure --host=pnacl --prefix some/install/destination
   44.23 +    
   44.24 +Then "make". 
   44.25 +
   44.26 +As an example of how to create a deployable app a Makefile project is provided 
   44.27 +in test/nacl/Makefile, which includes some monkey patching of the common.mk file 
   44.28 +provided by NaCl, without which linking properly to SDL won't work (the search 
   44.29 +path can't be modified externally, so the linker won't find SDL's binaries unless 
   44.30 +you dump them into the SDK path, which is inconvenient).
   44.31 +Also provided in test/nacl is the required support file, such as index.html, 
   44.32 +manifest.json, etc.
   44.33 +SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
   44.34 +This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
   44.35 +hiding the asynchronous nature of the browser behind the scenes...which is not the
   44.36 +same as making it disappear!
   44.37 +
   44.38 +
   44.39 +================================================================================
   44.40 +Running tests
   44.41 +================================================================================
   44.42 +
   44.43 +Due to the nature of NaCl programs, building and running SDL tests is not as
   44.44 +straightforward as one would hope. The script naclbuild.sh in build-scripts 
   44.45 +automates the process and should serve as a guide for users of SDL trying to build 
   44.46 +their own applications.
   44.47 +
   44.48 +Basic usage:
   44.49 +    
   44.50 +    ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
   44.51 +    
   44.52 +This will build testgles2.c by default.
   44.53 +
   44.54 +If you want to build a different test, for example testrendercopyex.c:
   44.55 +    
   44.56 +    SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
   44.57 +    
   44.58 +Once the build finishes, you have to serve the contents with a web server (the
   44.59 +script will give you instructions on how to do that with Python).
   44.60 +
   44.61 +================================================================================
   44.62 +RWops and nacl_io
   44.63 +================================================================================
   44.64 +
   44.65 +SDL_RWops work transparently with nacl_io. Two functions control the mount points:
   44.66 +    
   44.67 +    int mount(const char* source, const char* target, 
   44.68 +                      const char* filesystemtype, 
   44.69 +                      unsigned long mountflags, const void *data);
   44.70 +    int umount(const char *target);
   44.71 +    
   44.72 +    For convenience, SDL will by default mount an httpfs tree at / before calling 
   44.73 +the app's main function. Such setting can be overridden by calling:
   44.74 +    
   44.75 +    umount("/");
   44.76 +
   44.77 +And then mounting a different filesystem at /
   44.78 +
   44.79 +It's important to consider that the asynchronous nature of file operations on a
   44.80 +browser is hidden from the application, effectively providing the developer with
   44.81 +a set of blocking file operations just like you get in a regular desktop 
   44.82 +environment, which eases the job of porting to Native Client, but also introduces 
   44.83 +a set of challenges of its own, in particular when big file sizes and slow 
   44.84 +connections are involved.
   44.85 +
   44.86 +For more information on how nacl_io and mount points work, see:
   44.87 +    
   44.88 +    https://developer.chrome.com/native-client/devguide/coding/nacl_io
   44.89 +    https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
   44.90 +
   44.91 +To be able to save into the directory "/save/" (like backup of game) :
   44.92 +
   44.93 +    mount("", "/save", "html5fs", 0, "type=PERSISTENT");
   44.94 +
   44.95 +And add to manifest.json :
   44.96 +
   44.97 +  "permissions": [
   44.98 +     "unlimitedStorage"
   44.99 +  ]
  44.100 +
  44.101 +================================================================================
  44.102 +TODO - Known Issues
  44.103 +================================================================================
  44.104 +* Testing of all systems with a real application (something other than SDL's tests)
  44.105 +* Key events don't seem to work properly
  44.106 +
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/docs/README-pandora.md	Thu Jul 31 03:14:10 2014 -0300
    45.3 @@ -0,0 +1,17 @@
    45.4 +Pandora 
    45.5 +=====================================================================
    45.6 +
    45.7 +( http://openpandora.org/ )
    45.8 +- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
    45.9 +support to work on the pandora under the framebuffer. This driver do not have
   45.10 +input support for now, so if you use it you will have to add your own control code.
   45.11 +The video driver name is "pandora" so if you have problem running it from
   45.12 +the framebuffer, try to set the following variable before starting your application :
   45.13 +"export SDL_VIDEODRIVER=pandora"
   45.14 +
   45.15 +- OpenGL ES support was added to the x11 driver, so it's working like the normal
   45.16 +x11 driver one with OpenGLX support, with SDL input event's etc..
   45.17 +
   45.18 +
   45.19 +David Carré (Cpasjuste)
   45.20 +cpasjuste@gmail.com
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/docs/README-platforms.md	Thu Jul 31 03:14:10 2014 -0300
    46.3 @@ -0,0 +1,34 @@
    46.4 +Platforms
    46.5 +=========
    46.6 +
    46.7 +
    46.8 +This is a list of the platforms SDL supports, and who maintains them.
    46.9 +
   46.10 +Officially supported platforms
   46.11 +==============================
   46.12 +(code compiles, and thoroughly tested for release)
   46.13 +==============================
   46.14 +Windows XP/Vista/7/8
   46.15 +Mac OS X 10.5+
   46.16 +Linux 2.6+
   46.17 +iOS 5.1.1+
   46.18 +Android 2.3.3+
   46.19 +
   46.20 +Unofficially supported platforms
   46.21 +================================
   46.22 +(code compiles, but not thoroughly tested)
   46.23 +================================
   46.24 +FreeBSD
   46.25 +NetBSD
   46.26 +OpenBSD
   46.27 +Solaris
   46.28 +
   46.29 +Platforms supported by volunteers
   46.30 +=================================
   46.31 +Haiku - maintained by Axel Dörfler <axeld@pinc-software.de>
   46.32 +PSP - maintained by 527721088@qq.com
   46.33 +Pandora - maintained by Scott Smith <pickle136@sbcglobal.net>
   46.34 +NaCl - maintained by Gabriel Jacobo <gabomdq@gmail.com>
   46.35 +
   46.36 +Platforms that need maintainers
   46.37 +===============================
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/docs/README-porting.md	Thu Jul 31 03:14:10 2014 -0300
    47.3 @@ -0,0 +1,63 @@
    47.4 +Porting
    47.5 +=======
    47.6 +
    47.7 +* Porting To A New Platform
    47.8 +
    47.9 +  The first thing you have to do when porting to a new platform, is look at
   47.10 +include/SDL_platform.h and create an entry there for your operating system.
   47.11 +The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
   47.12 +Ideally SDL_platform.h will be able to auto-detect the system it's building
   47.13 +on based on C preprocessor symbols.
   47.14 +
   47.15 +There are two basic ways of building SDL at the moment:
   47.16 +
   47.17 +1. The "UNIX" way:  ./configure; make; make install
   47.18 +
   47.19 +   If you have a GNUish system, then you might try this.  Edit configure.in,
   47.20 +   take a look at the large section labelled:
   47.21 +	"Set up the configuration based on the target platform!"
   47.22 +   Add a section for your platform, and then re-run autogen.sh and build!
   47.23 +
   47.24 +2. Using an IDE:
   47.25 +
   47.26 +   If you're using an IDE or other non-configure build system, you'll probably
   47.27 +   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
   47.28 +   add a section for your platform, and create a custom SDL_config_{platform}.h,
   47.29 +   based on SDL_config.h.minimal and SDL_config.h.in
   47.30 +
   47.31 +   Add the top level include directory to the header search path, and then add
   47.32 +   the following sources to the project:
   47.33 +	src/*.c
   47.34 +	src/atomic/*.c
   47.35 +	src/audio/*.c
   47.36 +	src/cpuinfo/*.c
   47.37 +	src/events/*.c
   47.38 +	src/file/*.c
   47.39 +	src/haptic/*.c
   47.40 +	src/joystick/*.c
   47.41 +	src/power/*.c
   47.42 +	src/render/*.c
   47.43 +	src/stdlib/*.c
   47.44 +	src/thread/*.c
   47.45 +	src/timer/*.c
   47.46 +	src/video/*.c
   47.47 +	src/audio/disk/*.c
   47.48 +	src/audio/dummy/*.c
   47.49 +	src/video/dummy/*.c
   47.50 +	src/haptic/dummy/*.c
   47.51 +	src/joystick/dummy/*.c
   47.52 +	src/main/dummy/*.c
   47.53 +	src/thread/generic/*.c
   47.54 +	src/timer/dummy/*.c
   47.55 +	src/loadso/dummy/*.c
   47.56 +
   47.57 +
   47.58 +Once you have a working library without any drivers, you can go back to each
   47.59 +of the major subsystems and start implementing drivers for your platform.
   47.60 +
   47.61 +If you have any questions, don't hesitate to ask on the SDL mailing list:
   47.62 +	http://www.libsdl.org/mailing-list.php
   47.63 +
   47.64 +Enjoy!
   47.65 +	Sam Lantinga				(slouken@libsdl.org)
   47.66 +
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/docs/README-psp.md	Thu Jul 31 03:14:10 2014 -0300
    48.3 @@ -0,0 +1,19 @@
    48.4 +PSP
    48.5 +======
    48.6 +SDL port for the Sony PSP contributed by 
    48.7 +   Captian Lex 
    48.8 +
    48.9 +Credit to
   48.10 +   Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
   48.11 +   Geecko for his PSP GU lib "Glib2d"
   48.12 +
   48.13 +Building
   48.14 +--------
   48.15 +To build for the PSP, make sure psp-config is in the path and run:
   48.16 +   make -f Makefile.psp
   48.17 +
   48.18 +
   48.19 +
   48.20 +To Do
   48.21 +------
   48.22 +PSP Screen Keyboard
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/docs/README-raspberrypi.md	Thu Jul 31 03:14:10 2014 -0300
    49.3 @@ -0,0 +1,160 @@
    49.4 +Raspberry Pi
    49.5 +================================================================================
    49.6 +
    49.7 +Requirements:
    49.8 +
    49.9 +Raspbian (other Linux distros may work as well).
   49.10 +
   49.11 +================================================================================
   49.12 + Features
   49.13 +================================================================================
   49.14 +
   49.15 +* Works without X11
   49.16 +* Hardware accelerated OpenGL ES 2.x
   49.17 +* Sound via ALSA
   49.18 +* Input (mouse/keyboard/joystick) via EVDEV
   49.19 +* Hotplugging of input devices via UDEV
   49.20 +
   49.21 +================================================================================
   49.22 + Raspbian Build Dependencies
   49.23 +================================================================================
   49.24 +
   49.25 +sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
   49.26 +
   49.27 +You also need the VideoCore binary stuff that ships in /opt/vc for EGL and 
   49.28 +OpenGL ES 2.x, it usually comes pre installed, but in any case:
   49.29 +    
   49.30 +sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
   49.31 +
   49.32 +================================================================================
   49.33 + Cross compiling from x86 Linux
   49.34 +================================================================================
   49.35 +
   49.36 +To cross compile SDL for Raspbian from your desktop machine, you'll need a
   49.37 +Raspbian system root and the cross compilation tools. We'll assume these tools
   49.38 +will be placed in /opt/rpi-tools
   49.39 +
   49.40 +    sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
   49.41 +
   49.42 +You'll also need a Rasbian binary image.
   49.43 +Get it from: http://downloads.raspberrypi.org/raspbian_latest 
   49.44 +After unzipping, you'll get file with a name like: <date>-wheezy-raspbian.img
   49.45 +Let's assume the sysroot will be built in /opt/rpi-sysroot.
   49.46 +
   49.47 +    export SYSROOT=/opt/rpi-sysroot
   49.48 +    sudo kpartx -a -v <path_to_raspbian_image>.img
   49.49 +    sudo mount -o loop /dev/mapper/loop0p2 /mnt
   49.50 +    sudo cp -r /mnt $SYSROOT
   49.51 +    sudo apt-get install qemu binfmt-support qemu-user-static
   49.52 +    sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
   49.53 +    sudo mount --bind /dev $SYSROOT/dev
   49.54 +    sudo mount --bind /proc $SYSROOT/proc
   49.55 +    sudo mount --bind /sys $SYSROOT/sys
   49.56 +
   49.57 +Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
   49.58 +edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
   49.59 +
   49.60 +    sudo chroot $SYSROOT
   49.61 +    apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev
   49.62 +    exit
   49.63 +    sudo umount $SYSROOT/dev
   49.64 +    sudo umount $SYSROOT/proc
   49.65 +    sudo umount $SYSROOT/sys
   49.66 +    sudo umount /mnt
   49.67 +    
   49.68 +There's one more fix required, as the libdl.so symlink uses an absolute path 
   49.69 +which doesn't quite work in our setup.
   49.70 +
   49.71 +    sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   49.72 +    sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   49.73 +
   49.74 +The final step is compiling SDL itself.
   49.75 +
   49.76 +    export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux"
   49.77 +    cd <SDL SOURCE>
   49.78 +    mkdir -p build;cd build
   49.79 +    ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
   49.80 +    make
   49.81 +    make install
   49.82 +
   49.83 +To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
   49.84 +    
   49.85 +    perl -w -pi -e "s#$PWD/rpi-sdl2-installed#/usr/local#g;" ./rpi-sdl2-installed/lib/libSDL2.la ./rpi-sdl2-installed/lib/pkgconfig/sdl2.pc ./rpi-sdl2-installed/bin/sdl2-config
   49.86 +    
   49.87 +================================================================================
   49.88 + Apps don't work or poor video/audio performance
   49.89 +================================================================================
   49.90 +
   49.91 +If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to 
   49.92 +update the RPi's firmware. Note that doing so will fix these problems, but it
   49.93 +will also render the CMA - Dynamic Memory Split functionality useless.
   49.94 +
   49.95 +Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
   49.96 +low in general, specially if a 1080p TV is hooked up.
   49.97 +
   49.98 +See here how to configure this setting: http://elinux.org/RPiconfig
   49.99 +
  49.100 +Using a fixed gpu_mem=128 is the best option (specially if you updated the 
  49.101 +firmware, using CMA probably won't work, at least it's the current case).
  49.102 +
  49.103 +================================================================================
  49.104 + No input
  49.105 +================================================================================
  49.106 +
  49.107 +Make sure you belong to the "input" group.
  49.108 +
  49.109 +    sudo usermod -aG input `whoami`
  49.110 +
  49.111 +================================================================================
  49.112 + No HDMI Audio
  49.113 +================================================================================
  49.114 +
  49.115 +If you notice that ALSA works but there's no audio over HDMI, try adding:
  49.116 +    
  49.117 +    hdmi_drive=2
  49.118 +    
  49.119 +to your config.txt file and reboot.
  49.120 +
  49.121 +Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
  49.122 +
  49.123 +================================================================================
  49.124 + Text Input API support
  49.125 +================================================================================
  49.126 +
  49.127 +The Text Input API is supported, with translation of scan codes done via the
  49.128 +kernel symbol tables. For this to work, SDL needs access to a valid console.
  49.129 +If you notice there's no SDL_TEXTINPUT message being emitted, double check that
  49.130 +your app has read access to one of the following:
  49.131 +    
  49.132 +* /proc/self/fd/0
  49.133 +* /dev/tty
  49.134 +* /dev/tty[0...6]
  49.135 +* /dev/vc/0
  49.136 +* /dev/console
  49.137 +
  49.138 +This is usually not a problem if you run from the physical terminal (as opposed
  49.139 +to running from a pseudo terminal, such as via SSH). If running from a PTS, a 
  49.140 +quick workaround is to run your app as root or add yourself to the tty group,
  49.141 +then re login to the system.
  49.142 +
  49.143 +   sudo usermod -aG tty `whoami`
  49.144 +    
  49.145 +The keyboard layout used by SDL is the same as the one the kernel uses.
  49.146 +To configure the layout on Raspbian:
  49.147 +    
  49.148 +    sudo dpkg-reconfigure keyboard-configuration
  49.149 +    
  49.150 +To configure the locale, which controls which keys are interpreted as letters,
  49.151 +this determining the CAPS LOCK behavior:
  49.152 +
  49.153 +    sudo dpkg-reconfigure locales
  49.154 +
  49.155 +================================================================================
  49.156 + Notes
  49.157 +================================================================================
  49.158 +
  49.159 +* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
  49.160 +  leaking into the console only if it has root privileges. Launching apps locally
  49.161 +  does not suffer from this issue.
  49.162 +  
  49.163 +
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/docs/README-touch.md	Thu Jul 31 03:14:10 2014 -0300
    50.3 @@ -0,0 +1,85 @@
    50.4 +Touch
    50.5 +===========================================================================
    50.6 +System Specific Notes
    50.7 +===========================================================================
    50.8 +Linux:
    50.9 +The linux touch system is currently based off event streams, and proc/bus/devices. The active user must be given permissions to read /dev/input/TOUCHDEVICE, where TOUCHDEVICE is the event stream for your device. Currently only Wacom tablets are supported. If you have an unsupported tablet contact me at jim.tla+sdl_touch@gmail.com and I will help you get support for it.
   50.10 +
   50.11 +Mac:
   50.12 +The Mac and iPhone APIs are pretty. If your touch device supports them then you'll be fine. If it doesn't, then there isn't much we can do.
   50.13 +
   50.14 +iPhone: 
   50.15 +Works out of box.
   50.16 +
   50.17 +Windows:
   50.18 +Unfortunately there is no windows support as of yet. Support for Windows 7 is planned, but we currently have no way to test. If you have a Windows 7 WM_TOUCH supported device, and are willing to help test please contact me at jim.tla+sdl_touch@gmail.com
   50.19 +
   50.20 +===========================================================================
   50.21 +Events
   50.22 +===========================================================================
   50.23 +SDL_FINGERDOWN:
   50.24 +Sent when a finger (or stylus) is placed on a touch device.
   50.25 +Fields:
   50.26 +event.tfinger.touchId  - the Id of the touch device.
   50.27 +event.tfinger.fingerId - the Id of the finger which just went down.
   50.28 +event.tfinger.x        - the x coordinate of the touch (0..1)
   50.29 +event.tfinger.y        - the y coordinate of the touch (0..1)
   50.30 +event.tfinger.pressure - the pressure of the touch (0..1)
   50.31 +
   50.32 +SDL_FINGERMOTION:
   50.33 +Sent when a finger (or stylus) is moved on the touch device.
   50.34 +Fields:
   50.35 +Same as SDL_FINGERDOWN but with additional:
   50.36 +event.tfinger.dx       - change in x coordinate during this motion event.
   50.37 +event.tfinger.dy       - change in y coordinate during this motion event.
   50.38 +
   50.39 +SDL_FINGERUP:
   50.40 +Sent when a finger (or stylus) is lifted from the touch device.
   50.41 +Fields:
   50.42 +Same as SDL_FINGERDOWN.
   50.43 +
   50.44 +
   50.45 +===========================================================================
   50.46 +Functions
   50.47 +===========================================================================
   50.48 +SDL provides the ability to access the underlying Finger structures.
   50.49 +These structures should _never_ be modified.
   50.50 +
   50.51 +The following functions are included from SDL_touch.h
   50.52 +
   50.53 +To get a SDL_TouchID call SDL_GetTouchDevice(index).
   50.54 +This returns a SDL_TouchID.
   50.55 +IMPORTANT: If the touch has been removed, or there is no touch with the given ID, SDL_GetTouchID will return 0. Be sure to check for this!
   50.56 +
   50.57 +The number of touch devices can be queried with SDL_GetNumTouchDevices().
   50.58 +
   50.59 +A SDL_TouchID may be used to get pointers to SDL_Finger.
   50.60 +
   50.61 +SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
   50.62 +
   50.63 +The most common reason to access SDL_Finger is to query the fingers outside the event. In most cases accessing the fingers is using the event. This would be accomplished by code like the following:
   50.64 +
   50.65 +      float x = event.tfinger.x;
   50.66 +      float y = event.tfinger.y;
   50.67 +
   50.68 +
   50.69 +
   50.70 +To get a SDL_Finger, call SDL_GetTouchFinger(touchID,index), where touchID is a SDL_TouchID, and index is the requested finger.
   50.71 +This returns a SDL_Finger*, or NULL if the finger does not exist, or has been removed.
   50.72 +A SDL_Finger is guaranteed to be persistent for the duration of a touch, but it will be de-allocated as soon as the finger is removed. This occurs when the SDL_FINGERUP event is _added_ to the event queue, and thus _before_ the SDL_FINGERUP event is polled.
   50.73 +As a result, be very careful to check for NULL return values.
   50.74 +
   50.75 +A SDL_Finger has the following fields:
   50.76 +>x,y,pressure:
   50.77 +	The current coordinates of the touch.
   50.78 +>pressure:
   50.79 +	The pressure of the touch.
   50.80 +
   50.81 +===========================================================================
   50.82 +Notes
   50.83 +===========================================================================
   50.84 +For a complete example see test/testgesture.c
   50.85 +
   50.86 +Please direct questions/comments to:
   50.87 +   jim.tla+sdl_touch@gmail.com
   50.88 +   (original author, API was changed since)
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/docs/README-wince.md	Thu Jul 31 03:14:10 2014 -0300
    51.3 @@ -0,0 +1,10 @@
    51.4 +WinCE
    51.5 +=====
    51.6 +
    51.7 +Windows CE is no longer supported by SDL.
    51.8 +
    51.9 +We have left the CE support in SDL 1.2 for those that must have it, and we
   51.10 +have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
   51.11 +
   51.12 +--ryan.
   51.13 +
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/docs/README-windows.md	Thu Jul 31 03:14:10 2014 -0300
    52.3 @@ -0,0 +1,41 @@
    52.4 +Windows
    52.5 +================================================================================
    52.6 +
    52.7 +================================================================================
    52.8 +OpenGL ES 2.x support
    52.9 +================================================================================
   52.10 +
   52.11 +SDL has support for OpenGL ES 2.x under Windows via two alternative 
   52.12 +implementations. 
   52.13 +The most straightforward method consists in running your app in a system with 
   52.14 +a graphic card paired with a relatively recent (as of November of 2013) driver 
   52.15 +which supports the WGL_EXT_create_context_es2_profile extension. Vendors known 
   52.16 +to ship said extension on Windows currently include nVidia and Intel.
   52.17 +
   52.18 +The other method involves using the ANGLE library (https://code.google.com/p/angleproject/)
   52.19 +If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile
   52.20 +extension is found, SDL will try to load the libEGL.dll library provided by
   52.21 +ANGLE.
   52.22 +To obtain the ANGLE binaries, you can either compile from source from
   52.23 +https://chromium.googlesource.com/angle/angle or copy the relevant binaries from
   52.24 +a recent Chrome/Chromium install for Windows. The files you need are:
   52.25 +    
   52.26 +    * libEGL.dll
   52.27 +    * libGLESv2.dll
   52.28 +    * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler)
   52.29 +    or...
   52.30 +    * d3dcompiler_43.dll (supports Windows XP or later)
   52.31 +    
   52.32 +If you compile ANGLE from source, you can configure it so it does not need the
   52.33 +d3dcompiler_* DLL at all (for details on this, see their documentation). 
   52.34 +However, by default SDL will try to preload the d3dcompiler_46.dll to
   52.35 +comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to
   52.36 +support Windows XP) or to skip this step at all, you can use the 
   52.37 +SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details).
   52.38 +
   52.39 +Known Bugs:
   52.40 +    
   52.41 +    * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
   52.42 +      that there's a bug in the library which prevents the window contents from
   52.43 +      refreshing if this is set to anything other than the default value.
   52.44 +      
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/docs/README-winrt.md	Thu Jul 31 03:14:10 2014 -0300
    53.3 @@ -0,0 +1,44 @@
    53.4 +WinRT
    53.5 +================================================================================
    53.6 +
    53.7 +SDL/WinRT layer allows SDL2-based applications to run on many of Microsoft's
    53.8 +platforms that utilize the "Windows Runtime" (aka "WinRT") APIs.  WinRT apps
    53.9 +are currently always full-screen apps, run in what Microsoft calls their
   53.10 +"Modern" environment (aka. "Metro"), and are distributed via Microsoft-run
   53.11 +online stores.  Some of the operating systems that support such apps include:
   53.12 +
   53.13 +* Windows 8.x
   53.14 +* Windows RT 8.x (aka. Windows 8.x for ARM processors)
   53.15 +* Windows Phone 8.x
   53.16 +
   53.17 +To note, WinRT applications that run on Windows 8.x and/or Windows RT are often
   53.18 +called "Windows Store" apps.
   53.19 +
   53.20 +
   53.21 +--------------------------------------------------------------------------------
   53.22 +Requirements
   53.23 +--------------------------------------------------------------------------------
   53.24 +- Microsoft Visual C++ 2012 -- Free, "Express" editions may be used, so long
   53.25 +  as they include support for either "Windows Store" or "Windows Phone" apps.
   53.26 +  (NOTE: MSVC 2013 support is pending.  2012 projects may be converted to 2013
   53.27 +  projects by MSVC, in the meantime.)
   53.28 +- A valid Microsoft account -- This requirement is not imposed by SDL, but
   53.29 +  rather by Microsoft's Visual C++ toolchain.
   53.30 +
   53.31 +
   53.32 +--------------------------------------------------------------------------------
   53.33 +TODO
   53.34 +--------------------------------------------------------------------------------
   53.35 +- Finish adding support for MSVC 2013, and "Universal" WinRT apps, which
   53.36 +  support Windows 8.1, Windows Phone 8.1, and in the future, Xbox One and
   53.37 +  Windows Desktop.
   53.38 +- Finish adding support for the SDL satellite libraries (SDL_image, SDL_mixer,
   53.39 +  SDL_ttf, etc.)
   53.40 +- Create templates for both MSVC 2012 and MSVC 2013, and have the corresponding
   53.41 +  VSIX packages either include pre-built copies of SDL, or reference binaries
   53.42 +  available via MSVC's NuGet servers
   53.43 +- Write setup instructions that use MSVC 201x templates
   53.44 +- Write setup instructions that don't use MSVC 201x templates, and use
   53.45 +  MSVC project-to-project references, rather than pre-built binaries
   53.46 +- Write a list of caveats found in SDL/WinRT, such as APIs that don't work due
   53.47 +  to platform restrictions, or things that need further work
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/docs/README.md	Thu Jul 31 03:14:10 2014 -0300
    54.3 @@ -0,0 +1,62 @@
    54.4 +Simple DirectMedia Layer {#mainpage}
    54.5 +========================
    54.6 +
    54.7 +                                  (SDL)
    54.8 +
    54.9 +                                Version 2.0
   54.10 +
   54.11 +---
   54.12 +http://www.libsdl.org/
   54.13 +
   54.14 +Simple DirectMedia Layer is a cross-platform development library designed
   54.15 +to provide low level access to audio, keyboard, mouse, joystick, and graphics
   54.16 +hardware via OpenGL and Direct3D. It is used by video playback software,
   54.17 +emulators, and popular games including Valve's award winning catalog
   54.18 +and many Humble Bundle games. 42
   54.19 +
   54.20 +SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
   54.21 +Support for other platforms may be found in the source code.
   54.22 +
   54.23 +SDL is written in C, works natively with C++, and there are bindings 
   54.24 +available for several other languages, including C# and Python.
   54.25 +
   54.26 +This library is distributed under the zlib license, which can be found
   54.27 +in the file "COPYING.txt".
   54.28 +
   54.29 +The best way to learn how to use SDL is to check out the header files in
   54.30 +the "include" subdirectory and the programs in the "test" subdirectory.
   54.31 +The header files and test programs are well commented and always up to date.
   54.32 +
   54.33 +More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
   54.34 +
   54.35 +- [Android](README-android.md)
   54.36 +- [CMake](README-cmake.md)
   54.37 +- [DirectFB](README-directfb.md)
   54.38 +- [DynAPI](README-dynapi.md)
   54.39 +- [Gesture](README-gesture.md)
   54.40 +- [Mercurial](README-hg.md)
   54.41 +- [iOS](README-ios.md)
   54.42 +- [Linux](README-linux.md)
   54.43 +- [OS X](README-macosx.md)
   54.44 +- [Native Client](README-nacl.md)
   54.45 +- [Pandora](README-pandora.md)
   54.46 +- [Supported Platforms](README-platforms.md)
   54.47 +- [Porting information](README-porting.md)
   54.48 +- [PSP](README-psp.md)
   54.49 +- [Raspberry Pi](README-raspberrypi.md)
   54.50 +- [Touch](README-touch.md)
   54.51 +- [WinCE](README-wince.md)
   54.52 +- [Windows](README-windows.md)
   54.53 +- [WinRT](README-winrt.md)
   54.54 +
   54.55 +If you need help with the library, or just want to discuss SDL related
   54.56 +issues, you can join the [developers mailing list](http://www.libsdl.org/mailing-list.php)
   54.57 +
   54.58 +If you want to report bugs or contribute patches, please submit them to
   54.59 +[bugzilla](http://bugzilla.libsdl.org/)
   54.60 +
   54.61 +Enjoy!
   54.62 +
   54.63 +
   54.64 +Sam Lantinga <mailto:slouken@libsdl.org>
   54.65 +
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/docs/doxyfile	Thu Jul 31 03:14:10 2014 -0300
    55.3 @@ -0,0 +1,1559 @@
    55.4 +# Doxyfile 1.5.9
    55.5 +
    55.6 +# This file describes the settings to be used by the documentation system
    55.7 +# doxygen (www.doxygen.org) for a project
    55.8 +#
    55.9 +# All text after a hash (#) is considered a comment and will be ignored
   55.10 +# The format is:
   55.11 +#       TAG = value [value, ...]
   55.12 +# For lists items can also be appended using:
   55.13 +#       TAG += value [value, ...]
   55.14 +# Values that contain spaces should be placed between quotes (" ")
   55.15 +
   55.16 +#---------------------------------------------------------------------------
   55.17 +# Project related configuration options
   55.18 +#---------------------------------------------------------------------------
   55.19 +
   55.20 +# This tag specifies the encoding used for all characters in the config file 
   55.21 +# that follow. The default is UTF-8 which is also the encoding used for all 
   55.22 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
   55.23 +# iconv built into libc) for the transcoding. See 
   55.24 +# http://www.gnu.org/software/libiconv for the list of possible encodings.
   55.25 +
   55.26 +DOXYFILE_ENCODING      = UTF-8
   55.27 +
   55.28 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
   55.29 +# by quotes) that should identify the project.
   55.30 +
   55.31 +PROJECT_NAME           = SDL
   55.32 +
   55.33 +# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
   55.34 +# This could be handy for archiving the generated documentation or 
   55.35 +# if some version control system is used.
   55.36 +
   55.37 +PROJECT_NUMBER         = 2.0.0
   55.38 +
   55.39 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
   55.40 +# base path where the generated documentation will be put. 
   55.41 +# If a relative path is entered, it will be relative to the location 
   55.42 +# where doxygen was started. If left blank the current directory will be used.
   55.43 +
   55.44 +OUTPUT_DIRECTORY       = ./output
   55.45 +
   55.46 +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
   55.47 +# 4096 sub-directories (in 2 levels) under the output directory of each output 
   55.48 +# format and will distribute the generated files over these directories. 
   55.49 +# Enabling this option can be useful when feeding doxygen a huge amount of 
   55.50 +# source files, where putting all generated files in the same directory would 
   55.51 +# otherwise cause performance problems for the file system.
   55.52 +
   55.53 +CREATE_SUBDIRS         = YES
   55.54 +
   55.55 +# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
   55.56 +# documentation generated by doxygen is written. Doxygen will use this 
   55.57 +# information to generate all constant output in the proper language. 
   55.58 +# The default language is English, other supported languages are: 
   55.59 +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
   55.60 +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
   55.61 +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
   55.62 +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
   55.63 +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
   55.64 +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
   55.65 +
   55.66 +OUTPUT_LANGUAGE        = English
   55.67 +
   55.68 +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
   55.69 +# include brief member descriptions after the members that are listed in 
   55.70 +# the file and class documentation (similar to JavaDoc). 
   55.71 +# Set to NO to disable this.
   55.72 +
   55.73 +BRIEF_MEMBER_DESC      = YES
   55.74 +
   55.75 +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
   55.76 +# the brief description of a member or function before the detailed description. 
   55.77 +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
   55.78 +# brief descriptions will be completely suppressed.
   55.79 +
   55.80 +REPEAT_BRIEF           = YES
   55.81 +
   55.82 +# This tag implements a quasi-intelligent brief description abbreviator 
   55.83 +# that is used to form the text in various listings. Each string 
   55.84 +# in this list, if found as the leading text of the brief description, will be 
   55.85 +# stripped from the text and the result after processing the whole list, is 
   55.86 +# used as the annotated text. Otherwise, the brief description is used as-is. 
   55.87 +# If left blank, the following values are used ("$name" is automatically 
   55.88 +# replaced with the name of the entity): "The $name class" "The $name widget" 
   55.89 +# "The $name file" "is" "provides" "specifies" "contains" 
   55.90 +# "represents" "a" "an" "the"
   55.91 +
   55.92 +ABBREVIATE_BRIEF       = "The $name class" \
   55.93 +                         "The $name widget" \
   55.94 +                         "The $name file" \
   55.95 +                         is \
   55.96 +                         provides \
   55.97 +                         specifies \
   55.98 +                         contains \
   55.99 +                         represents \
  55.100 +                         a \
  55.101 +                         an \
  55.102 +                         the
  55.103 +
  55.104 +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
  55.105 +# Doxygen will generate a detailed section even if there is only a brief 
  55.106 +# description.
  55.107 +
  55.108 +ALWAYS_DETAILED_SEC    = YES
  55.109 +
  55.110 +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
  55.111 +# inherited members of a class in the documentation of that class as if those 
  55.112 +# members were ordinary class members. Constructors, destructors and assignment 
  55.113 +# operators of the base classes will not be shown.
  55.114 +
  55.115 +INLINE_INHERITED_MEMB  = NO
  55.116 +
  55.117 +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
  55.118 +# path before files name in the file list and in the header files. If set 
  55.119 +# to NO the shortest path that makes the file name unique will be used.
  55.120 +
  55.121 +FULL_PATH_NAMES        = YES
  55.122 +
  55.123 +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
  55.124 +# can be used to strip a user-defined part of the path. Stripping is 
  55.125 +# only done if one of the specified strings matches the left-hand part of 
  55.126 +# the path. The tag can be used to show relative paths in the file list. 
  55.127 +# If left blank the directory from which doxygen is run is used as the 
  55.128 +# path to strip.
  55.129 +
  55.130 +STRIP_FROM_PATH        =
  55.131 +
  55.132 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
  55.133 +# the path mentioned in the documentation of a class, which tells 
  55.134 +# the reader which header file to include in order to use a class. 
  55.135 +# If left blank only the name of the header file containing the class 
  55.136 +# definition is used. Otherwise one should specify the include paths that 
  55.137 +# are normally passed to the compiler using the -I flag.
  55.138 +
  55.139 +STRIP_FROM_INC_PATH    = 
  55.140 +
  55.141 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
  55.142 +# (but less readable) file names. This can be useful is your file systems 
  55.143 +# doesn't support long names like on DOS, Mac, or CD-ROM.
  55.144 +
  55.145 +SHORT_NAMES            = NO
  55.146 +
  55.147 +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
  55.148 +# will interpret the first line (until the first dot) of a JavaDoc-style 
  55.149 +# comment as the brief description. If set to NO, the JavaDoc 
  55.150 +# comments will behave just like regular Qt-style comments 
  55.151 +# (thus requiring an explicit @brief command for a brief description.)
  55.152 +
  55.153 +JAVADOC_AUTOBRIEF      = NO
  55.154 +
  55.155 +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
  55.156 +# interpret the first line (until the first dot) of a Qt-style 
  55.157 +# comment as the brief description. If set to NO, the comments 
  55.158 +# will behave just like regular Qt-style comments (thus requiring 
  55.159 +# an explicit \brief command for a brief description.)
  55.160 +
  55.161 +QT_AUTOBRIEF           = NO
  55.162 +
  55.163 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
  55.164 +# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
  55.165 +# comments) as a brief description. This used to be the default behaviour. 
  55.166 +# The new default is to treat a multi-line C++ comment block as a detailed 
  55.167 +# description. Set this tag to YES if you prefer the old behaviour instead.
  55.168 +
  55.169 +MULTILINE_CPP_IS_BRIEF = NO
  55.170 +
  55.171 +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
  55.172 +# member inherits the documentation from any documented member that it 
  55.173 +# re-implements.
  55.174 +
  55.175 +INHERIT_DOCS           = YES
  55.176 +
  55.177 +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
  55.178 +# a new page for each member. If set to NO, the documentation of a member will 
  55.179 +# be part of the file/class/namespace that contains it.
  55.180 +
  55.181 +SEPARATE_MEMBER_PAGES  = NO
  55.182 +
  55.183 +# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
  55.184 +# Doxygen uses this value to replace tabs by spaces in code fragments.
  55.185 +
  55.186 +TAB_SIZE               = 8
  55.187 +
  55.188 +# This tag can be used to specify a number of aliases that acts 
  55.189 +# as commands in the documentation. An alias has the form "name=value". 
  55.190 +# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
  55.191 +# put the command \sideeffect (or @sideeffect) in the documentation, which 
  55.192 +# will result in a user-defined paragraph with heading "Side Effects:". 
  55.193 +# You can put \n's in the value part of an alias to insert newlines.
  55.194 +
  55.195 +ALIASES                = "defined=\"\def\"" \
  55.196 +                         "discussion=\"\par Discussion:\n\""
  55.197 +
  55.198 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
  55.199 +# sources only. Doxygen will then generate output that is more tailored for C. 
  55.200 +# For instance, some of the names that are used will be different. The list 
  55.201 +# of all members will be omitted, etc.
  55.202 +
  55.203 +OPTIMIZE_OUTPUT_FOR_C  = YES
  55.204 +
  55.205 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
  55.206 +# sources only. Doxygen will then generate output that is more tailored for 
  55.207 +# Java. For instance, namespaces will be presented as packages, qualified 
  55.208 +# scopes will look different, etc.
  55.209 +
  55.210 +OPTIMIZE_OUTPUT_JAVA   = NO
  55.211 +
  55.212 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
  55.213 +# sources only. Doxygen will then generate output that is more tailored for 
  55.214 +# Fortran.
  55.215 +
  55.216 +OPTIMIZE_FOR_FORTRAN   = NO
  55.217 +
  55.218 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
  55.219 +# sources. Doxygen will then generate output that is tailored for 
  55.220 +# VHDL.
  55.221 +
  55.222 +OPTIMIZE_OUTPUT_VHDL   = NO
  55.223 +
  55.224 +# Doxygen selects the parser to use depending on the extension of the files it parses. 
  55.225 +# With this tag you can assign which parser to use for a given extension. 
  55.226 +# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
  55.227 +# The format is ext=language, where ext is a file extension, and language is one of 
  55.228 +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
  55.229 +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
  55.230 +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
  55.231 +# use: inc=Fortran f=C. Note that for custom extensions you also need to set
  55.232 +# FILE_PATTERNS otherwise the files are not read by doxygen.
  55.233 +
  55.234 +EXTENSION_MAPPING      = 
  55.235 +
  55.236 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
  55.237 +# to include (a tag file for) the STL sources as input, then you should 
  55.238 +# set this tag to YES in order to let doxygen match functions declarations and 
  55.239 +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
  55.240 +# func(std::string) {}). This also make the inheritance and collaboration 
  55.241 +# diagrams that involve STL classes more complete and accurate.
  55.242 +
  55.243 +BUILTIN_STL_SUPPORT    = YES
  55.244 +
  55.245 +# If you use Microsoft's C++/CLI language, you should set this option to YES to 
  55.246 +# enable parsing support.
  55.247 +
  55.248 +CPP_CLI_SUPPORT        = NO
  55.249 +
  55.250 +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
  55.251 +# Doxygen will parse them like normal C++ but will assume all classes use public 
  55.252 +# instead of private inheritance when no explicit protection keyword is present.
  55.253 +
  55.254 +SIP_SUPPORT            = NO
  55.255 +
  55.256 +# For Microsoft's IDL there are propget and propput attributes to indicate getter 
  55.257 +# and setter methods for a property. Setting this option to YES (the default) 
  55.258 +# will make doxygen to replace the get and set methods by a property in the 
  55.259 +# documentation. This will only work if the methods are indeed getting or 
  55.260 +# setting a simple type. If this is not the case, or you want to show the 
  55.261 +# methods anyway, you should set this option to NO.
  55.262 +
  55.263 +IDL_PROPERTY_SUPPORT   = YES
  55.264 +
  55.265 +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
  55.266 +# tag is set to YES, then doxygen will reuse the documentation of the first 
  55.267 +# member in the group (if any) for the other members of the group. By default 
  55.268 +# all members of a group must be documented explicitly.
  55.269 +
  55.270 +DISTRIBUTE_GROUP_DOC   = NO
  55.271 +
  55.272 +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
  55.273 +# the same type (for instance a group of public functions) to be put as a 
  55.274 +# subgroup of that type (e.g. under the Public Functions section). Set it to 
  55.275 +# NO to prevent subgrouping. Alternatively, this can be done per class using 
  55.276 +# the \nosubgrouping command.
  55.277 +
  55.278 +SUBGROUPING            = YES
  55.279 +
  55.280 +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
  55.281 +# is documented as struct, union, or enum with the name of the typedef. So 
  55.282 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
  55.283 +# with name TypeT. When disabled the typedef will appear as a member of a file, 
  55.284 +# namespace, or class. And the struct will be named TypeS. This can typically 
  55.285 +# be useful for C code in case the coding convention dictates that all compound 
  55.286 +# types are typedef'ed and only the typedef is referenced, never the tag name.
  55.287 +
  55.288 +TYPEDEF_HIDES_STRUCT   = YES
  55.289 +
  55.290 +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
  55.291 +# determine which symbols to keep in memory and which to flush to disk. 
  55.292 +# When the cache is full, less often used symbols will be written to disk. 
  55.293 +# For small to medium size projects (<1000 input files) the default value is 
  55.294 +# probably good enough. For larger projects a too small cache size can cause 
  55.295 +# doxygen to be busy swapping symbols to and from disk most of the time 
  55.296 +# causing a significant performance penality. 
  55.297 +# If the system has enough physical memory increasing the cache will improve the 
  55.298 +# performance by keeping more symbols in memory. Note that the value works on 
  55.299 +# a logarithmic scale so increasing the size by one will rougly double the 
  55.300 +# memory usage. The cache size is given by this formula: 
  55.301 +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
  55.302 +# corresponding to a cache size of 2^16 = 65536 symbols
  55.303 +
  55.304 +SYMBOL_CACHE_SIZE      = 0
  55.305 +
  55.306 +#---------------------------------------------------------------------------
  55.307 +# Build related configuration options
  55.308 +#---------------------------------------------------------------------------
  55.309 +
  55.310 +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
  55.311 +# documentation are documented, even if no documentation was available. 
  55.312 +# Private class members and static file members will be hidden unless 
  55.313 +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  55.314 +
  55.315 +EXTRACT_ALL            = YES
  55.316 +
  55.317 +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
  55.318 +# will be included in the documentation.
  55.319 +
  55.320 +EXTRACT_PRIVATE        = YES
  55.321 +
  55.322 +# If the EXTRACT_STATIC tag is set to YES all static members of a file 
  55.323 +# will be included in the documentation.
  55.324 +
  55.325 +EXTRACT_STATIC         = YES
  55.326 +
  55.327 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
  55.328 +# defined locally in source files will be included in the documentation. 
  55.329 +# If set to NO only classes defined in header files are included.
  55.330 +
  55.331 +EXTRACT_LOCAL_CLASSES  = YES
  55.332 +
  55.333 +# This flag is only useful for Objective-C code. When set to YES local 
  55.334 +# methods, which are defined in the implementation section but not in 
  55.335 +# the interface are included in the documentation. 
  55.336 +# If set to NO (the default) only methods in the interface are included.
  55.337 +
  55.338 +EXTRACT_LOCAL_METHODS  = YES
  55.339 +
  55.340 +# If this flag is set to YES, the members of anonymous namespaces will be 
  55.341 +# extracted and appear in the documentation as a namespace called 
  55.342 +# 'anonymous_namespace{file}', where file will be replaced with the base 
  55.343 +# name of the file that contains the anonymous namespace. By default 
  55.344 +# anonymous namespace are hidden.
  55.345 +
  55.346 +EXTRACT_ANON_NSPACES   = YES
  55.347 +
  55.348 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
  55.349 +# undocumented members of documented classes, files or namespaces. 
  55.350 +# If set to NO (the default) these members will be included in the 
  55.351 +# various overviews, but no documentation section is generated. 
  55.352 +# This option has no effect if EXTRACT_ALL is enabled.
  55.353 +
  55.354 +HIDE_UNDOC_MEMBERS     = NO
  55.355 +
  55.356 +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
  55.357 +# undocumented classes that are normally visible in the class hierarchy. 
  55.358 +# If set to NO (the default) these classes will be included in the various 
  55.359 +# overviews. This option has no effect if EXTRACT_ALL is enabled.
  55.360 +
  55.361 +HIDE_UNDOC_CLASSES     = NO
  55.362 +
  55.363 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
  55.364 +# friend (class|struct|union) declarations. 
  55.365 +# If set to NO (the default) these declarations will be included in the 
  55.366 +# documentation.
  55.367 +
  55.368 +HIDE_FRIEND_COMPOUNDS  = NO
  55.369 +
  55.370 +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
  55.371 +# documentation blocks found inside the body of a function. 
  55.372 +# If set to NO (the default) these blocks will be appended to the 
  55.373 +# function's detailed documentation block.
  55.374 +
  55.375 +HIDE_IN_BODY_DOCS      = NO
  55.376 +
  55.377 +# The INTERNAL_DOCS tag determines if documentation 
  55.378 +# that is typed after a \internal command is included. If the tag is set 
  55.379 +# to NO (the default) then the documentation will be excluded. 
  55.380 +# Set it to YES to include the internal documentation.
  55.381 +
  55.382 +INTERNAL_DOCS          = YES
  55.383 +
  55.384 +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
  55.385 +# file names in lower-case letters. If set to YES upper-case letters are also 
  55.386 +# allowed. This is useful if you have classes or files whose names only differ 
  55.387 +# in case and if your file system supports case sensitive file names. Windows 
  55.388 +# and Mac users are advised to set this option to NO.
  55.389 +
  55.390 +CASE_SENSE_NAMES       = NO
  55.391 +
  55.392 +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
  55.393 +# will show members with their full class and namespace scopes in the 
  55.394 +# documentation. If set to YES the scope will be hidden.
  55.395 +
  55.396 +HIDE_SCOPE_NAMES       = NO
  55.397 +
  55.398 +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
  55.399 +# will put a list of the files that are included by a file in the documentation 
  55.400 +# of that file.
  55.401 +
  55.402 +SHOW_INCLUDE_FILES     = YES
  55.403 +
  55.404 +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
  55.405 +# is inserted in the documentation for inline members.
  55.406 +
  55.407 +INLINE_INFO            = YES
  55.408 +
  55.409 +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
  55.410 +# will sort the (detailed) documentation of file and class members 
  55.411 +# alphabetically by member name. If set to NO the members will appear in 
  55.412 +# declaration order.
  55.413 +
  55.414 +SORT_MEMBER_DOCS       = YES
  55.415 +
  55.416 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
  55.417 +# brief documentation of file, namespace and class members alphabetically 
  55.418 +# by member name. If set to NO (the default) the members will appear in 
  55.419 +# declaration order.
  55.420 +
  55.421 +SORT_BRIEF_DOCS        = NO
  55.422 +
  55.423 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
  55.424 +# hierarchy of group names into alphabetical order. If set to NO (the default) 
  55.425 +# the group names will appear in their defined order.
  55.426 +
  55.427 +SORT_GROUP_NAMES       = NO
  55.428 +
  55.429 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
  55.430 +# sorted by fully-qualified names, including namespaces. If set to 
  55.431 +# NO (the default), the class list will be sorted only by class name, 
  55.432 +# not including the namespace part. 
  55.433 +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
  55.434 +# Note: This option applies only to the class list, not to the 
  55.435 +# alphabetical list.
  55.436 +
  55.437 +SORT_BY_SCOPE_NAME     = NO
  55.438 +
  55.439 +# The GENERATE_TODOLIST tag can be used to enable (YES) or 
  55.440 +# disable (NO) the todo list. This list is created by putting \todo 
  55.441 +# commands in the documentation.
  55.442 +
  55.443 +GENERATE_TODOLIST      = YES
  55.444 +
  55.445 +# The GENERATE_TESTLIST tag can be used to enable (YES) or 
  55.446 +# disable (NO) the test list. This list is created by putting \test 
  55.447 +# commands in the documentation.
  55.448 +
  55.449 +GENERATE_TESTLIST      = YES
  55.450 +
  55.451 +# The GENERATE_BUGLIST tag can be used to enable (YES) or 
  55.452 +# disable (NO) the bug list. This list is created by putting \bug 
  55.453 +# commands in the documentation.
  55.454 +
  55.455 +GENERATE_BUGLIST       = YES
  55.456 +
  55.457 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
  55.458 +# disable (NO) the deprecated list. This list is created by putting 
  55.459 +# \deprecated commands in the documentation.
  55.460 +
  55.461 +GENERATE_DEPRECATEDLIST= YES
  55.462 +
  55.463 +# The ENABLED_SECTIONS tag can be used to enable conditional 
  55.464 +# documentation sections, marked by \if sectionname ... \endif.
  55.465 +
  55.466 +ENABLED_SECTIONS       = 
  55.467 +
  55.468 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
  55.469 +# the initial value of a variable or define consists of for it to appear in 
  55.470 +# the documentation. If the initializer consists of more lines than specified 
  55.471 +# here it will be hidden. Use a value of 0 to hide initializers completely. 
  55.472 +# The appearance of the initializer of individual variables and defines in the 
  55.473 +# documentation can be controlled using \showinitializer or \hideinitializer 
  55.474 +# command in the documentation regardless of this setting.
  55.475 +
  55.476 +MAX_INITIALIZER_LINES  = 30
  55.477 +
  55.478 +# If the sources in your project are distributed over multiple directories 
  55.479 +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
  55.480 +# in the documentation. The default is NO.
  55.481 +
  55.482 +SHOW_DIRECTORIES       = YES
  55.483 +
  55.484 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
  55.485 +# This will remove the Files entry from the Quick Index and from the 
  55.486 +# Folder Tree View (if specified). The default is YES.
  55.487 +
  55.488 +SHOW_FILES             = YES
  55.489 +
  55.490 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
  55.491 +# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
  55.492 +# and from the Folder Tree View (if specified). The default is YES.
  55.493 +
  55.494 +SHOW_NAMESPACES        = YES
  55.495 +
  55.496 +# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
  55.497 +# doxygen should invoke to get the current version for each file (typically from 
  55.498 +# the version control system). Doxygen will invoke the program by executing (via 
  55.499 +# popen()) the command <command> <input-file>, where <command> is the value of 
  55.500 +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
  55.501 +# provided by doxygen. Whatever the program writes to standard output 
  55.502 +# is used as the file version. See the manual for examples.
  55.503 +
  55.504 +FILE_VERSION_FILTER    = 
  55.505 +
  55.506 +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
  55.507 +# doxygen. The layout file controls the global structure of the generated output files 
  55.508 +# in an output format independent way. The create the layout file that represents 
  55.509 +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
  55.510 +# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
  55.511 +# of the layout file.
  55.512 +
  55.513 +LAYOUT_FILE            = 
  55.514 +
  55.515 +#---------------------------------------------------------------------------
  55.516 +# configuration options related to warning and progress messages
  55.517 +#---------------------------------------------------------------------------
  55.518 +
  55.519 +# The QUIET tag can be used to turn on/off the messages that are generated 
  55.520 +# by doxygen. Possible values are YES and NO. If left blank NO is used.
  55.521 +
  55.522 +QUIET                  = NO
  55.523 +
  55.524 +# The WARNINGS tag can be used to turn on/off the warning messages that are 
  55.525 +# generated by doxygen. Possible values are YES and NO. If left blank 
  55.526 +# NO is used.
  55.527 +
  55.528 +WARNINGS               = YES
  55.529 +
  55.530 +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
  55.531 +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
  55.532 +# automatically be disabled.
  55.533 +
  55.534 +WARN_IF_UNDOCUMENTED   = YES
  55.535 +
  55.536 +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
  55.537 +# potential errors in the documentation, such as not documenting some 
  55.538 +# parameters in a documented function, or documenting parameters that 
  55.539 +# don't exist or using markup commands wrongly.
  55.540 +
  55.541 +WARN_IF_DOC_ERROR      = YES
  55.542 +
  55.543 +# This WARN_NO_PARAMDOC option can be abled to get warnings for 
  55.544 +# functions that are documented, but have no documentation for their parameters 
  55.545 +# or return value. If set to NO (the default) doxygen will only warn about 
  55.546 +# wrong or incomplete parameter documentation, but not about the absence of 
  55.547 +# documentation.
  55.548 +
  55.549 +WARN_NO_PARAMDOC       = YES
  55.550 +
  55.551 +# The WARN_FORMAT tag determines the format of the warning messages that 
  55.552 +# doxygen can produce. The string should contain the $file, $line, and $text 
  55.553 +# tags, which will be replaced by the file and line number from which the 
  55.554 +# warning originated and the warning text. Optionally the format may contain 
  55.555 +# $version, which will be replaced by the version of the file (if it could 
  55.556 +# be obtained via FILE_VERSION_FILTER)
  55.557 +
  55.558 +WARN_FORMAT            = "$file:$line: $text"
  55.559 +
  55.560 +# The WARN_LOGFILE tag can be used to specify a file to which warning 
  55.561 +# and error messages should be written. If left blank the output is written 
  55.562 +# to stderr.
  55.563 +
  55.564 +WARN_LOGFILE           = ./doxygen_warn.txt
  55.565 +
  55.566 +#---------------------------------------------------------------------------
  55.567 +# configuration options related to the input files
  55.568 +#---------------------------------------------------------------------------
  55.569 +
  55.570 +# The INPUT tag can be used to specify the files and/or directories that contain 
  55.571 +# documented source files. You may enter file names like "myfile.cpp" or 
  55.572 +# directories like "/usr/src/myproject". Separate the files or directories 
  55.573 +# with spaces.
  55.574 +
  55.575 +INPUT                  = . ../include
  55.576 +
  55.577 +# This tag can be used to specify the character encoding of the source files 
  55.578 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
  55.579 +# also the default input encoding. Doxygen uses libiconv (or the iconv built 
  55.580 +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
  55.581 +# the list of possible encodings.
  55.582 +
  55.583 +INPUT_ENCODING         = UTF-8
  55.584 +
  55.585 +# If the value of the INPUT tag contains directories, you can use the 
  55.586 +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  55.587 +# and *.h) to filter out the source-files in the directories. If left 
  55.588 +# blank the following patterns are tested: 
  55.589 +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
  55.590 +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  55.591 +
  55.592 +FILE_PATTERNS          = *.c \
  55.593 +                         *.cc \
  55.594 +                         *.cxx \
  55.595 +                         *.cpp \
  55.596 +                         *.c++ \
  55.597 +                         *.d \
  55.598 +                         *.java \
  55.599 +                         *.ii \
  55.600 +                         *.ixx \
  55.601 +                         *.ipp \
  55.602 +                         *.i++ \
  55.603 +                         *.inl \
  55.604 +                         *.h \
  55.605 +                         *.hh \
  55.606 +                         *.hxx \
  55.607 +                         *.hpp \
  55.608 +                         *.h++ \
  55.609 +                         *.idl \
  55.610 +                         *.odl \
  55.611 +                         *.cs \
  55.612 +                         *.php \
  55.613 +                         *.php3 \
  55.614 +                         *.inc \
  55.615 +                         *.m \
  55.616 +                         *.mm \
  55.617 +                         *.dox \
  55.618 +                         *.py \
  55.619 +                         *.f90 \
  55.620 +                         *.f \
  55.621 +                         *.vhd \
  55.622 +                         *.vhdl \
  55.623 +                         *.h.in \
  55.624 +                         *.h.default \
  55.625 +                         *.md
  55.626 +
  55.627 +# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
  55.628 +# should be searched for input files as well. Possible values are YES and NO. 
  55.629 +# If left blank NO is used.
  55.630 +
  55.631 +RECURSIVE              = YES
  55.632 +
  55.633 +# The EXCLUDE tag can be used to specify files and/or directories that should 
  55.634 +# excluded from the INPUT source files. This way you can easily exclude a 
  55.635 +# subdirectory from a directory tree whose root is specified with the INPUT tag.
  55.636 +
  55.637 +EXCLUDE                = ../include/SDL_opengles2_gl2ext.h \
  55.638 +                         ../include/SDL_opengles2_gl2platform.h \
  55.639 +                         ../include/SDL_opengles2_khrplatform.h \
  55.640 +                         ../include/SDL_opengl_glext.h \
  55.641 +                         ../include/SDL_opengles2_gl2.h \
  55.642 +                         ../include/SDL_opengles2.h \
  55.643 +                         ../include/SDL_opengles.h \
  55.644 +                         ../include/SDL_opengl.h \
  55.645 +
  55.646 +
  55.647 +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
  55.648 +# directories that are symbolic links (a Unix filesystem feature) are excluded 
  55.649 +# from the input.
  55.650 +
  55.651 +EXCLUDE_SYMLINKS       = NO
  55.652 +
  55.653 +# If the value of the INPUT tag contains directories, you can use the 
  55.654 +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
  55.655 +# certain files from those directories. Note that the wildcards are matched 
  55.656 +# against the file with absolute path, so to exclude all test directories 
  55.657 +# for example use the pattern */test/*
  55.658 +
  55.659 +EXCLUDE_PATTERNS       =
  55.660 +
  55.661 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
  55.662 +# (namespaces, classes, functions, etc.) that should be excluded from the 
  55.663 +# output. The symbol name can be a fully qualified name, a word, or if the 
  55.664 +# wildcard * is used, a substring. Examples: ANamespace, AClass, 
  55.665 +# AClass::ANamespace, ANamespace::*Test
  55.666 +
  55.667 +EXCLUDE_SYMBOLS        = 
  55.668 +
  55.669 +# The EXAMPLE_PATH tag can be used to specify one or more files or 
  55.670 +# directories that contain example code fragments that are included (see 
  55.671 +# the \include command).
  55.672 +
  55.673 +EXAMPLE_PATH           =
  55.674 +
  55.675 +# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
  55.676 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  55.677 +# and *.h) to filter out the source-files in the directories. If left 
  55.678 +# blank all files are included.
  55.679 +
  55.680 +EXAMPLE_PATTERNS       = *
  55.681 +
  55.682 +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
  55.683 +# searched for input files to be used with the \include or \dontinclude 
  55.684 +# commands irrespective of the value of the RECURSIVE tag. 
  55.685 +# Possible values are YES and NO. If left blank NO is used.
  55.686 +
  55.687 +EXAMPLE_RECURSIVE      = YES
  55.688 +
  55.689 +# The IMAGE_PATH tag can be used to specify one or more files or 
  55.690 +# directories that contain image that are included in the documentation (see 
  55.691 +# the \image command).
  55.692 +
  55.693 +IMAGE_PATH             = 
  55.694 +
  55.695 +# The INPUT_FILTER tag can be used to specify a program that doxygen should 
  55.696 +# invoke to filter for each input file. Doxygen will invoke the filter program 
  55.697 +# by executing (via popen()) the command <filter> <input-file>, where <filter> 
  55.698 +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
  55.699 +# input file. Doxygen will then use the output that the filter program writes 
  55.700 +# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  55.701 +# ignored.
  55.702 +
  55.703 +INPUT_FILTER           = 
  55.704 +
  55.705 +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
  55.706 +# basis.  Doxygen will compare the file name with each pattern and apply the 
  55.707 +# filter if there is a match.  The filters are a list of the form: 
  55.708 +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
  55.709 +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
  55.710 +# is applied to all files.
  55.711 +
  55.712 +FILTER_PATTERNS        = 
  55.713 +
  55.714 +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
  55.715 +# INPUT_FILTER) will be used to filter the input files when producing source 
  55.716 +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  55.717 +
  55.718 +FILTER_SOURCE_FILES    = NO
  55.719 +
  55.720 +#---------------------------------------------------------------------------
  55.721 +# configuration options related to source browsing
  55.722 +#---------------------------------------------------------------------------
  55.723 +
  55.724 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
  55.725 +# be generated. Documented entities will be cross-referenced with these sources. 
  55.726 +# Note: To get rid of all source code in the generated output, make sure also 
  55.727 +# VERBATIM_HEADERS is set to NO.
  55.728 +
  55.729 +SOURCE_BROWSER         = YES
  55.730 +
  55.731 +# Setting the INLINE_SOURCES tag to YES will include the body 
  55.732 +# of functions and classes directly in the documentation.
  55.733 +
  55.734 +INLINE_SOURCES         = YES
  55.735 +
  55.736 +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
  55.737 +# doxygen to hide any special comment blocks from generated source code 
  55.738 +# fragments. Normal C and C++ comments will always remain visible.
  55.739 +
  55.740 +STRIP_CODE_COMMENTS    = NO
  55.741 +
  55.742 +# If the REFERENCED_BY_RELATION tag is set to YES 
  55.743 +# then for each documented function all documented 
  55.744 +# functions referencing it will be listed.
  55.745 +
  55.746 +REFERENCED_BY_RELATION = YES
  55.747 +
  55.748 +# If the REFERENCES_RELATION tag is set to YES 
  55.749 +# then for each documented function all documented entities 
  55.750 +# called/used by that function will be listed.
  55.751 +
  55.752 +REFERENCES_RELATION    = YES
  55.753 +
  55.754 +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
  55.755 +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
  55.756 +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
  55.757 +# link to the source code.  Otherwise they will link to the documentation.
  55.758 +
  55.759 +REFERENCES_LINK_SOURCE = YES
  55.760 +
  55.761 +# If the USE_HTAGS tag is set to YES then the references to source code 
  55.762 +# will point to the HTML generated by the htags(1) tool instead of doxygen 
  55.763 +# built-in source browser. The htags tool is part of GNU's global source 
  55.764 +# tagging system (see http://www.gnu.org/software/global/global.html). You 
  55.765 +# will need version 4.8.6 or higher.
  55.766 +
  55.767 +USE_HTAGS              = NO
  55.768 +
  55.769 +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
  55.770 +# will generate a verbatim copy of the header file for each class for 
  55.771 +# which an include is specified. Set to NO to disable this.
  55.772 +
  55.773 +VERBATIM_HEADERS       = YES
  55.774 +
  55.775 +#---------------------------------------------------------------------------
  55.776 +# configuration options related to the alphabetical class index
  55.777 +#---------------------------------------------------------------------------
  55.778 +
  55.779 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
  55.780 +# of all compounds will be generated. Enable this if the project 
  55.781 +# contains a lot of classes, structs, unions or interfaces.
  55.782 +
  55.783 +ALPHABETICAL_INDEX     = YES
  55.784 +
  55.785 +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
  55.786 +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
  55.787 +# in which this list will be split (can be a number in the range [1..20])
  55.788 +
  55.789 +COLS_IN_ALPHA_INDEX    = 5
  55.790 +
  55.791 +# In case all classes in a project start with a common prefix, all 
  55.792 +# classes will be put under the same header in the alphabetical index. 
  55.793 +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
  55.794 +# should be ignored while generating the index headers.
  55.795 +
  55.796 +IGNORE_PREFIX          = SDL_ \
  55.797 +                         SDL
  55.798 +
  55.799 +#---------------------------------------------------------------------------
  55.800 +# configuration options related to the HTML output
  55.801 +#---------------------------------------------------------------------------
  55.802 +
  55.803 +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
  55.804 +# generate HTML output.
  55.805 +
  55.806 +GENERATE_HTML          = YES
  55.807 +
  55.808 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
  55.809 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
  55.810 +# put in front of it. If left blank `html' will be used as the default path.
  55.811 +
  55.812 +HTML_OUTPUT            = html
  55.813 +
  55.814 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
  55.815 +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
  55.816 +# doxygen will generate files with .html extension.
  55.817 +
  55.818 +HTML_FILE_EXTENSION    = .html
  55.819 +
  55.820 +# The HTML_HEADER tag can be used to specify a personal HTML header for 
  55.821 +# each generated HTML page. If it is left blank doxygen will generate a 
  55.822 +# standard header.
  55.823 +
  55.824 +HTML_HEADER            = 
  55.825 +
  55.826 +# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  55.827 +# each generated HTML page. If it is left blank doxygen will generate a 
  55.828 +# standard footer.
  55.829 +
  55.830 +HTML_FOOTER            = 
  55.831 +
  55.832 +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  55.833 +# style sheet that is used by each HTML page. It can be used to 
  55.834 +# fine-tune the look of the HTML output. If the tag is left blank doxygen 
  55.835 +# will generate a default style sheet. Note that doxygen will try to copy 
  55.836 +# the style sheet file to the HTML output directory, so don't put your own 
  55.837 +# stylesheet in the HTML output directory as well, or it will be erased!
  55.838 +
  55.839 +HTML_STYLESHEET        = 
  55.840 +
  55.841 +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
  55.842 +# files or namespaces will be aligned in HTML using tables. If set to 
  55.843 +# NO a bullet list will be used.
  55.844 +
  55.845 +HTML_ALIGN_MEMBERS     = YES
  55.846 +
  55.847 +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
  55.848 +# documentation will contain sections that can be hidden and shown after the 
  55.849 +# page has loaded. For this to work a browser that supports 
  55.850 +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
  55.851 +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
  55.852 +
  55.853 +HTML_DYNAMIC_SECTIONS  = YES
  55.854 +
  55.855 +# If the GENERATE_DOCSET tag is set to YES, additional index files 
  55.856 +# will be generated that can be used as input for Apple's Xcode 3 
  55.857 +# integrated development environment, introduced with OSX 10.5 (Leopard). 
  55.858 +# To create a documentation set, doxygen will generate a Makefile in the 
  55.859 +# HTML output directory. Running make will produce the docset in that 
  55.860 +# directory and running "make install" will install the docset in 
  55.861 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
  55.862 +# it at startup. 
  55.863 +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
  55.864 +
  55.865 +GENERATE_DOCSET        = NO
  55.866 +
  55.867 +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
  55.868 +# feed. A documentation feed provides an umbrella under which multiple 
  55.869 +# documentation sets from a single provider (such as a company or product suite) 
  55.870 +# can be grouped.
  55.871 +
  55.872 +DOCSET_FEEDNAME        = "SDL 2.0 Doxygen"
  55.873 +
  55.874 +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
  55.875 +# should uniquely identify the documentation set bundle. This should be a 
  55.876 +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
  55.877 +# will append .docset to the name.
  55.878 +
  55.879 +DOCSET_BUNDLE_ID       = org.libsdl.sdl20
  55.880 +
  55.881 +# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
  55.882 +# will be generated that can be used as input for tools like the 
  55.883 +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
  55.884 +# of the generated HTML documentation.
  55.885 +
  55.886 +GENERATE_HTMLHELP      = NO
  55.887 +
  55.888 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
  55.889 +# be used to specify the file name of the resulting .chm file. You 
  55.890 +# can add a path in front of the file if the result should not be 
  55.891 +# written to the html output directory.
  55.892 +
  55.893 +CHM_FILE               = ./sdl20.chm
  55.894 +
  55.895 +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
  55.896 +# be used to specify the location (absolute path including file name) of 
  55.897 +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
  55.898 +# the HTML help compiler on the generated index.hhp.
  55.899 +
  55.900 +HHC_LOCATION           = 
  55.901 +
  55.902 +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
  55.903 +# controls if a separate .chi index file is generated (YES) or that 
  55.904 +# it should be included in the master .chm file (NO).
  55.905 +
  55.906 +GENERATE_CHI           = NO
  55.907 +
  55.908 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
  55.909 +# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
  55.910 +# content.
  55.911 +
  55.912 +CHM_INDEX_ENCODING     = 
  55.913 +
  55.914 +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
  55.915 +# controls whether a binary table of contents is generated (YES) or a 
  55.916 +# normal table of contents (NO) in the .chm file.
  55.917 +
  55.918 +BINARY_TOC             = NO
  55.919 +
  55.920 +# The TOC_EXPAND flag can be set to YES to add extra items for group members 
  55.921 +# to the contents of the HTML help documentation and to the tree view.
  55.922 +
  55.923 +TOC_EXPAND             = YES
  55.924 +
  55.925 +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
  55.926 +# are set, an additional index file will be generated that can be used as input for 
  55.927 +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
  55.928 +# HTML documentation.
  55.929 +
  55.930 +GENERATE_QHP           = NO
  55.931 +
  55.932 +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
  55.933 +# be used to specify the file name of the resulting .qch file. 
  55.934 +# The path specified is relative to the HTML output folder.
  55.935 +
  55.936 +QCH_FILE               = 
  55.937 +
  55.938 +# The QHP_NAMESPACE tag specifies the namespace to use when generating 
  55.939 +# Qt Help Project output. For more information please see 
  55.940 +# http://doc.trolltech.com/qthelpproject.html#namespace
  55.941 +
  55.942 +QHP_NAMESPACE          = 
  55.943 +
  55.944 +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
  55.945 +# Qt Help Project output. For more information please see 
  55.946 +# http://doc.trolltech.com/qthelpproject.html#virtual-folders
  55.947 +
  55.948 +QHP_VIRTUAL_FOLDER     = doc
  55.949 +
  55.950 +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
  55.951 +# For more information please see 
  55.952 +# http://doc.trolltech.com/qthelpproject.html#custom-filters
  55.953 +
  55.954 +QHP_CUST_FILTER_NAME   = 
  55.955 +
  55.956 +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
  55.957 +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
  55.958 +
  55.959 +QHP_CUST_FILTER_ATTRS  = 
  55.960 +
  55.961 +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
  55.962 +# filter section matches. 
  55.963 +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
  55.964 +
  55.965 +QHP_SECT_FILTER_ATTRS  = 
  55.966 +
  55.967 +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
  55.968 +# be used to specify the location of Qt's qhelpgenerator. 
  55.969 +# If non-empty doxygen will try to run qhelpgenerator on the generated 
  55.970 +# .qhp file.
  55.971 +
  55.972 +QHG_LOCATION           = 
  55.973 +
  55.974 +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
  55.975 +# top of each HTML page. The value NO (the default) enables the index and 
  55.976 +# the value YES disables it.
  55.977 +
  55.978 +DISABLE_INDEX          = NO
  55.979 +
  55.980 +# This tag can be used to set the number of enum values (range [1..20]) 
  55.981 +# that doxygen will group on one line in the generated HTML documentation.
  55.982 +
  55.983 +ENUM_VALUES_PER_LINE   = 1
  55.984 +
  55.985 +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
  55.986 +# structure should be generated to display hierarchical information. 
  55.987 +# If the tag value is set to FRAME, a side panel will be generated 
  55.988 +# containing a tree-like index structure (just like the one that 
  55.989 +# is generated for HTML Help). For this to work a browser that supports 
  55.990 +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
  55.991 +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
  55.992 +# probably better off using the HTML help feature. Other possible values 
  55.993 +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
  55.994 +# and Class Hierarchy pages using a tree view instead of an ordered list; 
  55.995 +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
  55.996 +# disables this behavior completely. For backwards compatibility with previous 
  55.997 +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
  55.998 +# respectively.
  55.999 +
 55.1000 +GENERATE_TREEVIEW      = ALL
 55.1001 +
 55.1002 +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
 55.1003 +# used to set the initial width (in pixels) of the frame in which the tree 
 55.1004 +# is shown.
 55.1005 +
 55.1006 +TREEVIEW_WIDTH         = 250
 55.1007 +
 55.1008 +# Use this tag to change the font size of Latex formulas included 
 55.1009 +# as images in the HTML documentation. The default is 10. Note that 
 55.1010 +# when you change the font size after a successful doxygen run you need 
 55.1011 +# to manually remove any form_*.png images from the HTML output directory 
 55.1012 +# to force them to be regenerated.
 55.1013 +
 55.1014 +FORMULA_FONTSIZE       = 10
 55.1015 +
 55.1016 +#---------------------------------------------------------------------------
 55.1017 +# configuration options related to the LaTeX output
 55.1018 +#---------------------------------------------------------------------------
 55.1019 +
 55.1020 +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
 55.1021 +# generate Latex output.
 55.1022 +
 55.1023 +GENERATE_LATEX         = NO
 55.1024 +
 55.1025 +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
 55.1026 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 55.1027 +# put in front of it. If left blank `latex' will be used as the default path.
 55.1028 +
 55.1029 +LATEX_OUTPUT           = latex
 55.1030 +
 55.1031 +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
 55.1032 +# invoked. If left blank `latex' will be used as the default command name.
 55.1033 +
 55.1034 +LATEX_CMD_NAME         = latex
 55.1035 +
 55.1036 +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
 55.1037 +# generate index for LaTeX. If left blank `makeindex' will be used as the 
 55.1038 +# default command name.
 55.1039 +
 55.1040 +MAKEINDEX_CMD_NAME     = makeindex
 55.1041 +
 55.1042 +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
 55.1043 +# LaTeX documents. This may be useful for small projects and may help to 
 55.1044 +# save some trees in general.
 55.1045 +
 55.1046 +COMPACT_LATEX          = NO
 55.1047 +
 55.1048 +# The PAPER_TYPE tag can be used to set the paper type that is used 
 55.1049 +# by the printer. Possible values are: a4, a4wide, letter, legal and 
 55.1050 +# executive. If left blank a4wide will be used.
 55.1051 +
 55.1052 +PAPER_TYPE             = a4wide
 55.1053 +
 55.1054 +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
 55.1055 +# packages that should be included in the LaTeX output.
 55.1056 +
 55.1057 +EXTRA_PACKAGES         = 
 55.1058 +
 55.1059 +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
 55.1060 +# the generated latex document. The header should contain everything until 
 55.1061 +# the first chapter. If it is left blank doxygen will generate a 
 55.1062 +# standard header. Notice: only use this tag if you know what you are doing!
 55.1063 +
 55.1064 +LATEX_HEADER           = 
 55.1065 +
 55.1066 +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
 55.1067 +# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
 55.1068 +# contain links (just like the HTML output) instead of page references 
 55.1069 +# This makes the output suitable for online browsing using a pdf viewer.
 55.1070 +
 55.1071 +PDF_HYPERLINKS         = YES
 55.1072 +
 55.1073 +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
 55.1074 +# plain latex in the generated Makefile. Set this option to YES to get a 
 55.1075 +# higher quality PDF documentation.
 55.1076 +
 55.1077 +USE_PDFLATEX           = YES
 55.1078 +
 55.1079 +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
 55.1080 +# command to the generated LaTeX files. This will instruct LaTeX to keep 
 55.1081 +# running if errors occur, instead of asking the user for help. 
 55.1082 +# This option is also used when generating formulas in HTML.
 55.1083 +
 55.1084 +LATEX_BATCHMODE        = NO
 55.1085 +
 55.1086 +# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
 55.1087 +# include the index chapters (such as File Index, Compound Index, etc.) 
 55.1088 +# in the output.
 55.1089 +
 55.1090 +LATEX_HIDE_INDICES     = NO
 55.1091 +
 55.1092 +# If LATEX_SOURCE_CODE is set to YES then doxygen will include
 55.1093 +# source code with syntax highlighting in the LaTeX output.
 55.1094 +# Note that which sources are shown also depends on other settings
 55.1095 +# such as SOURCE_BROWSER.
 55.1096 +
 55.1097 +LATEX_SOURCE_CODE      = NO
 55.1098 +
 55.1099 +#---------------------------------------------------------------------------
 55.1100 +# configuration options related to the RTF output
 55.1101 +#---------------------------------------------------------------------------
 55.1102 +
 55.1103 +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
 55.1104 +# The RTF output is optimized for Word 97 and may not look very pretty with 
 55.1105 +# other RTF readers or editors.
 55.1106 +
 55.1107 +GENERATE_RTF           = NO
 55.1108 +
 55.1109 +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
 55.1110 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 55.1111 +# put in front of it. If left blank `rtf' will be used as the default path.
 55.1112 +
 55.1113 +RTF_OUTPUT             = rtf
 55.1114 +
 55.1115 +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
 55.1116 +# RTF documents. This may be useful for small projects and may help to 
 55.1117 +# save some trees in general.
 55.1118 +
 55.1119 +COMPACT_RTF            = NO
 55.1120 +
 55.1121 +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
 55.1122 +# will contain hyperlink fields. The RTF file will 
 55.1123 +# contain links (just like the HTML output) instead of page references. 
 55.1124 +# This makes the output suitable for online browsing using WORD or other 
 55.1125 +# programs which support those fields. 
 55.1126 +# Note: wordpad (write) and others do not support links.
 55.1127 +
 55.1128 +RTF_HYPERLINKS         = NO
 55.1129 +
 55.1130 +# Load stylesheet definitions from file. Syntax is similar to doxygen's 
 55.1131 +# config file, i.e. a series of assignments. You only have to provide 
 55.1132 +# replacements, missing definitions are set to their default value.
 55.1133 +
 55.1134 +RTF_STYLESHEET_FILE    = 
 55.1135 +
 55.1136 +# Set optional variables used in the generation of an rtf document. 
 55.1137 +# Syntax is similar to doxygen's config file.
 55.1138 +
 55.1139 +RTF_EXTENSIONS_FILE    = 
 55.1140 +
 55.1141 +#---------------------------------------------------------------------------
 55.1142 +# configuration options related to the man page output
 55.1143 +#---------------------------------------------------------------------------
 55.1144 +
 55.1145 +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
 55.1146 +# generate man pages
 55.1147 +
 55.1148 +GENERATE_MAN           = NO
 55.1149 +
 55.1150 +# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
 55.1151 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 55.1152 +# put in front of it. If left blank `man' will be used as the default path.
 55.1153 +
 55.1154 +MAN_OUTPUT             = man
 55.1155 +
 55.1156 +# The MAN_EXTENSION tag determines the extension that is added to 
 55.1157 +# the generated man pages (default is the subroutine's section .3)
 55.1158 +
 55.1159 +MAN_EXTENSION          = .3
 55.1160 +
 55.1161 +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
 55.1162 +# then it will generate one additional man file for each entity 
 55.1163 +# documented in the real man page(s). These additional files 
 55.1164 +# only source the real man page, but without them the man command 
 55.1165 +# would be unable to find the correct page. The default is NO.
 55.1166 +
 55.1167 +MAN_LINKS              = NO
 55.1168 +
 55.1169 +#---------------------------------------------------------------------------
 55.1170 +# configuration options related to the XML output
 55.1171 +#---------------------------------------------------------------------------
 55.1172 +
 55.1173 +# If the GENERATE_XML tag is set to YES Doxygen will 
 55.1174 +# generate an XML file that captures the structure of 
 55.1175 +# the code including all documentation.
 55.1176 +
 55.1177 +GENERATE_XML           = NO
 55.1178 +
 55.1179 +# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
 55.1180 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 55.1181 +# put in front of it. If left blank `xml' will be used as the default path.
 55.1182 +
 55.1183 +XML_OUTPUT             = xml
 55.1184 +
 55.1185 +# The XML_SCHEMA tag can be used to specify an XML schema, 
 55.1186 +# which can be used by a validating XML parser to check the 
 55.1187 +# syntax of the XML files.
 55.1188 +
 55.1189 +XML_SCHEMA             = 
 55.1190 +
 55.1191 +# The XML_DTD tag can be used to specify an XML DTD, 
 55.1192 +# which can be used by a validating XML parser to check the 
 55.1193 +# syntax of the XML files.
 55.1194 +
 55.1195 +XML_DTD                = 
 55.1196 +
 55.1197 +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
 55.1198 +# dump the program listings (including syntax highlighting 
 55.1199 +# and cross-referencing information) to the XML output. Note that 
 55.1200 +# enabling this will significantly increase the size of the XML output.
 55.1201 +
 55.1202 +XML_PROGRAMLISTING     = YES
 55.1203 +
 55.1204 +#---------------------------------------------------------------------------
 55.1205 +# configuration options for the AutoGen Definitions output
 55.1206 +#---------------------------------------------------------------------------
 55.1207 +
 55.1208 +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
 55.1209 +# generate an AutoGen Definitions (see autogen.sf.net) file 
 55.1210 +# that captures the structure of the code including all 
 55.1211 +# documentation. Note that this feature is still experimental 
 55.1212 +# and incomplete at the moment.
 55.1213 +
 55.1214 +GENERATE_AUTOGEN_DEF   = NO
 55.1215 +
 55.1216 +#---------------------------------------------------------------------------
 55.1217 +# configuration options related to the Perl module output
 55.1218 +#---------------------------------------------------------------------------
 55.1219 +
 55.1220 +# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
 55.1221 +# generate a Perl module file that captures the structure of 
 55.1222 +# the code including all documentation. Note that this 
 55.1223 +# feature is still experimental and incomplete at the 
 55.1224 +# moment.
 55.1225 +
 55.1226 +GENERATE_PERLMOD       = NO
 55.1227 +
 55.1228 +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
 55.1229 +# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
 55.1230 +# to generate PDF and DVI output from the Perl module output.
 55.1231 +
 55.1232 +PERLMOD_LATEX          = NO
 55.1233 +
 55.1234 +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
 55.1235 +# nicely formatted so it can be parsed by a human reader.  This is useful 
 55.1236 +# if you want to understand what is going on.  On the other hand, if this 
 55.1237 +# tag is set to NO the size of the Perl module output will be much smaller 
 55.1238 +# and Perl will parse it just the same.
 55.1239 +
 55.1240 +PERLMOD_PRETTY         = YES
 55.1241 +
 55.1242 +# The names of the make variables in the generated doxyrules.make file 
 55.1243 +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
 55.1244 +# This is useful so different doxyrules.make files included by the same 
 55.1245 +# Makefile don't overwrite each other's variables.
 55.1246 +
 55.1247 +PERLMOD_MAKEVAR_PREFIX = 
 55.1248 +
 55.1249 +#---------------------------------------------------------------------------
 55.1250 +# Configuration options related to the preprocessor   
 55.1251 +#---------------------------------------------------------------------------
 55.1252 +
 55.1253 +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
 55.1254 +# evaluate all C-preprocessor directives found in the sources and include 
 55.1255 +# files.
 55.1256 +
 55.1257 +ENABLE_PREPROCESSING   = YES
 55.1258 +
 55.1259 +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
 55.1260 +# names in the source code. If set to NO (the default) only conditional 
 55.1261 +# compilation will be performed. Macro expansion can be done in a controlled 
 55.1262 +# way by setting EXPAND_ONLY_PREDEF to YES.
 55.1263 +
 55.1264 +MACRO_EXPANSION        = YES
 55.1265 +
 55.1266 +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
 55.1267 +# then the macro expansion is limited to the macros specified with the 
 55.1268 +# PREDEFINED and EXPAND_AS_DEFINED tags.
 55.1269 +
 55.1270 +EXPAND_ONLY_PREDEF     = YES
 55.1271 +
 55.1272 +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
 55.1273 +# in the INCLUDE_PATH (see below) will be search if a #include is found.
 55.1274 +
 55.1275 +SEARCH_INCLUDES        = YES
 55.1276 +
 55.1277 +# The INCLUDE_PATH tag can be used to specify one or more directories that 
 55.1278 +# contain include files that are not input files but should be processed by 
 55.1279 +# the preprocessor.
 55.1280 +
 55.1281 +INCLUDE_PATH           =
 55.1282 +
 55.1283 +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
 55.1284 +# patterns (like *.h and *.hpp) to filter out the header-files in the 
 55.1285 +# directories. If left blank, the patterns specified with FILE_PATTERNS will 
 55.1286 +# be used.
 55.1287 +
 55.1288 +INCLUDE_FILE_PATTERNS  = 
 55.1289 +
 55.1290 +# The PREDEFINED tag can be used to specify one or more macro names that 
 55.1291 +# are defined before the preprocessor is started (similar to the -D option of 
 55.1292 +# gcc). The argument of the tag is a list of macros of the form: name 
 55.1293 +# or name=definition (no spaces). If the definition and the = are 
 55.1294 +# omitted =1 is assumed. To prevent a macro definition from being 
 55.1295 +# undefined via #undef or recursively expanded use the := operator 
 55.1296 +# instead of the = operator.
 55.1297 +
 55.1298 +PREDEFINED             = DOXYGEN_SHOULD_IGNORE_THIS=1 \
 55.1299 +                         DECLSPEC= \
 55.1300 +                         SDLCALL= \
 55.1301 +                         _WIN32=1
 55.1302 +
 55.1303 +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 55.1304 +# this tag can be used to specify a list of macro names that should be expanded. 
 55.1305 +# The macro definition that is found in the sources will be used. 
 55.1306 +# Use the PREDEFINED tag if you want to use a different macro definition.
 55.1307 +
 55.1308 +EXPAND_AS_DEFINED      = 
 55.1309 +
 55.1310 +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
 55.1311 +# doxygen's preprocessor will remove all function-like macros that are alone 
 55.1312 +# on a line, have an all uppercase name, and do not end with a semicolon. Such 
 55.1313 +# function macros are typically used for boiler-plate code, and will confuse 
 55.1314 +# the parser if not removed.
 55.1315 +
 55.1316 +SKIP_FUNCTION_MACROS   = YES
 55.1317 +
 55.1318 +#---------------------------------------------------------------------------
 55.1319 +# Configuration::additions related to external references   
 55.1320 +#---------------------------------------------------------------------------
 55.1321 +
 55.1322 +# The TAGFILES option can be used to specify one or more tagfiles. 
 55.1323 +# Optionally an initial location of the external documentation 
 55.1324 +# can be added for each tagfile. The format of a tag file without 
 55.1325 +# this location is as follows: 
 55.1326 +#   TAGFILES = file1 file2 ... 
 55.1327 +# Adding location for the tag files is done as follows: 
 55.1328 +#   TAGFILES = file1=loc1 "file2 = loc2" ... 
 55.1329 +# where "loc1" and "loc2" can be relative or absolute paths or 
 55.1330 +# URLs. If a location is present for each tag, the installdox tool 
 55.1331 +# does not have to be run to correct the links. 
 55.1332 +# Note that each tag file must have a unique name 
 55.1333 +# (where the name does NOT include the path) 
 55.1334 +# If a tag file is not located in the directory in which doxygen 
 55.1335 +# is run, you must also specify the path to the tagfile here.
 55.1336 +
 55.1337 +TAGFILES               = 
 55.1338 +
 55.1339 +# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
 55.1340 +# a tag file that is based on the input files it reads.
 55.1341 +
 55.1342 +GENERATE_TAGFILE       = ./SDL.tag
 55.1343 +
 55.1344 +# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
 55.1345 +# in the class index. If set to NO only the inherited external classes 
 55.1346 +# will be listed.
 55.1347 +
 55.1348 +ALLEXTERNALS           = NO
 55.1349 +
 55.1350 +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
 55.1351 +# in the modules index. If set to NO, only the current project's groups will 
 55.1352 +# be listed.
 55.1353 +
 55.1354 +EXTERNAL_GROUPS        = YES
 55.1355 +
 55.1356 +# The PERL_PATH should be the absolute path and name of the perl script 
 55.1357 +# interpreter (i.e. the result of `which perl').
 55.1358 +
 55.1359 +PERL_PATH              = c:\Perl\bin\perl.exe
 55.1360 +
 55.1361 +#---------------------------------------------------------------------------
 55.1362 +# Configuration options related to the dot tool   
 55.1363 +#---------------------------------------------------------------------------
 55.1364 +
 55.1365 +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
 55.1366 +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
 55.1367 +# or super classes. Setting the tag to NO turns the diagrams off. Note that 
 55.1368 +# this option is superseded by the HAVE_DOT option below. This is only a 
 55.1369 +# fallback. It is recommended to install and use dot, since it yields more 
 55.1370 +# powerful graphs.
 55.1371 +
 55.1372 +CLASS_DIAGRAMS         = YES
 55.1373 +
 55.1374 +# You can define message sequence charts within doxygen comments using the \msc 
 55.1375 +# command. Doxygen will then run the mscgen tool (see 
 55.1376 +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
 55.1377 +# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
 55.1378 +# the mscgen tool resides. If left empty the tool is assumed to be found in the 
 55.1379 +# default search path.
 55.1380 +
 55.1381 +MSCGEN_PATH            = 
 55.1382 +
 55.1383 +# If set to YES, the inheritance and collaboration graphs will hide 
 55.1384 +# inheritance and usage relations if the target is undocumented 
 55.1385 +# or is not a class.
 55.1386 +
 55.1387 +HIDE_UNDOC_RELATIONS   = YES
 55.1388 +
 55.1389 +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
 55.1390 +# available from the path. This tool is part of Graphviz, a graph visualization 
 55.1391 +# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
 55.1392 +# have no effect if this option is set to NO (the default)
 55.1393 +
 55.1394 +HAVE_DOT               = YES
 55.1395 +
 55.1396 +# By default doxygen will write a font called FreeSans.ttf to the output 
 55.1397 +# directory and reference it in all dot files that doxygen generates. This 
 55.1398 +# font does not include all possible unicode characters however, so when you need 
 55.1399 +# these (or just want a differently looking font) you can specify the font name 
 55.1400 +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
 55.1401 +# which can be done by putting it in a standard location or by setting the 
 55.1402 +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
 55.1403 +# containing the font.
 55.1404 +
 55.1405 +DOT_FONTNAME           = FreeSans
 55.1406 +
 55.1407 +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
 55.1408 +# The default size is 10pt.
 55.1409 +
 55.1410 +DOT_FONTSIZE           = 10
 55.1411 +
 55.1412 +# By default doxygen will tell dot to use the output directory to look for the 
 55.1413 +# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
 55.1414 +# different font using DOT_FONTNAME you can set the path where dot 
 55.1415 +# can find it using this tag.
 55.1416 +
 55.1417 +DOT_FONTPATH           = 
 55.1418 +
 55.1419 +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 55.1420 +# will generate a graph for each documented class showing the direct and 
 55.1421 +# indirect inheritance relations. Setting this tag to YES will force the 
 55.1422 +# the CLASS_DIAGRAMS tag to NO.
 55.1423 +
 55.1424 +CLASS_GRAPH            = YES
 55.1425 +
 55.1426 +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 55.1427 +# will generate a graph for each documented class showing the direct and 
 55.1428 +# indirect implementation dependencies (inheritance, containment, and 
 55.1429 +# class references variables) of the class with other documented classes.
 55.1430 +
 55.1431 +COLLABORATION_GRAPH    = YES
 55.1432 +
 55.1433 +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
 55.1434 +# will generate a graph for groups, showing the direct groups dependencies
 55.1435 +
 55.1436 +GROUP_GRAPHS           = YES
 55.1437 +
 55.1438 +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
 55.1439 +# collaboration diagrams in a style similar to the OMG's Unified Modeling 
 55.1440 +# Language.
 55.1441 +
 55.1442 +UML_LOOK               = NO
 55.1443 +
 55.1444 +# If set to YES, the inheritance and collaboration graphs will show the 
 55.1445 +# relations between templates and their instances.
 55.1446 +
 55.1447 +TEMPLATE_RELATIONS     = YES
 55.1448 +
 55.1449 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
 55.1450 +# tags are set to YES then doxygen will generate a graph for each documented 
 55.1451 +# file showing the direct and indirect include dependencies of the file with 
 55.1452 +# other documented files.
 55.1453 +
 55.1454 +INCLUDE_GRAPH          = YES
 55.1455 +
 55.1456 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
 55.1457 +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
 55.1458 +# documented header file showing the documented files that directly or 
 55.1459 +# indirectly include this file.
 55.1460 +
 55.1461 +INCLUDED_BY_GRAPH      = YES
 55.1462 +
 55.1463 +# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
 55.1464 +# doxygen will generate a call dependency graph for every global function 
 55.1465 +# or class method. Note that enabling this option will significantly increase 
 55.1466 +# the time of a run. So in most cases it will be better to enable call graphs 
 55.1467 +# for selected functions only using the \callgraph command.
 55.1468 +
 55.1469 +CALL_GRAPH             = NO
 55.1470 +
 55.1471 +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
 55.1472 +# doxygen will generate a caller dependency graph for every global function 
 55.1473 +# or class method. Note that enabling this option will significantly increase 
 55.1474 +# the time of a run. So in most cases it will be better to enable caller 
 55.1475 +# graphs for selected functions only using the \callergraph command.
 55.1476 +
 55.1477 +CALLER_GRAPH           = NO
 55.1478 +
 55.1479 +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
 55.1480 +# will graphical hierarchy of all classes instead of a textual one.
 55.1481 +
 55.1482 +GRAPHICAL_HIERARCHY    = YES
 55.1483 +
 55.1484 +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
 55.1485 +# then doxygen will show the dependencies a directory has on other directories 
 55.1486 +# in a graphical way. The dependency relations are determined by the #include 
 55.1487 +# relations between the files in the directories.
 55.1488 +
 55.1489 +DIRECTORY_GRAPH        = YES
 55.1490 +
 55.1491 +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
 55.1492 +# generated by dot. Possible values are png, jpg, or gif 
 55.1493 +# If left blank png will be used.
 55.1494 +
 55.1495 +DOT_IMAGE_FORMAT       = png
 55.1496 +
 55.1497 +# The tag DOT_PATH can be used to specify the path where the dot tool can be 
 55.1498 +# found. If left blank, it is assumed the dot tool can be found in the path.
 55.1499 +
 55.1500 +DOT_PATH               = 
 55.1501 +
 55.1502 +# The DOTFILE_DIRS tag can be used to specify one or more directories that 
 55.1503 +# contain dot files that are included in the documentation (see the 
 55.1504 +# \dotfile command).
 55.1505 +
 55.1506 +DOTFILE_DIRS           = 
 55.1507 +
 55.1508 +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
 55.1509 +# nodes that will be shown in the graph. If the number of nodes in a graph 
 55.1510 +# becomes larger than this value, doxygen will truncate the graph, which is 
 55.1511 +# visualized by representing a node as a red box. Note that doxygen if the 
 55.1512 +# number of direct children of the root node in a graph is already larger than 
 55.1513 +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
 55.1514 +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 55.1515 +
 55.1516 +DOT_GRAPH_MAX_NODES    = 50
 55.1517 +
 55.1518 +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
 55.1519 +# graphs generated by dot. A depth value of 3 means that only nodes reachable 
 55.1520 +# from the root by following a path via at most 3 edges will be shown. Nodes 
 55.1521 +# that lay further from the root node will be omitted. Note that setting this 
 55.1522 +# option to 1 or 2 may greatly reduce the computation time needed for large 
 55.1523 +# code bases. Also note that the size of a graph can be further restricted by 
 55.1524 +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
 55.1525 +
 55.1526 +MAX_DOT_GRAPH_DEPTH    = 2
 55.1527 +
 55.1528 +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
 55.1529 +# background. This is disabled by default, because dot on Windows does not 
 55.1530 +# seem to support this out of the box. Warning: Depending on the platform used, 
 55.1531 +# enabling this option may lead to badly anti-aliased labels on the edges of 
 55.1532 +# a graph (i.e. they become hard to read).
 55.1533 +
 55.1534 +DOT_TRANSPARENT        = NO
 55.1535 +
 55.1536 +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
 55.1537 +# files in one run (i.e. multiple -o and -T options on the command line). This 
 55.1538 +# makes dot run faster, but since only newer versions of dot (>1.8.10) 
 55.1539 +# support this, this feature is disabled by default.
 55.1540 +
 55.1541 +DOT_MULTI_TARGETS      = YES
 55.1542 +
 55.1543 +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
 55.1544 +# generate a legend page explaining the meaning of the various boxes and 
 55.1545 +# arrows in the dot generated graphs.
 55.1546 +
 55.1547 +GENERATE_LEGEND        = YES
 55.1548 +
 55.1549 +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
 55.1550 +# remove the intermediate dot files that are used to generate 
 55.1551 +# the various graphs.
 55.1552 +
 55.1553 +DOT_CLEANUP            = YES
 55.1554 +
 55.1555 +#---------------------------------------------------------------------------
 55.1556 +# Options related to the search engine
 55.1557 +#---------------------------------------------------------------------------
 55.1558 +
 55.1559 +# The SEARCHENGINE tag specifies whether or not a search engine should be 
 55.1560 +# used. If set to NO the values of all tags below this one will be ignored.
 55.1561 +
 55.1562 +SEARCHENGINE           = NO
    56.1 --- a/include/SDL.h	Tue Jul 29 00:36:12 2014 -0300
    56.2 +++ b/include/SDL.h	Thu Jul 31 03:14:10 2014 -0300
    56.3 @@ -25,41 +25,6 @@
    56.4   *  Main include header for the SDL library
    56.5   */
    56.6  
    56.7 -/**
    56.8 - *  \mainpage Simple DirectMedia Layer (SDL)
    56.9 - *
   56.10 - *  http://www.libsdl.org/
   56.11 - *
   56.12 - *  \section intro_sec Introduction
   56.13 - *
   56.14 - *  Simple DirectMedia Layer is a cross-platform development library designed
   56.15 - *  to provide low level access to audio, keyboard, mouse, joystick, and
   56.16 - *  graphics hardware via OpenGL and Direct3D. It is used by video playback
   56.17 - *  software, emulators, and popular games including Valve's award winning
   56.18 - *  catalog and many Humble Bundle games.
   56.19 - *
   56.20 - *  SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
   56.21 - *  Support for other platforms may be found in the source code.
   56.22 - *
   56.23 - *  SDL is written in C, works natively with C++, and there are bindings 
   56.24 - *  available for several other languages, including C# and Python.
   56.25 - *
   56.26 - *  This library is distributed under the zlib license, which can be found
   56.27 - *  in the file "COPYING.txt".
   56.28 - *
   56.29 - *  The best way to learn how to use SDL is to check out the header files in
   56.30 - *  the "include" subdirectory and the programs in the "test" subdirectory.
   56.31 - *  The header files and test programs are well commented and always up to date.
   56.32 - *  More documentation and FAQs are available online at:
   56.33 - *      http://wiki.libsdl.org/
   56.34 - *
   56.35 - *  If you need help with the library, or just want to discuss SDL related
   56.36 - *  issues, you can join the developers mailing list:
   56.37 - *      http://www.libsdl.org/mailing-list.php
   56.38 - *
   56.39 - *  Enjoy!
   56.40 - *      Sam Lantinga                (slouken@libsdl.org)
   56.41 - */
   56.42  
   56.43  #ifndef _SDL_H
   56.44  #define _SDL_H
    57.1 --- a/include/SDL_assert.h	Tue Jul 29 00:36:12 2014 -0300
    57.2 +++ b/include/SDL_assert.h	Thu Jul 31 03:14:10 2014 -0300
    57.3 @@ -141,16 +141,13 @@
    57.4  #define SDL_enabled_assert(condition) \
    57.5      do { \
    57.6          while ( !(condition) ) { \
    57.7 -            static struct SDL_assert_data assert_data = { \
    57.8 +            static struct SDL_assert_data sdl_assert_data = { \
    57.9                  0, 0, #condition, 0, 0, 0, 0 \
   57.10              }; \
   57.11 -            const SDL_assert_state state = SDL_ReportAssertion(&assert_data, \
   57.12 -                                                               SDL_FUNCTION, \
   57.13 -                                                               SDL_FILE, \
   57.14 -                                                               SDL_LINE); \
   57.15 -            if (state == SDL_ASSERTION_RETRY) { \
   57.16 +            const SDL_assert_state sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
   57.17 +            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
   57.18                  continue; /* go again. */ \
   57.19 -            } else if (state == SDL_ASSERTION_BREAK) { \
   57.20 +            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
   57.21                  SDL_TriggerBreakpoint(); \
   57.22              } \
   57.23              break; /* not retrying. */ \
    58.1 --- a/include/SDL_audio.h	Tue Jul 29 00:36:12 2014 -0300
    58.2 +++ b/include/SDL_audio.h	Thu Jul 31 03:14:10 2014 -0300
    58.3 @@ -155,6 +155,9 @@
    58.4   *
    58.5   *  Once the callback returns, the buffer will no longer be valid.
    58.6   *  Stereo samples are stored in a LRLRLR ordering.
    58.7 + *
    58.8 + *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
    58.9 + *  you like. Just open your audio device with a NULL callback.
   58.10   */
   58.11  typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
   58.12                                              int len);
   58.13 @@ -171,8 +174,8 @@
   58.14      Uint16 samples;             /**< Audio buffer size in samples (power of 2) */
   58.15      Uint16 padding;             /**< Necessary for some compile environments */
   58.16      Uint32 size;                /**< Audio buffer size in bytes (calculated) */
   58.17 -    SDL_AudioCallback callback;
   58.18 -    void *userdata;
   58.19 +    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
   58.20 +    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
   58.21  } SDL_AudioSpec;
   58.22  
   58.23  
   58.24 @@ -273,9 +276,11 @@
   58.25   *      to the audio buffer, and the length in bytes of the audio buffer.
   58.26   *      This function usually runs in a separate thread, and so you should
   58.27   *      protect data structures that it accesses by calling SDL_LockAudio()
   58.28 - *      and SDL_UnlockAudio() in your code.
   58.29 + *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
   58.30 + *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
   58.31 + *      more audio samples to be played.
   58.32   *    - \c desired->userdata is passed as the first parameter to your callback
   58.33 - *      function.
   58.34 + *      function. If you passed a NULL callback, this value is ignored.
   58.35   *
   58.36   *  The audio device starts out playing silence when it's opened, and should
   58.37   *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
   58.38 @@ -475,6 +480,100 @@
   58.39                                                  Uint32 len, int volume);
   58.40  
   58.41  /**
   58.42 + *  Queue more audio on non-callback devices.
   58.43 + *
   58.44 + *  SDL offers two ways to feed audio to the device: you can either supply a
   58.45 + *  callback that SDL triggers with some frequency to obtain more audio
   58.46 + *  (pull method), or you can supply no callback, and then SDL will expect
   58.47 + *  you to supply data at regular intervals (push method) with this function.
   58.48 + *
   58.49 + *  There are no limits on the amount of data you can queue, short of
   58.50 + *  exhaustion of address space. Queued data will drain to the device as
   58.51 + *  necessary without further intervention from you. If the device needs
   58.52 + *  audio but there is not enough queued, it will play silence to make up
   58.53 + *  the difference. This means you will have skips in your audio playback
   58.54 + *  if you aren't routinely queueing sufficient data.
   58.55 + *
   58.56 + *  This function copies the supplied data, so you are safe to free it when
   58.57 + *  the function returns. This function is thread-safe, but queueing to the
   58.58 + *  same device from two threads at once does not promise which buffer will
   58.59 + *  be queued first.
   58.60 + *
   58.61 + *  You may not queue audio on a device that is using an application-supplied
   58.62 + *  callback; doing so returns an error. You have to use the audio callback
   58.63 + *  or queue audio with this function, but not both.
   58.64 + *
   58.65 + *  You should not call SDL_LockAudio() on the device before queueing; SDL
   58.66 + *  handles locking internally for this function.
   58.67 + *
   58.68 + *  \param dev The device ID to which we will queue audio.
   58.69 + *  \param data The data to queue to the device for later playback.
   58.70 + *  \param len The number of bytes (not samples!) to which (data) points.
   58.71 + *  \return zero on success, -1 on error.
   58.72 + *
   58.73 + *  \sa SDL_GetQueuedAudioSize
   58.74 + *  \sa SDL_ClearQueuedAudio
   58.75 + */
   58.76 +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
   58.77 +
   58.78 +/**
   58.79 + *  Get the number of bytes of still-queued audio.
   58.80 + *
   58.81 + *  This is the number of bytes that have been queued for playback with
   58.82 + *  SDL_QueueAudio(), but have not yet been sent to the hardware.
   58.83 + *
   58.84 + *  Once we've sent it to the hardware, this function can not decide the exact
   58.85 + *  byte boundary of what has been played. It's possible that we just gave the
   58.86 + *  hardware several kilobytes right before you called this function, but it
   58.87 + *  hasn't played any of it yet, or maybe half of it, etc.
   58.88 + *
   58.89 + *  You may not queue audio on a device that is using an application-supplied
   58.90 + *  callback; calling this function on such a device always returns 0.
   58.91 + *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
   58.92 + *  but not both.
   58.93 + *
   58.94 + *  You should not call SDL_LockAudio() on the device before querying; SDL
   58.95 + *  handles locking internally for this function.
   58.96 + *
   58.97 + *  \param dev The device ID of which we will query queued audio size.
   58.98 + *  \return Number of bytes (not samples!) of queued audio.
   58.99 + *
  58.100 + *  \sa SDL_QueueAudio
  58.101 + *  \sa SDL_ClearQueuedAudio
  58.102 + */
  58.103 +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
  58.104 +
  58.105 +/**
  58.106 + *  Drop any queued audio data waiting to be sent to the hardware.
  58.107 + *
  58.108 + *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0 and
  58.109 + *  the hardware will start playing silence if more audio isn't queued.
  58.110 + *
  58.111 + *  This will not prevent playback of queued audio that's already been sent
  58.112 + *  to the hardware, as we can not undo that, so expect there to be some
  58.113 + *  fraction of a second of audio that might still be heard. This can be
  58.114 + *  useful if you want to, say, drop any pending music during a level change
  58.115 + *  in your game.
  58.116 + *
  58.117 + *  You may not queue audio on a device that is using an application-supplied
  58.118 + *  callback; calling this function on such a device is always a no-op.
  58.119 + *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
  58.120 + *  but not both.
  58.121 + *
  58.122 + *  You should not call SDL_LockAudio() on the device before clearing the
  58.123 + *  queue; SDL handles locking internally for this function.
  58.124 + *
  58.125 + *  This function always succeeds and thus returns void.
  58.126 + *
  58.127 + *  \param dev The device ID of which to clear the audio queue.
  58.128 + *
  58.129 + *  \sa SDL_QueueAudio
  58.130 + *  \sa SDL_GetQueuedAudioSize
  58.131 + */
  58.132 +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
  58.133 +
  58.134 +
  58.135 +/**
  58.136   *  \name Audio lock functions
  58.137   *
  58.138   *  The lock manipulated by these functions protects the callback function.
    59.1 --- a/include/doxyfile	Tue Jul 29 00:36:12 2014 -0300
    59.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.3 @@ -1,1555 +0,0 @@
    59.4 -# Doxyfile 1.5.9
    59.5 -
    59.6 -# This file describes the settings to be used by the documentation system
    59.7 -# doxygen (www.doxygen.org) for a project
    59.8 -#
    59.9 -# All text after a hash (#) is considered a comment and will be ignored
   59.10 -# The format is:
   59.11 -#       TAG = value [value, ...]
   59.12 -# For lists items can also be appended using:
   59.13 -#       TAG += value [value, ...]
   59.14 -# Values that contain spaces should be placed between quotes (" ")
   59.15 -
   59.16 -#---------------------------------------------------------------------------
   59.17 -# Project related configuration options
   59.18 -#---------------------------------------------------------------------------
   59.19 -
   59.20 -# This tag specifies the encoding used for all characters in the config file 
   59.21 -# that follow. The default is UTF-8 which is also the encoding used for all 
   59.22 -# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
   59.23 -# iconv built into libc) for the transcoding. See 
   59.24 -# http://www.gnu.org/software/libiconv for the list of possible encodings.
   59.25 -
   59.26 -DOXYFILE_ENCODING      = UTF-8
   59.27 -
   59.28 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
   59.29 -# by quotes) that should identify the project.
   59.30 -
   59.31 -PROJECT_NAME           = SDL
   59.32 -
   59.33 -# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
   59.34 -# This could be handy for archiving the generated documentation or 
   59.35 -# if some version control system is used.
   59.36 -
   59.37 -PROJECT_NUMBER         = 2.0.0
   59.38 -
   59.39 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
   59.40 -# base path where the generated documentation will be put. 
   59.41 -# If a relative path is entered, it will be relative to the location 
   59.42 -# where doxygen was started. If left blank the current directory will be used.
   59.43 -
   59.44 -OUTPUT_DIRECTORY       = .
   59.45 -
   59.46 -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
   59.47 -# 4096 sub-directories (in 2 levels) under the output directory of each output 
   59.48 -# format and will distribute the generated files over these directories. 
   59.49 -# Enabling this option can be useful when feeding doxygen a huge amount of 
   59.50 -# source files, where putting all generated files in the same directory would 
   59.51 -# otherwise cause performance problems for the file system.
   59.52 -
   59.53 -CREATE_SUBDIRS         = YES
   59.54 -
   59.55 -# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
   59.56 -# documentation generated by doxygen is written. Doxygen will use this 
   59.57 -# information to generate all constant output in the proper language. 
   59.58 -# The default language is English, other supported languages are: 
   59.59 -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
   59.60 -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
   59.61 -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
   59.62 -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
   59.63 -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
   59.64 -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
   59.65 -
   59.66 -OUTPUT_LANGUAGE        = English
   59.67 -
   59.68 -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
   59.69 -# include brief member descriptions after the members that are listed in 
   59.70 -# the file and class documentation (similar to JavaDoc). 
   59.71 -# Set to NO to disable this.
   59.72 -
   59.73 -BRIEF_MEMBER_DESC      = YES
   59.74 -
   59.75 -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
   59.76 -# the brief description of a member or function before the detailed description. 
   59.77 -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
   59.78 -# brief descriptions will be completely suppressed.
   59.79 -
   59.80 -REPEAT_BRIEF           = YES
   59.81 -
   59.82 -# This tag implements a quasi-intelligent brief description abbreviator 
   59.83 -# that is used to form the text in various listings. Each string 
   59.84 -# in this list, if found as the leading text of the brief description, will be 
   59.85 -# stripped from the text and the result after processing the whole list, is 
   59.86 -# used as the annotated text. Otherwise, the brief description is used as-is. 
   59.87 -# If left blank, the following values are used ("$name" is automatically 
   59.88 -# replaced with the name of the entity): "The $name class" "The $name widget" 
   59.89 -# "The $name file" "is" "provides" "specifies" "contains" 
   59.90 -# "represents" "a" "an" "the"
   59.91 -
   59.92 -ABBREVIATE_BRIEF       = "The $name class" \
   59.93 -                         "The $name widget" \
   59.94 -                         "The $name file" \
   59.95 -                         is \
   59.96 -                         provides \
   59.97 -                         specifies \
   59.98 -                         contains \
   59.99 -                         represents \
  59.100 -                         a \
  59.101 -                         an \
  59.102 -                         the
  59.103 -
  59.104 -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
  59.105 -# Doxygen will generate a detailed section even if there is only a brief 
  59.106 -# description.
  59.107 -
  59.108 -ALWAYS_DETAILED_SEC    = YES
  59.109 -
  59.110 -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
  59.111 -# inherited members of a class in the documentation of that class as if those 
  59.112 -# members were ordinary class members. Constructors, destructors and assignment 
  59.113 -# operators of the base classes will not be shown.
  59.114 -
  59.115 -INLINE_INHERITED_MEMB  = NO
  59.116 -
  59.117 -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
  59.118 -# path before files name in the file list and in the header files. If set 
  59.119 -# to NO the shortest path that makes the file name unique will be used.
  59.120 -
  59.121 -FULL_PATH_NAMES        = YES
  59.122 -
  59.123 -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
  59.124 -# can be used to strip a user-defined part of the path. Stripping is 
  59.125 -# only done if one of the specified strings matches the left-hand part of 
  59.126 -# the path. The tag can be used to show relative paths in the file list. 
  59.127 -# If left blank the directory from which doxygen is run is used as the 
  59.128 -# path to strip.
  59.129 -
  59.130 -STRIP_FROM_PATH        =
  59.131 -
  59.132 -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
  59.133 -# the path mentioned in the documentation of a class, which tells 
  59.134 -# the reader which header file to include in order to use a class. 
  59.135 -# If left blank only the name of the header file containing the class 
  59.136 -# definition is used. Otherwise one should specify the include paths that 
  59.137 -# are normally passed to the compiler using the -I flag.
  59.138 -
  59.139 -STRIP_FROM_INC_PATH    = 
  59.140 -
  59.141 -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
  59.142 -# (but less readable) file names. This can be useful is your file systems 
  59.143 -# doesn't support long names like on DOS, Mac, or CD-ROM.
  59.144 -
  59.145 -SHORT_NAMES            = NO
  59.146 -
  59.147 -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
  59.148 -# will interpret the first line (until the first dot) of a JavaDoc-style 
  59.149 -# comment as the brief description. If set to NO, the JavaDoc 
  59.150 -# comments will behave just like regular Qt-style comments 
  59.151 -# (thus requiring an explicit @brief command for a brief description.)
  59.152 -
  59.153 -JAVADOC_AUTOBRIEF      = NO
  59.154 -
  59.155 -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
  59.156 -# interpret the first line (until the first dot) of a Qt-style 
  59.157 -# comment as the brief description. If set to NO, the comments 
  59.158 -# will behave just like regular Qt-style comments (thus requiring 
  59.159 -# an explicit \brief command for a brief description.)
  59.160 -
  59.161 -QT_AUTOBRIEF           = NO
  59.162 -
  59.163 -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
  59.164 -# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
  59.165 -# comments) as a brief description. This used to be the default behaviour. 
  59.166 -# The new default is to treat a multi-line C++ comment block as a detailed 
  59.167 -# description. Set this tag to YES if you prefer the old behaviour instead.
  59.168 -
  59.169 -MULTILINE_CPP_IS_BRIEF = NO
  59.170 -
  59.171 -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
  59.172 -# member inherits the documentation from any documented member that it 
  59.173 -# re-implements.
  59.174 -
  59.175 -INHERIT_DOCS           = YES
  59.176 -
  59.177 -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
  59.178 -# a new page for each member. If set to NO, the documentation of a member will 
  59.179 -# be part of the file/class/namespace that contains it.
  59.180 -
  59.181 -SEPARATE_MEMBER_PAGES  = NO
  59.182 -
  59.183 -# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
  59.184 -# Doxygen uses this value to replace tabs by spaces in code fragments.
  59.185 -
  59.186 -TAB_SIZE               = 8
  59.187 -
  59.188 -# This tag can be used to specify a number of aliases that acts 
  59.189 -# as commands in the documentation. An alias has the form "name=value". 
  59.190 -# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
  59.191 -# put the command \sideeffect (or @sideeffect) in the documentation, which 
  59.192 -# will result in a user-defined paragraph with heading "Side Effects:". 
  59.193 -# You can put \n's in the value part of an alias to insert newlines.
  59.194 -
  59.195 -ALIASES                = "defined=\"\def\"" \
  59.196 -                         "discussion=\"\par Discussion:\n\""
  59.197 -
  59.198 -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
  59.199 -# sources only. Doxygen will then generate output that is more tailored for C. 
  59.200 -# For instance, some of the names that are used will be different. The list 
  59.201 -# of all members will be omitted, etc.
  59.202 -
  59.203 -OPTIMIZE_OUTPUT_FOR_C  = YES
  59.204 -
  59.205 -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
  59.206 -# sources only. Doxygen will then generate output that is more tailored for 
  59.207 -# Java. For instance, namespaces will be presented as packages, qualified 
  59.208 -# scopes will look different, etc.
  59.209 -
  59.210 -OPTIMIZE_OUTPUT_JAVA   = NO
  59.211 -
  59.212 -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
  59.213 -# sources only. Doxygen will then generate output that is more tailored for 
  59.214 -# Fortran.
  59.215 -
  59.216 -OPTIMIZE_FOR_FORTRAN   = NO
  59.217 -
  59.218 -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
  59.219 -# sources. Doxygen will then generate output that is tailored for 
  59.220 -# VHDL.
  59.221 -
  59.222 -OPTIMIZE_OUTPUT_VHDL   = NO
  59.223 -
  59.224 -# Doxygen selects the parser to use depending on the extension of the files it parses. 
  59.225 -# With this tag you can assign which parser to use for a given extension. 
  59.226 -# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
  59.227 -# The format is ext=language, where ext is a file extension, and language is one of 
  59.228 -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
  59.229 -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
  59.230 -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
  59.231 -# use: inc=Fortran f=C. Note that for custom extensions you also need to set
  59.232 -# FILE_PATTERNS otherwise the files are not read by doxygen.
  59.233 -
  59.234 -EXTENSION_MAPPING      = 
  59.235 -
  59.236 -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
  59.237 -# to include (a tag file for) the STL sources as input, then you should 
  59.238 -# set this tag to YES in order to let doxygen match functions declarations and 
  59.239 -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
  59.240 -# func(std::string) {}). This also make the inheritance and collaboration 
  59.241 -# diagrams that involve STL classes more complete and accurate.
  59.242 -
  59.243 -BUILTIN_STL_SUPPORT    = YES
  59.244 -
  59.245 -# If you use Microsoft's C++/CLI language, you should set this option to YES to 
  59.246 -# enable parsing support.
  59.247 -
  59.248 -CPP_CLI_SUPPORT        = NO
  59.249 -
  59.250 -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
  59.251 -# Doxygen will parse them like normal C++ but will assume all classes use public 
  59.252 -# instead of private inheritance when no explicit protection keyword is present.
  59.253 -
  59.254 -SIP_SUPPORT            = NO
  59.255 -
  59.256 -# For Microsoft's IDL there are propget and propput attributes to indicate getter 
  59.257 -# and setter methods for a property. Setting this option to YES (the default) 
  59.258 -# will make doxygen to replace the get and set methods by a property in the 
  59.259 -# documentation. This will only work if the methods are indeed getting or 
  59.260 -# setting a simple type. If this is not the case, or you want to show the 
  59.261 -# methods anyway, you should set this option to NO.
  59.262 -
  59.263 -IDL_PROPERTY_SUPPORT   = YES
  59.264 -
  59.265 -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
  59.266 -# tag is set to YES, then doxygen will reuse the documentation of the first 
  59.267 -# member in the group (if any) for the other members of the group. By default 
  59.268 -# all members of a group must be documented explicitly.
  59.269 -
  59.270 -DISTRIBUTE_GROUP_DOC   = NO
  59.271 -
  59.272 -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
  59.273 -# the same type (for instance a group of public functions) to be put as a 
  59.274 -# subgroup of that type (e.g. under the Public Functions section). Set it to 
  59.275 -# NO to prevent subgrouping. Alternatively, this can be done per class using 
  59.276 -# the \nosubgrouping command.
  59.277 -
  59.278 -SUBGROUPING            = YES
  59.279 -
  59.280 -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
  59.281 -# is documented as struct, union, or enum with the name of the typedef. So 
  59.282 -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
  59.283 -# with name TypeT. When disabled the typedef will appear as a member of a file, 
  59.284 -# namespace, or class. And the struct will be named TypeS. This can typically 
  59.285 -# be useful for C code in case the coding convention dictates that all compound 
  59.286 -# types are typedef'ed and only the typedef is referenced, never the tag name.
  59.287 -
  59.288 -TYPEDEF_HIDES_STRUCT   = YES
  59.289 -
  59.290 -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
  59.291 -# determine which symbols to keep in memory and which to flush to disk. 
  59.292 -# When the cache is full, less often used symbols will be written to disk. 
  59.293 -# For small to medium size projects (<1000 input files) the default value is 
  59.294 -# probably good enough. For larger projects a too small cache size can cause 
  59.295 -# doxygen to be busy swapping symbols to and from disk most of the time 
  59.296 -# causing a significant performance penality. 
  59.297 -# If the system has enough physical memory increasing the cache will improve the 
  59.298 -# performance by keeping more symbols in memory. Note that the value works on 
  59.299 -# a logarithmic scale so increasing the size by one will rougly double the 
  59.300 -# memory usage. The cache size is given by this formula: 
  59.301 -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
  59.302 -# corresponding to a cache size of 2^16 = 65536 symbols
  59.303 -
  59.304 -SYMBOL_CACHE_SIZE      = 0
  59.305 -
  59.306 -#---------------------------------------------------------------------------
  59.307 -# Build related configuration options
  59.308 -#---------------------------------------------------------------------------
  59.309 -
  59.310 -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
  59.311 -# documentation are documented, even if no documentation was available. 
  59.312 -# Private class members and static file members will be hidden unless 
  59.313 -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  59.314 -
  59.315 -EXTRACT_ALL            = YES
  59.316 -
  59.317 -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
  59.318 -# will be included in the documentation.
  59.319 -
  59.320 -EXTRACT_PRIVATE        = YES
  59.321 -
  59.322 -# If the EXTRACT_STATIC tag is set to YES all static members of a file 
  59.323 -# will be included in the documentation.
  59.324 -
  59.325 -EXTRACT_STATIC         = YES
  59.326 -
  59.327 -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
  59.328 -# defined locally in source files will be included in the documentation. 
  59.329 -# If set to NO only classes defined in header files are included.
  59.330 -
  59.331 -EXTRACT_LOCAL_CLASSES  = YES
  59.332 -
  59.333 -# This flag is only useful for Objective-C code. When set to YES local 
  59.334 -# methods, which are defined in the implementation section but not in 
  59.335 -# the interface are included in the documentation. 
  59.336 -# If set to NO (the default) only methods in the interface are included.
  59.337 -
  59.338 -EXTRACT_LOCAL_METHODS  = YES
  59.339 -
  59.340 -# If this flag is set to YES, the members of anonymous namespaces will be 
  59.341 -# extracted and appear in the documentation as a namespace called 
  59.342 -# 'anonymous_namespace{file}', where file will be replaced with the base 
  59.343 -# name of the file that contains the anonymous namespace. By default 
  59.344 -# anonymous namespace are hidden.
  59.345 -
  59.346 -EXTRACT_ANON_NSPACES   = YES
  59.347 -
  59.348 -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
  59.349 -# undocumented members of documented classes, files or namespaces. 
  59.350 -# If set to NO (the default) these members will be included in the 
  59.351 -# various overviews, but no documentation section is generated. 
  59.352 -# This option has no effect if EXTRACT_ALL is enabled.
  59.353 -
  59.354 -HIDE_UNDOC_MEMBERS     = NO
  59.355 -
  59.356 -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
  59.357 -# undocumented classes that are normally visible in the class hierarchy. 
  59.358 -# If set to NO (the default) these classes will be included in the various 
  59.359 -# overviews. This option has no effect if EXTRACT_ALL is enabled.
  59.360 -
  59.361 -HIDE_UNDOC_CLASSES     = NO
  59.362 -
  59.363 -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
  59.364 -# friend (class|struct|union) declarations. 
  59.365 -# If set to NO (the default) these declarations will be included in the 
  59.366 -# documentation.
  59.367 -
  59.368 -HIDE_FRIEND_COMPOUNDS  = NO
  59.369 -
  59.370 -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
  59.371 -# documentation blocks found inside the body of a function. 
  59.372 -# If set to NO (the default) these blocks will be appended to the 
  59.373 -# function's detailed documentation block.
  59.374 -
  59.375 -HIDE_IN_BODY_DOCS      = NO
  59.376 -
  59.377 -# The INTERNAL_DOCS tag determines if documentation 
  59.378 -# that is typed after a \internal command is included. If the tag is set 
  59.379 -# to NO (the default) then the documentation will be excluded. 
  59.380 -# Set it to YES to include the internal documentation.
  59.381 -
  59.382 -INTERNAL_DOCS          = YES
  59.383 -
  59.384 -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
  59.385 -# file names in lower-case letters. If set to YES upper-case letters are also 
  59.386 -# allowed. This is useful if you have classes or files whose names only differ 
  59.387 -# in case and if your file system supports case sensitive file names. Windows 
  59.388 -# and Mac users are advised to set this option to NO.
  59.389 -
  59.390 -CASE_SENSE_NAMES       = NO
  59.391 -
  59.392 -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
  59.393 -# will show members with their full class and namespace scopes in the 
  59.394 -# documentation. If set to YES the scope will be hidden.
  59.395 -
  59.396 -HIDE_SCOPE_NAMES       = NO
  59.397 -
  59.398 -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
  59.399 -# will put a list of the files that are included by a file in the documentation 
  59.400 -# of that file.
  59.401 -
  59.402 -SHOW_INCLUDE_FILES     = YES
  59.403 -
  59.404 -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
  59.405 -# is inserted in the documentation for inline members.
  59.406 -
  59.407 -INLINE_INFO            = YES
  59.408 -
  59.409 -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
  59.410 -# will sort the (detailed) documentation of file and class members 
  59.411 -# alphabetically by member name. If set to NO the members will appear in 
  59.412 -# declaration order.
  59.413 -
  59.414 -SORT_MEMBER_DOCS       = YES
  59.415 -
  59.416 -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
  59.417 -# brief documentation of file, namespace and class members alphabetically 
  59.418 -# by member name. If set to NO (the default) the members will appear in 
  59.419 -# declaration order.
  59.420 -
  59.421 -SORT_BRIEF_DOCS        = NO
  59.422 -
  59.423 -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
  59.424 -# hierarchy of group names into alphabetical order. If set to NO (the default) 
  59.425 -# the group names will appear in their defined order.
  59.426 -
  59.427 -SORT_GROUP_NAMES       = NO
  59.428 -
  59.429 -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
  59.430 -# sorted by fully-qualified names, including namespaces. If set to 
  59.431 -# NO (the default), the class list will be sorted only by class name, 
  59.432 -# not including the namespace part. 
  59.433 -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
  59.434 -# Note: This option applies only to the class list, not to the 
  59.435 -# alphabetical list.
  59.436 -
  59.437 -SORT_BY_SCOPE_NAME     = NO
  59.438 -
  59.439 -# The GENERATE_TODOLIST tag can be used to enable (YES) or 
  59.440 -# disable (NO) the todo list. This list is created by putting \todo 
  59.441 -# commands in the documentation.
  59.442 -
  59.443 -GENERATE_TODOLIST      = YES
  59.444 -
  59.445 -# The GENERATE_TESTLIST tag can be used to enable (YES) or 
  59.446 -# disable (NO) the test list. This list is created by putting \test 
  59.447 -# commands in the documentation.
  59.448 -
  59.449 -GENERATE_TESTLIST      = YES
  59.450 -
  59.451 -# The GENERATE_BUGLIST tag can be used to enable (YES) or 
  59.452 -# disable (NO) the bug list. This list is created by putting \bug 
  59.453 -# commands in the documentation.
  59.454 -
  59.455 -GENERATE_BUGLIST       = YES
  59.456 -
  59.457 -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
  59.458 -# disable (NO) the deprecated list. This list is created by putting 
  59.459 -# \deprecated commands in the documentation.
  59.460 -
  59.461 -GENERATE_DEPRECATEDLIST= YES
  59.462 -
  59.463 -# The ENABLED_SECTIONS tag can be used to enable conditional 
  59.464 -# documentation sections, marked by \if sectionname ... \endif.
  59.465 -
  59.466 -ENABLED_SECTIONS       = 
  59.467 -
  59.468 -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
  59.469 -# the initial value of a variable or define consists of for it to appear in 
  59.470 -# the documentation. If the initializer consists of more lines than specified 
  59.471 -# here it will be hidden. Use a value of 0 to hide initializers completely. 
  59.472 -# The appearance of the initializer of individual variables and defines in the 
  59.473 -# documentation can be controlled using \showinitializer or \hideinitializer 
  59.474 -# command in the documentation regardless of this setting.
  59.475 -
  59.476 -MAX_INITIALIZER_LINES  = 30
  59.477 -
  59.478 -# If the sources in your project are distributed over multiple directories 
  59.479 -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
  59.480 -# in the documentation. The default is NO.
  59.481 -
  59.482 -SHOW_DIRECTORIES       = YES
  59.483 -
  59.484 -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
  59.485 -# This will remove the Files entry from the Quick Index and from the 
  59.486 -# Folder Tree View (if specified). The default is YES.
  59.487 -
  59.488 -SHOW_FILES             = YES
  59.489 -
  59.490 -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
  59.491 -# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
  59.492 -# and from the Folder Tree View (if specified). The default is YES.
  59.493 -
  59.494 -SHOW_NAMESPACES        = YES
  59.495 -
  59.496 -# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
  59.497 -# doxygen should invoke to get the current version for each file (typically from 
  59.498 -# the version control system). Doxygen will invoke the program by executing (via 
  59.499 -# popen()) the command <command> <input-file>, where <command> is the value of 
  59.500 -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
  59.501 -# provided by doxygen. Whatever the program writes to standard output 
  59.502 -# is used as the file version. See the manual for examples.
  59.503 -
  59.504 -FILE_VERSION_FILTER    = 
  59.505 -
  59.506 -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
  59.507 -# doxygen. The layout file controls the global structure of the generated output files 
  59.508 -# in an output format independent way. The create the layout file that represents 
  59.509 -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
  59.510 -# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
  59.511 -# of the layout file.
  59.512 -
  59.513 -LAYOUT_FILE            = 
  59.514 -
  59.515 -#---------------------------------------------------------------------------
  59.516 -# configuration options related to warning and progress messages
  59.517 -#---------------------------------------------------------------------------
  59.518 -
  59.519 -# The QUIET tag can be used to turn on/off the messages that are generated 
  59.520 -# by doxygen. Possible values are YES and NO. If left blank NO is used.
  59.521 -
  59.522 -QUIET                  = NO
  59.523 -
  59.524 -# The WARNINGS tag can be used to turn on/off the warning messages that are 
  59.525 -# generated by doxygen. Possible values are YES and NO. If left blank 
  59.526 -# NO is used.
  59.527 -
  59.528 -WARNINGS               = YES
  59.529 -
  59.530 -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
  59.531 -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
  59.532 -# automatically be disabled.
  59.533 -
  59.534 -WARN_IF_UNDOCUMENTED   = YES
  59.535 -
  59.536 -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
  59.537 -# potential errors in the documentation, such as not documenting some 
  59.538 -# parameters in a documented function, or documenting parameters that 
  59.539 -# don't exist or using markup commands wrongly.
  59.540 -
  59.541 -WARN_IF_DOC_ERROR      = YES
  59.542 -
  59.543 -# This WARN_NO_PARAMDOC option can be abled to get warnings for 
  59.544 -# functions that are documented, but have no documentation for their parameters 
  59.545 -# or return value. If set to NO (the default) doxygen will only warn about 
  59.546 -# wrong or incomplete parameter documentation, but not about the absence of 
  59.547 -# documentation.
  59.548 -
  59.549 -WARN_NO_PARAMDOC       = YES
  59.550 -
  59.551 -# The WARN_FORMAT tag determines the format of the warning messages that 
  59.552 -# doxygen can produce. The string should contain the $file, $line, and $text 
  59.553 -# tags, which will be replaced by the file and line number from which the 
  59.554 -# warning originated and the warning text. Optionally the format may contain 
  59.555 -# $version, which will be replaced by the version of the file (if it could 
  59.556 -# be obtained via FILE_VERSION_FILTER)
  59.557 -
  59.558 -WARN_FORMAT            = "$file:$line: $text"
  59.559 -
  59.560 -# The WARN_LOGFILE tag can be used to specify a file to which warning 
  59.561 -# and error messages should be written. If left blank the output is written 
  59.562 -# to stderr.
  59.563 -
  59.564 -WARN_LOGFILE           = ./doxygen_warn.txt
  59.565 -
  59.566 -#---------------------------------------------------------------------------
  59.567 -# configuration options related to the input files
  59.568 -#---------------------------------------------------------------------------
  59.569 -
  59.570 -# The INPUT tag can be used to specify the files and/or directories that contain 
  59.571 -# documented source files. You may enter file names like "myfile.cpp" or 
  59.572 -# directories like "/usr/src/myproject". Separate the files or directories 
  59.573 -# with spaces.
  59.574 -
  59.575 -INPUT                  = .
  59.576 -
  59.577 -# This tag can be used to specify the character encoding of the source files 
  59.578 -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
  59.579 -# also the default input encoding. Doxygen uses libiconv (or the iconv built 
  59.580 -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
  59.581 -# the list of possible encodings.
  59.582 -
  59.583 -INPUT_ENCODING         = UTF-8
  59.584 -
  59.585 -# If the value of the INPUT tag contains directories, you can use the 
  59.586 -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  59.587 -# and *.h) to filter out the source-files in the directories. If left 
  59.588 -# blank the following patterns are tested: 
  59.589 -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
  59.590 -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  59.591 -
  59.592 -FILE_PATTERNS          = *.c \
  59.593 -                         *.cc \
  59.594 -                         *.cxx \
  59.595 -                         *.cpp \
  59.596 -                         *.c++ \
  59.597 -                         *.d \
  59.598 -                         *.java \
  59.599 -                         *.ii \
  59.600 -                         *.ixx \
  59.601 -                         *.ipp \
  59.602 -                         *.i++ \
  59.603 -                         *.inl \
  59.604 -                         *.h \
  59.605 -                         *.hh \
  59.606 -                         *.hxx \
  59.607 -                         *.hpp \
  59.608 -                         *.h++ \
  59.609 -                         *.idl \
  59.610 -                         *.odl \
  59.611 -                         *.cs \
  59.612 -                         *.php \
  59.613 -                         *.php3 \
  59.614 -                         *.inc \
  59.615 -                         *.m \
  59.616 -                         *.mm \
  59.617 -                         *.dox \
  59.618 -                         *.py \
  59.619 -                         *.f90 \
  59.620 -                         *.f \
  59.621 -                         *.vhd \
  59.622 -                         *.vhdl \
  59.623 -                         *.h.in \
  59.624 -                         *.h.default
  59.625 -
  59.626 -# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
  59.627 -# should be searched for input files as well. Possible values are YES and NO. 
  59.628 -# If left blank NO is used.
  59.629 -
  59.630 -RECURSIVE              = YES
  59.631 -
  59.632 -# The EXCLUDE tag can be used to specify files and/or directories that should 
  59.633 -# excluded from the INPUT source files. This way you can easily exclude a 
  59.634 -# subdirectory from a directory tree whose root is specified with the INPUT tag.
  59.635 -
  59.636 -EXCLUDE                = ../doxy \
  59.637 -                         ../test \
  59.638 -                         ../Xcode \
  59.639 -                         ../VisualC \
  59.640 -                         ../VisualCE \
  59.641 -                         ../Xcode-iOS
  59.642 -
  59.643 -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
  59.644 -# directories that are symbolic links (a Unix filesystem feature) are excluded 
  59.645 -# from the input.
  59.646 -
  59.647 -EXCLUDE_SYMLINKS       = NO
  59.648 -
  59.649 -# If the value of the INPUT tag contains directories, you can use the 
  59.650 -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
  59.651 -# certain files from those directories. Note that the wildcards are matched 
  59.652 -# against the file with absolute path, so to exclude all test directories 
  59.653 -# for example use the pattern */test/*
  59.654 -
  59.655 -EXCLUDE_PATTERNS       =
  59.656 -
  59.657 -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
  59.658 -# (namespaces, classes, functions, etc.) that should be excluded from the 
  59.659 -# output. The symbol name can be a fully qualified name, a word, or if the 
  59.660 -# wildcard * is used, a substring. Examples: ANamespace, AClass, 
  59.661 -# AClass::ANamespace, ANamespace::*Test
  59.662 -
  59.663 -EXCLUDE_SYMBOLS        = 
  59.664 -
  59.665 -# The EXAMPLE_PATH tag can be used to specify one or more files or 
  59.666 -# directories that contain example code fragments that are included (see 
  59.667 -# the \include command).
  59.668 -
  59.669 -EXAMPLE_PATH           =
  59.670 -
  59.671 -# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
  59.672 -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  59.673 -# and *.h) to filter out the source-files in the directories. If left 
  59.674 -# blank all files are included.
  59.675 -
  59.676 -EXAMPLE_PATTERNS       = *
  59.677 -
  59.678 -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
  59.679 -# searched for input files to be used with the \include or \dontinclude 
  59.680 -# commands irrespective of the value of the RECURSIVE tag. 
  59.681 -# Possible values are YES and NO. If left blank NO is used.
  59.682 -
  59.683 -EXAMPLE_RECURSIVE      = YES
  59.684 -
  59.685 -# The IMAGE_PATH tag can be used to specify one or more files or 
  59.686 -# directories that contain image that are included in the documentation (see 
  59.687 -# the \image command).
  59.688 -
  59.689 -IMAGE_PATH             = 
  59.690 -
  59.691 -# The INPUT_FILTER tag can be used to specify a program that doxygen should 
  59.692 -# invoke to filter for each input file. Doxygen will invoke the filter program 
  59.693 -# by executing (via popen()) the command <filter> <input-file>, where <filter> 
  59.694 -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
  59.695 -# input file. Doxygen will then use the output that the filter program writes 
  59.696 -# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  59.697 -# ignored.
  59.698 -
  59.699 -INPUT_FILTER           = 
  59.700 -
  59.701 -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
  59.702 -# basis.  Doxygen will compare the file name with each pattern and apply the 
  59.703 -# filter if there is a match.  The filters are a list of the form: 
  59.704 -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
  59.705 -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
  59.706 -# is applied to all files.
  59.707 -
  59.708 -FILTER_PATTERNS        = 
  59.709 -
  59.710 -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
  59.711 -# INPUT_FILTER) will be used to filter the input files when producing source 
  59.712 -# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  59.713 -
  59.714 -FILTER_SOURCE_FILES    = NO
  59.715 -
  59.716 -#---------------------------------------------------------------------------
  59.717 -# configuration options related to source browsing
  59.718 -#---------------------------------------------------------------------------
  59.719 -
  59.720 -# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
  59.721 -# be generated. Documented entities will be cross-referenced with these sources. 
  59.722 -# Note: To get rid of all source code in the generated output, make sure also 
  59.723 -# VERBATIM_HEADERS is set to NO.
  59.724 -
  59.725 -SOURCE_BROWSER         = YES
  59.726 -
  59.727 -# Setting the INLINE_SOURCES tag to YES will include the body 
  59.728 -# of functions and classes directly in the documentation.
  59.729 -
  59.730 -INLINE_SOURCES         = YES
  59.731 -
  59.732 -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
  59.733 -# doxygen to hide any special comment blocks from generated source code 
  59.734 -# fragments. Normal C and C++ comments will always remain visible.
  59.735 -
  59.736 -STRIP_CODE_COMMENTS    = NO
  59.737 -
  59.738 -# If the REFERENCED_BY_RELATION tag is set to YES 
  59.739 -# then for each documented function all documented 
  59.740 -# functions referencing it will be listed.
  59.741 -
  59.742 -REFERENCED_BY_RELATION = YES
  59.743 -
  59.744 -# If the REFERENCES_RELATION tag is set to YES 
  59.745 -# then for each documented function all documented entities 
  59.746 -# called/used by that function will be listed.
  59.747 -
  59.748 -REFERENCES_RELATION    = YES
  59.749 -
  59.750 -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
  59.751 -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
  59.752 -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
  59.753 -# link to the source code.  Otherwise they will link to the documentation.
  59.754 -
  59.755 -REFERENCES_LINK_SOURCE = YES
  59.756 -
  59.757 -# If the USE_HTAGS tag is set to YES then the references to source code 
  59.758 -# will point to the HTML generated by the htags(1) tool instead of doxygen 
  59.759 -# built-in source browser. The htags tool is part of GNU's global source 
  59.760 -# tagging system (see http://www.gnu.org/software/global/global.html). You 
  59.761 -# will need version 4.8.6 or higher.
  59.762 -
  59.763 -USE_HTAGS              = NO
  59.764 -
  59.765 -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
  59.766 -# will generate a verbatim copy of the header file for each class for 
  59.767 -# which an include is specified. Set to NO to disable this.
  59.768 -
  59.769 -VERBATIM_HEADERS       = YES
  59.770 -
  59.771 -#---------------------------------------------------------------------------
  59.772 -# configuration options related to the alphabetical class index
  59.773 -#---------------------------------------------------------------------------
  59.774 -
  59.775 -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
  59.776 -# of all compounds will be generated. Enable this if the project 
  59.777 -# contains a lot of classes, structs, unions or interfaces.
  59.778 -
  59.779 -ALPHABETICAL_INDEX     = YES
  59.780 -
  59.781 -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
  59.782 -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
  59.783 -# in which this list will be split (can be a number in the range [1..20])
  59.784 -
  59.785 -COLS_IN_ALPHA_INDEX    = 5
  59.786 -
  59.787 -# In case all classes in a project start with a common prefix, all 
  59.788 -# classes will be put under the same header in the alphabetical index. 
  59.789 -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
  59.790 -# should be ignored while generating the index headers.
  59.791 -
  59.792 -IGNORE_PREFIX          = SDL_ \
  59.793 -                         SDL
  59.794 -
  59.795 -#---------------------------------------------------------------------------
  59.796 -# configuration options related to the HTML output
  59.797 -#---------------------------------------------------------------------------
  59.798 -
  59.799 -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
  59.800 -# generate HTML output.
  59.801 -
  59.802 -GENERATE_HTML          = YES
  59.803 -
  59.804 -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
  59.805 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
  59.806 -# put in front of it. If left blank `html' will be used as the default path.
  59.807 -
  59.808 -HTML_OUTPUT            = html
  59.809 -
  59.810 -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
  59.811 -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
  59.812 -# doxygen will generate files with .html extension.
  59.813 -
  59.814 -HTML_FILE_EXTENSION    = .html
  59.815 -
  59.816 -# The HTML_HEADER tag can be used to specify a personal HTML header for 
  59.817 -# each generated HTML page. If it is left blank doxygen will generate a 
  59.818 -# standard header.
  59.819 -
  59.820 -HTML_HEADER            = 
  59.821 -
  59.822 -# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  59.823 -# each generated HTML page. If it is left blank doxygen will generate a 
  59.824 -# standard footer.
  59.825 -
  59.826 -HTML_FOOTER            = 
  59.827 -
  59.828 -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  59.829 -# style sheet that is used by each HTML page. It can be used to 
  59.830 -# fine-tune the look of the HTML output. If the tag is left blank doxygen 
  59.831 -# will generate a default style sheet. Note that doxygen will try to copy 
  59.832 -# the style sheet file to the HTML output directory, so don't put your own 
  59.833 -# stylesheet in the HTML output directory as well, or it will be erased!
  59.834 -
  59.835 -HTML_STYLESHEET        = 
  59.836 -
  59.837 -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
  59.838 -# files or namespaces will be aligned in HTML using tables. If set to 
  59.839 -# NO a bullet list will be used.
  59.840 -
  59.841 -HTML_ALIGN_MEMBERS     = YES
  59.842 -
  59.843 -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
  59.844 -# documentation will contain sections that can be hidden and shown after the 
  59.845 -# page has loaded. For this to work a browser that supports