Merged 'default' into branch 'iOS-improvements' iOS-improvements
authorAlex Szpakowski
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/
     4.1 --- a/README-android.txt	Tue Jul 29 00:36:12 2014 -0300
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,438 +0,0 @@
     4.4 -================================================================================
     4.5 -Simple DirectMedia Layer for Android
     4.6 -================================================================================
     4.7 -
     4.8 -Requirements:
     4.9 -
    4.10 -Android SDK (version 12 or later)
    4.11 -http://developer.android.com/sdk/index.html
    4.12 -
    4.13 -Android NDK r7 or later
    4.14 -http://developer.android.com/tools/sdk/ndk/index.html
    4.15 -
    4.16 -Minimum API level supported by SDL: 10 (Android 2.3.3)
    4.17 -Joystick support is available for API level >=12 devices.
    4.18 -
    4.19 -================================================================================
    4.20 - How the port works
    4.21 -================================================================================
    4.22 -
    4.23 -- Android applications are Java-based, optionally with parts written in C
    4.24 -- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to 
    4.25 -the SDL library
    4.26 -- This means that your application C code must be placed inside an Android 
    4.27 -Java project, along with some C support code that communicates with Java
    4.28 -- This eventually produces a standard Android .apk package
    4.29 -
    4.30 -The Android Java code implements an "Activity" and can be found in:
    4.31 -android-project/src/org/libsdl/app/SDLActivity.java
    4.32 -
    4.33 -The Java code loads your game code, the SDL shared library, and
    4.34 -dispatches to native functions implemented in the SDL library:
    4.35 -src/core/android/SDL_android.c
    4.36 -
    4.37 -Your project must include some glue code that starts your main() routine:
    4.38 -src/main/android/SDL_android_main.c
    4.39 -
    4.40 -
    4.41 -================================================================================
    4.42 - Building an app
    4.43 -================================================================================
    4.44 -
    4.45 -For simple projects you can use the script located at build-scripts/androidbuild.sh
    4.46 -
    4.47 -There's two ways of using it:
    4.48 -
    4.49 -androidbuild.sh com.yourcompany.yourapp < sources.list
    4.50 -androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
    4.51 -
    4.52 -sources.list should be a text file with a source file name in each line
    4.53 -Filenames should be specified relative to the current directory, for example if
    4.54 -you are in the build-scripts directory and want to create the testgles.c test, you'll
    4.55 -run:
    4.56 -    
    4.57 -./androidbuild.sh org.libsdl.testgles ../test/testgles.c
    4.58 -
    4.59 -One limitation of this script is that all sources provided will be aggregated into
    4.60 -a single directory, thus all your source files should have a unique name.
    4.61 -
    4.62 -Once the project is complete the script will tell you where the debug APK is located.
    4.63 -If you want to create a signed release APK, you can use the project created by this
    4.64 -utility to generate it.
    4.65 -
    4.66 -Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
    4.67 -done in the build directory for the app!
    4.68 -
    4.69 -
    4.70 -For more complex projects, follow these instructions:
    4.71 -    
    4.72 -1. Copy the android-project directory wherever you want to keep your projects
    4.73 -   and rename it to the name of your project.
    4.74 -2. Move or symlink this SDL directory into the <project>/jni directory
    4.75 -3. Edit <project>/jni/src/Android.mk to include your source files
    4.76 -4. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
    4.77 -
    4.78 -If you want to use the Eclipse IDE, skip to the Eclipse section below.
    4.79 -
    4.80 -5. Create <project>/local.properties and use that to point to the Android SDK directory, by writing a line with the following form:
    4.81 -sdk.dir=PATH_TO_ANDROID_SDK
    4.82 -6. Run 'ant debug' in android/project. This compiles the .java and eventually 
    4.83 -   creates a .apk with the native code embedded
    4.84 -7. 'ant debug install' will push the apk to the device or emulator (if connected)
    4.85 -
    4.86 -Here's an explanation of the files in the Android project, so you can customize them:
    4.87 -
    4.88 -android-project/
    4.89 -	AndroidManifest.xml	- package manifest. Among others, it contains the class name
    4.90 -				  of the main Activity and the package name of the application.
    4.91 -	build.properties	- empty
    4.92 -	build.xml		- build description file, used by ant. The actual application name
    4.93 -				  is specified here.
    4.94 -	default.properties	- holds the target ABI for the application, android-10 and up
    4.95 -	project.properties	- holds the target ABI for the application, android-10 and up
    4.96 -	local.properties	- holds the SDK path, you should change this to the path to your SDK
    4.97 -	jni/			- directory holding native code
    4.98 -	jni/Android.mk		- Android makefile that can call recursively the Android.mk files
    4.99 -				  in all subdirectories
   4.100 -	jni/SDL/		- (symlink to) directory holding the SDL library files
   4.101 -	jni/SDL/Android.mk	- Android makefile for creating the SDL shared library
   4.102 -	jni/src/		- directory holding your C/C++ source
   4.103 -	jni/src/Android.mk	- Android makefile that you should customize to include your 
   4.104 -                                  source code and any library references
   4.105 -	res/			- directory holding resources for your application
   4.106 -	res/drawable-*		- directories holding icons for different phone hardware. Could be
   4.107 -				  one dir called "drawable".
   4.108 -	res/layout/main.xml	- Usually contains a file main.xml, which declares the screen layout.
   4.109 -				  We don't need it because we use the SDL video output.
   4.110 -	res/values/strings.xml	- strings used in your application, including the application name
   4.111 -				  shown on the phone.
   4.112 -	src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding
   4.113 -				  to SDL.  Be very careful changing this, as the SDL library relies
   4.114 -				  on this implementation.
   4.115 -
   4.116 -
   4.117 -================================================================================
   4.118 - Build an app with static linking of libSDL
   4.119 -================================================================================
   4.120 -
   4.121 -This build uses the Android NDK module system.
   4.122 -
   4.123 -Instructions:
   4.124 -1. Copy the android-project directory wherever you want to keep your projects
   4.125 -   and rename it to the name of your project.
   4.126 -2. Rename <project>/jni/src/Android_static.mk to <project>/jni/src/Android.mk
   4.127 -   (overwrite the existing one)
   4.128 -3. Edit <project>/jni/src/Android.mk to include your source files
   4.129 -4. create and export an environment variable named NDK_MODULE_PATH that points
   4.130 -   to the parent directory of this SDL directory. e.g.:
   4.131 -
   4.132 -   export NDK_MODULE_PATH="$PWD"/..
   4.133 -
   4.134 -5. Edit <project>/src/org/libsdl/app/SDLActivity.java and remove the call to
   4.135 -   System.loadLibrary("SDL2") line 42.
   4.136 -6. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
   4.137 -
   4.138 -
   4.139 -================================================================================
   4.140 - Customizing your application name
   4.141 -================================================================================
   4.142 -
   4.143 -To customize your application name, edit AndroidManifest.xml and replace
   4.144 -"org.libsdl.app" with an identifier for your product package.
   4.145 -
   4.146 -Then create a Java class extending SDLActivity and place it in a directory
   4.147 -under src matching your package, e.g.
   4.148 -	src/com/gamemaker/game/MyGame.java
   4.149 -
   4.150 -Here's an example of a minimal class file:
   4.151 ---- MyGame.java --------------------------
   4.152 -package com.gamemaker.game;
   4.153 -
   4.154 -import org.libsdl.app.SDLActivity; 
   4.155 -
   4.156 -/* 
   4.157 - * A sample wrapper class that just calls SDLActivity 
   4.158 - */ 
   4.159 -
   4.160 -public class MyGame extends SDLActivity { }
   4.161 -
   4.162 -------------------------------------------
   4.163 -
   4.164 -Then replace "SDLActivity" in AndroidManifest.xml with the name of your
   4.165 -class, .e.g. "MyGame"
   4.166 -
   4.167 -================================================================================
   4.168 - Customizing your application icon
   4.169 -================================================================================
   4.170 -
   4.171 -Conceptually changing your icon is just replacing the "ic_launcher.png" files in
   4.172 -the drawable directories under the res directory. There are four directories for
   4.173 -different screen sizes. These can be replaced with one dir called "drawable",
   4.174 -containing an icon file "ic_launcher.png" with dimensions 48x48 or 72x72.
   4.175 -
   4.176 -You may need to change the name of your icon in AndroidManifest.xml to match
   4.177 -this icon filename.
   4.178 -
   4.179 -================================================================================
   4.180 - Loading assets
   4.181 -================================================================================
   4.182 -
   4.183 -Any files you put in the "assets" directory of your android-project directory
   4.184 -will get bundled into the application package and you can load them using the
   4.185 -standard functions in SDL_rwops.h.
   4.186 -
   4.187 -There are also a few Android specific functions that allow you to get other
   4.188 -useful paths for saving and loading data:
   4.189 -SDL_AndroidGetInternalStoragePath()
   4.190 -SDL_AndroidGetExternalStorageState()
   4.191 -SDL_AndroidGetExternalStoragePath()
   4.192 -
   4.193 -See SDL_system.h for more details on these functions.
   4.194 -
   4.195 -The asset packaging system will, by default, compress certain file extensions.
   4.196 -SDL includes two asset file access mechanisms, the preferred one is the so
   4.197 -called "File Descriptor" method, which is faster and doesn't involve the Dalvik
   4.198 -GC, but given this method does not work on compressed assets, there is also the
   4.199 -"Input Stream" method, which is automatically used as a fall back by SDL. You
   4.200 -may want to keep this fact in mind when building your APK, specially when large
   4.201 -files are involved.
   4.202 -For more information on which extensions get compressed by default and how to
   4.203 -disable this behaviour, see for example:
   4.204 -    
   4.205 -http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
   4.206 -
   4.207 -================================================================================
   4.208 - Pause / Resume behaviour
   4.209 -================================================================================
   4.210 -
   4.211 -If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
   4.212 -the event loop will block itself when the app is paused (ie, when the user
   4.213 -returns to the main Android dashboard). Blocking is better in terms of battery
   4.214 -use, and it allows your app to spring back to life instantaneously after resume
   4.215 -(versus polling for a resume message).
   4.216 -
   4.217 -Upon resume, SDL will attempt to restore the GL context automatically.
   4.218 -In modern devices (Android 3.0 and up) this will most likely succeed and your
   4.219 -app can continue to operate as it was.
   4.220 -
   4.221 -However, there's a chance (on older hardware, or on systems under heavy load),
   4.222 -where the GL context can not be restored. In that case you have to listen for
   4.223 -a specific message, (which is not yet implemented!) and restore your textures
   4.224 -manually or quit the app (which is actually the kind of behaviour you'll see
   4.225 -under iOS, if the OS can not restore your GL context it will just kill your app)
   4.226 -
   4.227 -================================================================================
   4.228 - Threads and the Java VM
   4.229 -================================================================================
   4.230 -
   4.231 -For a quick tour on how Linux native threads interoperate with the Java VM, take
   4.232 -a look here: http://developer.android.com/guide/practices/jni.html
   4.233 -If you want to use threads in your SDL app, it's strongly recommended that you
   4.234 -do so by creating them using SDL functions. This way, the required attach/detach
   4.235 -handling is managed by SDL automagically. If you have threads created by other
   4.236 -means and they make calls to SDL functions, make sure that you call
   4.237 -Android_JNI_SetupThread before doing anything else otherwise SDL will attach
   4.238 -your thread automatically anyway (when you make an SDL call), but it'll never
   4.239 -detach it.
   4.240 -
   4.241 -================================================================================
   4.242 - Using STL
   4.243 -================================================================================
   4.244 -
   4.245 -You can use STL in your project by creating an Application.mk file in the jni
   4.246 -folder and adding the following line:
   4.247 -APP_STL := stlport_static
   4.248 -
   4.249 -For more information check out CPLUSPLUS-SUPPORT.html in the NDK documentation.
   4.250 -
   4.251 -================================================================================
   4.252 - Additional documentation
   4.253 -================================================================================
   4.254 -
   4.255 -The documentation in the NDK docs directory is very helpful in understanding the
   4.256 -build process and how to work with native code on the Android platform.
   4.257 -
   4.258 -The best place to start is with docs/OVERVIEW.TXT
   4.259 -
   4.260 -
   4.261 -================================================================================
   4.262 - Using Eclipse
   4.263 -================================================================================
   4.264 -
   4.265 -First make sure that you've installed Eclipse and the Android extensions as described here:
   4.266 -	http://developer.android.com/tools/sdk/eclipse-adt.html
   4.267 -
   4.268 -Once you've copied the SDL android project and customized it, you can create an Eclipse project from it:
   4.269 - * File -> New -> Other
   4.270 - * Select the Android -> Android Project wizard and click Next
   4.271 - * Enter the name you'd like your project to have
   4.272 - * Select "Create project from existing source" and browse for your project directory
   4.273 - * Make sure the Build Target is set to Android 2.0
   4.274 - * Click Finish
   4.275 -
   4.276 -
   4.277 -================================================================================
   4.278 - Using the emulator
   4.279 -================================================================================
   4.280 -
   4.281 -There are some good tips and tricks for getting the most out of the
   4.282 -emulator here: http://developer.android.com/tools/devices/emulator.html
   4.283 -
   4.284 -Especially useful is the info on setting up OpenGL ES 2.0 emulation.
   4.285 -
   4.286 -Notice that this software emulator is incredibly slow and needs a lot of disk space.
   4.287 -Using a real device works better.
   4.288 -
   4.289 -================================================================================
   4.290 - Troubleshooting
   4.291 -================================================================================
   4.292 -
   4.293 -You can create and run an emulator from the Eclipse IDE:
   4.294 - * Window -> Android SDK and AVD Manager
   4.295 -
   4.296 -You can see if adb can see any devices with the following command:
   4.297 -	adb devices
   4.298 -
   4.299 -You can see the output of log messages on the default device with:
   4.300 -	adb logcat
   4.301 -
   4.302 -You can push files to the device with:
   4.303 -	adb push local_file remote_path_and_file
   4.304 -
   4.305 -You can push files to the SD Card at /sdcard, for example:
   4.306 -	adb push moose.dat /sdcard/moose.dat
   4.307 -
   4.308 -You can see the files on the SD card with a shell command:
   4.309 -	adb shell ls /sdcard/
   4.310 -
   4.311 -You can start a command shell on the default device with:
   4.312 -	adb shell
   4.313 -
   4.314 -You can remove the library files of your project (and not the SDL lib files) with:
   4.315 -	ndk-build clean
   4.316 -
   4.317 -You can do a build with the following command:
   4.318 -	ndk-build
   4.319 -
   4.320 -You can see the complete command line that ndk-build is using by passing V=1 on the command line:
   4.321 -	ndk-build V=1
   4.322 -
   4.323 -If your application crashes in native code, you can use addr2line to convert the
   4.324 -addresses in the stack trace to lines in your code.
   4.325 -
   4.326 -For example, if your crash looks like this:
   4.327 -I/DEBUG   (   31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
   4.328 -I/DEBUG   (   31):  r0 00000000  r1 00001000  r2 00000003  r3 400085d4
   4.329 -I/DEBUG   (   31):  r4 400085d0  r5 40008000  r6 afd41504  r7 436c6a7c
   4.330 -I/DEBUG   (   31):  r8 436c6b30  r9 435c6fb0  10 435c6f9c  fp 4168d82c
   4.331 -I/DEBUG   (   31):  ip 8346aff0  sp 436c6a60  lr afd1c8ff  pc afd1c902  cpsr 60000030
   4.332 -I/DEBUG   (   31):          #00  pc 0001c902  /system/lib/libc.so
   4.333 -I/DEBUG   (   31):          #01  pc 0001ccf6  /system/lib/libc.so
   4.334 -I/DEBUG   (   31):          #02  pc 000014bc  /data/data/org.libsdl.app/lib/libmain.so
   4.335 -I/DEBUG   (   31):          #03  pc 00001506  /data/data/org.libsdl.app/lib/libmain.so
   4.336 -
   4.337 -You can see that there's a crash in the C library being called from the main code.
   4.338 -I run addr2line with the debug version of my code:
   4.339 -	arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
   4.340 -and then paste in the number after "pc" in the call stack, from the line that I care about:
   4.341 -000014bc
   4.342 -
   4.343 -I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
   4.344 -
   4.345 -You can add logging to your code to help show what's happening:
   4.346 -
   4.347 -#include <android/log.h>
   4.348 -
   4.349 -	__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
   4.350 -
   4.351 -If you need to build without optimization turned on, you can create a file called
   4.352 -"Application.mk" in the jni directory, with the following line in it:
   4.353 -APP_OPTIM := debug
   4.354 -
   4.355 -
   4.356 -================================================================================
   4.357 - Memory debugging
   4.358 -================================================================================
   4.359 -
   4.360 -The best (and slowest) way to debug memory issues on Android is valgrind.
   4.361 -Valgrind has support for Android out of the box, just grab code using:
   4.362 -	svn co svn://svn.valgrind.org/valgrind/trunk valgrind
   4.363 -... and follow the instructions in the file README.android to build it.
   4.364 -
   4.365 -One thing I needed to do on Mac OS X was change the path to the toolchain,
   4.366 -and add ranlib to the environment variables:
   4.367 -export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
   4.368 -
   4.369 -Once valgrind is built, you can create a wrapper script to launch your
   4.370 -application with it, changing org.libsdl.app to your package identifier:
   4.371 ---- start_valgrind_app -------------------
   4.372 -#!/system/bin/sh
   4.373 -export TMPDIR=/data/data/org.libsdl.app
   4.374 -exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
   4.375 -------------------------------------------
   4.376 -
   4.377 -Then push it to the device:
   4.378 -	adb push start_valgrind_app /data/local
   4.379 -
   4.380 -and make it executable:
   4.381 -	adb shell chmod 755 /data/local/start_valgrind_app
   4.382 -
   4.383 -and tell Android to use the script to launch your application:
   4.384 -	adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
   4.385 -
   4.386 -If the setprop command says "could not set property", it's likely that
   4.387 -your package name is too long and you should make it shorter by changing
   4.388 -AndroidManifest.xml and the path to your class file in android-project/src
   4.389 -
   4.390 -You can then launch your application normally and waaaaaaaiiittt for it.
   4.391 -You can monitor the startup process with the logcat command above, and
   4.392 -when it's done (or even while it's running) you can grab the valgrind
   4.393 -output file:
   4.394 -	adb pull /sdcard/valgrind.log
   4.395 -
   4.396 -When you're done instrumenting with valgrind, you can disable the wrapper:
   4.397 -	adb shell setprop wrap.org.libsdl.app ""
   4.398 -
   4.399 -================================================================================
   4.400 - Why is API level 10 the minimum required?
   4.401 -================================================================================
   4.402 -
   4.403 -API level 10 is the minimum required level at runtime (that is, on the device) 
   4.404 -because SDL requires some functionality for running not
   4.405 -available on older devices. Since the incorporation of joystick support into SDL,
   4.406 -the minimum SDK required to *build* SDL is version 12. Devices running API levels
   4.407 -10-11 are still supported, only with the joystick functionality disabled.
   4.408 -
   4.409 -Support for native OpenGL ES and ES2 applications was introduced in the NDK for
   4.410 -API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which
   4.411 -has since then been obsoleted, with the recommendation to developers to bump the
   4.412 -required API level to 10.
   4.413 -As of this writing, according to http://developer.android.com/about/dashboards/index.html
   4.414 -about 90% of the Android devices accessing Google Play support API level 10 or
   4.415 -higher (March 2013).
   4.416 -
   4.417 -================================================================================
   4.418 - A note regarding the use of the "dirty rectangles" rendering technique
   4.419 -================================================================================
   4.420 -
   4.421 -If your app uses a variation of the "dirty rectangles" rendering technique,
   4.422 -where you only update a portion of the screen on each frame, you may notice a
   4.423 -variety of visual glitches on Android, that are not present on other platforms.
   4.424 -This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
   4.425 -contexts, in particular the use of the eglSwapBuffers function. As stated in the
   4.426 -documentation for the function "The contents of ancillary buffers are always 
   4.427 -undefined after calling eglSwapBuffers".
   4.428 -Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
   4.429 -is not possible for SDL as it requires EGL 1.4, available only on the API level
   4.430 -17+, so the only workaround available on this platform is to redraw the entire
   4.431 -screen each frame.
   4.432 -
   4.433 -Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
   4.434 -
   4.435 -================================================================================
   4.436 - Known issues
   4.437 -================================================================================
   4.438 -
   4.439 -- The number of buttons reported for each joystick is hardcoded to be 36, which
   4.440 -is the current maximum number of buttons Android can report.
   4.441 -
     5.1 --- a/README-cmake.txt	Tue Jul 29 00:36:12 2014 -0300
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,31 +0,0 @@
     5.4 -================================================================================
     5.5 -CMake build system for SDL (www.cmake.org)
     5.6 -================================================================================
     5.7 -
     5.8 -SDL's build system was traditionally based on autotools. Over time, this
     5.9 -approach has suffered from several issues across the different supported 
    5.10 -platforms.
    5.11 -To solve these problems, a new build system based on CMake is under development.
    5.12 -It works in parallel to the legacy system, so users can experiment with it
    5.13 -without complication.
    5.14 -While still experimental, the build system should be usable on the following
    5.15 -platforms:
    5.16 -    
    5.17 -    * FreeBSD
    5.18 -    * Linux
    5.19 -    * VS.NET 2010
    5.20 -    * MinGW and Msys
    5.21 -    * OS X with support for XCode
    5.22 -    
    5.23 -================================================================================
    5.24 -Usage
    5.25 -================================================================================
    5.26 -
    5.27 -Assuming the source for SDL is located at ~/sdl
    5.28 -
    5.29 -cd ~
    5.30 -mkdir build
    5.31 -cd build
    5.32 -cmake ../sdl
    5.33 -
    5.34 -This will build the static and dynamic versions of SDL in the ~/build directory.
     6.1 --- a/README-directfb.txt	Tue Jul 29 00:36:12 2014 -0300
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,106 +0,0 @@
     6.4 -SDL on DirectFB
     6.5 -
     6.6 -Supports:
     6.7 -
     6.8 -- Hardware YUV overlays
     6.9 -- OpenGL - software only
    6.10 -- 2D/3D accelerations (depends on directfb driver)
    6.11 -- multiple displays
    6.12 -- windows
    6.13 -
    6.14 -What you need:
    6.15 -
    6.16 -DirectFB 1.0.1, 1.2.x, 1.3.0
    6.17 -Kernel-Framebuffer support: required: vesafb, radeonfb .... 
    6.18 -Mesa 7.0.x	   - optional for OpenGL
    6.19 -
    6.20 -/etc/directfbrc
    6.21 -
    6.22 -This file should contain the following lines to make
    6.23 -your joystick work and avoid crashes:
    6.24 -------------------------
    6.25 -disable-module=joystick
    6.26 -disable-module=cle266
    6.27 -disable-module=cyber5k
    6.28 -no-linux-input-grab
    6.29 -------------------------
    6.30 -
    6.31 -To disable to use x11 backend when DISPLAY variable is found use
    6.32 -
    6.33 -export SDL_DIRECTFB_X11_CHECK=0
    6.34 -
    6.35 -To disable the use of linux input devices, i.e. multimice/multikeyboard support,
    6.36 -use
    6.37 -
    6.38 -export SDL_DIRECTFB_LINUX_INPUT=0
    6.39 -
    6.40 -To use hardware accelerated YUV-overlays for YUV-textures, use:
    6.41 -
    6.42 -export SDL_DIRECTFB_YUV_DIRECT=1
    6.43 -
    6.44 -This is disabled by default. It will only support one 
    6.45 -YUV texture, namely the first. Every other YUV texture will be
    6.46 -rendered in software.
    6.47 -
    6.48 -In addition, you may use (directfb-1.2.x)
    6.49 -
    6.50 -export SDL_DIRECTFB_YUV_UNDERLAY=1
    6.51 -
    6.52 -to make the YUV texture an underlay. This will make the cursor to
    6.53 -be shown.
    6.54 -
    6.55 -Simple Window Manager
    6.56 -=====================
    6.57 -
    6.58 -The driver has support for a very, very basic window manager you may
    6.59 -want to use when running with "wm=default". Use
    6.60 -
    6.61 -export SDL_DIRECTFB_WM=1
    6.62 -
    6.63 -to enable basic window borders. In order to have the window title rendered,
    6.64 -you need to have the following font installed:
    6.65 -
    6.66 -/usr/share/fonts/truetype/freefont/FreeSans.ttf
    6.67 -
    6.68 -OpenGL Support
    6.69 -==============
    6.70 -
    6.71 -The following instructions will give you *software* OpenGL. However this
    6.72 -works at least on all directfb supported platforms.
    6.73 -
    6.74 -As of this writing 20100802 you need to pull Mesa from git and do the following:
    6.75 -
    6.76 -------------------------
    6.77 -git clone git://anongit.freedesktop.org/git/mesa/mesa
    6.78 -cd mesa 
    6.79 -git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
    6.80 -------------------------
    6.81 -
    6.82 -Edit configs/linux-directfb so that the Directories-section looks like
    6.83 -------------------------
    6.84 -# Directories
    6.85 -SRC_DIRS     = mesa glu 
    6.86 -GLU_DIRS     = sgi
    6.87 -DRIVER_DIRS  = directfb
    6.88 -PROGRAM_DIRS = 
    6.89 -------------------------
    6.90 -
    6.91 -make linux-directfb
    6.92 -make
    6.93 -
    6.94 -echo Installing - please enter sudo pw.
    6.95 -
    6.96 -sudo make install INSTALL_DIR=/usr/local/dfb_GL
    6.97 -cd src/mesa/drivers/directfb
    6.98 -make
    6.99 -sudo make install INSTALL_DIR=/usr/local/dfb_GL
   6.100 -------------------------
   6.101 -
   6.102 -To run the SDL - testprograms:
   6.103 -
   6.104 -export SDL_VIDEODRIVER=directfb
   6.105 -export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
   6.106 -export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
   6.107 -
   6.108 -./testgl
   6.109 -
     7.1 --- a/README-dynapi.txt	Tue Jul 29 00:36:12 2014 -0300
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,130 +0,0 @@
     7.4 -================================================================================
     7.5 -Dynamic API
     7.6 -================================================================================
     7.7 -Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
     7.8 -
     7.9 -Background:
    7.10 -
    7.11 -- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, 
    7.12 -  but developers are shipping their own SDL2 with individual Steam games. 
    7.13 -  These games might stop getting updates, but a newer SDL2 might be needed later. 
    7.14 -  Certainly we'll always be fixing bugs in SDL, even if a new video target isn't 
    7.15 -  ever needed, and these fixes won't make it to a game shipping its own SDL.
    7.16 -- Even if we replace the SDL2 in those games with a compatible one, that is to 
    7.17 -  say, edit a developer's Steam depot (yuck!), there are developers that are 
    7.18 -  statically linking SDL2 that we can't do this for. We can't even force the 
    7.19 -  dynamic loader to ignore their SDL2 in this case, of course.
    7.20 -- If you don't ship an SDL2 with the game in some form, people that disabled the
    7.21 -  Steam Runtime, or just tried to run the game from the command line instead of 
    7.22 -  Steam might find themselves unable to run the game, due to a missing dependency.
    7.23 -- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
    7.24 -  generic Linux boxes that may or may not have SDL2 installed, you have to ship 
    7.25 -  the library or risk a total failure to launch. So now, you might have to have 
    7.26 -  a non-Steam build plus a Steam build (that is, one with and one without SDL2 
    7.27 -  included), which is inconvenient if you could have had one universal build 
    7.28 -  that works everywhere.
    7.29 -- We like the zlib license, but the biggest complaint from the open source 
    7.30 -  community about the license change is the static linking. The LGPL forced this 
    7.31 -  as a legal, not technical issue, but zlib doesn't care. Even those that aren't
    7.32 -  concerned about the GNU freedoms found themselves solving the same problems: 
    7.33 -  swapping in a newer SDL to an older game often times can save the day. 
    7.34 -  Static linking stops this dead.
    7.35 -
    7.36 -So here's what we did:
    7.37 -
    7.38 -SDL now has, internally, a table of function pointers. So, this is what SDL_Init
    7.39 -now looks like:
    7.40 -
    7.41 -    UInt32 SDL_Init(Uint32 flags)
    7.42 -    {
    7.43 -        return jump_table.SDL_Init(flags);
    7.44 -    }
    7.45 -
    7.46 -Except that is all done with a bunch of macro magic so we don't have to maintain
    7.47 -every one of these.
    7.48 -
    7.49 -What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
    7.50 -SDL_Init() that you've been calling all this time. But at startup, it looks more 
    7.51 -like this:
    7.52 -
    7.53 -    Uint32 SDL_Init_DEFAULT(Uint32 flags)
    7.54 -    {
    7.55 -        SDL_InitDynamicAPI();
    7.56 -        return jump_table.SDL_Init(flags);
    7.57 -    }
    7.58 -
    7.59 -SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function 
    7.60 -pointers, which means that this _DEFAULT function never gets called again. 
    7.61 -First call to any SDL function sets the whole thing up.
    7.62 -
    7.63 -So you might be asking, what was the value in that? Isn't this what the operating
    7.64 -system's dynamic loader was supposed to do for us? Yes, but now we've got this 
    7.65 -level of indirection, we can do things like this:
    7.66 -
    7.67 -    export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
    7.68 -    ./MyGameThatIsStaticallyLinkedToSDL2
    7.69 -
    7.70 -And now, this game that is staticallly linked to SDL, can still be overridden 
    7.71 -with a newer, or better, SDL. The statically linked one will only be used as 
    7.72 -far as calling into the jump table in this case. But in cases where no override
    7.73 -is desired, the statically linked version will provide its own jump table, 
    7.74 -and everyone is happy.
    7.75 -
    7.76 -So now:
    7.77 -- Developers can statically link SDL, and users can still replace it. 
    7.78 -  (We'd still rather you ship a shared library, though!)
    7.79 -- Developers can ship an SDL with their game, Valve can override it for, say, 
    7.80 -  new features on SteamOS, or distros can override it for their own needs, 
    7.81 -  but it'll also just work in the default case.
    7.82 -- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), 
    7.83 -  and it'll do the right thing.
    7.84 -- End users (and Valve) can update a game's SDL in almost any case, 
    7.85 -  to keep abandoned games running on newer platforms.
    7.86 -- Everyone develops with SDL exactly as they have been doing all along. 
    7.87 -  Same headers, same ABI. Just get the latest version to enable this magic.
    7.88 -
    7.89 -
    7.90 -A little more about SDL_InitDynamicAPI():
    7.91 -
    7.92 -Internally, InitAPI does some locking to make sure everything waits until a 
    7.93 -single thread initializes everything (although even SDL_CreateThread() goes 
    7.94 -through here before spinning a thread, too), and then decides if it should use
    7.95 -an external SDL library. If not, it sets up the jump table using the current 
    7.96 -SDL's function pointers (which might be statically linked into a program, or in
    7.97 -a shared library of its own). If so, it loads that library and looks for and 
    7.98 -calls a single function:
    7.99 -
   7.100 -    SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
   7.101 -
   7.102 -That function takes a version number (more on that in a moment), the address of
   7.103 -the jump table, and the size, in bytes, of the table. 
   7.104 -Now, we've got policy here: this table's layout never changes; new stuff gets 
   7.105 -added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all 
   7.106 -the needed functions if tablesize <= sizeof its own jump table. If tablesize is
   7.107 -bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
   7.108 -if it's smaller, we know we can provide the entire API that the caller needs.
   7.109 -
   7.110 -The version variable is a failsafe switch. 
   7.111 -Right now it's always 1. This number changes when there are major API changes 
   7.112 -(so we know if the tablesize might be smaller, or entries in it have changed). 
   7.113 -Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not 
   7.114 -inconceivable to have a small dispatch library that only supplies this one 
   7.115 -function and loads different, otherwise-incompatible SDL libraries and has the
   7.116 -right one initialize the jump table based on the version. For something that 
   7.117 -must generically catch lots of different versions of SDL over time, like the 
   7.118 -Steam Client, this isn't a bad option.
   7.119 -
   7.120 -Finally, I'm sure some people are reading this and thinking,
   7.121 -"I don't want that overhead in my project!"  
   7.122 -To which I would point out that the extra function call through the jump table 
   7.123 -probably wouldn't even show up in a profile, but lucky you: this can all be 
   7.124 -disabled. You can build SDL without this if you absolutely must, but we would 
   7.125 -encourage you not to do that. However, on heavily locked down platforms like 
   7.126 -iOS, or maybe when debugging,  it makes sense to disable it. The way this is 
   7.127 -designed in SDL, you just have to change one #define, and the entire system 
   7.128 -vaporizes out, and SDL functions exactly like it always did. Most of it is 
   7.129 -macro magic, so the system is contained to one C file and a few headers. 
   7.130 -However, this is on by default and you have to edit a header file to turn it 
   7.131 -off. Our hopes is that if we make it easy to disable, but not too easy, 
   7.132 -everyone will ultimately be able to get what they want, but we've gently 
   7.133 -nudged everyone towards what we think is the best solution.
     8.1 --- a/README-gesture.txt	Tue Jul 29 00:36:12 2014 -0300
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,72 +0,0 @@
     8.4 -===========================================================================
     8.5 -Dollar Gestures
     8.6 -===========================================================================
     8.7 -SDL Provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
     8.8 -
     8.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. 
    8.10 -
    8.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.
    8.12 -
    8.13 -Recording:
    8.14 -----------
    8.15 -To begin recording on a touch device call:
    8.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.
    8.17 -
    8.18 -Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
    8.19 -A SDL_DOLLARRECORD event is a dgesture with the following fields:
    8.20 -
    8.21 -event.dgesture.touchId   - the Id of the touch used to record the gesture.
    8.22 -event.dgesture.gestureId - the unique id of the recorded gesture.
    8.23 -
    8.24 -
    8.25 -Performing:
    8.26 ------------
    8.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:
    8.28 -
    8.29 -event.dgesture.touchId    - the Id of the touch which performed the gesture.
    8.30 -event.dgesture.gestureId  - the unique id of the closest gesture to the performed stroke.
    8.31 -event.dgesture.error      - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
    8.32 -event.dgesture.numFingers - the number of fingers used to draw the stroke.
    8.33 -
    8.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).
    8.35 -
    8.36 -
    8.37 -
    8.38 -Saving:
    8.39 --------
    8.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.
    8.41 -
    8.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.
    8.43 -
    8.44 -Both functions return the number of gestures successfully saved.
    8.45 -
    8.46 -
    8.47 -Loading:
    8.48 ---------
    8.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. 
    8.50 -
    8.51 -SDL_LoadDollarTemplates returns the number of templates successfully loaded.
    8.52 -
    8.53 -
    8.54 -
    8.55 -===========================================================================
    8.56 -Multi Gestures
    8.57 -===========================================================================
    8.58 -SDL provides simple support for pinch/rotate/swipe gestures. 
    8.59 -Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
    8.60 -
    8.61 -event.mgesture.touchId - the Id of the touch on which the gesture was performed.
    8.62 -event.mgesture.x       - the normalized x coordinate of the gesture. (0..1)
    8.63 -event.mgesture.y       - the normalized y coordinate of the gesture. (0..1)
    8.64 -event.mgesture.dTheta  - the amount that the fingers rotated during this motion.
    8.65 -event.mgesture.dDist   - the amount that the fingers pinched during this motion.
    8.66 -event.mgesture.numFingers - the number of fingers used in the gesture.
    8.67 -
    8.68 -
    8.69 -===========================================================================
    8.70 -Notes
    8.71 -===========================================================================
    8.72 -For a complete example see test/testgesture.c
    8.73 -
    8.74 -Please direct questions/comments to:
    8.75 -   jim.tla+sdl_touch@gmail.com
     9.1 --- a/README-hg.txt	Tue Jul 29 00:36:12 2014 -0300
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,23 +0,0 @@
     9.4 -The latest development version of SDL is available via Mercurial.
     9.5 -Mercurial allows you to get up-to-the-minute fixes and enhancements;
     9.6 -as a developer works on a source tree, you can use "hg" to mirror that
     9.7 -source tree instead of waiting for an official release. Please look
     9.8 -at the Mercurial website ( http://mercurial.selenic.com/ ) for more
     9.9 -information on using hg, where you can also download software for
    9.10 -Mac OS X, Windows, and Unix systems.
    9.11 -
    9.12 -  hg clone http://hg.libsdl.org/SDL
    9.13 -
    9.14 -If you are building SDL with an IDE, you will need to copy the file
    9.15 -include/SDL_config.h.default to include/SDL_config.h before building.
    9.16 -
    9.17 -If you are building SDL via configure, you will need to run autogen.sh
    9.18 -before running configure.
    9.19 -
    9.20 -There is a web interface to the subversion repository at:
    9.21 -
    9.22 -	http://hg.libsdl.org/SDL/
    9.23 -
    9.24 -There is an RSS feed available at that URL, for those that want to
    9.25 -track commits in real time.
    9.26 -
    10.1 --- a/README-ios.txt	Tue Jul 29 00:36:12 2014 -0300
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,222 +0,0 @@
    10.4 -==============================================================================
    10.5 -Building the Simple DirectMedia Layer for iPhone OS 5.1
    10.6 -==============================================================================
    10.7 -
    10.8 -Requirements: Mac OS X v10.5 or later and the iPhone SDK.
    10.9 -
   10.10 -Instructions:
   10.11 -1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
   10.12 -2.  Select your desired target, and hit build.
   10.13 -
   10.14 -There are three build targets:
   10.15 -- libSDL.a:
   10.16 -	Build SDL as a statically linked library
   10.17 -- testsdl
   10.18 -	Build a test program (there are known test failures which are fine)
   10.19 -- Template:
   10.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.
   10.21 -
   10.22 -==============================================================================
   10.23 -Build SDL for iOS from the command line
   10.24 -==============================================================================
   10.25 -
   10.26 -1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
   10.27 -2. ./iosbuild.sh
   10.28 -
   10.29 -If everything goes fine, you should see a build/ios directory, inside there's
   10.30 -two directories "lib" and "include". 
   10.31 -"include" contains a copy of the SDL headers that you'll need for your project,
   10.32 -make sure to configure XCode to look for headers there.
   10.33 -"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
   10.34 -to your XCode project. These libraries contain three architectures in them,
   10.35 -armv6 for legacy devices, armv7, and i386 (for the simulator).
   10.36 -By default, iosbuild.sh will autodetect the SDK version you have installed using 
   10.37 -xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
   10.38 -by setting the MIN_OS_VERSION variable, ie:
   10.39 -
   10.40 -MIN_OS_VERSION=4.2 ./iosbuild.sh
   10.41 -
   10.42 -==============================================================================
   10.43 -Using the Simple DirectMedia Layer for iOS
   10.44 -==============================================================================
   10.45 -
   10.46 -FIXME: This needs to be updated for the latest methods
   10.47 -
   10.48 -Here is the easiest method:
   10.49 -1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
   10.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.
   10.51 -2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
   10.52 -
   10.53 -Here is a more manual method:
   10.54 -1.  Create a new iPhone view based application.
   10.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.
   10.56 -3.  Include the SDL header files in your project.
   10.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.
   10.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.
   10.59 -
   10.60 -==============================================================================
   10.61 -Notes -- Application events
   10.62 -==============================================================================
   10.63 -
   10.64 -On iOS the application goes through a fixed life cycle and you will get
   10.65 -notifications of state changes via application events. When these events
   10.66 -are delivered you must handle them in an event callback because the OS may
   10.67 -not give you any processing time after the events are delivered.
   10.68 -
   10.69 -e.g.
   10.70 -
   10.71 -int HandleAppEvents(void *userdata, SDL_Event *event)
   10.72 -{
   10.73 -    switch (event->type)
   10.74 -    {
   10.75 -    case SDL_APP_TERMINATING:
   10.76 -        /* Terminate the app.
   10.77 -           Shut everything down before returning from this function.
   10.78 -        */
   10.79 -        return 0;
   10.80 -    case SDL_APP_LOWMEMORY:
   10.81 -        /* You will get this when your app is paused and iOS wants more memory.
   10.82 -           Release as much memory as possible.
   10.83 -        */
   10.84 -        return 0;
   10.85 -    case SDL_APP_WILLENTERBACKGROUND:
   10.86 -        /* Prepare your app to go into the background.  Stop loops, etc.
   10.87 -           This gets called when the user hits the home button, or gets a call.
   10.88 -        */
   10.89 -        return 0;
   10.90 -    case SDL_APP_DIDENTERBACKGROUND:
   10.91 -        /* This will get called if the user accepted whatever sent your app to the background.
   10.92 -           If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
   10.93 -           When you get this, you have 5 seconds to save all your state or the app will be terminated.
   10.94 -           Your app is NOT active at this point.
   10.95 -        */
   10.96 -        return 0;
   10.97 -    case SDL_APP_WILLENTERFOREGROUND:
   10.98 -        /* This call happens when your app is coming back to the foreground.
   10.99 -           Restore all your state here.
  10.100 -        */
  10.101 -        return 0;
  10.102 -    case SDL_APP_DIDENTERFOREGROUND:
  10.103 -        /* Restart your loops here.
  10.104 -           Your app is interactive and getting CPU again.
  10.105 -        */
  10.106 -        return 0;
  10.107 -    default:
  10.108 -        /* No special processing, add it to the event queue */
  10.109 -        return 1;
  10.110 -    }
  10.111 -}
  10.112 -
  10.113 -int main(int argc, char *argv[])
  10.114 -{
  10.115 -    SDL_SetEventFilter(HandleAppEvents, NULL);
  10.116 -
  10.117 -    ... run your main loop
  10.118 -
  10.119 -    return 0;
  10.120 -}
  10.121 -
  10.122 -    
  10.123 -==============================================================================
  10.124 -Notes -- Accelerometer as Joystick
  10.125 -==============================================================================
  10.126 -
  10.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.
  10.128 -
  10.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.
  10.130 -
  10.131 -==============================================================================
  10.132 -Notes -- OpenGL ES
  10.133 -==============================================================================
  10.134 -
  10.135 -Your SDL application for iPhone uses OpenGL ES for video by default.
  10.136 -
  10.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.
  10.138 -
  10.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.
  10.140 -
  10.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.
  10.142 -
  10.143 -==============================================================================
  10.144 -Notes -- Keyboard
  10.145 -==============================================================================
  10.146 -
  10.147 -The SDL keyboard API has been extended to support on-screen keyboards:
  10.148 -
  10.149 -void SDL_StartTextInput()
  10.150 -	-- enables text events and reveals the onscreen keyboard.
  10.151 -void SDL_StopTextInput()
  10.152 -	-- disables text events and hides the onscreen keyboard.
  10.153 -SDL_bool SDL_IsTextInputActive()
  10.154 -	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
  10.155 -
  10.156 -==============================================================================
  10.157 -Notes -- Reading and Writing files
  10.158 -==============================================================================
  10.159 -
  10.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.
  10.161 -
  10.162 -Once your application is installed its directory tree looks like:
  10.163 -
  10.164 -MySDLApp Home/
  10.165 -	MySDLApp.app
  10.166 -	Documents/
  10.167 -	Library/
  10.168 -		Preferences/
  10.169 -	tmp/
  10.170 -
  10.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".  
  10.172 -
  10.173 -More information on this subject is available here:
  10.174 -http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
  10.175 -
  10.176 -==============================================================================
  10.177 -Notes -- iPhone SDL limitations
  10.178 -==============================================================================
  10.179 -
  10.180 -Windows:
  10.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).
  10.182 -
  10.183 -Textures:
  10.184 -	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
  10.185 -
  10.186 -Loading Shared Objects:
  10.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.
  10.188 -
  10.189 -==============================================================================
  10.190 -Game Center 
  10.191 -==============================================================================
  10.192 -
  10.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:
  10.194 -    
  10.195 -int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
  10.196 -
  10.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.
  10.198 -
  10.199 -e.g.
  10.200 -
  10.201 -extern "C"
  10.202 -void ShowFrame(void*)
  10.203 -{
  10.204 -    ... do event handling, frame logic and rendering
  10.205 -}
  10.206 -
  10.207 -int main(int argc, char *argv[])
  10.208 -{
  10.209 -   ... initialize game ...
  10.210 -
  10.211 -#if __IPHONEOS__
  10.212 -        // Initialize the Game Center for scoring and matchmaking
  10.213 -        InitGameCenter();
  10.214 -
  10.215 -        // Set up the game to run in the window animation callback on iOS
  10.216 -        // so that Game Center and so forth works correctly.
  10.217 -        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
  10.218 -#else
  10.219 -        while ( running ) {
  10.220 -                ShowFrame(0);
  10.221 -                DelayFrame();
  10.222 -        }
  10.223 -#endif
  10.224 -        return 0;
  10.225 -}
    11.1 --- a/README-linux.txt	Tue Jul 29 00:36:12 2014 -0300
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,83 +0,0 @@
    11.4 -================================================================================
    11.5 -Simple DirectMedia Layer for Linux
    11.6 -================================================================================
    11.7 -
    11.8 -By default SDL will only link against glibc, the rest of the features will be
    11.9 -enabled dynamically at runtime depending on the available features on the target
   11.10 -system. So, for example if you built SDL with Xinerama support and the target
   11.11 -system does not have the Xinerama libraries installed, it will be disabled
   11.12 -at runtime, and you won't get a missing library error, at least with the 
   11.13 -default configuration parameters.
   11.14 -
   11.15 -
   11.16 -================================================================================
   11.17 -Build Dependencies
   11.18 -================================================================================
   11.19 -    
   11.20 -Ubuntu 13.04, all available features enabled:
   11.21 -
   11.22 -sudo apt-get install build-essential mercurial make cmake autoconf automake \
   11.23 -libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \
   11.24 -libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \
   11.25 -libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \
   11.26 -libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
   11.27 -
   11.28 -Ubuntu 14.04 can also add "libwayland-dev libmirclient-dev libxkbcommon-dev"
   11.29 -to that command line for Wayland and Mir support.
   11.30 -
   11.31 -NOTES:
   11.32 -- This includes all the audio targets except arts, because Ubuntu pulled the 
   11.33 -  artsc0-dev package, but in theory SDL still supports it.
   11.34 -- DirectFB isn't included because the configure script (currently) fails to find
   11.35 -  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
   11.36 -  configure script to include DirectFB support. Send patches.  :)
   11.37 -
   11.38 -
   11.39 -================================================================================
   11.40 -Joystick does not work
   11.41 -================================================================================
   11.42 -
   11.43 -If you compiled or are using a version of SDL with udev support (and you should!)
   11.44 -there's a few issues that may cause SDL to fail to detect your joystick. To
   11.45 -debug this, start by installing the evtest utility. On Ubuntu/Debian:
   11.46 -
   11.47 -    sudo apt-get install evtest
   11.48 -    
   11.49 -Then run:
   11.50 -    
   11.51 -    sudo evtest
   11.52 -    
   11.53 -You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
   11.54 -Now run:
   11.55 -    
   11.56 -    cat /dev/input/event/XX
   11.57 -
   11.58 -If you get a permission error, you need to set a udev rule to change the mode of
   11.59 -your device (see below)    
   11.60 -    
   11.61 -Also, try:
   11.62 -    
   11.63 -    sudo udevadm info --query=all --name=input/eventXX
   11.64 -    
   11.65 -If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
   11.66 -you need to set up an udev rule to force this variable.
   11.67 -
   11.68 -A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks 
   11.69 -like:
   11.70 -    
   11.71 -   SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   11.72 -   SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   11.73 -   
   11.74 -You can set up similar rules for your device by changing the values listed in
   11.75 -idProduct and idVendor. To obtain these values, try:
   11.76 -    
   11.77 -    sudo udevadm info -a --name=input/eventXX | grep idVendor
   11.78 -    sudo udevadm info -a --name=input/eventXX | grep idProduct
   11.79 -    
   11.80 -If multiple values come up for each of these, the one you want is the first one of each.    
   11.81 -
   11.82 -On other systems which ship with an older udev (such as CentOS), you may need
   11.83 -to set up a rule such as:
   11.84 -    
   11.85 -    SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
   11.86 -
    12.1 --- a/README-macosx.txt	Tue Jul 29 00:36:12 2014 -0300
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,226 +0,0 @@
    12.4 -==============================================================================
    12.5 -Using the Simple DirectMedia Layer with Mac OS X
    12.6 -==============================================================================
    12.7 -
    12.8 -These instructions are for people using Apple's Mac OS X (pronounced
    12.9 -"ten").
   12.10 -
   12.11 -From the developer's point of view, OS X is a sort of hybrid Mac and
   12.12 -Unix system, and you have the option of using either traditional
   12.13 -command line tools or Apple's IDE Xcode.
   12.14 -
   12.15 -To build SDL using the command line, use the standard configure and make
   12.16 -process:
   12.17 -
   12.18 -	./configure
   12.19 -	make
   12.20 -	sudo make install
   12.21 -
   12.22 -You can also build SDL as a Universal library (a single binary for both
   12.23 -32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using
   12.24 -the fatbuild.sh script in build-scripts:
   12.25 -	sh build-scripts/fatbuild.sh
   12.26 -	sudo build-scripts/fatbuild.sh install
   12.27 -This script builds SDL with 10.5 ABI compatibility on i386 and 10.6
   12.28 -ABI compatibility on x86_64 architectures.  For best compatibility you
   12.29 -should compile your application the same way.  A script which wraps
   12.30 -gcc to make this easy is provided in test/gcc-fat.sh
   12.31 -
   12.32 -Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK
   12.33 -(even if you target back to 10.5 systems). PowerPC support for Mac OS X has
   12.34 -been officially dropped as of SDL 2.0.2.
   12.35 -
   12.36 -To use the library once it's built, you essential have two possibilities:
   12.37 -use the traditional autoconf/automake/make method, or use Xcode.
   12.38 -
   12.39 -==============================================================================
   12.40 -Caveats for using SDL with Mac OS X
   12.41 -==============================================================================
   12.42 -
   12.43 -Some things you have to be aware of when using SDL on Mac OS X:
   12.44 -
   12.45 -- If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
   12.46 -  SDL will not register its own. This means that SDL will not terminate using
   12.47 -  SDL_Quit if it receives a termination request, it will terminate like a 
   12.48 -  normal app, and it will not send a SDL_DROPFILE when you request to open a
   12.49 -  file with the app. To solve these issues, put the following code in your 
   12.50 -  NSApplicationDelegate implementation:
   12.51 -
   12.52 -  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
   12.53 -  {
   12.54 -      if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
   12.55 -          SDL_Event event;
   12.56 -          event.type = SDL_QUIT;
   12.57 -          SDL_PushEvent(&event);
   12.58 -      }
   12.59 -
   12.60 -      return NSTerminateCancel;
   12.61 -  }
   12.62 -
   12.63 -  - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   12.64 -  {
   12.65 -      if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
   12.66 -          SDL_Event event;
   12.67 -          event.type = SDL_DROPFILE;
   12.68 -          event.drop.file = SDL_strdup([filename UTF8String]);
   12.69 -          return (SDL_PushEvent(&event) > 0);
   12.70 -      }
   12.71 -
   12.72 -      return NO;
   12.73 -  }
   12.74 -
   12.75 -==============================================================================
   12.76 -Using the Simple DirectMedia Layer with a traditional Makefile
   12.77 -==============================================================================
   12.78 -
   12.79 -An existing autoconf/automake build system for your SDL app has good chances
   12.80 -to work almost unchanged on OS X. However, to produce a "real" Mac OS X binary
   12.81 -that you can distribute to users, you need to put the generated binary into a
   12.82 -so called "bundle", which basically is a fancy folder with a name like
   12.83 -"MyCoolGame.app".
   12.84 -
   12.85 -To get this build automatically, add something like the following rule to
   12.86 -your Makefile.am:
   12.87 -
   12.88 -bundle_contents = APP_NAME.app/Contents
   12.89 -APP_NAME_bundle: EXE_NAME
   12.90 -	mkdir -p $(bundle_contents)/MacOS
   12.91 -	mkdir -p $(bundle_contents)/Resources
   12.92 -	echo "APPL????" > $(bundle_contents)/PkgInfo
   12.93 -	$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
   12.94 -
   12.95 -You should replace EXE_NAME with the name of the executable. APP_NAME is what
   12.96 -will be visible to the user in the Finder. Usually it will be the same
   12.97 -as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME 
   12.98 -usually is "TestGame". You might also want to use @PACKAGE@ to use the package
   12.99 -name as specified in your configure.in file.
  12.100 -
  12.101 -If your project builds more than one application, you will have to do a bit
  12.102 -more. For each of your target applications, you need a separate rule.
  12.103 -
  12.104 -If you want the created bundles to be installed, you may want to add this
  12.105 -rule to your Makefile.am:
  12.106 -
  12.107 -install-exec-hook: APP_NAME_bundle
  12.108 -	rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
  12.109 -	mkdir -p $(DESTDIR)$(prefix)/Applications/
  12.110 -	cp -r $< /$(DESTDIR)$(prefix)Applications/
  12.111 -
  12.112 -This rule takes the Bundle created by the rule from step 3 and installs them
  12.113 -into $(DESTDIR)$(prefix)/Applications/.
  12.114 -
  12.115 -Again, if you want to install multiple applications, you will have to augment
  12.116 -the make rule accordingly.
  12.117 -
  12.118 -
  12.119 -But beware! That is only part of the story! With the above, you end up with
  12.120 -a bare bone .app bundle, which is double clickable from the Finder. But
  12.121 -there are some more things you should do before shipping your product...
  12.122 -
  12.123 -1) The bundle right now probably is dynamically linked against SDL. That 
  12.124 -   means that when you copy it to another computer, *it will not run*,
  12.125 -   unless you also install SDL on that other computer. A good solution
  12.126 -   for this dilemma is to static link against SDL. On OS X, you can
  12.127 -   achieve that by linking against the libraries listed by
  12.128 -     sdl-config --static-libs
  12.129 -   instead of those listed by
  12.130 -     sdl-config --libs
  12.131 -   Depending on how exactly SDL is integrated into your build systems, the
  12.132 -   way to achieve that varies, so I won't describe it here in detail
  12.133 -2) Add an 'Info.plist' to your application. That is a special XML file which
  12.134 -   contains some meta-information about your application (like some copyright
  12.135 -   information, the version of your app, the name of an optional icon file,
  12.136 -   and other things). Part of that information is displayed by the Finder
  12.137 -   when you click on the .app, or if you look at the "Get Info" window.
  12.138 -   More information about Info.plist files can be found on Apple's homepage.
  12.139 -
  12.140 -
  12.141 -As a final remark, let me add that I use some of the techniques (and some
  12.142 -variations of them) in Exult and ScummVM; both are available in source on
  12.143 -the net, so feel free to take a peek at them for inspiration!
  12.144 -
  12.145 -
  12.146 -==============================================================================
  12.147 -Using the Simple DirectMedia Layer with Xcode
  12.148 -==============================================================================
  12.149 -
  12.150 -These instructions are for using Apple's Xcode IDE to build SDL applications.
  12.151 -
  12.152 -- First steps
  12.153 -
  12.154 -The first thing to do is to unpack the Xcode.tar.gz archive in the
  12.155 -top level SDL directory (where the Xcode.tar.gz archive resides).
  12.156 -Because Stuffit Expander will unpack the archive into a subdirectory,
  12.157 -you should unpack the archive manually from the command line:
  12.158 -	cd [path_to_SDL_source]
  12.159 -	tar zxf Xcode.tar.gz
  12.160 -This will create a new folder called Xcode, which you can browse
  12.161 -normally from the Finder.
  12.162 -
  12.163 -- Building the Framework
  12.164 -
  12.165 -The SDL Library is packaged as a framework bundle, an organized
  12.166 -relocatable folder hierarchy of executable code, interface headers,
  12.167 -and additional resources. For practical purposes, you can think of a 
  12.168 -framework as a more user and system-friendly shared library, whose library
  12.169 -file behaves more or less like a standard UNIX shared library.
  12.170 -
  12.171 -To build the framework, simply open the framework project and build it. 
  12.172 -By default, the framework bundle "SDL.framework" is installed in 
  12.173 -/Library/Frameworks. Therefore, the testers and project stationary expect
  12.174 -it to be located there. However, it will function the same in any of the
  12.175 -following locations:
  12.176 -
  12.177 -    ~/Library/Frameworks
  12.178 -    /Local/Library/Frameworks
  12.179 -    /System/Library/Frameworks
  12.180 -
  12.181 -- Build Options
  12.182 -    There are two "Build Styles" (See the "Targets" tab) for SDL.
  12.183 -    "Deployment" should be used if you aren't tweaking the SDL library.
  12.184 -    "Development" should be used to debug SDL apps or the library itself.
  12.185 -
  12.186 -- Building the Testers
  12.187 -    Open the SDLTest project and build away!
  12.188 -
  12.189 -- Using the Project Stationary
  12.190 -    Copy the stationary to the indicated folders to access it from
  12.191 -    the "New Project" and "Add target" menus. What could be easier?
  12.192 -
  12.193 -- Setting up a new project by hand
  12.194 -    Some of you won't want to use the Stationary so I'll give some tips:
  12.195 -    * Create a new "Cocoa Application"
  12.196 -    * Add src/main/macosx/SDLMain.m , .h and .nib to your project
  12.197 -    * Remove "main.c" from your project
  12.198 -    * Remove "MainMenu.nib" from your project
  12.199 -    * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
  12.200 -    * Add "$(HOME)/Library/Frameworks" to the frameworks search path
  12.201 -    * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
  12.202 -    * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib"
  12.203 -    * Add your files
  12.204 -    * Clean and build
  12.205 -
  12.206 -- Building from command line
  12.207 -    Use pbxbuild in the same directory as your .pbproj file
  12.208 -
  12.209 -- Running your app
  12.210 -    You can send command line args to your app by either invoking it from
  12.211 -    the command line (in *.app/Contents/MacOS) or by entering them in the
  12.212 -    "Executables" panel of the target settings.
  12.213 -    
  12.214 -- Implementation Notes
  12.215 -    Some things that may be of interest about how it all works...
  12.216 -    * Working directory
  12.217 -        As defined in the SDL_main.m file, the working directory of your SDL app
  12.218 -        is by default set to its parent. You may wish to change this to better
  12.219 -        suit your needs.
  12.220 -    * You have a Cocoa App!
  12.221 -        Your SDL app is essentially a Cocoa application. When your app
  12.222 -        starts up and the libraries finish loading, a Cocoa procedure is called,
  12.223 -        which sets up the working directory and calls your main() method.
  12.224 -        You are free to modify your Cocoa app with generally no consequence 
  12.225 -        to SDL. You cannot, however, easily change the SDL window itself.
  12.226 -        Functionality may be added in the future to help this.
  12.227 -
  12.228 -
  12.229 -Known bugs are listed in the file "BUGS"
    13.1 --- a/README-nacl.txt	Tue Jul 29 00:36:12 2014 -0300
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,104 +0,0 @@
    13.4 -================================================================================
    13.5 -Simple DirectMedia Layer for Native Client
    13.6 -================================================================================
    13.7 -
    13.8 -Requirements: 
    13.9 -    
   13.10 -    * Native Client SDK (https://developer.chrome.com/native-client), 
   13.11 -      (tested with Pepper version 33 or higher).
   13.12 -
   13.13 -The SDL backend for Chrome's Native Client has been tested only with the PNaCl
   13.14 -toolchain, which generates binaries designed to run on ARM and x86_32/64 
   13.15 -platforms. This does not mean it won't work with the other toolchains!
   13.16 -
   13.17 -================================================================================
   13.18 -Building SDL for NaCl
   13.19 -================================================================================
   13.20 -
   13.21 -Set up the right environment variables (see naclbuild.sh), then configure SDL with:
   13.22 -
   13.23 -    configure --host=pnacl --prefix some/install/destination
   13.24 -    
   13.25 -Then "make". 
   13.26 -
   13.27 -As an example of how to create a deployable app a Makefile project is provided 
   13.28 -in test/nacl/Makefile, which includes some monkey patching of the common.mk file 
   13.29 -provided by NaCl, without which linking properly to SDL won't work (the search 
   13.30 -path can't be modified externally, so the linker won't find SDL's binaries unless 
   13.31 -you dump them into the SDK path, which is inconvenient).
   13.32 -Also provided in test/nacl is the required support file, such as index.html, 
   13.33 -manifest.json, etc.
   13.34 -SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
   13.35 -This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
   13.36 -hiding the asynchronous nature of the browser behind the scenes...which is not the
   13.37 -same as making it disappear!
   13.38 -
   13.39 -
   13.40 -================================================================================
   13.41 -Running tests
   13.42 -================================================================================
   13.43 -
   13.44 -Due to the nature of NaCl programs, building and running SDL tests is not as
   13.45 -straightforward as one would hope. The script naclbuild.sh in build-scripts 
   13.46 -automates the process and should serve as a guide for users of SDL trying to build 
   13.47 -their own applications.
   13.48 -
   13.49 -Basic usage:
   13.50 -    
   13.51 -    ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
   13.52 -    
   13.53 -This will build testgles2.c by default.
   13.54 -
   13.55 -If you want to build a different test, for example testrendercopyex.c:
   13.56 -    
   13.57 -    SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
   13.58 -    
   13.59 -Once the build finishes, you have to serve the contents with a web server (the
   13.60 -script will give you instructions on how to do that with Python).
   13.61 -
   13.62 -================================================================================
   13.63 -RWops and nacl_io
   13.64 -================================================================================
   13.65 -
   13.66 -SDL_RWops work transparently with nacl_io. Two functions control the mount points:
   13.67 -    
   13.68 -    int mount(const char* source, const char* target, 
   13.69 -                      const char* filesystemtype, 
   13.70 -                      unsigned long mountflags, const void *data);
   13.71 -    int umount(const char *target);
   13.72 -    
   13.73 -    For convenience, SDL will by default mount an httpfs tree at / before calling 
   13.74 -the app's main function. Such setting can be overridden by calling:
   13.75 -    
   13.76 -    umount("/");
   13.77 -
   13.78 -And then mounting a different filesystem at /
   13.79 -
   13.80 -It's important to consider that the asynchronous nature of file operations on a
   13.81 -browser is hidden from the application, effectively providing the developer with
   13.82 -a set of blocking file operations just like you get in a regular desktop 
   13.83 -environment, which eases the job of porting to Native Client, but also introduces 
   13.84 -a set of challenges of its own, in particular when big file sizes and slow 
   13.85 -connections are involved.
   13.86 -
   13.87 -For more information on how nacl_io and mount points work, see:
   13.88 -    
   13.89 -    https://developer.chrome.com/native-client/devguide/coding/nacl_io
   13.90 -    https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
   13.91 -
   13.92 -To be able to save into the directory "/save/" (like backup of game) :
   13.93 -
   13.94 -    mount("", "/save", "html5fs", 0, "type=PERSISTENT");
   13.95 -
   13.96 -And add to manifest.json :
   13.97 -
   13.98 -  "permissions": [
   13.99 -     "unlimitedStorage"
  13.100 -  ]
  13.101 -
  13.102 -================================================================================
  13.103 -TODO - Known Issues
  13.104 -================================================================================
  13.105 -* Testing of all systems with a real application (something other than SDL's tests)
  13.106 -* Key events don't seem to work properly
  13.107 -
    14.1 --- a/README-pandora.txt	Tue Jul 29 00:36:12 2014 -0300
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,16 +0,0 @@
    14.4 -SDL 2.0 with open pandora console support ( http://openpandora.org/ )
    14.5 -=====================================================================
    14.6 -
    14.7 -- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
    14.8 -support to work on the pandora under the framebuffer. This driver do not have
    14.9 -input support for now, so if you use it you will have to add your own control code.
   14.10 -The video driver name is "pandora" so if you have problem running it from
   14.11 -the framebuffer, try to set the following variable before starting your application :
   14.12 -"export SDL_VIDEODRIVER=pandora"
   14.13 -
   14.14 -- OpenGL ES support was added to the x11 driver, so it's working like the normal
   14.15 -x11 driver one with OpenGLX support, with SDL input event's etc..
   14.16 -
   14.17 -
   14.18 -David Carré (Cpasjuste)
   14.19 -cpasjuste@gmail.com
    15.1 --- a/README-platforms.txt	Tue Jul 29 00:36:12 2014 -0300
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,31 +0,0 @@
    15.4 -
    15.5 -This is a list of the platforms SDL supports, and who maintains them.
    15.6 -
    15.7 -Officially supported platforms
    15.8 -==============================
    15.9 -(code compiles, and thoroughly tested for release)
   15.10 -==============================
   15.11 -Windows XP/Vista/7/8
   15.12 -Mac OS X 10.5+
   15.13 -Linux 2.6+
   15.14 -iOS 5.1.1+
   15.15 -Android 2.3.3+
   15.16 -
   15.17 -Unofficially supported platforms
   15.18 -================================
   15.19 -(code compiles, but not thoroughly tested)
   15.20 -================================
   15.21 -FreeBSD
   15.22 -NetBSD
   15.23 -OpenBSD
   15.24 -Solaris
   15.25 -
   15.26 -Platforms supported by volunteers
   15.27 -=================================
   15.28 -Haiku - maintained by Axel Dörfler <axeld@pinc-software.de>
   15.29 -PSP - maintained by 527721088@qq.com
   15.30 -Pandora - maintained by Scott Smith <pickle136@sbcglobal.net>
   15.31 -NaCl - maintained by Gabriel Jacobo <gabomdq@gmail.com>
   15.32 -
   15.33 -Platforms that need maintainers
   15.34 -===============================
    16.1 --- a/README-porting.txt	Tue Jul 29 00:36:12 2014 -0300
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,61 +0,0 @@
    16.4 -
    16.5 -* Porting To A New Platform
    16.6 -
    16.7 -  The first thing you have to do when porting to a new platform, is look at
    16.8 -include/SDL_platform.h and create an entry there for your operating system.
    16.9 -The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
   16.10 -Ideally SDL_platform.h will be able to auto-detect the system it's building
   16.11 -on based on C preprocessor symbols.
   16.12 -
   16.13 -There are two basic ways of building SDL at the moment:
   16.14 -
   16.15 -1. The "UNIX" way:  ./configure; make; make install
   16.16 -
   16.17 -   If you have a GNUish system, then you might try this.  Edit configure.in,
   16.18 -   take a look at the large section labelled:
   16.19 -	"Set up the configuration based on the target platform!"
   16.20 -   Add a section for your platform, and then re-run autogen.sh and build!
   16.21 -
   16.22 -2. Using an IDE:
   16.23 -
   16.24 -   If you're using an IDE or other non-configure build system, you'll probably
   16.25 -   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
   16.26 -   add a section for your platform, and create a custom SDL_config_{platform}.h,
   16.27 -   based on SDL_config.h.minimal and SDL_config.h.in
   16.28 -
   16.29 -   Add the top level include directory to the header search path, and then add
   16.30 -   the following sources to the project:
   16.31 -	src/*.c
   16.32 -	src/atomic/*.c
   16.33 -	src/audio/*.c
   16.34 -	src/cpuinfo/*.c
   16.35 -	src/events/*.c
   16.36 -	src/file/*.c
   16.37 -	src/haptic/*.c
   16.38 -	src/joystick/*.c
   16.39 -	src/power/*.c
   16.40 -	src/render/*.c
   16.41 -	src/stdlib/*.c
   16.42 -	src/thread/*.c
   16.43 -	src/timer/*.c
   16.44 -	src/video/*.c
   16.45 -	src/audio/disk/*.c
   16.46 -	src/audio/dummy/*.c
   16.47 -	src/video/dummy/*.c
   16.48 -	src/haptic/dummy/*.c
   16.49 -	src/joystick/dummy/*.c
   16.50 -	src/main/dummy/*.c
   16.51 -	src/thread/generic/*.c
   16.52 -	src/timer/dummy/*.c
   16.53 -	src/loadso/dummy/*.c
   16.54 -
   16.55 -
   16.56 -Once you have a working library without any drivers, you can go back to each
   16.57 -of the major subsystems and start implementing drivers for your platform.
   16.58 -
   16.59 -If you have any questions, don't hesitate to ask on the SDL mailing list:
   16.60 -	http://www.libsdl.org/mailing-list.php
   16.61 -
   16.62 -Enjoy!
   16.63 -	Sam Lantinga				(slouken@libsdl.org)
   16.64 -
    17.1 --- a/README-psp.txt	Tue Jul 29 00:36:12 2014 -0300
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,17 +0,0 @@
    17.4 -SDL port for the Sony PSP contributed by 
    17.5 -   Captian Lex 
    17.6 -
    17.7 -Credit to
    17.8 -   Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
    17.9 -   Geecko for his PSP GU lib "Glib2d"
   17.10 -
   17.11 -Building
   17.12 ---------
   17.13 -To build for the PSP, make sure psp-config is in the path and run:
   17.14 -   make -f Makefile.psp
   17.15 -
   17.16 -
   17.17 -
   17.18 -To Do
   17.19 -------
   17.20 -PSP Screen Keyboard
    18.1 --- a/README-raspberrypi.txt	Tue Jul 29 00:36:12 2014 -0300
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,161 +0,0 @@
    18.4 -================================================================================
    18.5 -SDL2 for Raspberry Pi
    18.6 -================================================================================
    18.7 -
    18.8 -Requirements:
    18.9 -
   18.10 -Raspbian (other Linux distros may work as well).
   18.11 -
   18.12 -================================================================================
   18.13 - Features
   18.14 -================================================================================
   18.15 -
   18.16 -* Works without X11
   18.17 -* Hardware accelerated OpenGL ES 2.x
   18.18 -* Sound via ALSA
   18.19 -* Input (mouse/keyboard/joystick) via EVDEV
   18.20 -* Hotplugging of input devices via UDEV
   18.21 -
   18.22 -================================================================================
   18.23 - Raspbian Build Dependencies
   18.24 -================================================================================
   18.25 -
   18.26 -sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
   18.27 -
   18.28 -You also need the VideoCore binary stuff that ships in /opt/vc for EGL and 
   18.29 -OpenGL ES 2.x, it usually comes pre installed, but in any case:
   18.30 -    
   18.31 -sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
   18.32 -
   18.33 -================================================================================
   18.34 - Cross compiling from x86 Linux
   18.35 -================================================================================
   18.36 -
   18.37 -To cross compile SDL for Raspbian from your desktop machine, you'll need a
   18.38 -Raspbian system root and the cross compilation tools. We'll assume these tools
   18.39 -will be placed in /opt/rpi-tools
   18.40 -
   18.41 -    sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
   18.42 -
   18.43 -You'll also need a Rasbian binary image.
   18.44 -Get it from: http://downloads.raspberrypi.org/raspbian_latest 
   18.45 -After unzipping, you'll get file with a name like: <date>-wheezy-raspbian.img
   18.46 -Let's assume the sysroot will be built in /opt/rpi-sysroot.
   18.47 -
   18.48 -    export SYSROOT=/opt/rpi-sysroot
   18.49 -    sudo kpartx -a -v <path_to_raspbian_image>.img
   18.50 -    sudo mount -o loop /dev/mapper/loop0p2 /mnt
   18.51 -    sudo cp -r /mnt $SYSROOT
   18.52 -    sudo apt-get install qemu binfmt-support qemu-user-static
   18.53 -    sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
   18.54 -    sudo mount --bind /dev $SYSROOT/dev
   18.55 -    sudo mount --bind /proc $SYSROOT/proc
   18.56 -    sudo mount --bind /sys $SYSROOT/sys
   18.57 -
   18.58 -Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
   18.59 -edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
   18.60 -
   18.61 -    sudo chroot $SYSROOT
   18.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
   18.63 -    exit
   18.64 -    sudo umount $SYSROOT/dev
   18.65 -    sudo umount $SYSROOT/proc
   18.66 -    sudo umount $SYSROOT/sys
   18.67 -    sudo umount /mnt
   18.68 -    
   18.69 -There's one more fix required, as the libdl.so symlink uses an absolute path 
   18.70 -which doesn't quite work in our setup.
   18.71 -
   18.72 -    sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   18.73 -    sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   18.74 -
   18.75 -The final step is compiling SDL itself.
   18.76 -
   18.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"
   18.78 -    cd <SDL SOURCE>
   18.79 -    mkdir -p build;cd build
   18.80 -    ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
   18.81 -    make
   18.82 -    make install
   18.83 -
   18.84 -To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
   18.85 -    
   18.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
   18.87 -    
   18.88 -================================================================================
   18.89 - Apps don't work or poor video/audio performance
   18.90 -================================================================================
   18.91 -
   18.92 -If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to 
   18.93 -update the RPi's firmware. Note that doing so will fix these problems, but it
   18.94 -will also render the CMA - Dynamic Memory Split functionality useless.
   18.95 -
   18.96 -Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
   18.97 -low in general, specially if a 1080p TV is hooked up.
   18.98 -
   18.99 -See here how to configure this setting: http://elinux.org/RPiconfig
  18.100 -
  18.101 -Using a fixed gpu_mem=128 is the best option (specially if you updated the 
  18.102 -firmware, using CMA probably won't work, at least it's the current case).
  18.103 -
  18.104 -================================================================================
  18.105 - No input
  18.106 -================================================================================
  18.107 -
  18.108 -Make sure you belong to the "input" group.
  18.109 -
  18.110 -    sudo usermod -aG input `whoami`
  18.111 -
  18.112 -================================================================================
  18.113 - No HDMI Audio
  18.114 -================================================================================
  18.115 -
  18.116 -If you notice that ALSA works but there's no audio over HDMI, try adding:
  18.117 -    
  18.118 -    hdmi_drive=2
  18.119 -    
  18.120 -to your config.txt file and reboot.
  18.121 -
  18.122 -Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
  18.123 -
  18.124 -================================================================================
  18.125 - Text Input API support
  18.126 -================================================================================
  18.127 -
  18.128 -The Text Input API is supported, with translation of scan codes done via the
  18.129 -kernel symbol tables. For this to work, SDL needs access to a valid console.
  18.130 -If you notice there's no SDL_TEXTINPUT message being emitted, double check that
  18.131 -your app has read access to one of the following:
  18.132 -    
  18.133 -* /proc/self/fd/0
  18.134 -* /dev/tty
  18.135 -* /dev/tty[0...6]
  18.136 -* /dev/vc/0
  18.137 -* /dev/console
  18.138 -
  18.139 -This is usually not a problem if you run from the physical terminal (as opposed
  18.140 -to running from a pseudo terminal, such as via SSH). If running from a PTS, a 
  18.141 -quick workaround is to run your app as root or add yourself to the tty group,
  18.142 -then re login to the system.
  18.143 -
  18.144 -   sudo usermod -aG tty `whoami`
  18.145 -    
  18.146 -The keyboard layout used by SDL is the same as the one the kernel uses.
  18.147 -To configure the layout on Raspbian:
  18.148 -    
  18.149 -    sudo dpkg-reconfigure keyboard-configuration
  18.150 -    
  18.151 -To configure the locale, which controls which keys are interpreted as letters,
  18.152 -this determining the CAPS LOCK behavior:
  18.153 -
  18.154 -    sudo dpkg-reconfigure locales
  18.155 -
  18.156 -================================================================================
  18.157 - Notes
  18.158 -================================================================================
  18.159 -
  18.160 -* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
  18.161 -  leaking into the console only if it has root privileges. Launching apps locally
  18.162 -  does not suffer from this issue.
  18.163 -  
  18.164 -
    19.1 --- a/README-touch.txt	Tue Jul 29 00:36:12 2014 -0300
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,84 +0,0 @@
    19.4 -===========================================================================
    19.5 -System Specific Notes
    19.6 -===========================================================================
    19.7 -Linux:
    19.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.
    19.9 -
   19.10 -Mac:
   19.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.
   19.12 -
   19.13 -iPhone: 
   19.14 -Works out of box.
   19.15 -
   19.16 -Windows:
   19.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
   19.18 -
   19.19 -===========================================================================
   19.20 -Events
   19.21 -===========================================================================
   19.22 -SDL_FINGERDOWN:
   19.23 -Sent when a finger (or stylus) is placed on a touch device.
   19.24 -Fields:
   19.25 -event.tfinger.touchId  - the Id of the touch device.
   19.26 -event.tfinger.fingerId - the Id of the finger which just went down.
   19.27 -event.tfinger.x        - the x coordinate of the touch (0..1)
   19.28 -event.tfinger.y        - the y coordinate of the touch (0..1)
   19.29 -event.tfinger.pressure - the pressure of the touch (0..1)
   19.30 -
   19.31 -SDL_FINGERMOTION:
   19.32 -Sent when a finger (or stylus) is moved on the touch device.
   19.33 -Fields:
   19.34 -Same as SDL_FINGERDOWN but with additional:
   19.35 -event.tfinger.dx       - change in x coordinate during this motion event.
   19.36 -event.tfinger.dy       - change in y coordinate during this motion event.
   19.37 -
   19.38 -SDL_FINGERUP:
   19.39 -Sent when a finger (or stylus) is lifted from the touch device.
   19.40 -Fields:
   19.41 -Same as SDL_FINGERDOWN.
   19.42 -
   19.43 -
   19.44 -===========================================================================
   19.45 -Functions
   19.46 -===========================================================================
   19.47 -SDL provides the ability to access the underlying Finger structures.
   19.48 -These structures should _never_ be modified.
   19.49 -
   19.50 -The following functions are included from SDL_touch.h
   19.51 -
   19.52 -To get a SDL_TouchID call SDL_GetTouchDevice(index).
   19.53 -This returns a SDL_TouchID.
   19.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!
   19.55 -
   19.56 -The number of touch devices can be queried with SDL_GetNumTouchDevices().
   19.57 -
   19.58 -A SDL_TouchID may be used to get pointers to SDL_Finger.
   19.59 -
   19.60 -SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
   19.61 -
   19.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:
   19.63 -
   19.64 -      float x = event.tfinger.x;
   19.65 -      float y = event.tfinger.y;
   19.66 -
   19.67 -
   19.68 -
   19.69 -To get a SDL_Finger, call SDL_GetTouchFinger(touchID,index), where touchID is a SDL_TouchID, and index is the requested finger.
   19.70 -This returns a SDL_Finger*, or NULL if the finger does not exist, or has been removed.
   19.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.
   19.72 -As a result, be very careful to check for NULL return values.
   19.73 -
   19.74 -A SDL_Finger has the following fields:
   19.75 ->x,y,pressure:
   19.76 -	The current coordinates of the touch.
   19.77 ->pressure:
   19.78 -	The pressure of the touch.
   19.79 -
   19.80 -===========================================================================
   19.81 -Notes
   19.82 -===========================================================================
   19.83 -For a complete example see test/testgesture.c
   19.84 -
   19.85 -Please direct questions/comments to:
   19.86 -   jim.tla+sdl_touch@gmail.com
   19.87 -   (original author, API was changed since)
    20.1 --- a/README-wince.txt	Tue Jul 29 00:36:12 2014 -0300
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,8 +0,0 @@
    20.4 -
    20.5 -Windows CE is no longer supported by SDL.
    20.6 -
    20.7 -We have left the CE support in SDL 1.2 for those that must have it, and we
    20.8 -have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
    20.9 -
   20.10 ---ryan.
   20.11 -
    21.1 --- a/README-windows.txt	Tue Jul 29 00:36:12 2014 -0300
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,42 +0,0 @@
    21.4 -================================================================================
    21.5 -Simple DirectMedia Layer for Windows
    21.6 -================================================================================
    21.7 -
    21.8 -================================================================================
    21.9 -OpenGL ES 2.x support
   21.10 -================================================================================
   21.11 -
   21.12 -SDL has support for OpenGL ES 2.x under Windows via two alternative 
   21.13 -implementations. 
   21.14 -The most straightforward method consists in running your app in a system with 
   21.15 -a graphic card paired with a relatively recent (as of November of 2013) driver 
   21.16 -which supports the WGL_EXT_create_context_es2_profile extension. Vendors known 
   21.17 -to ship said extension on Windows currently include nVidia and Intel.
   21.18 -
   21.19 -The other method involves using the ANGLE library (https://code.google.com/p/angleproject/)
   21.20 -If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile
   21.21 -extension is found, SDL will try to load the libEGL.dll library provided by
   21.22 -ANGLE.
   21.23 -To obtain the ANGLE binaries, you can either compile from source from
   21.24 -https://chromium.googlesource.com/angle/angle or copy the relevant binaries from
   21.25 -a recent Chrome/Chromium install for Windows. The files you need are:
   21.26 -    
   21.27 -    * libEGL.dll
   21.28 -    * libGLESv2.dll
   21.29 -    * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler)
   21.30 -    or...
   21.31 -    * d3dcompiler_43.dll (supports Windows XP or later)
   21.32 -    
   21.33 -If you compile ANGLE from source, you can configure it so it does not need the
   21.34 -d3dcompiler_* DLL at all (for details on this, see their documentation). 
   21.35 -However, by default SDL will try to preload the d3dcompiler_46.dll to
   21.36 -comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to
   21.37 -support Windows XP) or to skip this step at all, you can use the 
   21.38 -SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details).
   21.39 -
   21.40 -Known Bugs:
   21.41 -    
   21.42 -    * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
   21.43 -      that there's a bug in the library which prevents the window contents from
   21.44 -      refreshing if this is set to anything other than the default value.
   21.45 -      
    22.1 --- a/README-winrt.txt	Tue Jul 29 00:36:12 2014 -0300
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,45 +0,0 @@
    22.4 -================================================================================
    22.5 -Simple DirectMedia Layer for WinRT
    22.6 -================================================================================
    22.7 -
    22.8 -SDL/WinRT layer allows SDL2-based applications to run on many of Microsoft's
    22.9 -platforms that utilize the "Windows Runtime" (aka "WinRT") APIs.  WinRT apps
   22.10 -are currently always full-screen apps, run in what Microsoft calls their
   22.11 -"Modern" environment (aka. "Metro"), and are distributed via Microsoft-run
   22.12 -online stores.  Some of the operating systems that support such apps include:
   22.13 -
   22.14 -* Windows 8.x
   22.15 -* Windows RT 8.x (aka. Windows 8.x for ARM processors)
   22.16 -* Windows Phone 8.x
   22.17 -
   22.18 -To note, WinRT applications that run on Windows 8.x and/or Windows RT are often
   22.19 -called "Windows Store" apps.
   22.20 -
   22.21 -
   22.22 ---------------------------------------------------------------------------------
   22.23 -Requirements
   22.24 ---------------------------------------------------------------------------------
   22.25 -- Microsoft Visual C++ 2012 -- Free, "Express" editions may be used, so long
   22.26 -  as they include support for either "Windows Store" or "Windows Phone" apps.
   22.27 -  (NOTE: MSVC 2013 support is pending.  2012 projects may be converted to 2013
   22.28 -  projects by MSVC, in the meantime.)
   22.29 -- A valid Microsoft account -- This requirement is not imposed by SDL, but
   22.30 -  rather by Microsoft's Visual C++ toolchain.
   22.31 -
   22.32 -
   22.33 ---------------------------------------------------------------------------------
   22.34 -TODO
   22.35 ---------------------------------------------------------------------------------
   22.36 -- Finish adding support for MSVC 2013, and "Universal" WinRT apps, which
   22.37 -  support Windows 8.1, Windows Phone 8.1, and in the future, Xbox One and
   22.38 -  Windows Desktop.
   22.39 -- Finish adding support for the SDL satellite libraries (SDL_image, SDL_mixer,
   22.40 -  SDL_ttf, etc.)
   22.41 -- Create templates for both MSVC 2012 and MSVC 2013, and have the corresponding
   22.42 -  VSIX packages either include pre-built copies of SDL, or reference binaries
   22.43 -  available via MSVC's NuGet servers
   22.44 -- Write setup instructions that use MSVC 201x templates
   22.45 -- Write setup instructions that don't use MSVC 201x templates, and use
   22.46 -  MSVC project-to-project references, rather than pre-built binaries
   22.47 -- Write a list of caveats found in SDL/WinRT, such as APIs that don't work due
   22.48 -  to platform restrictions, or things that need further work
    23.1 --- a/README.txt	Tue Jul 29 00:36:12 2014 -0300
    23.2 +++ b/README.txt	Thu Jul 31 03:14:10 2014 -0300
    23.3 @@ -14,29 +14,8 @@
    23.4  emulators, and popular games including Valve's award winning catalog
    23.5  and many Humble Bundle games.
    23.6  
    23.7 -SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
    23.8 -Support for other platforms may be found in the source code.
    23.9 -
   23.10 -SDL is written in C, works natively with C++, and there are bindings 
   23.11 -available for several other languages, including C# and Python.
   23.12 -
   23.13 -This library is distributed under the zlib license, which can be found
   23.14 -in the file "COPYING.txt".
   23.15 -
   23.16 -The best way to learn how to use SDL is to check out the header files in
   23.17 -the "include" subdirectory and the programs in the "test" subdirectory.
   23.18 -The header files and test programs are well commented and always up to date.
   23.19 -More documentation and FAQs are available online at:
   23.20 -	http://wiki.libsdl.org/
   23.21 -
   23.22 -If you need help with the library, or just want to discuss SDL related
   23.23 -issues, you can join the developers mailing list:
   23.24 -	http://www.libsdl.org/mailing-list.php
   23.25 -
   23.26 -If you want to report bugs or contribute patches, please submit them to
   23.27 -bugzilla:
   23.28 -    http://bugzilla.libsdl.org/
   23.29 +More extensive documentation is available in the docs directory, starting
   23.30 +with README.md
   23.31  
   23.32  Enjoy!
   23.33  	Sam Lantinga				(slouken@libsdl.org)
   23.34 -
    24.1 --- a/VisualC/SDL/SDL_VS2008.vcproj	Tue Jul 29 00:36:12 2014 -0300
    24.2 +++ b/VisualC/SDL/SDL_VS2008.vcproj	Thu Jul 31 03:14:10 2014 -0300
    24.3 @@ -61,6 +61,7 @@
    24.4  				Detect64BitPortabilityProblems="false"
    24.5  				DebugInformationFormat="4"
    24.6  				CompileAs="0"
    24.7 +				OmitDefaultLibName="true"
    24.8  			/>
    24.9  			<Tool
   24.10  				Name="VCManagedResourceCompilerTool"
   24.11 @@ -144,6 +145,7 @@
   24.12  				Detect64BitPortabilityProblems="false"
   24.13  				DebugInformationFormat="4"
   24.14  				CompileAs="0"
   24.15 +				OmitDefaultLibName="true"
   24.16  			/>
   24.17  			<Tool
   24.18  				Name="VCManagedResourceCompilerTool"
   24.19 @@ -232,6 +234,7 @@
   24.20  				Detect64BitPortabilityProblems="false"
   24.21  				DebugInformationFormat="3"
   24.22  				CompileAs="0"
   24.23 +				OmitDefaultLibName="true"
   24.24  			/>
   24.25  			<Tool
   24.26  				Name="VCManagedResourceCompilerTool"
   24.27 @@ -320,6 +323,7 @@
   24.28  				Detect64BitPortabilityProblems="false"
   24.29  				DebugInformationFormat="3"
   24.30  				CompileAs="0"
   24.31 +				OmitDefaultLibName="true"
   24.32  			/>
   24.33  			<Tool
   24.34  				Name="VCManagedResourceCompilerTool"
    25.1 --- a/VisualC/SDL/SDL_VS2010.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    25.2 +++ b/VisualC/SDL/SDL_VS2010.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    25.3 @@ -94,6 +94,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 @@ -127,6 +128,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 @@ -167,6 +169,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 @@ -203,6 +206,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 @@ -510,4 +514,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_VS2012.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    26.2 +++ b/VisualC/SDL/SDL_VS2012.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>
   26.35 @@ -514,4 +518,4 @@
   26.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   26.37    <ImportGroup Label="ExtensionTargets">
   26.38    </ImportGroup>
   26.39 -</Project>
   26.40 +</Project>
   26.41 \ No newline at end of file
    27.1 --- a/VisualC/SDL/SDL_VS2013.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    27.2 +++ b/VisualC/SDL/SDL_VS2013.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    27.3 @@ -98,6 +98,7 @@
    27.4        <CompileAs>Default</CompileAs>
    27.5        <ExceptionHandling>false</ExceptionHandling>
    27.6        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
    27.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    27.8      </ClCompile>
    27.9      <ResourceCompile>
   27.10        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   27.11 @@ -131,6 +132,7 @@
   27.12        <WarningLevel>Level3</WarningLevel>
   27.13        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   27.14        <ExceptionHandling>false</ExceptionHandling>
   27.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   27.16      </ClCompile>
   27.17      <ResourceCompile>
   27.18        <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   27.19 @@ -171,6 +173,7 @@
   27.20        <ExceptionHandling>false</ExceptionHandling>
   27.21        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   27.22        <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
   27.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   27.24      </ClCompile>
   27.25      <ResourceCompile>
   27.26        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   27.27 @@ -207,6 +210,7 @@
   27.28        <WarningLevel>Level3</WarningLevel>
   27.29        <ExceptionHandling>false</ExceptionHandling>
   27.30        <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
   27.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   27.32      </ClCompile>
   27.33      <ResourceCompile>
   27.34        <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    28.1 --- a/VisualC/SDLmain/SDLmain_VS2008.vcproj	Tue Jul 29 00:36:12 2014 -0300
    28.2 +++ b/VisualC/SDLmain/SDLmain_VS2008.vcproj	Thu Jul 31 03:14:10 2014 -0300
    28.3 @@ -56,6 +56,7 @@
    28.4  				SuppressStartupBanner="true"
    28.5  				DebugInformationFormat="1"
    28.6  				CompileAs="0"
    28.7 +				OmitDefaultLibName="true"
    28.8  			/>
    28.9  			<Tool
   28.10  				Name="VCManagedResourceCompilerTool"
   28.11 @@ -123,6 +124,7 @@
   28.12  				SuppressStartupBanner="true"
   28.13  				DebugInformationFormat="1"
   28.14  				CompileAs="0"
   28.15 +				OmitDefaultLibName="true"
   28.16  			/>
   28.17  			<Tool
   28.18  				Name="VCManagedResourceCompilerTool"
   28.19 @@ -316,6 +318,7 @@
   28.20  				SuppressStartupBanner="true"
   28.21  				DebugInformationFormat="1"
   28.22  				CompileAs="0"
   28.23 +				OmitDefaultLibName="true"
   28.24  			/>
   28.25  			<Tool
   28.26  				Name="VCManagedResourceCompilerTool"
   28.27 @@ -381,6 +384,7 @@
   28.28  				SuppressStartupBanner="true"
   28.29  				DebugInformationFormat="1"
   28.30  				CompileAs="0"
   28.31 +				OmitDefaultLibName="true"
   28.32  			/>
   28.33  			<Tool
   28.34  				Name="VCManagedResourceCompilerTool"
    29.1 --- a/VisualC/SDLmain/SDLmain_VS2010.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    29.2 +++ b/VisualC/SDLmain/SDLmain_VS2010.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    29.3 @@ -1,164 +1,168 @@
    29.4 -<?xml version="1.0" encoding="utf-8"?>
    29.5 -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    29.6 -  <ItemGroup Label="ProjectConfigurations">
    29.7 -    <ProjectConfiguration Include="Debug|Win32">
    29.8 -      <Configuration>Debug</Configuration>
    29.9 -      <Platform>Win32</Platform>
   29.10 -    </ProjectConfiguration>
   29.11 -    <ProjectConfiguration Include="Debug|x64">
   29.12 -      <Configuration>Debug</Configuration>
   29.13 -      <Platform>x64</Platform>
   29.14 -    </ProjectConfiguration>
   29.15 -    <ProjectConfiguration Include="Release|Win32">
   29.16 -      <Configuration>Release</Configuration>
   29.17 -      <Platform>Win32</Platform>
   29.18 -    </ProjectConfiguration>
   29.19 -    <ProjectConfiguration Include="Release|x64">
   29.20 -      <Configuration>Release</Configuration>
   29.21 -      <Platform>x64</Platform>
   29.22 -    </ProjectConfiguration>
   29.23 -  </ItemGroup>
   29.24 -  <PropertyGroup Label="Globals">
   29.25 -    <ProjectName>SDL2main</ProjectName>
   29.26 -    <ProjectGuid>{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}</ProjectGuid>
   29.27 -  </PropertyGroup>
   29.28 -  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   29.29 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   29.30 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   29.31 -    <UseOfMfc>false</UseOfMfc>
   29.32 -  </PropertyGroup>
   29.33 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
   29.34 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   29.35 -    <UseOfMfc>false</UseOfMfc>
   29.36 -  </PropertyGroup>
   29.37 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
   29.38 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   29.39 -    <UseOfMfc>false</UseOfMfc>
   29.40 -    <CharacterSet>MultiByte</CharacterSet>
   29.41 -  </PropertyGroup>
   29.42 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
   29.43 -    <ConfigurationType>StaticLibrary</ConfigurationType>
   29.44 -    <UseOfMfc>false</UseOfMfc>
   29.45 -  </PropertyGroup>
   29.46 -  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   29.47 -  <ImportGroup Label="ExtensionSettings">
   29.48 -  </ImportGroup>
   29.49 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
   29.50 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   29.51 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   29.52 -  </ImportGroup>
   29.53 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
   29.54 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   29.55 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   29.56 -  </ImportGroup>
   29.57 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
   29.58 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   29.59 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   29.60 -  </ImportGroup>
   29.61 -  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
   29.62 -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   29.63 -    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
   29.64 -  </ImportGroup>
   29.65 -  <PropertyGroup Label="UserMacros" />
   29.66 -  <PropertyGroup>
   29.67 -    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
   29.68 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   29.69 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
   29.70 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   29.71 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
   29.72 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   29.73 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
   29.74 -    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
   29.75 -    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
   29.76 -  </PropertyGroup>
   29.77 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   29.78 -    <PreBuildEvent />
   29.79 -    <ClCompile>
   29.80 -      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
   29.81 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
   29.82 -      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   29.83 -      <StringPooling>true</StringPooling>
   29.84 -      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
   29.85 -      <FunctionLevelLinking>true</FunctionLevelLinking>
   29.86 -      <PrecompiledHeader>
   29.87 -      </PrecompiledHeader>
   29.88 -      <WarningLevel>Level3</WarningLevel>
   29.89 -      <SuppressStartupBanner>true</SuppressStartupBanner>
   29.90 -      <CompileAs>Default</CompileAs>
   29.91 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
   29.92 -      <ExceptionHandling>false</ExceptionHandling>
   29.93 -    </ClCompile>
   29.94 -    <Lib>
   29.95 -      <SuppressStartupBanner>true</SuppressStartupBanner>
   29.96 -    </Lib>
   29.97 -  </ItemDefinitionGroup>
   29.98 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
   29.99 -    <Midl>
  29.100 -      <TargetEnvironment>X64</TargetEnvironment>
  29.101 -    </Midl>
  29.102 -    <ClCompile>
  29.103 -      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
  29.104 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.105 -      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.106 -      <StringPooling>true</StringPooling>
  29.107 -      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  29.108 -      <FunctionLevelLinking>true</FunctionLevelLinking>
  29.109 -      <PrecompiledHeader>
  29.110 -      </PrecompiledHeader>
  29.111 -      <WarningLevel>Level3</WarningLevel>
  29.112 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.113 -      <CompileAs>Default</CompileAs>
  29.114 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.115 -      <ExceptionHandling>false</ExceptionHandling>
  29.116 -    </ClCompile>
  29.117 -    <Lib>
  29.118 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.119 -    </Lib>
  29.120 -  </ItemDefinitionGroup>
  29.121 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  29.122 -    <PreBuildEvent />
  29.123 -    <ClCompile>
  29.124 -      <Optimization>Disabled</Optimization>
  29.125 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.126 -      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.127 -      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  29.128 -      <PrecompiledHeader>
  29.129 -      </PrecompiledHeader>
  29.130 -      <WarningLevel>Level3</WarningLevel>
  29.131 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.132 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.133 -      <CompileAs>Default</CompileAs>
  29.134 -      <ExceptionHandling>false</ExceptionHandling>
  29.135 -    </ClCompile>
  29.136 -    <Lib>
  29.137 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.138 -    </Lib>
  29.139 -  </ItemDefinitionGroup>
  29.140 -  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  29.141 -    <Midl>
  29.142 -      <TargetEnvironment>X64</TargetEnvironment>
  29.143 -    </Midl>
  29.144 -    <ClCompile>
  29.145 -      <Optimization>Disabled</Optimization>
  29.146 -      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.147 -      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.148 -      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  29.149 -      <PrecompiledHeader>
  29.150 -      </PrecompiledHeader>
  29.151 -      <WarningLevel>Level3</WarningLevel>
  29.152 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.153 -      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.154 -      <CompileAs>Default</CompileAs>
  29.155 -      <ExceptionHandling>false</ExceptionHandling>
  29.156 -    </ClCompile>
  29.157 -    <Lib>
  29.158 -      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.159 -    </Lib>
  29.160 -  </ItemDefinitionGroup>
  29.161 -  <ItemGroup>
  29.162 -    <ClCompile Include="..\..\src\main\windows\SDL_windows_main.c" />
  29.163 -  </ItemGroup>
  29.164 -  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  29.165 -  <ImportGroup Label="ExtensionTargets">
  29.166 -  </ImportGroup>
  29.167 +<?xml version="1.0" encoding="utf-8"?>
  29.168 +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  29.169 +  <ItemGroup Label="ProjectConfigurations">
  29.170 +    <ProjectConfiguration Include="Debug|Win32">
  29.171 +      <Configuration>Debug</Configuration>
  29.172 +      <Platform>Win32</Platform>
  29.173 +    </ProjectConfiguration>
  29.174 +    <ProjectConfiguration Include="Debug|x64">
  29.175 +      <Configuration>Debug</Configuration>
  29.176 +      <Platform>x64</Platform>
  29.177 +    </ProjectConfiguration>
  29.178 +    <ProjectConfiguration Include="Release|Win32">
  29.179 +      <Configuration>Release</Configuration>
  29.180 +      <Platform>Win32</Platform>
  29.181 +    </ProjectConfiguration>
  29.182 +    <ProjectConfiguration Include="Release|x64">
  29.183 +      <Configuration>Release</Configuration>
  29.184 +      <Platform>x64</Platform>
  29.185 +    </ProjectConfiguration>
  29.186 +  </ItemGroup>
  29.187 +  <PropertyGroup Label="Globals">
  29.188 +    <ProjectName>SDL2main</ProjectName>
  29.189 +    <ProjectGuid>{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}</ProjectGuid>
  29.190 +  </PropertyGroup>
  29.191 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  29.192 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
  29.193 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  29.194 +    <UseOfMfc>false</UseOfMfc>
  29.195 +  </PropertyGroup>
  29.196 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
  29.197 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  29.198 +    <UseOfMfc>false</UseOfMfc>
  29.199 +  </PropertyGroup>
  29.200 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
  29.201 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  29.202 +    <UseOfMfc>false</UseOfMfc>
  29.203 +    <CharacterSet>MultiByte</CharacterSet>
  29.204 +  </PropertyGroup>
  29.205 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  29.206 +    <ConfigurationType>StaticLibrary</ConfigurationType>
  29.207 +    <UseOfMfc>false</UseOfMfc>
  29.208 +  </PropertyGroup>
  29.209 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  29.210 +  <ImportGroup Label="ExtensionSettings">
  29.211 +  </ImportGroup>
  29.212 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
  29.213 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  29.214 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  29.215 +  </ImportGroup>
  29.216 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
  29.217 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  29.218 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  29.219 +  </ImportGroup>
  29.220 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
  29.221 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  29.222 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  29.223 +  </ImportGroup>
  29.224 +  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
  29.225 +    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  29.226 +    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
  29.227 +  </ImportGroup>
  29.228 +  <PropertyGroup Label="UserMacros" />
  29.229 +  <PropertyGroup>
  29.230 +    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
  29.231 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  29.232 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
  29.233 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  29.234 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
  29.235 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  29.236 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
  29.237 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\$(Platform)\$(Configuration)\</OutDir>
  29.238 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
  29.239 +  </PropertyGroup>
  29.240 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
  29.241 +    <PreBuildEvent />
  29.242 +    <ClCompile>
  29.243 +      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
  29.244 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.245 +      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.246 +      <StringPooling>true</StringPooling>
  29.247 +      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  29.248 +      <FunctionLevelLinking>true</FunctionLevelLinking>
  29.249 +      <PrecompiledHeader>
  29.250 +      </PrecompiledHeader>
  29.251 +      <WarningLevel>Level3</WarningLevel>
  29.252 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.253 +      <CompileAs>Default</CompileAs>
  29.254 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.255 +      <ExceptionHandling>false</ExceptionHandling>
  29.256 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  29.257 +    </ClCompile>
  29.258 +    <Lib>
  29.259 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.260 +    </Lib>
  29.261 +  </ItemDefinitionGroup>
  29.262 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  29.263 +    <Midl>
  29.264 +      <TargetEnvironment>X64</TargetEnvironment>
  29.265 +    </Midl>
  29.266 +    <ClCompile>
  29.267 +      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
  29.268 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.269 +      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.270 +      <StringPooling>true</StringPooling>
  29.271 +      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  29.272 +      <FunctionLevelLinking>true</FunctionLevelLinking>
  29.273 +      <PrecompiledHeader>
  29.274 +      </PrecompiledHeader>
  29.275 +      <WarningLevel>Level3</WarningLevel>
  29.276 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.277 +      <CompileAs>Default</CompileAs>
  29.278 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.279 +      <ExceptionHandling>false</ExceptionHandling>
  29.280 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  29.281 +    </ClCompile>
  29.282 +    <Lib>
  29.283 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.284 +    </Lib>
  29.285 +  </ItemDefinitionGroup>
  29.286 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  29.287 +    <PreBuildEvent />
  29.288 +    <ClCompile>
  29.289 +      <Optimization>Disabled</Optimization>
  29.290 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.291 +      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.292 +      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  29.293 +      <PrecompiledHeader>
  29.294 +      </PrecompiledHeader>
  29.295 +      <WarningLevel>Level3</WarningLevel>
  29.296 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.297 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.298 +      <CompileAs>Default</CompileAs>
  29.299 +      <ExceptionHandling>false</ExceptionHandling>
  29.300 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  29.301 +    </ClCompile>
  29.302 +    <Lib>
  29.303 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.304 +    </Lib>
  29.305 +  </ItemDefinitionGroup>
  29.306 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  29.307 +    <Midl>
  29.308 +      <TargetEnvironment>X64</TargetEnvironment>
  29.309 +    </Midl>
  29.310 +    <ClCompile>
  29.311 +      <Optimization>Disabled</Optimization>
  29.312 +      <AdditionalIncludeDirectories>..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  29.313 +      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  29.314 +      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  29.315 +      <PrecompiledHeader>
  29.316 +      </PrecompiledHeader>
  29.317 +      <WarningLevel>Level3</WarningLevel>
  29.318 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.319 +      <DebugInformationFormat>OldStyle</DebugInformationFormat>
  29.320 +      <CompileAs>Default</CompileAs>
  29.321 +      <ExceptionHandling>false</ExceptionHandling>
  29.322 +      <OmitDefaultLibName>true</OmitDefaultLibName>
  29.323 +    </ClCompile>
  29.324 +    <Lib>
  29.325 +      <SuppressStartupBanner>true</SuppressStartupBanner>
  29.326 +    </Lib>
  29.327 +  </ItemDefinitionGroup>
  29.328 +  <ItemGroup>
  29.329 +    <ClCompile Include="..\..\src\main\windows\SDL_windows_main.c" />
  29.330 +  </ItemGroup>
  29.331 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  29.332 +  <ImportGroup Label="ExtensionTargets">
  29.333 +  </ImportGroup>
  29.334  </Project>
  29.335 \ No newline at end of file
    30.1 --- a/VisualC/SDLmain/SDLmain_VS2012.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    30.2 +++ b/VisualC/SDLmain/SDLmain_VS2012.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>
   30.35 @@ -165,4 +169,4 @@
   30.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   30.37    <ImportGroup Label="ExtensionTargets">
   30.38    </ImportGroup>
   30.39 -</Project>
   30.40 +</Project>
   30.41 \ No newline at end of file
    31.1 --- a/VisualC/SDLmain/SDLmain_VS2013.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    31.2 +++ b/VisualC/SDLmain/SDLmain_VS2013.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    31.3 @@ -91,6 +91,7 @@
    31.4        <CompileAs>Default</CompileAs>
    31.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    31.6        <ExceptionHandling>false</ExceptionHandling>
    31.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    31.8      </ClCompile>
    31.9      <Lib>
   31.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   31.11 @@ -114,6 +115,7 @@
   31.12        <CompileAs>Default</CompileAs>
   31.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   31.14        <ExceptionHandling>false</ExceptionHandling>
   31.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   31.16      </ClCompile>
   31.17      <Lib>
   31.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   31.19 @@ -133,6 +135,7 @@
   31.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   31.21        <CompileAs>Default</CompileAs>
   31.22        <ExceptionHandling>false</ExceptionHandling>
   31.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   31.24      </ClCompile>
   31.25      <Lib>
   31.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   31.27 @@ -154,6 +157,7 @@
   31.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   31.29        <CompileAs>Default</CompileAs>
   31.30        <ExceptionHandling>false</ExceptionHandling>
   31.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   31.32      </ClCompile>
   31.33      <Lib>
   31.34        <SuppressStartupBanner>true</SuppressStartupBanner>
    32.1 --- a/VisualC/SDLtest/SDLtest_VS2008.vcproj	Tue Jul 29 00:36:12 2014 -0300
    32.2 +++ b/VisualC/SDLtest/SDLtest_VS2008.vcproj	Thu Jul 31 03:14:10 2014 -0300
    32.3 @@ -56,6 +56,7 @@
    32.4  				SuppressStartupBanner="true"
    32.5  				DebugInformationFormat="1"
    32.6  				CompileAs="0"
    32.7 +				OmitDefaultLibName="true"
    32.8  			/>
    32.9  			<Tool
   32.10  				Name="VCManagedResourceCompilerTool"
   32.11 @@ -123,6 +124,7 @@
   32.12  				SuppressStartupBanner="true"
   32.13  				DebugInformationFormat="1"
   32.14  				CompileAs="0"
   32.15 +				OmitDefaultLibName="true"
   32.16  			/>
   32.17  			<Tool
   32.18  				Name="VCManagedResourceCompilerTool"
   32.19 @@ -316,6 +318,7 @@
   32.20  				SuppressStartupBanner="true"
   32.21  				DebugInformationFormat="1"
   32.22  				CompileAs="0"
   32.23 +				OmitDefaultLibName="true"
   32.24  			/>
   32.25  			<Tool
   32.26  				Name="VCManagedResourceCompilerTool"
   32.27 @@ -381,6 +384,7 @@
   32.28  				SuppressStartupBanner="true"
   32.29  				DebugInformationFormat="1"
   32.30  				CompileAs="0"
   32.31 +				OmitDefaultLibName="true"
   32.32  			/>
   32.33  			<Tool
   32.34  				Name="VCManagedResourceCompilerTool"
    33.1 --- a/VisualC/SDLtest/SDLtest_VS2010.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    33.2 +++ b/VisualC/SDLtest/SDLtest_VS2010.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    33.3 @@ -87,6 +87,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 @@ -110,6 +111,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 @@ -129,6 +131,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 @@ -150,6 +153,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 @@ -189,4 +193,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_VS2012.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    34.2 +++ b/VisualC/SDLtest/SDLtest_VS2012.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>
   34.35 @@ -193,4 +197,4 @@
   34.36    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   34.37    <ImportGroup Label="ExtensionTargets">
   34.38    </ImportGroup>
   34.39 -</Project>
   34.40 +</Project>
   34.41 \ No newline at end of file
    35.1 --- a/VisualC/SDLtest/SDLtest_VS2013.vcxproj	Tue Jul 29 00:36:12 2014 -0300
    35.2 +++ b/VisualC/SDLtest/SDLtest_VS2013.vcxproj	Thu Jul 31 03:14:10 2014 -0300
    35.3 @@ -91,6 +91,7 @@
    35.4        <CompileAs>Default</CompileAs>
    35.5        <DebugInformationFormat>OldStyle</DebugInformationFormat>
    35.6        <ExceptionHandling>false</ExceptionHandling>
    35.7 +      <OmitDefaultLibName>true</OmitDefaultLibName>
    35.8      </ClCompile>
    35.9      <Lib>
   35.10        <SuppressStartupBanner>true</SuppressStartupBanner>
   35.11 @@ -114,6 +115,7 @@
   35.12        <CompileAs>Default</CompileAs>
   35.13        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   35.14        <ExceptionHandling>false</ExceptionHandling>
   35.15 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   35.16      </ClCompile>
   35.17      <Lib>
   35.18        <SuppressStartupBanner>true</SuppressStartupBanner>
   35.19 @@ -133,6 +135,7 @@
   35.20        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   35.21        <CompileAs>Default</CompileAs>
   35.22        <ExceptionHandling>false</ExceptionHandling>
   35.23 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   35.24      </ClCompile>
   35.25      <Lib>
   35.26        <SuppressStartupBanner>true</SuppressStartupBanner>
   35.27 @@ -154,6 +157,7 @@
   35.28        <DebugInformationFormat>OldStyle</DebugInformationFormat>
   35.29        <CompileAs>Default</CompileAs>
   35.30        <ExceptionHandling>false</ExceptionHandling>
   35.31 +      <OmitDefaultLibName>true</OmitDefaultLibName>
   35.32      </ClCompile>
   35.33      <Lib>
   35.34        <SuppressStartupBanner>true</SuppressStartupBanner>
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/docs/README-android.md	Thu Jul 31 03:14:10 2014 -0300
    36.3 @@ -0,0 +1,437 @@
    36.4 +Android
    36.5 +================================================================================
    36.6 +
    36.7 +Requirements:
    36.8 +
    36.9 +Android SDK (version 12 or later)
   36.10 +http://developer.android.com/sdk/index.html
   36.11 +
   36.12 +Android NDK r7 or later
   36.13 +http://developer.android.com/tools/sdk/ndk/index.html
   36.14 +
   36.15 +Minimum API level supported by SDL: 10 (Android 2.3.3)
   36.16 +Joystick support is available for API level >=12 devices.
   36.17 +
   36.18 +================================================================================
   36.19 + How the port works
   36.20 +================================================================================
   36.21 +
   36.22 +- Android applications are Java-based, optionally with parts written in C
   36.23 +- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to 
   36.24 +the SDL library
   36.25 +- This means that your application C code must be placed inside an Android 
   36.26 +Java project, along with some C support code that communicates with Java
   36.27 +- This eventually produces a standard Android .apk package
   36.28 +
   36.29 +The Android Java code implements an "Activity" and can be found in:
   36.30 +android-project/src/org/libsdl/app/SDLActivity.java
   36.31 +
   36.32 +The Java code loads your game code, the SDL shared library, and
   36.33 +dispatches to native functions implemented in the SDL library:
   36.34 +src/core/android/SDL_android.c
   36.35 +
   36.36 +Your project must include some glue code that starts your main() routine:
   36.37 +src/main/android/SDL_android_main.c
   36.38 +
   36.39 +
   36.40 +================================================================================
   36.41 + Building an app
   36.42 +================================================================================
   36.43 +
   36.44 +For simple projects you can use the script located at build-scripts/androidbuild.sh
   36.45 +
   36.46 +There's two ways of using it:
   36.47 +
   36.48 +androidbuild.sh com.yourcompany.yourapp < sources.list
   36.49 +androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
   36.50 +
   36.51 +sources.list should be a text file with a source file name in each line
   36.52 +Filenames should be specified relative to the current directory, for example if
   36.53 +you are in the build-scripts directory and want to create the testgles.c test, you'll
   36.54 +run:
   36.55 +    
   36.56 +./androidbuild.sh org.libsdl.testgles ../test/testgles.c
   36.57 +
   36.58 +One limitation of this script is that all sources provided will be aggregated into
   36.59 +a single directory, thus all your source files should have a unique name.
   36.60 +
   36.61 +Once the project is complete the script will tell you where the debug APK is located.
   36.62 +If you want to create a signed release APK, you can use the project created by this
   36.63 +utility to generate it.
   36.64 +
   36.65 +Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
   36.66 +done in the build directory for the app!
   36.67 +
   36.68 +
   36.69 +For more complex projects, follow these instructions:
   36.70 +    
   36.71 +1. Copy the android-project directory wherever you want to keep your projects
   36.72 +   and rename it to the name of your project.
   36.73 +2. Move or symlink this SDL directory into the <project>/jni directory
   36.74 +3. Edit <project>/jni/src/Android.mk to include your source files
   36.75 +4. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
   36.76 +
   36.77 +If you want to use the Eclipse IDE, skip to the Eclipse section below.
   36.78 +
   36.79 +5. Create <project>/local.properties and use that to point to the Android SDK directory, by writing a line with the following form:
   36.80 +sdk.dir=PATH_TO_ANDROID_SDK
   36.81 +6. Run 'ant debug' in android/project. This compiles the .java and eventually 
   36.82 +   creates a .apk with the native code embedded
   36.83 +7. 'ant debug install' will push the apk to the device or emulator (if connected)
   36.84 +
   36.85 +Here's an explanation of the files in the Android project, so you can customize them:
   36.86 +
   36.87 +android-project/
   36.88 +	AndroidManifest.xml	- package manifest. Among others, it contains the class name
   36.89 +				  of the main Activity and the package name of the application.
   36.90 +	build.properties	- empty
   36.91 +	build.xml		- build description file, used by ant. The actual application name
   36.92 +				  is specified here.
   36.93 +	default.properties	- holds the target ABI for the application, android-10 and up
   36.94 +	project.properties	- holds the target ABI for the application, android-10 and up
   36.95 +	local.properties	- holds the SDK path, you should change this to the path to your SDK
   36.96 +	jni/			- directory holding native code
   36.97 +	jni/Android.mk		- Android makefile that can call recursively the Android.mk files
   36.98 +				  in all subdirectories
   36.99 +	jni/SDL/		- (symlink to) directory holding the SDL library files
  36.100 +	jni/SDL/Android.mk	- Android makefile for creating the SDL shared library
  36.101 +	jni/src/		- directory holding your C/C++ source
  36.102 +	jni/src/Android.mk	- Android makefile that you should customize to include your 
  36.103 +                                  source code and any library references
  36.104 +	res/			- directory holding resources for your application
  36.105 +	res/drawable-*		- directories holding icons for different phone hardware. Could be
  36.106 +				  one dir called "drawable".
  36.107 +	res/layout/main.xml	- Usually contains a file main.xml, which declares the screen layout.
  36.108 +				  We don't need it because we use the SDL video output.
  36.109 +	res/values/strings.xml	- strings used in your application, including the application name
  36.110 +				  shown on the phone.
  36.111 +	src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding
  36.112 +				  to SDL.  Be very careful changing this, as the SDL library relies
  36.113 +				  on this implementation.
  36.114 +
  36.115 +
  36.116 +================================================================================
  36.117 + Build an app with static linking of libSDL
  36.118 +================================================================================
  36.119 +
  36.120 +This build uses the Android NDK module system.
  36.121 +
  36.122 +Instructions:
  36.123 +1. Copy the android-project directory wherever you want to keep your projects
  36.124 +   and rename it to the name of your project.
  36.125 +2. Rename <project>/jni/src/Android_static.mk to <project>/jni/src/Android.mk
  36.126 +   (overwrite the existing one)
  36.127 +3. Edit <project>/jni/src/Android.mk to include your source files
  36.128 +4. create and export an environment variable named NDK_MODULE_PATH that points
  36.129 +   to the parent directory of this SDL directory. e.g.:
  36.130 +
  36.131 +   export NDK_MODULE_PATH="$PWD"/..
  36.132 +
  36.133 +5. Edit <project>/src/org/libsdl/app/SDLActivity.java and remove the call to
  36.134 +   System.loadLibrary("SDL2") line 42.
  36.135 +6. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
  36.136 +
  36.137 +
  36.138 +================================================================================
  36.139 + Customizing your application name
  36.140 +================================================================================
  36.141 +
  36.142 +To customize your application name, edit AndroidManifest.xml and replace
  36.143 +"org.libsdl.app" with an identifier for your product package.
  36.144 +
  36.145 +Then create a Java class extending SDLActivity and place it in a directory
  36.146 +under src matching your package, e.g.
  36.147 +	src/com/gamemaker/game/MyGame.java
  36.148 +
  36.149 +Here's an example of a minimal class file:
  36.150 +--- MyGame.java --------------------------
  36.151 +package com.gamemaker.game;
  36.152 +
  36.153 +import org.libsdl.app.SDLActivity; 
  36.154 +
  36.155 +/* 
  36.156 + * A sample wrapper class that just calls SDLActivity 
  36.157 + */ 
  36.158 +
  36.159 +public class MyGame extends SDLActivity { }
  36.160 +
  36.161 +------------------------------------------
  36.162 +
  36.163 +Then replace "SDLActivity" in AndroidManifest.xml with the name of your
  36.164 +class, .e.g. "MyGame"
  36.165 +
  36.166 +================================================================================
  36.167 + Customizing your application icon
  36.168 +================================================================================
  36.169 +
  36.170 +Conceptually changing your icon is just replacing the "ic_launcher.png" files in
  36.171 +the drawable directories under the res directory. There are four directories for
  36.172 +different screen sizes. These can be replaced with one dir called "drawable",
  36.173 +containing an icon file "ic_launcher.png" with dimensions 48x48 or 72x72.
  36.174 +
  36.175 +You may need to change the name of your icon in AndroidManifest.xml to match
  36.176 +this icon filename.
  36.177 +
  36.178 +================================================================================
  36.179 + Loading assets
  36.180 +================================================================================
  36.181 +
  36.182 +Any files you put in the "assets" directory of your android-project directory
  36.183 +will get bundled into the application package and you can load them using the
  36.184 +standard functions in SDL_rwops.h.
  36.185 +
  36.186 +There are also a few Android specific functions that allow you to get other
  36.187 +useful paths for saving and loading data:
  36.188 +SDL_AndroidGetInternalStoragePath()
  36.189 +SDL_AndroidGetExternalStorageState()
  36.190 +SDL_AndroidGetExternalStoragePath()
  36.191 +
  36.192 +See SDL_system.h for more details on these functions.
  36.193 +
  36.194 +The asset packaging system will, by default, compress certain file extensions.
  36.195 +SDL includes two asset file access mechanisms, the preferred one is the so
  36.196 +called "File Descriptor" method, which is faster and doesn't involve the Dalvik
  36.197 +GC, but given this method does not work on compressed assets, there is also the
  36.198 +"Input Stream" method, which is automatically used as a fall back by SDL. You
  36.199 +may want to keep this fact in mind when building your APK, specially when large
  36.200 +files are involved.
  36.201 +For more information on which extensions get compressed by default and how to
  36.202 +disable this behaviour, see for example:
  36.203 +    
  36.204 +http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
  36.205 +
  36.206 +================================================================================
  36.207 + Pause / Resume behaviour
  36.208 +================================================================================
  36.209 +
  36.210 +If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
  36.211 +the event loop will block itself when the app is paused (ie, when the user
  36.212 +returns to the main Android dashboard). Blocking is better in terms of battery
  36.213 +use, and it allows your app to spring back to life instantaneously after resume
  36.214 +(versus polling for a resume message).
  36.215 +
  36.216 +Upon resume, SDL will attempt to restore the GL context automatically.
  36.217 +In modern devices (Android 3.0 and up) this will most likely succeed and your
  36.218 +app can continue to operate as it was.
  36.219 +
  36.220 +However, there's a chance (on older hardware, or on systems under heavy load),
  36.221 +where the GL context can not be restored. In that case you have to listen for
  36.222 +a specific message, (which is not yet implemented!) and restore your textures
  36.223 +manually or quit the app (which is actually the kind of behaviour you'll see
  36.224 +under iOS, if the OS can not restore your GL context it will just kill your app)
  36.225 +
  36.226 +================================================================================
  36.227 + Threads and the Java VM
  36.228 +================================================================================
  36.229 +
  36.230 +For a quick tour on how Linux native threads interoperate with the Java VM, take
  36.231 +a look here: http://developer.android.com/guide/practices/jni.html
  36.232 +If you want to use threads in your SDL app, it's strongly recommended that you
  36.233 +do so by creating them using SDL functions. This way, the required attach/detach
  36.234 +handling is managed by SDL automagically. If you have threads created by other
  36.235 +means and they make calls to SDL functions, make sure that you call
  36.236 +Android_JNI_SetupThread before doing anything else otherwise SDL will attach
  36.237 +your thread automatically anyway (when you make an SDL call), but it'll never
  36.238 +detach it.
  36.239 +
  36.240 +================================================================================
  36.241 + Using STL
  36.242 +================================================================================
  36.243 +
  36.244 +You can use STL in your project by creating an Application.mk file in the jni
  36.245 +folder and adding the following line:
  36.246 +APP_STL := stlport_static
  36.247 +
  36.248 +For more information check out CPLUSPLUS-SUPPORT.html in the NDK documentation.
  36.249 +
  36.250 +================================================================================
  36.251 + Additional documentation
  36.252 +================================================================================
  36.253 +
  36.254 +The documentation in the NDK docs directory is very helpful in understanding the
  36.255 +build process and how to work with native code on the Android platform.
  36.256 +
  36.257 +The best place to start is with docs/OVERVIEW.TXT
  36.258 +
  36.259 +
  36.260 +================================================================================
  36.261 + Using Eclipse
  36.262 +================================================================================
  36.263 +
  36.264 +First make sure that you've installed Eclipse and the Android extensions as described here:
  36.265 +	http://developer.android.com/tools/sdk/eclipse-adt.html
  36.266 +
  36.267 +Once you've copied the SDL android project and customized it, you can create an Eclipse project from it:
  36.268 + * File -> New -> Other
  36.269 + * Select the Android -> Android Project wizard and click Next
  36.270 + * Enter the name you'd like your project to have
  36.271 + * Select "Create project from existing source" and browse for your project directory
  36.272 + * Make sure the Build Target is set to Android 2.0
  36.273 + * Click Finish
  36.274 +
  36.275 +
  36.276 +================================================================================
  36.277 + Using the emulator
  36.278 +================================================================================
  36.279 +
  36.280 +There are some good tips and tricks for getting the most out of the
  36.281 +emulator here: http://developer.android.com/tools/devices/emulator.html
  36.282 +
  36.283 +Especially useful is the info on setting up OpenGL ES 2.0 emulation.
  36.284 +
  36.285 +Notice that this software emulator is incredibly slow and needs a lot of disk space.
  36.286 +Using a real device works better.
  36.287 +
  36.288 +================================================================================
  36.289 + Troubleshooting
  36.290 +================================================================================
  36.291 +
  36.292 +You can create and run an emulator from the Eclipse IDE:
  36.293 + * Window -> Android SDK and AVD Manager
  36.294 +
  36.295 +You can see if adb can see any devices with the following command:
  36.296 +	adb devices
  36.297 +
  36.298 +You can see the output of log messages on the default device with:
  36.299 +	adb logcat
  36.300 +
  36.301 +You can push files to the device with:
  36.302 +	adb push local_file remote_path_and_file
  36.303 +
  36.304 +You can push files to the SD Card at /sdcard, for example:
  36.305 +	adb push moose.dat /sdcard/moose.dat
  36.306 +
  36.307 +You can see the files on the SD card with a shell command:
  36.308 +	adb shell ls /sdcard/
  36.309 +
  36.310 +You can start a command shell on the default device with:
  36.311 +	adb shell
  36.312 +
  36.313 +You can remove the library files of your project (and not the SDL lib files) with:
  36.314 +	ndk-build clean
  36.315 +
  36.316 +You can do a build with the following command:
  36.317 +	ndk-build
  36.318 +
  36.319 +You can see the complete command line that ndk-build is using by passing V=1 on the command line:
  36.320 +	ndk-build V=1
  36.321 +
  36.322 +If your application crashes in native code, you can use addr2line to convert the
  36.323 +addresses in the stack trace to lines in your code.
  36.324 +
  36.325 +For example, if your crash looks like this:
  36.326 +I/DEBUG   (   31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
  36.327 +I/DEBUG   (   31):  r0 00000000  r1 00001000  r2 00000003  r3 400085d4
  36.328 +I/DEBUG   (   31):  r4 400085d0  r5 40008000  r6 afd41504  r7 436c6a7c
  36.329 +I/DEBUG   (   31):  r8 436c6b30  r9 435c6fb0  10 435c6f9c  fp 4168d82c
  36.330 +I/DEBUG   (   31):  ip 8346aff0  sp 436c6a60  lr afd1c8ff  pc afd1c902  cpsr 60000030
  36.331 +I/DEBUG   (   31):          #00  pc 0001c902  /system/lib/libc.so
  36.332 +I/DEBUG   (   31):          #01  pc 0001ccf6  /system/lib/libc.so
  36.333 +I/DEBUG   (   31):          #02  pc 000014bc  /data/data/org.libsdl.app/lib/libmain.so
  36.334 +I/DEBUG   (   31):          #03  pc 00001506  /data/data/org.libsdl.app/lib/libmain.so
  36.335 +
  36.336 +You can see that there's a crash in the C library being called from the main code.
  36.337 +I run addr2line with the debug version of my code:
  36.338 +	arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
  36.339 +and then paste in the number after "pc" in the call stack, from the line that I care about:
  36.340 +000014bc
  36.341 +
  36.342 +I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
  36.343 +
  36.344 +You can add logging to your code to help show what's happening:
  36.345 +
  36.346 +#include <android/log.h>
  36.347 +
  36.348 +	__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
  36.349 +
  36.350 +If you need to build without optimization turned on, you can create a file called
  36.351 +"Application.mk" in the jni directory, with the following line in it:
  36.352 +APP_OPTIM := debug
  36.353 +
  36.354 +
  36.355 +================================================================================
  36.356 + Memory debugging
  36.357 +================================================================================
  36.358 +
  36.359 +The best (and slowest) way to debug memory issues on Android is valgrind.
  36.360 +Valgrind has support for Android out of the box, just grab code using:
  36.361 +	svn co svn://svn.valgrind.org/valgrind/trunk valgrind
  36.362 +... and follow the instructions in the file README.android to build it.
  36.363 +
  36.364 +One thing I needed to do on Mac OS X was change the path to the toolchain,
  36.365 +and add ranlib to the environment variables:
  36.366 +export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
  36.367 +
  36.368 +Once valgrind is built, you can create a wrapper script to launch your
  36.369 +application with it, changing org.libsdl.app to your package identifier:
  36.370 +--- start_valgrind_app -------------------
  36.371 +#!/system/bin/sh
  36.372 +export TMPDIR=/data/data/org.libsdl.app
  36.373 +exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
  36.374 +------------------------------------------
  36.375 +
  36.376 +Then push it to the device:
  36.377 +	adb push start_valgrind_app /data/local
  36.378 +
  36.379 +and make it executable:
  36.380 +	adb shell chmod 755 /data/local/start_valgrind_app
  36.381 +
  36.382 +and tell Android to use the script to launch your application:
  36.383 +	adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
  36.384 +
  36.385 +If the setprop command says "could not set property", it's likely that
  36.386 +your package name is too long and you should make it shorter by changing
  36.387 +AndroidManifest.xml and the path to your class file in android-project/src
  36.388 +
  36.389 +You can then launch your application normally and waaaaaaaiiittt for it.
  36.390 +You can monitor the startup process with the logcat command above, and
  36.391 +when it's done (or even while it's running) you can grab the valgrind
  36.392 +output file:
  36.393 +	adb pull /sdcard/valgrind.log
  36.394 +
  36.395 +When you're done instrumenting with valgrind, you can disable the wrapper:
  36.396 +	adb shell setprop wrap.org.libsdl.app ""
  36.397 +
  36.398 +================================================================================
  36.399 + Why is API level 10 the minimum required?
  36.400 +================================================================================
  36.401 +
  36.402 +API level 10 is the minimum required level at runtime (that is, on the device) 
  36.403 +because SDL requires some functionality for running not
  36.404 +available on older devices. Since the incorporation of joystick support into SDL,
  36.405 +the minimum SDK required to *build* SDL is version 12. Devices running API levels
  36.406 +10-11 are still supported, only with the joystick functionality disabled.
  36.407 +
  36.408 +Support for native OpenGL ES and ES2 applications was introduced in the NDK for
  36.409 +API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which
  36.410 +has since then been obsoleted, with the recommendation to developers to bump the
  36.411 +required API level to 10.
  36.412 +As of this writing, according to http://developer.android.com/about/dashboards/index.html
  36.413 +about 90% of the Android devices accessing Google Play support API level 10 or
  36.414 +higher (March 2013).
  36.415 +
  36.416 +================================================================================
  36.417 + A note regarding the use of the "dirty rectangles" rendering technique
  36.418 +================================================================================
  36.419 +
  36.420 +If your app uses a variation of the "dirty rectangles" rendering technique,
  36.421 +where you only update a portion of the screen on each frame, you may notice a
  36.422 +variety of visual glitches on Android, that are not present on other platforms.
  36.423 +This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
  36.424 +contexts, in particular the use of the eglSwapBuffers function. As stated in the
  36.425 +documentation for the function "The contents of ancillary buffers are always 
  36.426 +undefined after calling eglSwapBuffers".
  36.427 +Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
  36.428 +is not possible for SDL as it requires EGL 1.4, available only on the API level
  36.429 +17+, so the only workaround available on this platform is to redraw the entire
  36.430 +screen each frame.
  36.431 +
  36.432 +Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
  36.433 +
  36.434 +================================================================================
  36.435 + Known issues
  36.436 +================================================================================
  36.437 +
  36.438 +- The number of buttons reported for each joystick is hardcoded to be 36, which
  36.439 +is the current maximum number of buttons Android can report.
  36.440 +
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/docs/README-cmake.md	Thu Jul 31 03:14:10 2014 -0300
    37.3 @@ -0,0 +1,31 @@
    37.4 +CMake
    37.5 +================================================================================
    37.6 +(www.cmake.org)
    37.7 +
    37.8 +SDL's build system was traditionally based on autotools. Over time, this
    37.9 +approach has suffered from several issues across the different supported 
   37.10 +platforms.
   37.11 +To solve these problems, a new build system based on CMake is under development.
   37.12 +It works in parallel to the legacy system, so users can experiment with it
   37.13 +without complication.
   37.14 +While still experimental, the build system should be usable on the following
   37.15 +platforms:
   37.16 +    
   37.17 +    * FreeBSD
   37.18 +    * Linux
   37.19 +    * VS.NET 2010
   37.20 +    * MinGW and Msys
   37.21 +    * OS X with support for XCode
   37.22 +    
   37.23 +================================================================================
   37.24 +Usage
   37.25 +================================================================================
   37.26 +
   37.27 +Assuming the source for SDL is located at ~/sdl
   37.28 +
   37.29 +cd ~
   37.30 +mkdir build
   37.31 +cd build
   37.32 +cmake ../sdl
   37.33 +
   37.34 +This will build the static and dynamic versions of SDL in the ~/build directory.
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/docs/README-directfb.md	Thu Jul 31 03:14:10 2014 -0300
    38.3 @@ -0,0 +1,107 @@
    38.4 +DirectFB
    38.5 +========
    38.6 +
    38.7 +Supports:
    38.8 +
    38.9 +- Hardware YUV overlays
   38.10 +- OpenGL - software only
   38.11 +- 2D/3D accelerations (depends on directfb driver)
   38.12 +- multiple displays
   38.13 +- windows
   38.14 +
   38.15 +What you need:
   38.16 +
   38.17 +DirectFB 1.0.1, 1.2.x, 1.3.0
   38.18 +Kernel-Framebuffer support: required: vesafb, radeonfb .... 
   38.19 +Mesa 7.0.x	   - optional for OpenGL
   38.20 +
   38.21 +/etc/directfbrc
   38.22 +
   38.23 +This file should contain the following lines to make
   38.24 +your joystick work and avoid crashes:
   38.25 +------------------------
   38.26 +disable-module=joystick
   38.27 +disable-module=cle266
   38.28 +disable-module=cyber5k
   38.29 +no-linux-input-grab
   38.30 +------------------------
   38.31 +
   38.32 +To disable to use x11 backend when DISPLAY variable is found use
   38.33 +
   38.34 +export SDL_DIRECTFB_X11_CHECK=0
   38.35 +
   38.36 +To disable the use of linux input devices, i.e. multimice/multikeyboard support,
   38.37 +use
   38.38 +
   38.39 +export SDL_DIRECTFB_LINUX_INPUT=0
   38.40 +
   38.41 +To use hardware accelerated YUV-overlays for YUV-textures, use:
   38.42 +
   38.43 +export SDL_DIRECTFB_YUV_DIRECT=1
   38.44 +
   38.45 +This is disabled by default. It will only support one 
   38.46 +YUV texture, namely the first. Every other YUV texture will be
   38.47 +rendered in software.
   38.48 +
   38.49 +In addition, you may use (directfb-1.2.x)
   38.50 +
   38.51 +export SDL_DIRECTFB_YUV_UNDERLAY=1
   38.52 +
   38.53 +to make the YUV texture an underlay. This will make the cursor to
   38.54 +be shown.
   38.55 +
   38.56 +Simple Window Manager
   38.57 +=====================
   38.58 +
   38.59 +The driver has support for a very, very basic window manager you may
   38.60 +want to use when running with "wm=default". Use
   38.61 +
   38.62 +export SDL_DIRECTFB_WM=1
   38.63 +
   38.64 +to enable basic window borders. In order to have the window title rendered,
   38.65 +you need to have the following font installed:
   38.66 +
   38.67 +/usr/share/fonts/truetype/freefont/FreeSans.ttf
   38.68 +
   38.69 +OpenGL Support
   38.70 +==============
   38.71 +
   38.72 +The following instructions will give you *software* OpenGL. However this
   38.73 +works at least on all directfb supported platforms.
   38.74 +
   38.75 +As of this writing 20100802 you need to pull Mesa from git and do the following:
   38.76 +
   38.77 +------------------------
   38.78 +git clone git://anongit.freedesktop.org/git/mesa/mesa
   38.79 +cd mesa 
   38.80 +git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
   38.81 +------------------------
   38.82 +
   38.83 +Edit configs/linux-directfb so that the Directories-section looks like
   38.84 +------------------------
   38.85 +# Directories
   38.86 +SRC_DIRS     = mesa glu 
   38.87 +GLU_DIRS     = sgi
   38.88 +DRIVER_DIRS  = directfb
   38.89 +PROGRAM_DIRS = 
   38.90 +------------------------
   38.91 +
   38.92 +make linux-directfb
   38.93 +make
   38.94 +
   38.95 +echo Installing - please enter sudo pw.
   38.96 +
   38.97 +sudo make install INSTALL_DIR=/usr/local/dfb_GL
   38.98 +cd src/mesa/drivers/directfb
   38.99 +make
  38.100 +sudo make install INSTALL_DIR=/usr/local/dfb_GL
  38.101 +------------------------
  38.102 +
  38.103 +To run the SDL - testprograms:
  38.104 +
  38.105 +export SDL_VIDEODRIVER=directfb
  38.106 +export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
  38.107 +export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
  38.108 +
  38.109 +./testgl
  38.110 +
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/docs/README-dynapi.md	Thu Jul 31 03:14:10 2014 -0300
    39.3 @@ -0,0 +1,129 @@
    39.4 +Dynamic API
    39.5 +================================================================================
    39.6 +Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
    39.7 +
    39.8 +Background:
    39.9 +
   39.10 +- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, 
   39.11 +  but developers are shipping their own SDL2 with individual Steam games. 
   39.12 +  These games might stop getting updates, but a newer SDL2 might be needed later. 
   39.13 +  Certainly we'll always be fixing bugs in SDL, even if a new video target isn't 
   39.14 +  ever needed, and these fixes won't make it to a game shipping its own SDL.
   39.15 +- Even if we replace the SDL2 in those games with a compatible one, that is to 
   39.16 +  say, edit a developer's Steam depot (yuck!), there are developers that are 
   39.17 +  statically linking SDL2 that we can't do this for. We can't even force the 
   39.18 +  dynamic loader to ignore their SDL2 in this case, of course.
   39.19 +- If you don't ship an SDL2 with the game in some form, people that disabled the
   39.20 +  Steam Runtime, or just tried to run the game from the command line instead of 
   39.21 +  Steam might find themselves unable to run the game, due to a missing dependency.
   39.22 +- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
   39.23 +  generic Linux boxes that may or may not have SDL2 installed, you have to ship 
   39.24 +  the library or risk a total failure to launch. So now, you might have to have 
   39.25 +  a non-Steam build plus a Steam build (that is, one with and one without SDL2 
   39.26 +  included), which is inconvenient if you could have had one universal build 
   39.27 +  that works everywhere.
   39.28 +- We like the zlib license, but the biggest complaint from the open source 
   39.29 +  community about the license change is the static linking. The LGPL forced this 
   39.30 +  as a legal, not technical issue, but zlib doesn't care. Even those that aren't
   39.31 +  concerned about the GNU freedoms found themselves solving the same problems: 
   39.32 +  swapping in a newer SDL to an older game often times can save the day. 
   39.33 +  Static linking stops this dead.
   39.34 +
   39.35 +So here's what we did:
   39.36 +
   39.37 +SDL now has, internally, a table of function pointers. So, this is what SDL_Init
   39.38 +now looks like:
   39.39 +
   39.40 +    UInt32 SDL_Init(Uint32 flags)
   39.41 +    {
   39.42 +        return jump_table.SDL_Init(flags);
   39.43 +    }
   39.44 +
   39.45 +Except that is all done with a bunch of macro magic so we don't have to maintain
   39.46 +every one of these.
   39.47 +
   39.48 +What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
   39.49 +SDL_Init() that you've been calling all this time. But at startup, it looks more 
   39.50 +like this:
   39.51 +
   39.52 +    Uint32 SDL_Init_DEFAULT(Uint32 flags)
   39.53 +    {
   39.54 +        SDL_InitDynamicAPI();
   39.55 +        return jump_table.SDL_Init(flags);
   39.56 +    }
   39.57 +
   39.58 +SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function 
   39.59 +pointers, which means that this _DEFAULT function never gets called again. 
   39.60 +First call to any SDL function sets the whole thing up.
   39.61 +
   39.62 +So you might be asking, what was the value in that? Isn't this what the operating
   39.63 +system's dynamic loader was supposed to do for us? Yes, but now we've got this 
   39.64 +level of indirection, we can do things like this:
   39.65 +
   39.66 +    export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
   39.67 +    ./MyGameThatIsStaticallyLinkedToSDL2
   39.68 +
   39.69 +And now, this game that is staticallly linked to SDL, can still be overridden 
   39.70 +with a newer, or better, SDL. The statically linked one will only be used as 
   39.71 +far as calling into the jump table in this case. But in cases where no override
   39.72 +is desired, the statically linked version will provide its own jump table, 
   39.73 +and everyone is happy.
   39.74 +
   39.75 +So now:
   39.76 +- Developers can statically link SDL, and users can still replace it. 
   39.77 +  (We'd still rather you ship a shared library, though!)
   39.78 +- Developers can ship an SDL with their game, Valve can override it for, say, 
   39.79 +  new features on SteamOS, or distros can override it for their own needs, 
   39.80 +  but it'll also just work in the default case.
   39.81 +- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), 
   39.82 +  and it'll do the right thing.
   39.83 +- End users (and Valve) can update a game's SDL in almost any case, 
   39.84 +  to keep abandoned games running on newer platforms.
   39.85 +- Everyone develops with SDL exactly as they have been doing all along. 
   39.86 +  Same headers, same ABI. Just get the latest version to enable this magic.
   39.87 +
   39.88 +
   39.89 +A little more about SDL_InitDynamicAPI():
   39.90 +
   39.91 +Internally, InitAPI does some locking to make sure everything waits until a 
   39.92 +single thread initializes everything (although even SDL_CreateThread() goes 
   39.93 +through here before spinning a thread, too), and then decides if it should use
   39.94 +an external SDL library. If not, it sets up the jump table using the current 
   39.95 +SDL's function pointers (which might be statically linked into a program, or in
   39.96 +a shared library of its own). If so, it loads that library and looks for and 
   39.97 +calls a single function:
   39.98 +
   39.99 +    SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
  39.100 +
  39.101 +That function takes a version number (more on that in a moment), the address of
  39.102 +the jump table, and the size, in bytes, of the table. 
  39.103 +Now, we've got policy here: this table's layout never changes; new stuff gets 
  39.104 +added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all 
  39.105 +the needed functions if tablesize <= sizeof its own jump table. If tablesize is
  39.106 +bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
  39.107 +if it's smaller, we know we can provide the entire API that the caller needs.
  39.108 +
  39.109 +The version variable is a failsafe switch. 
  39.110 +Right now it's always 1. This number changes when there are major API changes 
  39.111 +(so we know if the tablesize might be smaller, or entries in it have changed). 
  39.112 +Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not 
  39.113 +inconceivable to have a small dispatch library that only supplies this one 
  39.114 +function and loads different, otherwise-incompatible SDL libraries and has the
  39.115 +right one initialize the jump table based on the version. For something that 
  39.116 +must generically catch lots of different versions of SDL over time, like the 
  39.117 +Steam Client, this isn't a bad option.
  39.118 +
  39.119 +Finally, I'm sure some people are reading this and thinking,
  39.120 +"I don't want that overhead in my project!"  
  39.121 +To which I would point out that the extra function call through the jump table 
  39.122 +probably wouldn't even show up in a profile, but lucky you: this can all be 
  39.123 +disabled. You can build SDL without this if you absolutely must, but we would 
  39.124 +encourage you not to do that. However, on heavily locked down platforms like 
  39.125 +iOS, or maybe when debugging,  it makes sense to disable it. The way this is 
  39.126 +designed in SDL, you just have to change one #define, and the entire system 
  39.127 +vaporizes out, and SDL functions exactly like it always did. Most of it is 
  39.128 +macro magic, so the system is contained to one C file and a few headers. 
  39.129 +However, this is on by default and you have to edit a header file to turn it 
  39.130 +off. Our hopes is that if we make it easy to disable, but not too easy, 
  39.131 +everyone will ultimately be able to get what they want, but we've gently 
  39.132 +nudged everyone towards what we think is the best solution.
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/docs/README-gesture.md	Thu Jul 31 03:14:10 2014 -0300
    40.3 @@ -0,0 +1,71 @@
    40.4 +Dollar Gestures
    40.5 +===========================================================================
    40.6 +SDL Provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
    40.7 +
    40.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. 
    40.9 +
   40.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.
   40.11 +
   40.12 +Recording:
   40.13 +----------
   40.14 +To begin recording on a touch device call:
   40.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.
   40.16 +
   40.17 +Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
   40.18 +A SDL_DOLLARRECORD event is a dgesture with the following fields:
   40.19 +
   40.20 +event.dgesture.touchId   - the Id of the touch used to record the gesture.
   40.21 +event.dgesture.gestureId - the unique id of the recorded gesture.
   40.22 +
   40.23 +
   40.24 +Performing:
   40.25 +-----------
   40.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:
   40.27 +
   40.28 +event.dgesture.touchId    - the Id of the touch which performed the gesture.
   40.29 +event.dgesture.gestureId  - the unique id of the closest gesture to the performed stroke.
   40.30 +event.dgesture.error      - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
   40.31 +event.dgesture.numFingers - the number of fingers used to draw the stroke.
   40.32 +
   40.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).
   40.34 +
   40.35 +
   40.36 +
   40.37 +Saving:
   40.38 +-------
   40.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.
   40.40 +
   40.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.
   40.42 +
   40.43 +Both functions return the number of gestures successfully saved.
   40.44 +
   40.45 +
   40.46 +Loading:
   40.47 +--------
   40.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. 
   40.49 +
   40.50 +SDL_LoadDollarTemplates returns the number of templates successfully loaded.
   40.51 +
   40.52 +
   40.53 +
   40.54 +===========================================================================
   40.55 +Multi Gestures
   40.56 +===========================================================================
   40.57 +SDL provides simple support for pinch/rotate/swipe gestures. 
   40.58 +Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
   40.59 +
   40.60 +event.mgesture.touchId - the Id of the touch on which the gesture was performed.
   40.61 +event.mgesture.x       - the normalized x coordinate of the gesture. (0..1)
   40.62 +event.mgesture.y       - the normalized y coordinate of the gesture. (0..1)
   40.63 +event.mgesture.dTheta  - the amount that the fingers rotated during this motion.
   40.64 +event.mgesture.dDist   - the amount that the fingers pinched during this motion.
   40.65 +event.mgesture.numFingers - the number of fingers used in the gesture.
   40.66 +
   40.67 +
   40.68 +===========================================================================
   40.69 +Notes
   40.70 +===========================================================================
   40.71 +For a complete example see test/testgesture.c
   40.72 +
   40.73 +Please direct questions/comments to:
   40.74 +   jim.tla+sdl_touch@gmail.com
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/docs/README-hg.md	Thu Jul 31 03:14:10 2014 -0300
    41.3 @@ -0,0 +1,26 @@
    41.4 +Mercurial
    41.5 +=========
    41.6 +
    41.7 +The latest development version of SDL is available via Mercurial.
    41.8 +Mercurial allows you to get up-to-the-minute fixes and enhancements;
    41.9 +as a developer works on a source tree, you can use "hg" to mirror that
   41.10 +source tree instead of waiting for an official release. Please look
   41.11 +at the Mercurial website ( http://mercurial.selenic.com/ ) for more
   41.12 +information on using hg, where you can also download software for
   41.13 +Mac OS X, Windows, and Unix systems.
   41.14 +
   41.15 +  hg clone http://hg.libsdl.org/SDL
   41.16 +
   41.17 +If you are building SDL with an IDE, you will need to copy the file
   41.18 +include/SDL_config.h.default to include/SDL_config.h before building.
   41.19 +
   41.20 +If you are building SDL via configure, you will need to run autogen.sh
   41.21 +before running configure.
   41.22 +
   41.23 +There is a web interface to the subversion repository at:
   41.24 +
   41.25 +	http://hg.libsdl.org/SDL/
   41.26 +
   41.27 +There is an RSS feed available at that URL, for those that want to
   41.28 +track commits in real time.
   41.29 +
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/docs/README-ios.md	Thu Jul 31 03:14:10 2014 -0300
    42.3 @@ -0,0 +1,225 @@
    42.4 +iOS
    42.5 +======
    42.6 +
    42.7 +==============================================================================
    42.8 +Building the Simple DirectMedia Layer for iPhone OS 5.1
    42.9 +==============================================================================
   42.10 +
   42.11 +Requirements: Mac OS X v10.5 or later and the iPhone SDK.
   42.12 +
   42.13 +Instructions:
   42.14 +1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
   42.15 +2.  Select your desired target, and hit build.
   42.16 +
   42.17 +There are three build targets:
   42.18 +- libSDL.a:
   42.19 +	Build SDL as a statically linked library
   42.20 +- testsdl
   42.21 +	Build a test program (there are known test failures which are fine)
   42.22 +- Template:
   42.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.
   42.24 +
   42.25 +==============================================================================
   42.26 +Build SDL for iOS from the command line
   42.27 +==============================================================================
   42.28 +
   42.29 +1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
   42.30 +2. ./iosbuild.sh
   42.31 +
   42.32 +If everything goes fine, you should see a build/ios directory, inside there's
   42.33 +two directories "lib" and "include". 
   42.34 +"include" contains a copy of the SDL headers that you'll need for your project,
   42.35 +make sure to configure XCode to look for headers there.
   42.36 +"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
   42.37 +to your XCode project. These libraries contain three architectures in them,
   42.38 +armv6 for legacy devices, armv7, and i386 (for the simulator).
   42.39 +By default, iosbuild.sh will autodetect the SDK version you have installed using 
   42.40 +xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
   42.41 +by setting the MIN_OS_VERSION variable, ie:
   42.42 +
   42.43 +MIN_OS_VERSION=4.2 ./iosbuild.sh
   42.44 +
   42.45 +==============================================================================
   42.46 +Using the Simple DirectMedia Layer for iOS
   42.47 +==============================================================================
   42.48 +
   42.49 +FIXME: This needs to be updated for the latest methods
   42.50 +
   42.51 +Here is the easiest method:
   42.52 +1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
   42.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.
   42.54 +2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
   42.55 +
   42.56 +Here is a more manual method:
   42.57 +1.  Create a new iPhone view based application.
   42.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.
   42.59 +3.  Include the SDL header files in your project.
   42.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.
   42.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.
   42.62 +
   42.63 +==============================================================================
   42.64 +Notes -- Application events
   42.65 +==============================================================================
   42.66 +
   42.67 +On iOS the application goes through a fixed life cycle and you will get
   42.68 +notifications of state changes via application events. When these events
   42.69 +are delivered you must handle them in an event callback because the OS may
   42.70 +not give you any processing time after the events are delivered.
   42.71 +
   42.72 +e.g.
   42.73 +
   42.74 +int HandleAppEvents(void *userdata, SDL_Event *event)
   42.75 +{
   42.76 +    switch (event->type)
   42.77 +    {
   42.78 +    case SDL_APP_TERMINATING:
   42.79 +        /* Terminate the app.
   42.80 +           Shut everything down before returning from this function.
   42.81 +        */
   42.82 +        return 0;
   42.83 +    case SDL_APP_LOWMEMORY:
   42.84 +        /* You will get this when your app is paused and iOS wants more memory.
   42.85 +           Release as much memory as possible.
   42.86 +        */
   42.87 +        return 0;
   42.88 +    case SDL_APP_WILLENTERBACKGROUND:
   42.89 +        /* Prepare your app to go into the background.  Stop loops, etc.
   42.90 +           This gets called when the user hits the home button, or gets a call.
   42.91 +        */
   42.92 +        return 0;
   42.93 +    case SDL_APP_DIDENTERBACKGROUND:
   42.94 +        /* This will get called if the user accepted whatever sent your app to the background.
   42.95 +           If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
   42.96 +           When you get this, you have 5 seconds to save all your state or the app will be terminated.
   42.97 +           Your app is NOT active at this point.
   42.98 +        */
   42.99 +        return 0;
  42.100 +    case SDL_APP_WILLENTERFOREGROUND:
  42.101 +        /* This call happens when your app is coming back to the foreground.
  42.102 +           Restore all your state here.
  42.103 +        */
  42.104 +        return 0;
  42.105 +    case SDL_APP_DIDENTERFOREGROUND:
  42.106 +        /* Restart your loops here.
  42.107 +           Your app is interactive and getting CPU again.
  42.108 +        */
  42.109 +        return 0;
  42.110 +    default:
  42.111 +        /* No special processing, add it to the event queue */
  42.112 +        return 1;
  42.113 +    }
  42.114 +}
  42.115 +
  42.116 +int main(int argc, char *argv[])
  42.117 +{
  42.118 +    SDL_SetEventFilter(HandleAppEvents, NULL);
  42.119 +
  42.120 +    ... run your main loop
  42.121 +
  42.122 +    return 0;
  42.123 +}
  42.124 +
  42.125 +    
  42.126 +==============================================================================
  42.127 +Notes -- Accelerometer as Joystick
  42.128 +==============================================================================
  42.129 +
  42.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.
  42.131 +
  42.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.
  42.133 +
  42.134 +==============================================================================
  42.135 +Notes -- OpenGL ES
  42.136 +==============================================================================
  42.137 +
  42.138 +Your SDL application for iPhone uses OpenGL ES for video by default.
  42.139 +
  42.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.
  42.141 +
  42.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.
  42.143 +
  42.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.
  42.145 +
  42.146 +==============================================================================
  42.147 +Notes -- Keyboard
  42.148 +==============================================================================
  42.149 +
  42.150 +The SDL keyboard API has been extended to support on-screen keyboards:
  42.151 +
  42.152 +void SDL_StartTextInput()
  42.153 +	-- enables text events and reveals the onscreen keyboard.
  42.154 +void SDL_StopTextInput()
  42.155 +	-- disables text events and hides the onscreen keyboard.
  42.156 +SDL_bool SDL_IsTextInputActive()
  42.157 +	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
  42.158 +
  42.159 +==============================================================================
  42.160 +Notes -- Reading and Writing files
  42.161 +==============================================================================
  42.162 +
  42.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.
  42.164 +
  42.165 +Once your application is installed its directory tree looks like:
  42.166 +
  42.167 +MySDLApp Home/
  42.168 +	MySDLApp.app
  42.169 +	Documents/
  42.170 +	Library/
  42.171 +		Preferences/
  42.172 +	tmp/
  42.173 +
  42.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".  
  42.175 +
  42.176 +More information on this subject is available here:
  42.177 +http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
  42.178 +
  42.179 +==============================================================================
  42.180 +Notes -- iPhone SDL limitations
  42.181 +==============================================================================
  42.182 +
  42.183 +Windows:
  42.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).
  42.185 +
  42.186 +Textures:
  42.187 +	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
  42.188 +
  42.189 +Loading Shared Objects:
  42.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.
  42.191 +
  42.192 +==============================================================================
  42.193 +Game Center 
  42.194 +==============================================================================
  42.195 +
  42.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:
  42.197 +    
  42.198 +int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
  42.199 +
  42.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.
  42.201 +
  42.202 +e.g.
  42.203 +
  42.204 +extern "C"
  42.205 +void ShowFrame(void*)
  42.206 +{
  42.207 +    ... do event handling, frame logic and rendering
  42.208 +}
  42.209 +
  42.210 +int main(int argc, char *argv[])
  42.211 +{
  42.212 +   ... initialize game ...
  42.213 +
  42.214 +#if __IPHONEOS__
  42.215 +        // Initialize the Game Center for scoring and matchmaking
  42.216 +        InitGameCenter();
  42.217 +
  42.218 +        // Set up the game to run in the window animation callback on iOS
  42.219 +        // so that Game Center and so forth works correctly.
  42.220 +        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
  42.221 +#else
  42.222 +        while ( running ) {
  42.223 +                ShowFrame(0);
  42.224 +                DelayFrame();
  42.225 +        }
  42.226 +#endif
  42.227 +        return 0;
  42.228 +}
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/docs/README-linux.md	Thu Jul 31 03:14:10 2014 -0300
    43.3 @@ -0,0 +1,82 @@
    43.4 +Linux
    43.5 +================================================================================
    43.6 +
    43.7 +By default SDL will only link against glibc, the rest of the features will be
    43.8 +enabled dynamically at runtime depending on the available features on the target
    43.9 +system. So, for example if you built SDL with Xinerama support and the target
   43.10 +system does not have the Xinerama libraries installed, it will be disabled
   43.11 +at runtime, and you won't get a missing library error, at least with the 
   43.12 +default configuration parameters.
   43.13 +
   43.14 +
   43.15 +================================================================================
   43.16 +Build Dependencies
   43.17 +================================================================================
   43.18 +    
   43.19 +Ubuntu 13.04, all available features enabled:
   43.20 +
   43.21 +sudo apt-get install build-essential mercurial make cmake autoconf automake \
   43.22 +libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \
   43.23 +libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \
   43.24 +libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \
   43.25 +libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
   43.26 +
   43.27 +Ubuntu 14.04 can also add "libwayland-dev libmirclient-dev libxkbcommon-dev"
   43.28 +to that command line for Wayland and Mir support.
   43.29 +
   43.30 +NOTES:
   43.31 +- This includes all the audio targets except arts, because Ubuntu pulled the 
   43.32 +  artsc0-dev package, but in theory SDL still supports it.
   43.33 +- DirectFB isn't included because the configure script (currently) fails to find
   43.34 +  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
   43.35 +  configure script to include DirectFB support. Send patches.  :)
   43.36 +
   43.37 +
   43.38 +================================================================================
   43.39 +Joystick does not work
   43.40 +================================================================================
   43.41 +
   43.42 +If you compiled or are using a version of SDL with udev support (and you should!)
   43.43 +there's a few issues that may cause SDL to fail to detect your joystick. To
   43.44 +debug this, start by installing the evtest utility. On Ubuntu/Debian:
   43.45 +
   43.46 +    sudo apt-get install evtest
   43.47 +    
   43.48 +Then run:
   43.49 +    
   43.50 +    sudo evtest
   43.51 +    
   43.52 +You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
   43.53 +Now run:
   43.54 +    
   43.55 +    cat /dev/input/event/XX
   43.56 +
   43.57 +If you get a permission error, you need to set a udev rule to change the mode of
   43.58 +your device (see below)    
   43.59 +    
   43.60 +Also, try:
   43.61 +    
   43.62 +    sudo udevadm info --query=all --name=input/eventXX
   43.63 +    
   43.64 +If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
   43.65 +you need to set up an udev rule to force this variable.
   43.66 +
   43.67 +A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks 
   43.68 +like:
   43.69 +    
   43.70 +   SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   43.71 +   SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   43.72 +   
   43.73 +You can set up similar rules for your device by changing the values listed in
   43.74 +idProduct and idVendor. To obtain these values, try:
   43.75 +    
   43.76 +    sudo udevadm info -a --name=input/eventXX | grep idVendor
   43.77 +    sudo udevadm info -a --name=input/eventXX | grep idProduct
   43.78 +    
   43.79 +If multiple values come up for each of these, the one you want is the first one of each.    
   43.80 +
   43.81 +On other systems which ship with an older udev (such as CentOS), you may need
   43.82 +to set up a rule such as:
   43.83 +    
   43.84 +    SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
   43.85 +
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/docs/README-macosx.md	Thu Jul 31 03:14:10 2014 -0300
    44.3 @@ -0,0 +1,225 @@
    44.4 +Mac OS X
    44.5 +==============================================================================
    44.6 +
    44.7 +These instructions are for people using Apple's Mac OS X (pronounced
    44.8 +"ten").
    44.9 +
   44.10 +From the developer's point of view, OS X is a sort of hybrid Mac and
   44.11 +Unix system, and you have the option of using either traditional
   44.12 +command line tools or Apple's IDE Xcode.
   44.13 +
   44.14 +To build SDL using the command line, use the standard configure and make
   44.15 +process:
   44.16 +
   44.17 +	./configure
   44.18 +	make
   44.19 +	sudo make install
   44.20 +
   44.21 +You can also build SDL as a Universal library (a single binary for both
   44.22 +32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using
   44.23 +the fatbuild.sh script in build-scripts:
   44.24 +	sh build-scripts/fatbuild.sh
   44.25 +	sudo build-scripts/fatbuild.sh install
   44.26 +This script builds SDL with 10.5 ABI compatibility on i386 and 10.6
   44.27 +ABI compatibility on x86_64 architectures.  For best compatibility you
   44.28 +should compile your application the same way.  A script which wraps
   44.29 +gcc to make this easy is provided in test/gcc-fat.sh
   44.30 +
   44.31 +Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK
   44.32 +(even if you target back to 10.5 systems). PowerPC support for Mac OS X has
   44.33 +been officially dropped as of SDL 2.0.2.
   44.34 +
   44.35 +To use the library once it's built, you essential have two possibilities:
   44.36 +use the traditional autoconf/automake/make method, or use Xcode.
   44.37 +
   44.38 +==============================================================================
   44.39 +Caveats for using SDL with Mac OS X
   44.40 +==============================================================================
   44.41 +
   44.42 +Some things you have to be aware of when using SDL on Mac OS X:
   44.43 +
   44.44 +- If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
   44.45 +  SDL will not register its own. This means that SDL will not terminate using
   44.46 +  SDL_Quit if it receives a termination request, it will terminate like a 
   44.47 +  normal app, and it will not send a SDL_DROPFILE when you request to open a
   44.48 +  file with the app. To solve these issues, put the following code in your 
   44.49 +  NSApplicationDelegate implementation:
   44.50 +
   44.51 +  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
   44.52 +  {
   44.53 +      if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
   44.54 +          SDL_Event event;
   44.55 +          event.type = SDL_QUIT;
   44.56 +          SDL_PushEvent(&event);
   44.57 +      }
   44.58 +
   44.59 +      return NSTerminateCancel;
   44.60 +  }
   44.61 +
   44.62 +  - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   44.63 +  {
   44.64 +      if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
   44.65 +          SDL_Event event;
   44.66 +          event.type = SDL_DROPFILE;
   44.67 +          event.drop.file = SDL_strdup([filename UTF8String]);
   44.68 +          return (SDL_PushEvent(&event) > 0);
   44.69 +      }
   44.70 +
   44.71 +      return NO;
   44.72 +  }
   44.73 +
   44.74 +==============================================================================
   44.75 +Using the Simple DirectMedia Layer with a traditional Makefile
   44.76 +==============================================================================
   44.77 +
   44.78 +An existing autoconf/automake build system for your SDL app has good chances
   44.79 +to work almost unchanged on OS X. However, to produce a "real" Mac OS X binary
   44.80 +that you can distribute to users, you need to put the generated binary into a
   44.81 +so called "bundle", which basically is a fancy folder with a name like
   44.82 +"MyCoolGame.app".
   44.83 +
   44.84 +To get this build automatically, add something like the following rule to
   44.85 +your Makefile.am:
   44.86 +
   44.87 +bundle_contents = APP_NAME.app/Contents
   44.88 +APP_NAME_bundle: EXE_NAME
   44.89 +	mkdir -p $(bundle_contents)/MacOS
   44.90 +	mkdir -p $(bundle_contents)/Resources
   44.91 +	echo "APPL????" > $(bundle_contents)/PkgInfo
   44.92 +	$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
   44.93 +
   44.94 +You should replace EXE_NAME with the name of the executable. APP_NAME is what
   44.95 +will be visible to the user in the Finder. Usually it will be the same
   44.96 +as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME 
   44.97 +usually is "TestGame". You might also want to use @PACKAGE@ to use the package
   44.98 +name as specified in your configure.in file.
   44.99 +
  44.100 +If your project builds more than one application, you will have to do a bit
  44.101 +more. For each of your target applications, you need a separate rule.
  44.102 +
  44.103 +If you want the created bundles to be installed, you may want to add this
  44.104 +rule to your Makefile.am:
  44.105 +
  44.106 +install-exec-hook: APP_NAME_bundle
  44.107 +	rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
  44.108 +	mkdir -p $(DESTDIR)$(prefix)/Applications/
  44.109 +	cp -r $< /$(DESTDIR)$(prefix)Applications/
  44.110 +
  44.111 +This rule takes the Bundle created by the rule from step 3 and installs them
  44.112 +into $(DESTDIR)$(prefix)/Applications/.
  44.113 +
  44.114 +Again, if you want to install multiple applications, you will have to augment
  44.115 +the make rule accordingly.
  44.116 +
  44.117 +
  44.118 +But beware! That is only part of the story! With the above, you end up with
  44.119 +a bare bone .app bundle, which is double clickable from the Finder. But
  44.120 +there are some more things you should do before shipping your product...
  44.121 +
  44.122 +1) The bundle right now probably is dynamically linked against SDL. That 
  44.123 +   means that when you copy it to another computer, *it will not run*,
  44.124 +   unless you also install SDL on that other computer. A good solution
  44.125 +   for this dilemma is to static link against SDL. On OS X, you can
  44.126 +   achieve that by linking against the libraries listed by
  44.127 +     sdl-config --static-libs
  44.128 +   instead of those listed by
  44.129 +     sdl-config --libs
  44.130 +   Depending on how exactly SDL is integrated into your build systems, the
  44.131 +   way to achieve that varies, so I won't describe it here in detail
  44.132 +2) Add an 'Info.plist' to your application. That is a special XML file which
  44.133 +   contains some meta-information about your application (like some copyright
  44.134 +   information, the version of your app, the name of an optional icon file,
  44.135 +   and other things). Part of that information is displayed by the Finder
  44.136 +   when you click on the .app, or if you look at the "Get Info" window.
  44.137 +   More information about Info.plist files can be found on Apple's homepage.
  44.138 +
  44.139 +
  44.140 +As a final remark, let me add that I use some of the techniques (and some
  44.141 +variations of them) in Exult and ScummVM; both are available in source on
  44.142 +the net, so feel free to take a peek at them for inspiration!
  44.143 +
  44.144 +
  44.145 +==============================================================================
  44.146 +Using the Simple DirectMedia Layer with Xcode
  44.147 +==============================================================================
  44.148 +
  44.149 +These instructions are for using Apple's Xcode IDE to build SDL applications.
  44.150 +
  44.151 +- First steps
  44.152 +
  44.153 +The first thing to do is to unpack the Xcode.tar.gz archive in the
  44.154 +top level SDL directory (where the Xcode.tar.gz archive resides).
  44.155 +Because Stuffit Expander will unpack the archive into a subdirectory,
  44.156 +you should unpack the archive manually from the command line:
  44.157 +	cd [path_to_SDL_source]
  44.158 +	tar zxf Xcode.tar.gz
  44.159 +This will create a new folder called Xcode, which you can browse
  44.160 +normally from the Finder.
  44.161 +
  44.162 +- Building the Framework
  44.163 +
  44.164 +The SDL Library is packaged as a framework bundle, an organized
  44.165 +relocatable folder hierarchy of executable code, interface headers,
  44.166 +and additional resources. For practical purposes, you can think of a 
  44.167 +framework as a more user and system-friendly shared library, whose library
  44.168 +file behaves more or less like a standard UNIX shared library.
  44.169 +
  44.170 +To build the framework, simply open the framework project and build it. 
  44.171 +By default, the framework bundle "SDL.framework" is installed in 
  44.172 +/Library/Frameworks. Therefore, the testers and project stationary expect
  44.173 +it to be located there. However, it will function the same in any of the
  44.174 +following locations:
  44.175 +
  44.176 +    ~/Library/Frameworks
  44.177 +    /Local/Library/Frameworks
  44.178 +    /System/Library/Frameworks
  44.179 +
  44.180 +- Build Options
  44.181 +    There are two "Build Styles" (See the "Targets" tab) for SDL.
  44.182 +    "Deployment" should be used if you aren't tweaking the SDL library.
  44.183 +    "Development" should be used to debug SDL apps or the library itself.
  44.184 +
  44.185 +- Building the Testers
  44.186 +    Open the SDLTest project and build away!
  44.187 +
  44.188 +- Using the Project Stationary
  44.189 +    Copy the stationary to the indicated folders to access it from
  44.190 +    the "New Project" and "Add target" menus. What could be easier?
  44.191 +
  44.192 +- Setting up a new project by hand
  44.193 +    Some of you won't want to use the Stationary so I'll give some tips:
  44.194 +    * Create a new "Cocoa Application"
  44.195 +    * Add src/main/macosx/SDLMain.m , .h and .nib to your project
  44.196 +    * Remove "main.c" from your project
  44.197 +    * Remove "MainMenu.nib" from your project
  44.198 +    * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
  44.199 +    * Add "$(HOME)/Library/Frameworks" to the frameworks search path
  44.200 +    * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
  44.201 +    * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib"
  44.202 +    * Add your files
  44.203 +    * Clean and build
  44.204 +
  44.205 +- Building from command line
  44.206 +    Use pbxbuild in the same directory as your .pbproj file
  44.207 +
  44.208 +- Running your app
  44.209 +    You can send command line args to your app by either invoking it from
  44.210 +    the command line (in *.app/Contents/MacOS) or by entering them in the
  44.211 +    "Executables" panel of the target settings.
  44.212 +    
  44.213 +- Implementation Notes
  44.214 +    Some things that may be of interest about how it all works...
  44.215 +    * Working directory
  44.216 +        As defined in the SDL_main.m file, the working directory of your SDL app
  44.217 +        is by default set to its parent. You may wish to change this to better
  44.218 +        suit your needs.
  44.219 +    * You have a Cocoa App!
  44.220 +        Your SDL app is essentially a Cocoa application. When your app
  44.221 +        starts up and the libraries finish loading, a Cocoa procedure is called,
  44.222 +        which sets up the working directory and calls your main() method.
  44.223 +        You are free to modify your Cocoa app with generally no consequence 
  44.224 +        to SDL. You cannot, however, easily change the SDL window itself.
  44.225 +        Functionality may be added in the future to help this.
  44.226 +
  44.227 +
  44.228 +Known bugs are listed in the file "BUGS"
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/docs/README-nacl.md	Thu Jul 31 03:14:10 2014 -0300
    45.3 @@ -0,0 +1,103 @@
    45.4 +Native Client
    45.5 +================================================================================
    45.6 +
    45.7 +Requirements: 
    45.8 +    
    45.9 +    * Native Client SDK (https://developer.chrome.com/native-client), 
   45.10 +      (tested with Pepper version 33 or higher).
   45.11 +
   45.12 +The SDL backend for Chrome's Native Client has been tested only with the PNaCl
   45.13 +toolchain, which generates binaries designed to run on ARM and x86_32/64 
   45.14 +platforms. This does not mean it won't work with the other toolchains!
   45.15 +
   45.16 +================================================================================
   45.17 +Building SDL for NaCl
   45.18 +================================================================================
   45.19 +
   45.20 +Set up the right environment variables (see naclbuild.sh), then configure SDL with:
   45.21 +
   45.22 +    configure --host=pnacl --prefix some/install/destination
   45.23 +    
   45.24 +Then "make". 
   45.25 +
   45.26 +As an example of how to create a deployable app a Makefile project is provided 
   45.27 +in test/nacl/Makefile, which includes some monkey patching of the common.mk file 
   45.28 +provided by NaCl, without which linking properly to SDL won't work (the search 
   45.29 +path can't be modified externally, so the linker won't find SDL's binaries unless 
   45.30 +you dump them into the SDK path, which is inconvenient).
   45.31 +Also provided in test/nacl is the required support file, such as index.html, 
   45.32 +manifest.json, etc.
   45.33 +SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
   45.34 +This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
   45.35 +hiding the asynchronous nature of the browser behind the scenes...which is not the
   45.36 +same as making it disappear!
   45.37 +
   45.38 +
   45.39 +================================================================================
   45.40 +Running tests
   45.41 +================================================================================
   45.42 +
   45.43 +Due to the nature of NaCl programs, building and running SDL tests is not as
   45.44 +straightforward as one would hope. The script naclbuild.sh in build-scripts 
   45.45 +automates the process and should serve as a guide for users of SDL trying to build 
   45.46 +their own applications.
   45.47 +
   45.48 +Basic usage:
   45.49 +    
   45.50 +    ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
   45.51 +    
   45.52 +This will build testgles2.c by default.
   45.53 +
   45.54 +If you want to build a different test, for example testrendercopyex.c:
   45.55 +    
   45.56 +    SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
   45.57 +    
   45.58 +Once the build finishes, you have to serve the contents with a web server (the
   45.59 +script will give you instructions on how to do that with Python).
   45.60 +
   45.61 +================================================================================
   45.62 +RWops and nacl_io
   45.63 +================================================================================
   45.64 +
   45.65 +SDL_RWops work transparently with nacl_io. Two functions control the mount points:
   45.66 +    
   45.67 +    int mount(const char* source, const char* target, 
   45.68 +                      const char* filesystemtype, 
   45.69 +                      unsigned long mountflags, const void *data);
   45.70 +    int umount(const char *target);
   45.71 +    
   45.72 +    For convenience, SDL will by default mount an httpfs tree at / before calling 
   45.73 +the app's main function. Such setting can be overridden by calling:
   45.74 +    
   45.75 +    umount("/");
   45.76 +
   45.77 +And then mounting a different filesystem at /
   45.78 +
   45.79 +It's important to consider that the asynchronous nature of file operations on a
   45.80 +browser is hidden from the application, effectively providing the developer with
   45.81 +a set of blocking file operations just like you get in a regular desktop 
   45.82 +environment, which eases the job of porting to Native Client, but also introduces 
   45.83 +a set of challenges of its own, in particular when big file sizes and slow 
   45.84 +connections are involved.
   45.85 +
   45.86 +For more information on how nacl_io and mount points work, see:
   45.87 +    
   45.88 +    https://developer.chrome.com/native-client/devguide/coding/nacl_io
   45.89 +    https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
   45.90 +
   45.91 +To be able to save into the directory "/save/" (like backup of game) :
   45.92 +
   45.93 +    mount("", "/save", "html5fs", 0, "type=PERSISTENT");
   45.94 +
   45.95 +And add to manifest.json :
   45.96 +
   45.97 +  "permissions": [
   45.98 +     "unlimitedStorage"
   45.99 +  ]
  45.100 +
  45.101 +================================================================================
  45.102 +TODO - Known Issues
  45.103 +================================================================================
  45.104 +* Testing of all systems with a real application (something other than SDL's tests)
  45.105 +* Key events don't seem to work properly
  45.106 +
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/docs/README-pandora.md	Thu Jul 31 03:14:10 2014 -0300
    46.3 @@ -0,0 +1,17 @@
    46.4 +Pandora 
    46.5 +=====================================================================
    46.6 +
    46.7 +( http://openpandora.org/ )
    46.8 +- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
    46.9 +support to work on the pandora under the framebuffer. This driver do not have
   46.10 +input support for now, so if you use it you will have to add your own control code.
   46.11 +The video driver name is "pandora" so if you have problem running it from
   46.12 +the framebuffer, try to set the following variable before starting your application :
   46.13 +"export SDL_VIDEODRIVER=pandora"
   46.14 +
   46.15 +- OpenGL ES support was added to the x11 driver, so it's working like the normal
   46.16 +x11 driver one with OpenGLX support, with SDL input event's etc..
   46.17 +
   46.18 +
   46.19 +David Carré (Cpasjuste)
   46.20 +cpasjuste@gmail.com
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/docs/README-platforms.md	Thu Jul 31 03:14:10 2014 -0300
    47.3 @@ -0,0 +1,34 @@
    47.4 +Platforms
    47.5 +=========
    47.6 +
    47.7 +
    47.8 +This is a list of the platforms SDL supports, and who maintains them.
    47.9 +
   47.10 +Officially supported platforms
   47.11 +==============================
   47.12 +(code compiles, and thoroughly tested for release)
   47.13 +==============================
   47.14 +Windows XP/Vista/7/8
   47.15 +Mac OS X 10.5+
   47.16 +Linux 2.6+
   47.17 +iOS 5.1.1+
   47.18 +Android 2.3.3+
   47.19 +
   47.20 +Unofficially supported platforms
   47.21 +================================
   47.22 +(code compiles, but not thoroughly tested)
   47.23 +================================
   47.24 +FreeBSD
   47.25 +NetBSD
   47.26 +OpenBSD
   47.27 +Solaris
   47.28 +
   47.29 +Platforms supported by volunteers
   47.30 +=================================
   47.31 +Haiku - maintained by Axel Dörfler <axeld@pinc-software.de>
   47.32 +PSP - maintained by 527721088@qq.com
   47.33 +Pandora - maintained by Scott Smith <pickle136@sbcglobal.net>
   47.34 +NaCl - maintained by Gabriel Jacobo <gabomdq@gmail.com>
   47.35 +
   47.36 +Platforms that need maintainers
   47.37 +===============================
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/docs/README-porting.md	Thu Jul 31 03:14:10 2014 -0300
    48.3 @@ -0,0 +1,63 @@
    48.4 +Porting
    48.5 +=======
    48.6 +
    48.7 +* Porting To A New Platform
    48.8 +
    48.9 +  The first thing you have to do when porting to a new platform, is look at
   48.10 +include/SDL_platform.h and create an entry there for your operating system.
   48.11 +The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
   48.12 +Ideally SDL_platform.h will be able to auto-detect the system it's building
   48.13 +on based on C preprocessor symbols.
   48.14 +
   48.15 +There are two basic ways of building SDL at the moment:
   48.16 +
   48.17 +1. The "UNIX" way:  ./configure; make; make install
   48.18 +
   48.19 +   If you have a GNUish system, then you might try this.  Edit configure.in,
   48.20 +   take a look at the large section labelled:
   48.21 +	"Set up the configuration based on the target platform!"
   48.22 +   Add a section for your platform, and then re-run autogen.sh and build!
   48.23 +
   48.24 +2. Using an IDE:
   48.25 +
   48.26 +   If you're using an IDE or other non-configure build system, you'll probably
   48.27 +   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
   48.28 +   add a section for your platform, and create a custom SDL_config_{platform}.h,
   48.29 +   based on SDL_config.h.minimal and SDL_config.h.in
   48.30 +
   48.31 +   Add the top level include directory to the header search path, and then add
   48.32 +   the following sources to the project:
   48.33 +	src/*.c
   48.34 +	src/atomic/*.c
   48.35 +	src/audio/*.c
   48.36 +	src/cpuinfo/*.c
   48.37 +	src/events/*.c
   48.38 +	src/file/*.c
   48.39 +	src/haptic/*.c
   48.40 +	src/joystick/*.c
   48.41 +	src/power/*.c
   48.42 +	src/render/*.c
   48.43 +	src/stdlib/*.c
   48.44 +	src/thread/*.c
   48.45 +	src/timer/*.c
   48.46 +	src/video/*.c
   48.47 +	src/audio/disk/*.c
   48.48 +	src/audio/dummy/*.c
   48.49 +	src/video/dummy/*.c
   48.50 +	src/haptic/dummy/*.c
   48.51 +	src/joystick/dummy/*.c
   48.52 +	src/main/dummy/*.c
   48.53 +	src/thread/generic/*.c
   48.54 +	src/timer/dummy/*.c
   48.55 +	src/loadso/dummy/*.c
   48.56 +
   48.57 +
   48.58 +Once you have a working library without any drivers, you can go back to each
   48.59 +of the major subsystems and start implementing drivers for your platform.
   48.60 +
   48.61 +If you have any questions, don't hesitate to ask on the SDL mailing list:
   48.62 +	http://www.libsdl.org/mailing-list.php
   48.63 +
   48.64 +Enjoy!
   48.65 +	Sam Lantinga				(slouken@libsdl.org)
   48.66 +
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/docs/README-psp.md	Thu Jul 31 03:14:10 2014 -0300
    49.3 @@ -0,0 +1,19 @@
    49.4 +PSP
    49.5 +======
    49.6 +SDL port for the Sony PSP contributed by 
    49.7 +   Captian Lex 
    49.8 +
    49.9 +Credit to
   49.10 +   Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
   49.11 +   Geecko for his PSP GU lib "Glib2d"
   49.12 +
   49.13 +Building
   49.14 +--------
   49.15 +To build for the PSP, make sure psp-config is in the path and run:
   49.16 +   make -f Makefile.psp
   49.17 +
   49.18 +
   49.19 +
   49.20 +To Do
   49.21 +------
   49.22 +PSP Screen Keyboard
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/docs/README-raspberrypi.md	Thu Jul 31 03:14:10 2014 -0300
    50.3 @@ -0,0 +1,160 @@
    50.4 +Raspberry Pi
    50.5 +================================================================================
    50.6 +
    50.7 +Requirements:
    50.8 +
    50.9 +Raspbian (other Linux distros may work as well).
   50.10 +
   50.11 +================================================================================
   50.12 + Features
   50.13 +================================================================================
   50.14 +
   50.15 +* Works without X11
   50.16 +* Hardware accelerated OpenGL ES 2.x
   50.17 +* Sound via ALSA
   50.18 +* Input (mouse/keyboard/joystick) via EVDEV
   50.19 +* Hotplugging of input devices via UDEV
   50.20 +
   50.21 +================================================================================
   50.22 + Raspbian Build Dependencies
   50.23 +================================================================================
   50.24 +
   50.25 +sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
   50.26 +
   50.27 +You also need the VideoCore binary stuff that ships in /opt/vc for EGL and 
   50.28 +OpenGL ES 2.x, it usually comes pre installed, but in any case:
   50.29 +    
   50.30 +sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
   50.31 +
   50.32 +================================================================================
   50.33 + Cross compiling from x86 Linux
   50.34 +================================================================================
   50.35 +
   50.36 +To cross compile SDL for Raspbian from your desktop machine, you'll need a
   50.37 +Raspbian system root and the cross compilation tools. We'll assume these tools
   50.38 +will be placed in /opt/rpi-tools
   50.39 +
   50.40 +    sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
   50.41 +
   50.42 +You'll also need a Rasbian binary image.
   50.43 +Get it from: http://downloads.raspberrypi.org/raspbian_latest 
   50.44 +After unzipping, you'll get file with a name like: <date>-wheezy-raspbian.img
   50.45 +Let's assume the sysroot will be built in /opt/rpi-sysroot.
   50.46 +
   50.47 +    export SYSROOT=/opt/rpi-sysroot
   50.48 +    sudo kpartx -a -v <path_to_raspbian_image>.img
   50.49 +    sudo mount -o loop /dev/mapper/loop0p2 /mnt
   50.50 +    sudo cp -r /mnt $SYSROOT
   50.51 +    sudo apt-get install qemu binfmt-support qemu-user-static
   50.52 +    sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
   50.53 +    sudo mount --bind /dev $SYSROOT/dev
   50.54 +    sudo mount --bind /proc $SYSROOT/proc
   50.55 +    sudo mount --bind /sys $SYSROOT/sys
   50.56 +
   50.57 +Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
   50.58 +edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
   50.59 +
   50.60 +    sudo chroot $SYSROOT
   50.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
   50.62 +    exit
   50.63 +    sudo umount $SYSROOT/dev
   50.64 +    sudo umount $SYSROOT/proc
   50.65 +    sudo umount $SYSROOT/sys
   50.66 +    sudo umount /mnt
   50.67 +    
   50.68 +There's one more fix required, as the libdl.so symlink uses an absolute path 
   50.69 +which doesn't quite work in our setup.
   50.70 +
   50.71 +    sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   50.72 +    sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   50.73 +
   50.74 +The final step is compiling SDL itself.
   50.75 +
   50.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"
   50.77 +    cd <SDL SOURCE>
   50.78 +    mkdir -p build;cd build
   50.79 +    ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
   50.80 +    make
   50.81 +    make install
   50.82 +
   50.83 +To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
   50.84 +    
   50.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
   50.86 +    
   50.87 +================================================================================
   50.88 + Apps don't work or poor video/audio performance
   50.89 +================================================================================
   50.90 +
   50.91 +If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to 
   50.92 +update the RPi's firmware. Note that doing so will fix these problems, but it
   50.93 +will also render the CMA - Dynamic Memory Split functionality useless.
   50.94 +
   50.95 +Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
   50.96 +low in general, specially if a 1080p TV is hooked up.
   50.97 +
   50.98 +See here how to configure this setting: http://elinux.org/RPiconfig
   50.99 +
  50.100 +Using a fixed gpu_mem=128 is the best option (specially if you updated the 
  50.101 +firmware, using CMA probably won't work, at least it's the current case).
  50.102 +
  50.103 +================================================================================
  50.104 + No input
  50.105 +================================================================================
  50.106 +
  50.107 +Make sure you belong to the "input" group.
  50.108 +
  50.109 +    sudo usermod -aG input `whoami`
  50.110 +
  50.111 +================================================================================
  50.112 + No HDMI Audio
  50.113 +================================================================================
  50.114 +
  50.115 +If you notice that ALSA works but there's no audio over HDMI, try adding:
  50.116 +    
  50.117 +    hdmi_drive=2
  50.118 +    
  50.119 +to your config.txt file and reboot.
  50.120 +
  50.121 +Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
  50.122 +
  50.123 +================================================================================
  50.124 + Text Input API support
  50.125 +================================================================================
  50.126 +
  50.127 +The Text Input API is supported, with translation of scan codes done via the
  50.128 +kernel symbol tables. For this to work, SDL needs access to a valid console.
  50.129 +If you notice there's no SDL_TEXTINPUT message being emitted, double check that
  50.130 +your app has read access to one of the following:
  50.131 +    
  50.132 +* /proc/self/fd/0
  50.133 +* /dev/tty
  50.134 +* /dev/tty[0...6]
  50.135 +* /dev/vc/0
  50.136 +* /dev/console
  50.137 +
  50.138 +This is usually not a problem if you run from the physical terminal (as opposed
  50.139 +to running from a pseudo terminal, such as via SSH). If running from a PTS, a 
  50.140 +quick workaround is to run your app as root or add yourself to the tty group,
  50.141 +then re login to the system.
  50.142 +
  50.143 +   sudo usermod -aG tty `whoami`
  50.144 +    
  50.145 +The keyboard layout used by SDL is the same as the one the kernel uses.
  50.146 +To configure the layout on Raspbian:
  50.147 +    
  50.148 +    sudo dpkg-reconfigure keyboard-configuration
  50.149 +    
  50.150 +To configure the locale, which controls which keys are interpreted as letters,
  50.151 +this determining the CAPS LOCK behavior:
  50.152 +
  50.153 +    sudo dpkg-reconfigure locales
  50.154 +
  50.155 +================================================================================
  50.156 + Notes
  50.157 +================================================================================
  50.158 +
  50.159 +* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
  50.160 +  leaking into the console only if it has root privileges. Launching apps locally
  50.161 +  does not suffer from this issue.
  50.162 +  
  50.163 +
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/docs/README-touch.md	Thu Jul 31 03:14:10 2014 -0300
    51.3 @@ -0,0 +1,85 @@
    51.4 +Touch
    51.5 +===========================================================================
    51.6 +System Specific Notes
    51.7 +===========================================================================
    51.8 +Linux:
    51.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.
   51.10 +
   51.11 +Mac:
   51.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.
   51.13 +
   51.14 +iPhone: 
   51.15 +Works out of box.
   51.16 +
   51.17 +Windows:
   51.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
   51.19 +
   51.20 +===========================================================================
   51.21 +Events
   51.22 +===========================================================================
   51.23 +SDL_FINGERDOWN:
   51.24 +Sent when a finger (or stylus) is placed on a touch device.
   51.25 +Fields:
   51.26 +event.tfinger.touchId  - the Id of the touch device.
   51.27 +event.tfinger.fingerId - the Id of the finger which just went down.
   51.28 +event.tfinger.x        - the x coordinate of the touch (0..1)
   51.29 +event.tfinger.y        - the y coordinate of the touch (0..1)
   51.30 +event.tfinger.pressure - the pressure of the touch (0..1)
   51.31 +
   51.32 +SDL_FINGERMOTION:
   51.33 +Sent when a finger (or stylus) is moved on the touch device.
   51.34 +Fields:
   51.35 +Same as SDL_FINGERDOWN but with additional:
   51.36 +event.tfinger.dx       - change in x coordinate during this motion event.
   51.37 +event.tfinger.dy       - change in y coordinate during this motion event.
   51.38 +
   51.39 +SDL_FINGERUP:
   51.40 +Sent when a finger (or stylus) is lifted from the touch device.
   51.41 +Fields:
   51.42 +Same as SDL_FINGERDOWN.
   51.43 +
   51.44 +
   51.45 +===========================================================================
   51.46 +Functions
   51.47 +===========================================================================
   51.48 +SDL provides the ability to access the underlying Finger structures.
   51.49 +These structures should _never_ be modified.
   51.50 +
   51.51 +The following functions are included from SDL_touch.h
   51.52 +
   51.53 +To get a SDL_TouchID call SDL_GetTouchDevice(index).
   51.54 +This returns a SDL_TouchID.
   51.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!
   51.56 +
   51.57 +The number of touch devices can be queried with SDL_GetNumTouchDevices().
   51.58 +
   51.59 +A SDL_TouchID may be used to get pointers to SDL_Finger.
   51.60 +
   51.61 +SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
   51.62 +
   51.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:
   51.64 +
   51.65 +      float x = event.tfinger.x;
   51.66 +      float y = event.tfinger.y;
   51.67 +
   51.68 +
   51.69 +
   51.70 +To get a SDL_Finger, call SDL_GetTouchFinger(touchID,index), where touchID is a SDL_TouchID, and index is the requested finger.
   51.71 +This returns a SDL_Finger*, or NULL if the finger does not exist, or has been removed.
   51.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.
   51.73 +As a result, be very careful to check for NULL return values.
   51.74 +
   51.75 +A SDL_Finger has the following fields:
   51.76 +>x,y,pressure:
   51.77 +	The current coordinates of the touch.
   51.78 +>pressure:
   51.79 +	The pressure of the touch.
   51.80 +
   51.81 +===========================================================================
   51.82 +Notes
   51.83 +===========================================================================
   51.84 +For a complete example see test/testgesture.c
   51.85 +
   51.86 +Please direct questions/comments to:
   51.87 +   jim.tla+sdl_touch@gmail.com
   51.88 +   (original author, API was changed since)
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/docs/README-wince.md	Thu Jul 31 03:14:10 2014 -0300
    52.3 @@ -0,0 +1,10 @@
    52.4 +WinCE
    52.5 +=====
    52.6 +
    52.7 +Windows CE is no longer supported by SDL.
    52.8 +
    52.9 +We have left the CE support in SDL 1.2 for those that must have it, and we
   52.10 +have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
   52.11 +
   52.12 +--ryan.
   52.13 +
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/docs/README-windows.md	Thu Jul 31 03:14:10 2014 -0300
    53.3 @@ -0,0 +1,41 @@
    53.4 +Windows
    53.5 +================================================================================
    53.6 +
    53.7 +================================================================================
    53.8 +OpenGL ES 2.x support
    53.9 +================================================================================
   53.10 +
   53.11 +SDL has support for OpenGL ES 2.x under Windows via two alternative 
   53.12 +implementations. 
   53.13 +The most straightforward method consists in running your app in a system with 
   53.14 +a graphic card paired with a relatively recent (as of November of 2013) driver 
   53.15 +which supports the WGL_EXT_create_context_es2_profile extension. Vendors known 
   53.16 +to ship said extension on Windows currently include nVidia and Intel.
   53.17 +
   53.18 +The other method involves using the ANGLE library (https://code.google.com/p/angleproject/)
   53.19 +If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile
   53.20 +extension is found, SDL will try to load the libEGL.dll library provided by
   53.21 +ANGLE.
   53.22 +To obtain the ANGLE binaries, you can either compile from source from
   53.23 +https://chromium.googlesource.com/angle/angle or copy the relevant binaries from
   53.24 +a recent Chrome/Chromium install for Windows. The files you need are:
   53.25 +    
   53.26 +    * libEGL.dll
   53.27 +    * libGLESv2.dll
   53.28 +    * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler)
   53.29 +    or...
   53.30 +    * d3dcompiler_43.dll (supports Windows XP or later)
   53.31 +    
   53.32 +If you compile ANGLE from source, you can configure it so it does not need the
   53.33 +d3dcompiler_* DLL at all (for details on this, see their documentation). 
   53.34 +However, by default SDL will try to preload the d3dcompiler_46.dll to
   53.35 +comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to
   53.36 +support Windows XP) or to skip this step at all, you can use the 
   53.37 +SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details).
   53.38 +
   53.39 +Known Bugs:
   53.40 +    
   53.41 +    * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
   53.42 +      that there's a bug in the library which prevents the window contents from
   53.43 +      refreshing if this is set to anything other than the default value.
   53.44 +      
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/docs/README-winrt.md	Thu Jul 31 03:14:10 2014 -0300
    54.3 @@ -0,0 +1,44 @@
    54.4 +WinRT
    54.5 +================================================================================
    54.6 +
    54.7 +SDL/WinRT layer allows SDL2-based applications to run on many of Microsoft's
    54.8 +platforms that utilize the "Windows Runtime" (aka "WinRT") APIs.  WinRT apps
    54.9 +are currently always full-screen apps, run in what Microsoft calls their
   54.10 +"Modern" environment (aka. "Metro"), and are distributed via Microsoft-run
   54.11 +online stores.  Some of the operating systems that support such apps include:
   54.12 +
   54.13 +* Windows 8.x
   54.14 +* Windows RT 8.x (aka. Windows 8.x for ARM processors)
   54.15 +* Windows Phone 8.x
   54.16 +
   54.17 +To note, WinRT applications that run on Windows 8.x and/or Windows RT are often
   54.18 +called "Windows Store" apps.
   54.19 +
   54.20 +
   54.21 +--------------------------------------------------------------------------------
   54.22 +Requirements
   54.23 +--------------------------------------------------------------------------------
   54.24 +- Microsoft Visual C++ 2012 -- Free, "Express" editions may be used, so long
   54.25 +  as they include support for either "Windows Store" or "Windows Phone" apps.
   54.26 +  (NOTE: MSVC 2013 support is pending.  2012 projects may be converted to 2013
   54.27 +  projects by MSVC, in the meantime.)
   54.28 +- A valid Microsoft account -- This requirement is not imposed by SDL, but
   54.29 +  rather by Microsoft's Visual C++ toolchain.
   54.30 +
   54.31 +
   54.32 +--------------------------------------------------------------------------------
   54.33 +TODO
   54.34 +--------------------------------------------------------------------------------
   54.35 +- Finish adding support for MSVC 2013, and "Universal" WinRT apps, which
   54.36 +  support Windows 8.1, Windows Phone 8.1, and in the future, Xbox One and
   54.37 +  Windows Desktop.
   54.38 +- Finish adding support for the SDL satellite libraries (SDL_image, SDL_mixer,
   54.39 +  SDL_ttf, etc.)
   54.40 +- Create templates for both MSVC 2012 and MSVC 2013, and have the corresponding
   54.41 +  VSIX packages either include pre-built copies of SDL, or reference binaries
   54.42 +  available via MSVC's NuGet servers
   54.43 +- Write setup instructions that use MSVC 201x templates
   54.44 +- Write setup instructions that don't use MSVC 201x templates, and use
   54.45 +  MSVC project-to-project references, rather than pre-built binaries
   54.46 +- Write a list of caveats found in SDL/WinRT, such as APIs that don't work due
   54.47 +  to platform restrictions, or things that need further work
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/docs/README.md	Thu Jul 31 03:14:10 2014 -0300
    55.3 @@ -0,0 +1,62 @@
    55.4 +Simple DirectMedia Layer {#mainpage}
    55.5 +========================
    55.6 +
    55.7 +                                  (SDL)
    55.8 +
    55.9 +                                Version 2.0
   55.10 +
   55.11 +---
   55.12 +http://www.libsdl.org/
   55.13 +
   55.14 +Simple DirectMedia Layer is a cross-platform development library designed
   55.15 +to provide low level access to audio, keyboard, mouse, joystick, and graphics
   55.16 +hardware via OpenGL and Direct3D. It is used by video playback software,
   55.17 +emulators, and popular games including Valve's award winning catalog
   55.18 +and many Humble Bundle games. 42
   55.19 +
   55.20 +SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
   55.21 +Support for other platforms may be found in the source code.
   55.22 +
   55.23 +SDL is written in C, works natively with C++, and there are bindings 
   55.24 +available for several other languages, including C# and Python.
   55.25 +
   55.26 +This library is distributed under the zlib license, which can be found
   55.27 +in the file "COPYING.txt".
   55.28 +
   55.29 +The best way to learn how to use SDL is to check out the header files in
   55.30 +the "include" subdirectory and the programs in the "test" subdirectory.
   55.31 +The header files and test programs are well commented and always up to date.
   55.32 +
   55.33 +More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
   55.34 +
   55.35 +- [Android](README-android.md)
   55.36 +- [CMake](README-cmake.md)
   55.37 +- [DirectFB](README-directfb.md)
   55.38 +- [DynAPI](README-dynapi.md)
   55.39 +- [Gesture](README-gesture.md)
   55.40 +- [Mercurial](README-hg.md)
   55.41 +- [iOS](README-ios.md)
   55.42 +- [Linux](README-linux.md)
   55.43 +- [OS X](README-macosx.md)
   55.44 +- [Native Client](README-nacl.md)
   55.45 +- [Pandora](README-pandora.md)
   55.46 +- [Supported Platforms](README-platforms.md)
   55.47 +- [Porting information](README-porting.md)
   55.48 +- [PSP](README-psp.md)
   55.49 +- [Raspberry Pi](README-raspberrypi.md)
   55.50 +- [Touch](README-touch.md)
   55.51 +- [WinCE](README-wince.md)
   55.52 +- [Windows](README-windows.md)
   55.53 +- [WinRT](README-winrt.md)
   55.54 +
   55.55 +If you need help with the library, or just want to discuss SDL related
   55.56 +issues, you can join the [developers mailing list](http://www.libsdl.org/mailing-list.php)
   55.57 +
   55.58 +If you want to report bugs or contribute patches, please submit them to
   55.59 +[bugzilla](http://bugzilla.libsdl.org/)
   55.60 +
   55.61 +Enjoy!
   55.62 +
   55.63 +
   55.64 +Sam Lantinga <mailto:slouken@libsdl.org>
   55.65 +
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/docs/doxyfile	Thu Jul 31 03:14:10 2014 -0300
    56.3 @@ -0,0 +1,1559 @@
    56.4 +# Doxyfile 1.5.9
    56.5 +
    56.6 +# This file describes the settings to be used by the documentation system
    56.7 +# doxygen (www.doxygen.org) for a project
    56.8 +#
    56.9 +# All text after a hash (#) is considered a comment and will be ignored
   56.10 +# The format is:
   56.11 +#       TAG = value [value, ...]
   56.12 +# For lists items can also be appended using:
   56.13 +#       TAG += value [value, ...]
   56.14 +# Values that contain spaces should be placed between quotes (" ")
   56.15 +
   56.16 +#---------------------------------------------------------------------------
   56.17 +# Project related configuration options
   56.18 +#---------------------------------------------------------------------------
   56.19 +
   56.20 +# This tag specifies the encoding used for all characters in the config file 
   56.21 +# that follow. The default is UTF-8 which is also the encoding used for all 
   56.22 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
   56.23 +# iconv built into libc) for the transcoding. See 
   56.24 +# http://www.gnu.org/software/libiconv for the list of possible encodings.
   56.25 +
   56.26 +DOXYFILE_ENCODING      = UTF-8
   56.27 +
   56.28 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
   56.29 +# by quotes) that should identify the project.
   56.30 +
   56.31 +PROJECT_NAME           = SDL
   56.32 +
   56.33 +# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
   56.34 +# This could be handy for archiving the generated documentation or 
   56.35 +# if some version control system is used.
   56.36 +
   56.37 +PROJECT_NUMBER         = 2.0.0
   56.38 +
   56.39 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
   56.40 +# base path where the generated documentation will be put. 
   56.41 +# If a relative path is entered, it will be relative to the location 
   56.42 +# where doxygen was started. If left blank the current directory will be used.
   56.43 +
   56.44 +OUTPUT_DIRECTORY       = ./output
   56.45 +
   56.46 +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
   56.47 +# 4096 sub-directories (in 2 levels) under the output directory of each output 
   56.48 +# format and will distribute the generated files over these directories. 
   56.49 +# Enabling this option can be useful when feeding doxygen a huge amount of 
   56.50 +# source files, where putting all generated files in the same directory would 
   56.51 +# otherwise cause performance problems for the file system.
   56.52 +
   56.53 +CREATE_SUBDIRS         = YES
   56.54 +
   56.55 +# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
   56.56 +# documentation generated by doxygen is written. Doxygen will use this 
   56.57 +# information to generate all constant output in the proper language. 
   56.58 +# The default language is English, other supported languages are: 
   56.59 +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
   56.60 +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
   56.61 +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
   56.62 +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
   56.63 +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
   56.64 +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
   56.65 +
   56.66 +OUTPUT_LANGUAGE        = English
   56.67 +
   56.68 +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
   56.69 +# include brief member descriptions after the members that are listed in 
   56.70 +# the file and class documentation (similar to JavaDoc). 
   56.71 +# Set to NO to disable this.
   56.72 +
   56.73 +BRIEF_MEMBER_DESC      = YES
   56.74 +
   56.75 +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
   56.76 +# the brief description of a member or function before the detailed description. 
   56.77 +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
   56.78 +# brief descriptions will be completely suppressed.
   56.79 +
   56.80 +REPEAT_BRIEF           = YES
   56.81 +
   56.82 +# This tag implements a quasi-intelligent brief description abbreviator 
   56.83 +# that is used to form the text in various listings. Each string 
   56.84 +# in this list, if found as the leading text of the brief description, will be 
   56.85 +# stripped from the text and the result after processing the whole list, is 
   56.86 +# used as the annotated text. Otherwise, the brief description is used as-is. 
   56.87 +# If left blank, the following values are used ("$name" is automatically 
   56.88 +# replaced with the name of the entity): "The $name class" "The $name widget" 
   56.89 +# "The $name file" "is" "provides" "specifies" "contains" 
   56.90 +# "represents" "a" "an" "the"
   56.91 +
   56.92 +ABBREVIATE_BRIEF       = "The $name class" \
   56.93 +                         "The $name widget" \
   56.94 +                         "The $name file" \
   56.95 +                         is \
   56.96 +                         provides \
   56.97 +                         specifies \
   56.98 +                         contains \
   56.99 +                         represents \
  56.100 +                         a \
  56.101 +                         an \
  56.102 +                         the
  56.103 +
  56.104 +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
  56.105 +# Doxygen will generate a detailed section even if there is only a brief 
  56.106 +# description.
  56.107 +
  56.108 +ALWAYS_DETAILED_SEC    = YES
  56.109 +
  56.110 +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
  56.111 +# inherited members of a class in the documentation of that class as if those 
  56.112 +# members were ordinary class members. Constructors, destructors and assignment 
  56.113 +# operators of the base classes will not be shown.
  56.114 +
  56.115 +INLINE_INHERITED_MEMB  = NO
  56.116 +
  56.117 +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
  56.118 +# path before files name in the file list and in the header files. If set 
  56.119 +# to NO the shortest path that makes the file name unique will be used.
  56.120 +
  56.121 +FULL_PATH_NAMES        = YES
  56.122 +
  56.123 +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
  56.124 +# can be used to strip a user-defined part of the path. Stripping is 
  56.125 +# only done if one of the specified strings matches the left-hand part of 
  56.126 +# the path. The tag can be used to show relative paths in the file list. 
  56.127 +# If left blank the directory from which doxygen is run is used as the 
  56.128 +# path to strip.
  56.129 +
  56.130 +STRIP_FROM_PATH        =
  56.131 +
  56.132 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
  56.133 +# the path mentioned in the documentation of a class, which tells 
  56.134 +# the reader which header file to include in order to use a class. 
  56.135 +# If left blank only the name of the header file containing the class 
  56.136 +# definition is used. Otherwise one should specify the include paths that 
  56.137 +# are normally passed to the compiler using the -I flag.
  56.138 +
  56.139 +STRIP_FROM_INC_PATH    = 
  56.140 +
  56.141 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
  56.142 +# (but less readable) file names. This can be useful is your file systems 
  56.143 +# doesn't support long names like on DOS, Mac, or CD-ROM.
  56.144 +
  56.145 +SHORT_NAMES            = NO
  56.146 +
  56.147 +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
  56.148 +# will interpret the first line (until the first dot) of a JavaDoc-style 
  56.149 +# comment as the brief description. If set to NO, the JavaDoc 
  56.150 +# comments will behave just like regular Qt-style comments 
  56.151 +# (thus requiring an explicit @brief command for a brief description.)
  56.152 +
  56.153 +JAVADOC_AUTOBRIEF      = NO
  56.154 +
  56.155 +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
  56.156 +# interpret the first line (until the first dot) of a Qt-style 
  56.157 +# comment as the brief description. If set to NO, the comments 
  56.158 +# will behave just like regular Qt-style comments (thus requiring 
  56.159 +# an explicit \brief command for a brief description.)
  56.160 +
  56.161 +QT_AUTOBRIEF           = NO
  56.162 +
  56.163 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
  56.164 +# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
  56.165 +# comments) as a brief description. This used to be the default behaviour. 
  56.166 +# The new default is to treat a multi-line C++ comment block as a detailed 
  56.167 +# description. Set this tag to YES if you prefer the old behaviour instead.
  56.168 +
  56.169 +MULTILINE_CPP_IS_BRIEF = NO
  56.170 +
  56.171 +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
  56.172 +# member inherits the documentation from any documented member that it 
  56.173 +# re-implements.
  56.174 +
  56.175 +INHERIT_DOCS           = YES
  56.176 +
  56.177 +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
  56.178 +# a new page for each member. If set to NO, the documentation of a member will 
  56.179 +# be part of the file/class/namespace that contains it.
  56.180 +
  56.181 +SEPARATE_MEMBER_PAGES  = NO
  56.182 +
  56.183 +# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
  56.184 +# Doxygen uses this value to replace tabs by spaces in code fragments.
  56.185 +
  56.186 +TAB_SIZE               = 8
  56.187 +
  56.188 +# This tag can be used to specify a number of aliases that acts 
  56.189 +# as commands in the documentation. An alias has the form "name=value". 
  56.190 +# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
  56.191 +# put the command \sideeffect (or @sideeffect) in the documentation, which 
  56.192 +# will result in a user-defined paragraph with heading "Side Effects:". 
  56.193 +# You can put \n's in the value part of an alias to insert newlines.
  56.194 +
  56.195 +ALIASES                = "defined=\"\def\"" \
  56.196 +                         "discussion=\"\par Discussion:\n\""
  56.197 +
  56.198 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
  56.199 +# sources only. Doxygen will then generate output that is more tailored for C. 
  56.200 +# For instance, some of the names that are used will be different. The list 
  56.201 +# of all members will be omitted, etc.
  56.202 +
  56.203 +OPTIMIZE_OUTPUT_FOR_C  = YES
  56.204 +
  56.205 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
  56.206 +# sources only. Doxygen will then generate output that is more tailored for 
  56.207 +# Java. For instance, namespaces will be presented as packages, qualified 
  56.208 +# scopes will look different, etc.
  56.209 +
  56.210 +OPTIMIZE_OUTPUT_JAVA   = NO
  56.211 +
  56.212 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
  56.213 +# sources only. Doxygen will then generate output that is more tailored for 
  56.214 +# Fortran.
  56.215 +
  56.216 +OPTIMIZE_FOR_FORTRAN   = NO
  56.217 +
  56.218 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
  56.219 +# sources. Doxygen will then generate output that is tailored for 
  56.220 +# VHDL.
  56.221 +
  56.222 +OPTIMIZE_OUTPUT_VHDL   = NO
  56.223 +
  56.224 +# Doxygen selects the parser to use depending on the extension of the files it parses. 
  56.225 +# With this tag you can assign which parser to use for a given extension. 
  56.226 +# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
  56.227 +# The format is ext=language, where ext is a file extension, and language is one of 
  56.228 +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
  56.229 +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
  56.230 +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
  56.231 +# use: inc=Fortran f=C. Note that for custom extensions you also need to set
  56.232 +# FILE_PATTERNS otherwise the files are not read by doxygen.
  56.233 +
  56.234 +EXTENSION_MAPPING      = 
  56.235 +
  56.236 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
  56.237 +# to include (a tag file for) the STL sources as input, then you should 
  56.238 +# set this tag to YES in order to let doxygen match functions declarations and 
  56.239 +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
  56.240 +# func(std::string) {}). This also make the inheritance and collaboration 
  56.241 +# diagrams that involve STL classes more complete and accurate.
  56.242 +
  56.243 +BUILTIN_STL_SUPPORT    = YES
  56.244 +
  56.245 +# If you use Microsoft's C++/CLI language, you should set this option to YES to 
  56.246 +# enable parsing support.
  56.247 +
  56.248 +CPP_CLI_SUPPORT        = NO
  56.249 +
  56.250 +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
  56.251 +# Doxygen will parse them like normal C++ but will assume all classes use public 
  56.252 +# instead of private inheritance when no explicit protection keyword is present.
  56.253 +
  56.254 +SIP_SUPPORT            = NO
  56.255 +
  56.256 +# For Microsoft's IDL there are propget and propput attributes to indicate getter 
  56.257 +# and setter methods for a property. Setting this option to YES (the default) 
  56.258 +# will make doxygen to replace the get and set methods by a property in the 
  56.259 +# documentation. This will only work if the methods are indeed getting or 
  56.260 +# setting a simple type. If this is not the case, or you want to show the 
  56.261 +# methods anyway, you should set this option to NO.
  56.262 +
  56.263 +IDL_PROPERTY_SUPPORT   = YES
  56.264 +
  56.265 +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
  56.266 +# tag is set to YES, then doxygen will reuse the documentation of the first 
  56.267 +# member in the group (if any) for the other members of the group. By default 
  56.268 +# all members of a group must be documented explicitly.
  56.269 +
  56.270 +DISTRIBUTE_GROUP_DOC   = NO
  56.271 +
  56.272 +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
  56.273 +# the same type (for instance a group of public functions) to be put as a 
  56.274 +# subgroup of that type (e.g. under the Public Functions section). Set it to 
  56.275 +# NO to prevent subgrouping. Alternatively, this can be done per class using 
  56.276 +# the \nosubgrouping command.
  56.277 +
  56.278 +SUBGROUPING            = YES
  56.279 +
  56.280 +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
  56.281 +# is documented as struct, union, or enum with the name of the typedef. So 
  56.282 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
  56.283 +# with name TypeT. When disabled the typedef will appear as a member of a file, 
  56.284 +# namespace, or class. And the struct will be named TypeS. This can typically 
  56.285 +# be useful for C code in case the coding convention dictates that all compound 
  56.286 +# types are typedef'ed and only the typedef is referenced, never the tag name.
  56.287 +
  56.288 +TYPEDEF_HIDES_STRUCT   = YES
  56.289 +
  56.290 +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
  56.291 +# determine which symbols to keep in memory and which to flush to disk. 
  56.292 +# When the cache is full, less often used symbols will be written to disk. 
  56.293 +# For small to medium size projects (<1000 input files) the default value is 
  56.294 +# probably good enough. For larger projects a too small cache size can cause 
  56.295 +# doxygen to be busy swapping symbols to and from disk most of the time 
  56.296 +# causing a significant performance penality. 
  56.297 +# If the system has enough physical memory increasing the cache will improve the 
  56.298 +# performance by keeping more symbols in memory. Note that the value works on 
  56.299 +# a logarithmic scale so increasing the size by one will rougly double the 
  56.300 +# memory usage. The cache size is given by this formula: 
  56.301 +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
  56.302 +# corresponding to a cache size of 2^16 = 65536 symbols
  56.303 +
  56.304 +SYMBOL_CACHE_SIZE      = 0
  56.305 +
  56.306 +#---------------------------------------------------------------------------
  56.307 +# Build related configuration options
  56.308 +#---------------------------------------------------------------------------
  56.309 +
  56.310 +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
  56.311 +# documentation are documented, even if no documentation was available. 
  56.312 +# Private class members and static file members will be hidden unless 
  56.313 +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  56.314 +
  56.315 +EXTRACT_ALL            = YES
  56.316 +
  56.317 +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
  56.318 +# will be included in the documentation.
  56.319 +
  56.320 +EXTRACT_PRIVATE        = YES
  56.321 +
  56.322 +# If the EXTRACT_STATIC tag is set to YES all static members of a file 
  56.323 +# will be included in the documentation.
  56.324 +
  56.325 +EXTRACT_STATIC         = YES
  56.326 +
  56.327 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
  56.328 +# defined locally in source files will be included in the documentation. 
  56.329 +# If set to NO only classes defined in header files are included.
  56.330 +
  56.331 +EXTRACT_LOCAL_CLASSES  = YES
  56.332 +
  56.333 +# This flag is only useful for Objective-C code. When set to YES local 
  56.334 +# methods, which are defined in the implementation section but not in 
  56.335 +# the interface are included in the documentation. 
  56.336 +# If set to NO (the default) only methods in the interface are included.
  56.337 +
  56.338 +EXTRACT_LOCAL_METHODS  = YES
  56.339 +
  56.340 +# If this flag is set to YES, the members of anonymous namespaces will be 
  56.341 +# extracted and appear in the documentation as a namespace called 
  56.342 +# 'anonymous_namespace{file}', where file will be replaced with the base 
  56.343 +# name of the file that contains the anonymous namespace. By default 
  56.344 +# anonymous namespace are hidden.
  56.345 +
  56.346 +EXTRACT_ANON_NSPACES   = YES
  56.347 +
  56.348 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
  56.349 +# undocumented members of documented classes, files or namespaces. 
  56.350 +# If set to NO (the default) these members will be included in the 
  56.351 +# various overviews, but no documentation section is generated. 
  56.352 +# This option has no effect if EXTRACT_ALL is enabled.
  56.353 +
  56.354 +HIDE_UNDOC_MEMBERS     = NO
  56.355 +
  56.356 +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
  56.357 +# undocumented classes that are normally visible in the class hierarchy. 
  56.358 +# If set to NO (the default) these classes will be included in the various 
  56.359 +# overviews. This option has no effect if EXTRACT_ALL is enabled.
  56.360 +
  56.361 +HIDE_UNDOC_CLASSES     = NO
  56.362 +
  56.363 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
  56.364 +# friend (class|struct|union) declarations. 
  56.365 +# If set to NO (the default) these declarations will be included in the 
  56.366 +# documentation.
  56.367 +
  56.368 +HIDE_FRIEND_COMPOUNDS  = NO
  56.369 +
  56.370 +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
  56.371 +# documentation blocks found inside the body of a function. 
  56.372 +# If set to NO (the default) these blocks will be appended to the 
  56.373 +# function's detailed documentation block.
  56.374 +
  56.375 +HIDE_IN_BODY_DOCS      = NO
  56.376 +
  56.377 +# The INTERNAL_DOCS tag determines if documentation 
  56.378 +# that is typed after a \internal command is included. If the tag is set 
  56.379 +# to NO (the default) then the documentation will be excluded. 
  56.380 +# Set it to YES to include the internal documentation.
  56.381 +
  56.382 +INTERNAL_DOCS          = YES
  56.383 +
  56.384 +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
  56.385 +# file names in lower-case letters. If set to YES upper-case letters are also 
  56.386 +# allowed. This is useful if you have classes or files whose names only differ 
  56.387 +# in case and if your file system supports case sensitive file names. Windows 
  56.388 +# and Mac users are advised to set this option to NO.
  56.389 +
  56.390 +CASE_SENSE_NAMES       = NO
  56.391 +
  56.392 +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
  56.393 +# will show members with their full class and namespace scopes in the 
  56.394 +# documentation. If set to YES the scope will be hidden.
  56.395 +
  56.396 +HIDE_SCOPE_NAMES       = NO
  56.397 +
  56.398 +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
  56.399 +# will put a list of the files that are included by a file in the documentation 
  56.400 +# of that file.
  56.401 +
  56.402 +SHOW_INCLUDE_FILES     = YES
  56.403 +
  56.404 +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
  56.405 +# is inserted in the documentation for inline members.
  56.406 +
  56.407 +INLINE_INFO            = YES
  56.408 +
  56.409 +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
  56.410 +# will sort the (detailed) documentation of file and class members 
  56.411 +# alphabetically by member name. If set to NO the members will appear in 
  56.412 +# declaration order.
  56.413 +
  56.414 +SORT_MEMBER_DOCS       = YES
  56.415 +
  56.416 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
  56.417 +# brief documentation of file, namespace and class members alphabetically 
  56.418 +# by member name. If set to NO (the default) the members will appear in 
  56.419 +# declaration order.
  56.420 +
  56.421 +SORT_BRIEF_DOCS        = NO
  56.422 +
  56.423 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
  56.424 +# hierarchy of group names into alphabetical order. If set to NO (the default) 
  56.425 +# the group names will appear in their defined order.
  56.426 +
  56.427 +SORT_GROUP_NAMES       = NO
  56.428 +
  56.429 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
  56.430 +# sorted by fully-qualified names, including namespaces. If set to 
  56.431 +# NO (the default), the class list will be sorted only by class name, 
  56.432 +# not including the namespace part. 
  56.433 +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
  56.434 +# Note: This option applies only to the class list, not to the 
  56.435 +# alphabetical list.
  56.436 +
  56.437 +SORT_BY_SCOPE_NAME     = NO
  56.438 +
  56.439 +# The GENERATE_TODOLIST tag can be used to enable (YES) or 
  56.440 +# disable (NO) the todo list. This list is created by putting \todo 
  56.441 +# commands in the documentation.
  56.442 +
  56.443 +GENERATE_TODOLIST      = YES
  56.444 +
  56.445 +# The GENERATE_TESTLIST tag can be used to enable (YES) or 
  56.446 +# disable (NO) the test list. This list is created by putting \test 
  56.447 +# commands in the documentation.
  56.448 +
  56.449 +GENERATE_TESTLIST      = YES
  56.450 +
  56.451 +# The GENERATE_BUGLIST tag can be used to enable (YES) or 
  56.452 +# disable (NO) the bug list. This list is created by putting \bug 
  56.453 +# commands in the documentation.
  56.454 +
  56.455 +GENERATE_BUGLIST       = YES
  56.456 +
  56.457 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
  56.458 +# disable (NO) the deprecated list. This list is created by putting 
  56.459 +# \deprecated commands in the documentation.
  56.460 +
  56.461 +GENERATE_DEPRECATEDLIST= YES
  56.462 +
  56.463 +# The ENABLED_SECTIONS tag can be used to enable conditional 
  56.464 +# documentation sections, marked by \if sectionname ... \endif.
  56.465 +
  56.466 +ENABLED_SECTIONS       = 
  56.467 +
  56.468 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
  56.469 +# the initial value of a variable or define consists of for it to appear in 
  56.470 +# the documentation. If the initializer consists of more lines than specified 
  56.471 +# here it will be hidden. Use a value of 0 to hide initializers completely. 
  56.472 +# The appearance of the initializer of individual variables and defines in the 
  56.473 +# documentation can be controlled using \showinitializer or \hideinitializer 
  56.474 +# command in the documentation regardless of this setting.
  56.475 +
  56.476 +MAX_INITIALIZER_LINES  = 30
  56.477 +
  56.478 +# If the sources in your project are distributed over multiple directories 
  56.479 +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
  56.480 +# in the documentation. The default is NO.
  56.481 +
  56.482 +SHOW_DIRECTORIES       = YES
  56.483 +
  56.484 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
  56.485 +# This will remove the Files entry from the Quick Index and from the 
  56.486 +# Folder Tree View (if specified). The default is YES.
  56.487 +
  56.488 +SHOW_FILES             = YES
  56.489 +
  56.490 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
  56.491 +# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
  56.492 +# and from the Folder Tree View (if specified). The default is YES.
  56.493 +
  56.494 +SHOW_NAMESPACES        = YES
  56.495 +
  56.496 +# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
  56.497 +# doxygen should invoke to get the current version for each file (typically from 
  56.498 +# the version control system). Doxygen will invoke the program by executing (via 
  56.499 +# popen()) the command <command> <input-file>, where <command> is the value of 
  56.500 +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
  56.501 +# provided by doxygen. Whatever the program writes to standard output 
  56.502 +# is used as the file version. See the manual for examples.
  56.503 +
  56.504 +FILE_VERSION_FILTER    = 
  56.505 +
  56.506 +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
  56.507 +# doxygen. The layout file controls the global structure of the generated output files 
  56.508 +# in an output format independent way. The create the layout file that represents 
  56.509 +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
  56.510 +# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
  56.511 +# of the layout file.
  56.512 +
  56.513 +LAYOUT_FILE            = 
  56.514 +
  56.515 +#---------------------------------------------------------------------------
  56.516 +# configuration options related to warning and progress messages
  56.517 +#---------------------------------------------------------------------------
  56.518 +
  56.519 +# The QUIET tag can be used to turn on/off the messages that are generated 
  56.520 +# by doxygen. Possible values are YES and NO. If left blank NO is used.
  56.521 +
  56.522 +QUIET                  = NO
  56.523 +
  56.524 +# The WARNINGS tag can be used to turn on/off the warning messages that are 
  56.525 +# generated by doxygen. Possible values are YES and NO. If left blank 
  56.526 +# NO is used.
  56.527 +
  56.528 +WARNINGS               = YES
  56.529 +
  56.530 +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
  56.531 +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
  56.532 +# automatically be disabled.
  56.533 +
  56.534 +WARN_IF_UNDOCUMENTED   = YES
  56.535 +
  56.536 +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
  56.537 +# potential errors in the documentation, such as not documenting some 
  56.538 +# parameters in a documented function, or documenting parameters that 
  56.539 +# don't exist or using markup commands wrongly.
  56.540 +
  56.541 +WARN_IF_DOC_ERROR      = YES
  56.542 +
  56.543 +# This WARN_NO_PARAMDOC option can be abled to get warnings for 
  56.544 +# functions that are documented, but have no documentation for their parameters 
  56.545 +# or return value. If set to NO (the default) doxygen will only warn about 
  56.546 +# wrong or incomplete parameter documentation, but not about the absence of 
  56.547 +# documentation.
  56.548 +
  56.549 +WARN_NO_PARAMDOC       = YES
  56.550 +
  56.551 +# The WARN_FORMAT tag determines the format of the warning messages that 
  56.552 +# doxygen can produce. The string should contain the $file, $line, and $text 
  56.553 +# tags, which will be replaced by the file and line number from which the 
  56.554 +# warning originated and the warning text. Optionally the format may contain 
  56.555 +# $version, which will be replaced by the version of the file (if it could 
  56.556 +# be obtained via FILE_VERSION_FILTER)
  56.557 +
  56.558 +WARN_FORMAT            = "$file:$line: $text"
  56.559 +
  56.560 +# The WARN_LOGFILE tag can be used to specify a file to which warning 
  56.561 +# and error messages should be written. If left blank the output is written 
  56.562 +# to stderr.
  56.563 +
  56.564 +WARN_LOGFILE           = ./doxygen_warn.txt
  56.565 +
  56.566 +#---------------------------------------------------------------------------
  56.567 +# configuration options related to the input files
  56.568 +#---------------------------------------------------------------------------
  56.569 +
  56.570 +# The INPUT tag can be used to specify the files and/or directories that contain 
  56.571 +# documented source files. You may enter file names like "myfile.cpp" or 
  56.572 +# directories like "/usr/src/myproject". Separate the files or directories 
  56.573 +# with spaces.
  56.574 +
  56.575 +INPUT                  = . ../include
  56.576 +
  56.577 +# This tag can be used to specify the character encoding of the source files 
  56.578 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
  56.579 +# also the default input encoding. Doxygen uses libiconv (or the iconv built 
  56.580 +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
  56.581 +# the list of possible encodings.
  56.582 +
  56.583 +INPUT_ENCODING         = UTF-8
  56.584 +
  56.585 +# If the value of the INPUT tag contains directories, you can use the 
  56.586 +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  56.587 +# and *.h) to filter out the source-files in the directories. If left 
  56.588 +# blank the following patterns are tested: 
  56.589 +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
  56.590 +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  56.591 +
  56.592 +FILE_PATTERNS          = *.c \
  56.593 +                         *.cc \
  56.594 +                         *.cxx \
  56.595 +                         *.cpp \
  56.596 +                         *.c++ \
  56.597 +                         *.d \
  56.598 +                         *.java \
  56.599 +                         *.ii \
  56.600 +                         *.ixx \
  56.601 +                         *.ipp \
  56.602 +                         *.i++ \
  56.603 +                         *.inl \
  56.604 +                         *.h \
  56.605 +                         *.hh \
  56.606 +                         *.hxx \
  56.607 +                         *.hpp \
  56.608 +                         *.h++ \
  56.609 +                         *.idl \
  56.610 +                         *.odl \
  56.611 +                         *.cs \
  56.612 +                         *.php \
  56.613 +                         *.php3 \
  56.614 +                         *.inc \
  56.615 +                         *.m \
  56.616 +                         *.mm \
  56.617 +                         *.dox \
  56.618 +                         *.py \
  56.619 +                         *.f90 \
  56.620 +                         *.f \
  56.621 +                         *.vhd \
  56.622 +                         *.vhdl \
  56.623 +                         *.h.in \
  56.624 +                         *.h.default \
  56.625 +                         *.md
  56.626 +
  56.627 +# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
  56.628 +# should be searched for input files as well. Possible values are YES and NO. 
  56.629 +# If left blank NO is used.
  56.630 +
  56.631 +RECURSIVE              = YES
  56.632 +
  56.633 +# The EXCLUDE tag can be used to specify files and/or directories that should 
  56.634 +# excluded from the INPUT source files. This way you can easily exclude a 
  56.635 +# subdirectory from a directory tree whose root is specified with the INPUT tag.
  56.636 +
  56.637 +EXCLUDE                = ../include/SDL_opengles2_gl2ext.h \
  56.638 +                         ../include/SDL_opengles2_gl2platform.h \
  56.639 +                         ../include/SDL_opengles2_khrplatform.h \
  56.640 +                         ../include/SDL_opengl_glext.h \
  56.641 +                         ../include/SDL_opengles2_gl2.h \
  56.642 +                         ../include/SDL_opengles2.h \
  56.643 +                         ../include/SDL_opengles.h \
  56.644 +                         ../include/SDL_opengl.h \
  56.645 +
  56.646 +
  56.647 +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
  56.648 +# directories that are symbolic links (a Unix filesystem feature) are excluded 
  56.649 +# from the input.
  56.650 +
  56.651 +EXCLUDE_SYMLINKS       = NO
  56.652 +
  56.653 +# If the value of the INPUT tag contains directories, you can use the 
  56.654 +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
  56.655 +# certain files from those directories. Note that the wildcards are matched 
  56.656 +# against the file with absolute path, so to exclude all test directories 
  56.657 +# for example use the pattern */test/*
  56.658 +
  56.659 +EXCLUDE_PATTERNS       =
  56.660 +
  56.661 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
  56.662 +# (namespaces, classes, functions, etc.) that should be excluded from the 
  56.663 +# output. The symbol name can be a fully qualified name, a word, or if the 
  56.664 +# wildcard * is used, a substring. Examples: ANamespace, AClass, 
  56.665 +# AClass::ANamespace, ANamespace::*Test
  56.666 +
  56.667 +EXCLUDE_SYMBOLS        = 
  56.668 +
  56.669 +# The EXAMPLE_PATH tag can be used to specify one or more files or 
  56.670 +# directories that contain example code fragments that are included (see 
  56.671 +# the \include command).
  56.672 +
  56.673 +EXAMPLE_PATH           =
  56.674 +
  56.675 +# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
  56.676 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  56.677 +# and *.h) to filter out the source-files in the directories. If left 
  56.678 +# blank all files are included.
  56.679 +
  56.680 +EXAMPLE_PATTERNS       = *
  56.681 +
  56.682 +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
  56.683 +# searched for input files to be used with the \include or \dontinclude 
  56.684 +# commands irrespective of the value of the RECURSIVE tag. 
  56.685 +# Possible values are YES and NO. If left blank NO is used.
  56.686 +
  56.687 +EXAMPLE_RECURSIVE      = YES
  56.688 +
  56.689 +# The IMAGE_PATH tag can be used to specify one or more files or 
  56.690 +# directories that contain image that are included in the documentation (see 
  56.691 +# the \image command).
  56.692 +
  56.693 +IMAGE_PATH             = 
  56.694 +
  56.695 +# The INPUT_FILTER tag can be used to specify a program that doxygen should 
  56.696 +# invoke to filter for each input file. Doxygen will invoke the filter program 
  56.697 +# by executing (via popen()) the command <filter> <input-file>, where <filter> 
  56.698 +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
  56.699 +# input file. Doxygen will then use the output that the filter program writes 
  56.700 +# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  56.701 +# ignored.
  56.702 +
  56.703 +INPUT_FILTER           = 
  56.704 +
  56.705 +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
  56.706 +# basis.  Doxygen will compare the file name with each pattern and apply the 
  56.707 +# filter if there is a match.  The filters are a list of the form: 
  56.708 +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
  56.709 +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
  56.710 +# is applied to all files.
  56.711 +
  56.712 +FILTER_PATTERNS        = 
  56.713 +
  56.714 +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
  56.715 +# INPUT_FILTER) will be used to filter the input files when producing source 
  56.716 +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  56.717 +
  56.718 +FILTER_SOURCE_FILES    = NO
  56.719 +
  56.720 +#---------------------------------------------------------------------------
  56.721 +# configuration options related to source browsing
  56.722 +#---------------------------------------------------------------------------
  56.723 +
  56.724 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
  56.725 +# be generated. Documented entities will be cross-referenced with these sources. 
  56.726 +# Note: To get rid of all source code in the generated output, make sure also 
  56.727 +# VERBATIM_HEADERS is set to NO.
  56.728 +
  56.729 +SOURCE_BROWSER         = YES
  56.730 +
  56.731 +# Setting the INLINE_SOURCES tag to YES will include the body 
  56.732 +# of functions and classes directly in the documentation.
  56.733 +
  56.734 +INLINE_SOURCES         = YES
  56.735 +
  56.736 +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
  56.737 +# doxygen to hide any special comment blocks from generated source code 
  56.738 +# fragments. Normal C and C++ comments will always remain visible.
  56.739 +
  56.740 +STRIP_CODE_COMMENTS    = NO
  56.741 +
  56.742 +# If the REFERENCED_BY_RELATION tag is set to YES 
  56.743 +# then for each documented function all documented 
  56.744 +# functions referencing it will be listed.
  56.745 +
  56.746 +REFERENCED_BY_RELATION = YES
  56.747 +
  56.748 +# If the REFERENCES_RELATION tag is set to YES 
  56.749 +# then for each documented function all documented entities 
  56.750 +# called/used by that function will be listed.
  56.751 +
  56.752 +REFERENCES_RELATION    = YES
  56.753 +
  56.754 +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
  56.755 +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
  56.756 +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
  56.757 +# link to the source code.  Otherwise they will link to the documentation.
  56.758 +
  56.759 +REFERENCES_LINK_SOURCE = YES
  56.760 +
  56.761 +# If the USE_HTAGS tag is set to YES then the references to source code 
  56.762 +# will point to the HTML generated by the htags(1) tool instead of doxygen 
  56.763 +# built-in source browser. The htags tool is part of GNU's global source 
  56.764 +# tagging system (see http://www.gnu.org/software/global/global.html). You 
  56.765 +# will need version 4.8.6 or higher.
  56.766 +
  56.767 +USE_HTAGS              = NO
  56.768 +
  56.769 +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
  56.770 +# will generate a verbatim copy of the header file for each class for 
  56.771 +# which an include is specified. Set to NO to disable this.
  56.772 +
  56.773 +VERBATIM_HEADERS       = YES
  56.774 +
  56.775 +#---------------------------------------------------------------------------
  56.776 +# configuration options related to the alphabetical class index
  56.777 +#---------------------------------------------------------------------------
  56.778 +
  56.779 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
  56.780 +# of all compounds will be generated. Enable this if the project 
  56.781 +# contains a lot of classes, structs, unions or interfaces.
  56.782 +
  56.783 +ALPHABETICAL_INDEX     = YES
  56.784 +
  56.785 +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
  56.786 +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
  56.787 +# in which this list will be split (can be a number in the range [1..20])
  56.788 +
  56.789 +COLS_IN_ALPHA_INDEX    = 5
  56.790 +
  56.791 +# In case all classes in a project start with a common prefix, all 
  56.792 +# classes will be put under the same header in the alphabetical index. 
  56.793 +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
  56.794 +# should be ignored while generating the index headers.
  56.795 +
  56.796 +IGNORE_PREFIX          = SDL_ \
  56.797 +                         SDL
  56.798 +
  56.799 +#---------------------------------------------------------------------------
  56.800 +# configuration options related to the HTML output
  56.801 +#---------------------------------------------------------------------------
  56.802 +
  56.803 +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
  56.804 +# generate HTML output.
  56.805 +
  56.806 +GENERATE_HTML          = YES
  56.807 +
  56.808 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
  56.809 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
  56.810 +# put in front of it. If left blank `html' will be used as the default path.
  56.811 +
  56.812 +HTML_OUTPUT            = html
  56.813 +
  56.814 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
  56.815 +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
  56.816 +# doxygen will generate files with .html extension.
  56.817 +
  56.818 +HTML_FILE_EXTENSION    = .html
  56.819 +
  56.820 +# The HTML_HEADER tag can be used to specify a personal HTML header for 
  56.821 +# each generated HTML page. If it is left blank doxygen will generate a 
  56.822 +# standard header.
  56.823 +
  56.824 +HTML_HEADER            = 
  56.825 +
  56.826 +# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  56.827 +# each generated HTML page. If it is left blank doxygen will generate a 
  56.828 +# standard footer.
  56.829 +
  56.830 +HTML_FOOTER            = 
  56.831 +
  56.832 +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  56.833 +# style sheet that is used by each HTML page. It can be used to 
  56.834 +# fine-tune the look of the HTML output. If the tag is left blank doxygen 
  56.835 +# will generate a default style sheet. Note that doxygen will try to copy 
  56.836 +# the style sheet file to the HTML output directory, so don't put your own 
  56.837 +# stylesheet in the HTML output directory as well, or it will be erased!
  56.838 +
  56.839 +HTML_STYLESHEET        = 
  56.840 +
  56.841 +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
  56.842 +# files or namespaces will be aligned in HTML using tables. If set to 
  56.843 +# NO a bullet list will be used.
  56.844 +
  56.845 +HTML_ALIGN_MEMBERS     = YES
  56.846 +
  56.847 +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
  56.848 +# documentation will contain sections that can be hidden and shown after the 
  56.849 +# page has loaded. For this to work a browser that supports 
  56.850 +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
  56.851 +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
  56.852 +
  56.853 +HTML_DYNAMIC_SECTIONS  = YES
  56.854 +
  56.855 +# If the GENERATE_DOCSET tag is set to YES, additional index files 
  56.856 +# will be generated that can be used as input for Apple's Xcode 3 
  56.857 +# integrated development environment, introduced with OSX 10.5 (Leopard). 
  56.858 +# To create a documentation set, doxygen will generate a Makefile in the 
  56.859 +# HTML output directory. Running make will produce the docset in that 
  56.860 +# directory and running "make install" will install the docset in 
  56.861 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
  56.862 +# it at startup. 
  56.863 +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
  56.864 +
  56.865 +GENERATE_DOCSET        = NO
  56.866 +
  56.867 +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
  56.868 +# feed. A documentation feed provides an umbrella under which multiple 
  56.869 +# documentation sets from a single provider (such as a company or product suite) 
  56.870 +# can be grouped.
  56.871 +
  56.872 +DOCSET_FEEDNAME        = "SDL 2.0 Doxygen"
  56.873 +
  56.874 +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
  56.875 +# should uniquely identify the documentation set bundle. This should be a 
  56.876 +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
  56.877 +# will append .docset to the name.
  56.878 +
  56.879 +DOCSET_BUNDLE_ID       = org.libsdl.sdl20
  56.880 +
  56.881 +# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
  56.882 +# will be generated that can be used as input for tools like the 
  56.883 +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
  56.884 +# of the generated HTML documentation.
  56.885 +
  56.886 +GENERATE_HTMLHELP      = NO
  56.887 +
  56.888 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
  56.889 +# be used to specify the file name of the resulting .chm file. You 
  56.890 +# can add a path in front of the file if the result should not be 
  56.891 +# written to the html output directory.
  56.892 +
  56.893 +CHM_FILE               = ./sdl20.chm
  56.894 +
  56.895 +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
  56.896 +# be used to specify the location (absolute path including file name) of 
  56.897 +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
  56.898 +# the HTML help compiler on the generated index.hhp.
  56.899 +
  56.900 +HHC_LOCATION           = 
  56.901 +
  56.902 +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
  56.903 +# controls if a separate .chi index file is generated (YES) or that 
  56.904 +# it should be included in the master .chm file (NO).
  56.905 +
  56.906 +GENERATE_CHI           = NO
  56.907 +
  56.908 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
  56.909 +# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
  56.910 +# content.
  56.911 +
  56.912 +CHM_INDEX_ENCODING     = 
  56.913 +
  56.914 +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
  56.915 +# controls whether a binary table of contents is generated (YES) or a 
  56.916 +# normal table of contents (NO) in the .chm file.
  56.917 +
  56.918 +BINARY_TOC             = NO
  56.919 +
  56.920 +# The TOC_EXPAND flag can be set to YES to add extra items for group members 
  56.921 +# to the contents of the HTML help documentation and to the tree view.
  56.922 +
  56.923 +TOC_EXPAND             = YES
  56.924 +
  56.925 +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
  56.926 +# are set, an additional index file will be generated that can be used as input for 
  56.927 +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
  56.928 +# HTML documentation.
  56.929 +
  56.930 +GENERATE_QHP           = NO
  56.931 +
  56.932 +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
  56.933 +# be used to specify the file name of the resulting .qch file. 
  56.934 +# The path specified is relative to the HTML output folder.
  56.935 +
  56.936 +QCH_FILE               = 
  56.937 +
  56.938 +# The QHP_NAMESPACE tag specifies the namespace to use when generating 
  56.939 +# Qt Help Project output. For more information please see 
  56.940 +# http://doc.trolltech.com/qthelpproject.html#namespace
  56.941 +
  56.942 +QHP_NAMESPACE          = 
  56.943 +
  56.944 +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
  56.945 +# Qt Help Project output. For more information please see 
  56.946 +# http://doc.trolltech.com/qthelpproject.html#virtual-folders
  56.947 +
  56.948 +QHP_VIRTUAL_FOLDER     = doc
  56.949 +
  56.950 +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
  56.951 +# For more information please see 
  56.952 +# http://doc.trolltech.com/qthelpproject.html#custom-filters
  56.953 +
  56.954 +QHP_CUST_FILTER_NAME   = 
  56.955 +
  56.956 +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
  56.957 +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
  56.958 +
  56.959 +QHP_CUST_FILTER_ATTRS  = 
  56.960 +
  56.961 +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
  56.962 +# filter section matches. 
  56.963 +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
  56.964 +
  56.965 +QHP_SECT_FILTER_ATTRS  = 
  56.966 +
  56.967 +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
  56.968 +# be used to specify the location of Qt's qhelpgenerator. 
  56.969 +# If non-empty doxygen will try to run qhelpgenerator on the generated 
  56.970 +# .qhp file.
  56.971 +
  56.972 +QHG_LOCATION           = 
  56.973 +
  56.974 +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
  56.975 +# top of each HTML page. The value NO (the default) enables the index and 
  56.976 +# the value YES disables it.
  56.977 +
  56.978 +DISABLE_INDEX          = NO
  56.979 +
  56.980 +# This tag can be used to set the number of enum values (range [1..20]) 
  56.981 +# that doxygen will group on one line in the generated HTML documentation.
  56.982 +
  56.983 +ENUM_VALUES_PER_LINE   = 1
  56.984 +
  56.985 +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
  56.986 +# structure should be generated to display hierarchical information. 
  56.987 +# If the tag value is set to FRAME, a side panel will be generated 
  56.988 +# containing a tree-like index structure (just like the one that 
  56.989 +# is generated for HTML Help). For this to work a browser that supports 
  56.990 +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
  56.991 +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
  56.992 +# probably better off using the HTML help feature. Other possible values 
  56.993 +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
  56.994 +# and Class Hierarchy pages using a tree view instead of an ordered list; 
  56.995 +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
  56.996 +# disables this behavior completely. For backwards compatibility with previous 
  56.997 +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
  56.998 +# respectively.
  56.999 +
 56.1000 +GENERATE_TREEVIEW      = ALL
 56.1001 +
 56.1002 +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
 56.1003 +# used to set the initial width (in pixels) of the frame in which the tree 
 56.1004 +# is shown.
 56.1005 +
 56.1006 +TREEVIEW_WIDTH         = 250
 56.1007 +
 56.1008 +# Use this tag to change the font size of Latex formulas included 
 56.1009 +# as images in the HTML documentation. The default is 10. Note that 
 56.1010 +# when you change the font size after a successful doxygen run you need 
 56.1011 +# to manually remove any form_*.png images from the HTML output directory 
 56.1012 +# to force them to be regenerated.
 56.1013 +
 56.1014 +FORMULA_FONTSIZE       = 10
 56.1015 +
 56.1016 +#---------------------------------------------------------------------------
 56.1017 +# configuration options related to the LaTeX output
 56.1018 +#---------------------------------------------------------------------------
 56.1019 +
 56.1020 +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
 56.1021 +# generate Latex output.
 56.1022 +
 56.1023 +GENERATE_LATEX         = NO
 56.1024 +
 56.1025 +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
 56.1026 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 56.1027 +# put in front of it. If left blank `latex' will be used as the default path.
 56.1028 +
 56.1029 +LATEX_OUTPUT           = latex
 56.1030 +
 56.1031 +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
 56.1032 +# invoked. If left blank `latex' will be used as the default command name.
 56.1033 +
 56.1034 +LATEX_CMD_NAME         = latex
 56.1035 +
 56.1036 +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
 56.1037 +# generate index for LaTeX. If left blank `makeindex' will be used as the 
 56.1038 +# default command name.
 56.1039 +
 56.1040 +MAKEINDEX_CMD_NAME     = makeindex
 56.1041 +
 56.1042 +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
 56.1043 +# LaTeX documents. This may be useful for small projects and may help to 
 56.1044 +# save some trees in general.
 56.1045 +
 56.1046 +COMPACT_LATEX          = NO
 56.1047 +
 56.1048 +# The PAPER_TYPE tag can be used to set the paper type that is used 
 56.1049 +# by the printer. Possible values are: a4, a4wide, letter, legal and 
 56.1050 +# executive. If left blank a4wide will be used.
 56.1051 +
 56.1052 +PAPER_TYPE             = a4wide
 56.1053 +
 56.1054 +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
 56.1055 +# packages that should be included in the LaTeX output.
 56.1056 +
 56.1057 +EXTRA_PACKAGES         = 
 56.1058 +
 56.1059 +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
 56.1060 +# the generated latex document. The header should contain everything until 
 56.1061 +# the first chapter. If it is left blank doxygen will generate a 
 56.1062 +# standard header. Notice: only use this tag if you know what you are doing!
 56.1063 +
 56.1064 +LATEX_HEADER           = 
 56.1065 +
 56.1066 +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
 56.1067 +# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
 56.1068 +# contain links (just like the HTML output) instead of page references 
 56.1069 +# This makes the output suitable for online browsing using a pdf viewer.
 56.1070 +
 56.1071 +PDF_HYPERLINKS         = YES
 56.1072 +
 56.1073 +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
 56.1074 +# plain latex in the generated Makefile. Set this option to YES to get a 
 56.1075 +# higher quality PDF documentation.
 56.1076 +
 56.1077 +USE_PDFLATEX           = YES
 56.1078 +
 56.1079 +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
 56.1080 +# command to the generated LaTeX files. This will instruct LaTeX to keep 
 56.1081 +# running if errors occur, instead of asking the user for help. 
 56.1082 +# This option is also used when generating formulas in HTML.
 56.1083 +
 56.1084 +LATEX_BATCHMODE        = NO
 56.1085 +
 56.1086 +# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
 56.1087 +# include the index chapters (such as File Index, Compound Index, etc.) 
 56.1088 +# in the output.
 56.1089 +
 56.1090 +LATEX_HIDE_INDICES     = NO
 56.1091 +
 56.1092 +# If LATEX_SOURCE_CODE is set to YES then doxygen will include
 56.1093 +# source code with syntax highlighting in the LaTeX output.
 56.1094 +# Note that which sources are shown also depends on other settings
 56.1095 +# such as SOURCE_BROWSER.
 56.1096 +
 56.1097 +LATEX_SOURCE_CODE      = NO
 56.1098 +
 56.1099 +#---------------------------------------------------------------------------
 56.1100 +# configuration options related to the RTF output
 56.1101 +#---------------------------------------------------------------------------
 56.1102 +
 56.1103 +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
 56.1104 +# The RTF output is optimized for Word 97 and may not look very pretty with 
 56.1105 +# other RTF readers or editors.
 56.1106 +
 56.1107 +GENERATE_RTF           = NO
 56.1108 +
 56.1109 +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
 56.1110 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 56.1111 +# put in front of it. If left blank `rtf' will be used as the default path.
 56.1112 +
 56.1113 +RTF_OUTPUT             = rtf
 56.1114 +
 56.1115 +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
 56.1116 +# RTF documents. This may be useful for small projects and may help to 
 56.1117 +# save some trees in general.
 56.1118 +
 56.1119 +COMPACT_RTF            = NO
 56.1120 +
 56.1121 +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
 56.1122 +# will contain hyperlink fields. The RTF file will 
 56.1123 +# contain links (just like the HTML output) instead of page references. 
 56.1124 +# This makes the output suitable for online browsing using WORD or other 
 56.1125 +# programs which support those fields. 
 56.1126 +# Note: wordpad (write) and others do not support links.
 56.1127 +
 56.1128 +RTF_HYPERLINKS         = NO
 56.1129 +
 56.1130 +# Load stylesheet definitions from file. Syntax is similar to doxygen's 
 56.1131 +# config file, i.e. a series of assignments. You only have to provide 
 56.1132 +# replacements, missing definitions are set to their default value.
 56.1133 +
 56.1134 +RTF_STYLESHEET_FILE    = 
 56.1135 +
 56.1136 +# Set optional variables used in the generation of an rtf document. 
 56.1137 +# Syntax is similar to doxygen's config file.
 56.1138 +
 56.1139 +RTF_EXTENSIONS_FILE    = 
 56.1140 +
 56.1141 +#---------------------------------------------------------------------------
 56.1142 +# configuration options related to the man page output
 56.1143 +#---------------------------------------------------------------------------
 56.1144 +
 56.1145 +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
 56.1146 +# generate man pages
 56.1147 +
 56.1148 +GENERATE_MAN           = NO
 56.1149 +
 56.1150 +# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
 56.1151 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 56.1152 +# put in front of it. If left blank `man' will be used as the default path.
 56.1153 +
 56.1154 +MAN_OUTPUT             = man
 56.1155 +
 56.1156 +# The MAN_EXTENSION tag determines the extension that is added to 
 56.1157 +# the generated man pages (default is the subroutine's section .3)
 56.1158 +
 56.1159 +MAN_EXTENSION          = .3
 56.1160 +
 56.1161 +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
 56.1162 +# then it will generate one additional man file for each entity 
 56.1163 +# documented in the real man page(s). These additional files 
 56.1164 +# only source the real man page, but without them the man command 
 56.1165 +# would be unable to find the correct page. The default is NO.
 56.1166 +
 56.1167 +MAN_LINKS              = NO
 56.1168 +
 56.1169 +#---------------------------------------------------------------------------
 56.1170 +# configuration options related to the XML output
 56.1171 +#---------------------------------------------------------------------------
 56.1172 +
 56.1173 +# If the GENERATE_XML tag is set to YES Doxygen will 
 56.1174 +# generate an XML file that captures the structure of 
 56.1175 +# the code including all documentation.
 56.1176 +
 56.1177 +GENERATE_XML           = NO
 56.1178 +
 56.1179 +# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
 56.1180 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 56.1181 +# put in front of it. If left blank `xml' will be used as the default path.
 56.1182 +
 56.1183 +XML_OUTPUT             = xml
 56.1184 +
 56.1185 +# The XML_SCHEMA tag can be used to specify an XML schema, 
 56.1186 +# which can be used by a validating XML parser to check the 
 56.1187 +# syntax of the XML files.
 56.1188 +
 56.1189 +XML_SCHEMA             = 
 56.1190 +
 56.1191 +# The XML_DTD tag can be used to specify an XML DTD, 
 56.1192 +# which can be used by a validating XML parser to check the 
 56.1193 +# syntax of the XML files.
 56.1194 +
 56.1195 +XML_DTD                = 
 56.1196 +
 56.1197 +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
 56.1198 +# dump the program listings (including syntax highlighting 
 56.1199 +# and cross-referencing information) to the XML output. Note that 
 56.1200 +# enabling this will significantly increase the size of the XML output.
 56.1201 +
 56.1202 +XML_PROGRAMLISTING     = YES
 56.1203 +
 56.1204 +#---------------------------------------------------------------------------
 56.1205 +# configuration options for the AutoGen Definitions output
 56.1206 +#---------------------------------------------------------------------------
 56.1207 +
 56.1208 +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
 56.1209 +# generate an AutoGen Definitions (see autogen.sf.net) file 
 56.1210 +# that captures the structure of the code including all 
 56.1211 +# documentation. Note that this feature is still experimental 
 56.1212 +# and incomplete at the moment.
 56.1213 +
 56.1214 +GENERATE_AUTOGEN_DEF   = NO
 56.1215 +
 56.1216 +#---------------------------------------------------------------------------
 56.1217 +# configuration options related to the Perl module output
 56.1218 +#---------------------------------------------------------------------------
 56.1219 +
 56.1220 +# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
 56.1221 +# generate a Perl module file that captures the structure of 
 56.1222 +# the code including all documentation. Note that this 
 56.1223 +# feature is still experimental and incomplete at the 
 56.1224 +# moment.
 56.1225 +
 56.1226 +GENERATE_PERLMOD       = NO
 56.1227 +
 56.1228 +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
 56.1229 +# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
 56.1230 +# to generate PDF and DVI output from the Perl module output.
 56.1231 +
 56.1232 +PERLMOD_LATEX          = NO
 56.1233 +
 56.1234 +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
 56.1235 +# nicely formatted so it can be parsed by a human reader.  This is useful 
 56.1236 +# if you want to understand what is going on.  On the other hand, if this 
 56.1237 +# tag is set to NO the size of the Perl module output will be much smaller 
 56.1238 +# and Perl will parse it just the same.
 56.1239 +
 56.1240 +PERLMOD_PRETTY         = YES
 56.1241 +
 56.1242 +# The names of the make variables in the generated doxyrules.make file 
 56.1243 +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
 56.1244 +# This is useful so different doxyrules.make files included by the same 
 56.1245 +# Makefile don't overwrite each other's variables.
 56.1246 +
 56.1247 +PERLMOD_MAKEVAR_PREFIX = 
 56.1248 +
 56.1249 +#---------------------------------------------------------------------------
 56.1250 +# Configuration options related to the preprocessor   
 56.1251 +#---------------------------------------------------------------------------
 56.1252 +
 56.1253 +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
 56.1254 +# evaluate all C-preprocessor directives found in the sources and include 
 56.1255 +# files.
 56.1256 +
 56.1257 +ENABLE_PREPROCESSING   = YES
 56.1258 +
 56.1259 +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
 56.1260 +# names in the source code. If set to NO (the default) only conditional 
 56.1261 +# compilation will be performed. Macro expansion can be done in a controlled 
 56.1262 +# way by setting EXPAND_ONLY_PREDEF to YES.
 56.1263 +
 56.1264 +MACRO_EXPANSION        = YES
 56.1265 +
 56.1266 +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
 56.1267 +# then the macro expansion is limited to the macros specified with the 
 56.1268 +# PREDEFINED and EXPAND_AS_DEFINED tags.
 56.1269 +
 56.1270 +EXPAND_ONLY_PREDEF     = YES
 56.1271 +
 56.1272 +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
 56.1273 +# in the INCLUDE_PATH (see below) will be search if a #include is found.
 56.1274 +
 56.1275 +SEARCH_INCLUDES        = YES
 56.1276 +
 56.1277 +# The INCLUDE_PATH tag can be used to specify one or more directories that 
 56.1278 +# contain include files that are not input files but should be processed by 
 56.1279 +# the preprocessor.
 56.1280 +
 56.1281 +INCLUDE_PATH           =
 56.1282 +
 56.1283 +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
 56.1284 +# patterns (like *.h and *.hpp) to filter out the header-files in the 
 56.1285 +# directories. If left blank, the patterns specified with FILE_PATTERNS will 
 56.1286 +# be used.
 56.1287 +
 56.1288 +INCLUDE_FILE_PATTERNS  = 
 56.1289 +
 56.1290 +# The PREDEFINED tag can be used to specify one or more macro names that 
 56.1291 +# are defined before the preprocessor is started (similar to the -D option of 
 56.1292 +# gcc). The argument of the tag is a list of macros of the form: name 
 56.1293 +# or name=definition (no spaces). If the definition and the = are 
 56.1294 +# omitted =1 is assumed. To prevent a macro definition from being 
 56.1295 +# undefined via #undef or recursively expanded use the := operator 
 56.1296 +# instead of the = operator.
 56.1297 +
 56.1298 +PREDEFINED             = DOXYGEN_SHOULD_IGNORE_THIS=1 \
 56.1299 +                         DECLSPEC= \
 56.1300 +                         SDLCALL= \
 56.1301 +                         _WIN32=1
 56.1302 +
 56.1303 +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 56.1304 +# this tag can be used to specify a list of macro names that should be expanded. 
 56.1305 +# The macro definition that is found in the sources will be used. 
 56.1306 +# Use the PREDEFINED tag if you want to use a different macro definition.
 56.1307 +
 56.1308 +EXPAND_AS_DEFINED      = 
 56.1309 +
 56.1310 +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
 56.1311 +# doxygen's preprocessor will remove all function-like macros that are alone 
 56.1312 +# on a line, have an all uppercase name, and do not end with a semicolon. Such 
 56.1313 +# function macros are typically used for boiler-plate code, and will confuse 
 56.1314 +# the parser if not removed.
 56.1315 +
 56.1316 +SKIP_FUNCTION_MACROS   = YES
 56.1317 +
 56.1318 +#---------------------------------------------------------------------------
 56.1319 +# Configuration::additions related to external references   
 56.1320 +#---------------------------------------------------------------------------
 56.1321 +
 56.1322 +# The TAGFILES option can be used to specify one or more tagfiles. 
 56.1323 +# Optionally an initial location of the external documentation 
 56.1324 +# can be added for each tagfile. The format of a tag file without 
 56.1325 +# this location is as follows: 
 56.1326 +#   TAGFILES = file1 file2 ... 
 56.1327 +# Adding location for the tag files is done as follows: 
 56.1328 +#   TAGFILES = file1=loc1 "file2 = loc2" ... 
 56.1329 +# where "loc1" and "loc2" can be relative or absolute paths or 
 56.1330 +# URLs. If a location is present for each tag, the installdox tool 
 56.1331 +# does not have to be run to correct the links. 
 56.1332 +# Note that each tag file must have a unique name 
 56.1333 +# (where the name does NOT include the path) 
 56.1334 +# If a tag file is not located in the directory in which doxygen 
 56.1335 +# is run, you must also specify the path to the tagfile here.
 56.1336 +
 56.1337 +TAGFILES               = 
 56.1338 +
 56.1339 +# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
 56.1340 +# a tag file that is based on the input files it reads.
 56.1341 +
 56.1342 +GENERATE_TAGFILE       = ./SDL.tag
 56.1343 +
 56.1344 +# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
 56.1345 +# in the class index. If set to NO only the inherited external classes 
 56.1346 +# will be listed.
 56.1347 +
 56.1348 +ALLEXTERNALS           = NO
 56.1349 +
 56.1350 +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
 56.1351 +# in the modules index. If set to NO, only the current project's groups will 
 56.1352 +# be listed.
 56.1353 +
 56.1354 +EXTERNAL_GROUPS        = YES
 56.1355 +
 56.1356 +# The PERL_PATH should be the absolute path and name of the perl script 
 56.1357 +# interpreter (i.e. the result of `which perl').
 56.1358 +
 56.1359 +PERL_PATH              = c:\Perl\bin\perl.exe
 56.1360 +
 56.1361 +#---------------------------------------------------------------------------
 56.1362 +# Configuration options related to the dot tool   
 56.1363 +#---------------------------------------------------------------------------
 56.1364 +
 56.1365 +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
 56.1366 +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
 56.1367 +# or super classes. Setting the tag to NO turns the diagrams off. Note that 
 56.1368 +# this option is superseded by the HAVE_DOT option below. This is only a 
 56.1369 +# fallback. It is recommended to install and use dot, since it yields more 
 56.1370 +# powerful graphs.
 56.1371 +
 56.1372 +CLASS_DIAGRAMS         = YES
 56.1373 +
 56.1374 +# You can define message sequence charts within doxygen comments using the \msc 
 56.1375 +# command. Doxygen will then run the mscgen tool (see 
 56.1376 +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
 56.1377 +# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
 56.1378 +# the mscgen tool resides. If left empty the tool is assumed to be found in the 
 56.1379 +# default search path.
 56.1380 +
 56.1381 +MSCGEN_PATH            = 
 56.1382 +
 56.1383 +# If set to YES, the inheritance and collaboration graphs will hide 
 56.1384 +# inheritance and usage relations if the target is undocumented 
 56.1385 +# or is not a class.
 56.1386 +
 56.1387 +HIDE_UNDOC_RELATIONS   = YES
 56.1388 +
 56.1389 +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
 56.1390 +# available from the path. This tool is part of Graphviz, a graph visualization 
 56.1391 +# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
 56.1392 +# have no effect if this option is set to NO (the default)
 56.1393 +
 56.1394 +HAVE_DOT               = YES
 56.1395 +
 56.1396 +# By default doxygen will write a font called FreeSans.ttf to the output 
 56.1397 +# directory and reference it in all dot files that doxygen generates. This 
 56.1398 +# font does not include all possible unicode characters however, so when you need 
 56.1399 +# these (or just want a differently looking font) you can specify the font name 
 56.1400 +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
 56.1401 +# which can be done by putting it in a standard location or by setting the 
 56.1402 +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
 56.1403 +# containing the font.
 56.1404 +
 56.1405 +DOT_FONTNAME           = FreeSans
 56.1406 +
 56.1407 +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
 56.1408 +# The default size is 10pt.
 56.1409 +
 56.1410 +DOT_FONTSIZE           = 10
 56.1411 +
 56.1412 +# By default doxygen will tell dot to use the output directory to look for the 
 56.1413 +# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
 56.1414 +# different font using DOT_FONTNAME you can set the path where dot 
 56.1415 +# can find it using this tag.
 56.1416 +
 56.1417 +DOT_FONTPATH           = 
 56.1418 +
 56.1419 +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 56.1420 +# will generate a graph for each documented class showing the direct and 
 56.1421 +# indirect inheritance relations. Setting this tag to YES will force the 
 56.1422 +# the CLASS_DIAGRAMS tag to NO.
 56.1423 +
 56.1424 +CLASS_GRAPH            = YES
 56.1425 +
 56.1426 +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 56.1427 +# will generate a graph for each documented class showing the direct and 
 56.1428 +# indirect implementation dependencies (inheritance, containment, and 
 56.1429 +# class references variables) of the class with other documented classes.
 56.1430 +
 56.1431 +COLLABORATION_GRAPH    = YES
 56.1432 +
 56.1433 +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
 56.1434 +# will generate a graph for groups, showing the direct groups dependencies
 56.1435 +
 56.1436 +GROUP_GRAPHS           = YES
 56.1437 +
 56.1438 +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
 56.1439 +# collaboration diagrams in a style similar to the OMG's Unified Modeling 
 56.1440 +# Language.
 56.1441 +
 56.1442 +UML_LOOK               = NO
 56.1443 +
 56.1444 +# If set to YES, the inheritance and collaboration graphs will show the 
 56.1445 +# relations between templates and their instances.
 56.1446 +
 56.1447 +TEMPLATE_RELATIONS     = YES
 56.1448 +
 56.1449 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
 56.1450 +# tags are set to YES then doxygen will generate a graph for each documented 
 56.1451 +# file showing the direct and indirect include dependencies of the file with 
 56.1452 +# other documented files.
 56.1453 +
 56.1454 +INCLUDE_GRAPH          = YES
 56.1455 +
 56.1456 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
 56.1457 +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
 56.1458 +# documented header file showing the documented files that directly or 
 56.1459 +# indirectly include this file.
 56.1460 +
 56.1461 +INCLUDED_BY_GRAPH      = YES
 56.1462 +
 56.1463 +# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
 56.1464 +# doxygen will generate a call dependency graph for every global function 
 56.1465 +# or class method. Note that enabling this option will significantly increase 
 56.1466 +# the time of a run. So in most cases it will be better to enable call graphs 
 56.1467 +# for selected functions only using the \callgraph command.
 56.1468 +
 56.1469 +CALL_GRAPH             = NO
 56.1470 +
 56.1471 +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
 56.1472 +# doxygen will generate a caller dependency graph for every global function 
 56.1473 +# or class method. Note that enabling this option will significantly increase 
 56.1474 +# the time of a run. So in most cases it will be better to enable caller 
 56.1475 +# graphs for selected functions only using the \callergraph command.
 56.1476 +
 56.1477 +CALLER_GRAPH           = NO
 56.1478 +
 56.1479 +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
 56.1480 +# will graphical hierarchy of all classes instead of a textual one.
 56.1481 +
 56.1482 +GRAPHICAL_HIERARCHY    = YES
 56.1483 +
 56.1484 +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
 56.1485 +# then doxygen will show the dependencies a directory has on other directories 
 56.1486 +# in a graphical way. The dependency relations are determined by the #include 
 56.1487 +# relations between the files in the directories.
 56.1488 +
 56.1489 +DIRECTORY_GRAPH        = YES
 56.1490 +
 56.1491 +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
 56.1492 +# generated by dot. Possible values are png, jpg, or gif 
 56.1493 +# If left blank png will be used.
 56.1494 +
 56.1495 +DOT_IMAGE_FORMAT       = png
 56.1496 +
 56.1497 +# The tag DOT_PATH can be used to specify the path where the dot tool can be 
 56.1498 +# found. If left blank, it is assumed the dot tool can be found in the path.
 56.1499 +
 56.1500 +DOT_PATH               = 
 56.1501 +
 56.1502 +# The DOTFILE_DIRS tag can be used to specify one or more directories that 
 56.1503 +# contain dot files that are included in the documentation (see the 
 56.1504 +# \dotfile command).
 56.1505 +
 56.1506 +DOTFILE_DIRS           = 
 56.1507 +
 56.1508 +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
 56.1509 +# nodes that will be shown in the graph. If the number of nodes in a graph 
 56.1510 +# becomes larger than this value, doxygen will truncate the graph, which is 
 56.1511 +# visualized by representing a node as a red box. Note that doxygen if the 
 56.1512 +# number of direct children of the root node in a graph is already larger than 
 56.1513 +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
 56.1514 +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 56.1515 +
 56.1516 +DOT_GRAPH_MAX_NODES    = 50
 56.1517 +
 56.1518 +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
 56.1519 +# graphs generated by dot. A depth value of 3 means that only nodes reachable 
 56.1520 +# from the root by following a path via at most 3 edges will be shown. Nodes 
 56.1521 +# that lay further from the root node will be omitted. Note that setting this 
 56.1522 +# option to 1 or 2 may greatly reduce the computation time needed for large 
 56.1523 +# code bases. Also note that the size of a graph can be further restricted by 
 56.1524 +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
 56.1525 +
 56.1526 +MAX_DOT_GRAPH_DEPTH    = 2
 56.1527 +
 56.1528 +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
 56.1529 +# background. This is disabled by default, because dot on Windows does not 
 56.1530 +# seem to support this out of the box. Warning: Depending on the platform used, 
 56.1531 +# enabling this option may lead to badly anti-aliased labels on the edges of 
 56.1532 +# a graph (i.e. they become hard to read).
 56.1533 +
 56.1534 +DOT_TRANSPARENT        = NO
 56.1535 +
 56.1536 +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
 56.1537 +# files in one run (i.e. multiple -o and -T options on the command line). This 
 56.1538 +# makes dot run faster, but since only newer versions of dot (>1.8.10) 
 56.1539 +# support this, this feature is disabled by default.
 56.1540 +
 56.1541 +DOT_MULTI_TARGETS      = YES
 56.1542 +
 56.1543 +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
 56.1544 +# generate a legend page explaining the meaning of the various boxes and 
 56.1545 +# arrows in the dot generated graphs.
 56.1546 +
 56.1547 +GENERATE_LEGEND        = YES
 56.1548 +
 56.1549 +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
 56.1550 +# remove the intermediate dot files that are used to generate 
 56.1551 +# the various graphs.
 56.1552 +
 56.1553 +DOT_CLEANUP            = YES
 56.1554 +
 56.1555 +#---------------------------------------------------------------------------
 56.1556 +# Options related to the search engine
 56.1557 +#---------------------------------------------------------------------------
 56.1558 +
 56.1559 +# The SEARCHENGINE tag specifies whether or not a search engine should be 
 56.1560 +# used. If set to NO the values of all tags below this one will be ignored.
 56.1561 +
 56.1562 +SEARCHENGINE           = NO
    57.1 --- a/include/SDL.h	Tue Jul 29 00:36:12 2014 -0300
    57.2 +++ b/include/SDL.h	Thu Jul 31 03:14:10 2014 -0300
    57.3 @@ -25,41 +25,6 @@
    57.4   *  Main include header for the SDL library
    57.5   */
    57.6  
    57.7 -/**
    57.8 - *  \mainpage Simple DirectMedia Layer (SDL)
    57.9 - *
   57.10 - *  http://www.libsdl.org/
   57.11 - *
   57.12 - *  \section intro_sec Introduction
   57.13 - *
   57.14 - *  Simple DirectMedia Layer is a cross-platform development library designed
   57.15 - *  to provide low level access to audio, keyboard, mouse, joystick, and
   57.16 - *  graphics hardware via OpenGL and Direct3D. It is used by video playback
   57.17 - *  software, emulators, and popular games including Valve's award winning
   57.18 - *  catalog and many Humble Bundle games.
   57.19 - *
   57.20 - *  SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
   57.21 - *  Support for other platforms may be found in the source code.
   57.22 - *
   57.23 - *  SDL is written in C, works natively with C++, and there are bindings 
   57.24 - *  available for several other languages, including C# and Python.
   57.25 - *
   57.26 - *  This library is distributed under the zlib license, which can be found
   57.27 - *  in the file "COPYING.txt".
   57.28 - *
   57.29 - *  The best way to learn how to use SDL is to check out the header files in
   57.30 - *  the "include" subdirectory and the programs in the "test" subdirectory.
   57.31 - *  The header files and test programs are well commented and always up to date.
   57.32 - *  More documentation and FAQs are available online at:
   57.33 - *      http://wiki.libsdl.org/
   57.34 - *
   57.35 - *  If you need help with the library, or just want to discuss SDL related
   57.36 - *  issues, you can join the developers mailing list:
   57.37 - *      http://www.libsdl.org/mailing-list.php
   57.38 - *
   57.39 - *  Enjoy!
   57.40 - *      Sam Lantinga                (slouken@libsdl.org)
   57.41 - */
   57.42  
   57.43  #ifndef _SDL_H
   57.44  #define _SDL_H
    58.1 --- a/include/SDL_assert.h	Tue Jul 29 00:36:12 2014 -0300
    58.2 +++ b/include/SDL_assert.h	Thu Jul 31 03:14:10 2014 -0300
    58.3 @@ -141,16 +141,13 @@
    58.4  #define SDL_enabled_assert(condition) \
    58.5      do { \
    58.6          while ( !(condition) ) { \
    58.7 -            static struct SDL_assert_data assert_data = { \
    58.8 +            static struct SDL_assert_data sdl_assert_data = { \
    58.9                  0, 0, #condition, 0, 0, 0, 0 \
   58.10              }; \
   58.11 -            const SDL_assert_state state = SDL_ReportAssertion(&assert_data, \
   58.12 -                                                               SDL_FUNCTION, \
   58.13 -                                                               SDL_FILE, \
   58.14 -                                                               SDL_LINE); \
   58.15 -            if (state == SDL_ASSERTION_RETRY) { \
   58.16 +            const SDL_assert_state sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
   58.17 +            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
   58.18                  continue; /* go again. */ \
   58.19 -            } else if (state == SDL_ASSERTION_BREAK) { \
   58.20 +            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
   58.21                  SDL_TriggerBreakpoint(); \
   58.22              } \
   58.23              break; /* not retrying. */ \
    59.1 --- a/include/SDL_audio.h	Tue Jul 29 00:36:12 2014 -0300
    59.2 +++ b/include/SDL_audio.h	Thu Jul 31 03:14:10 2014 -0300
    59.3 @@ -155,6 +155,9 @@
    59.4   *
    59.5   *  Once the callback returns, the buffer will no longer be valid.
    59.6   *  Stereo samples are stored in a LRLRLR ordering.
    59.7 + *
    59.8 + *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
    59.9 + *  you like. Just open your audio device with a NULL callback.
   59.10   */
   59.11  typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
   59.12                                              int len);
   59.13 @@ -171,8 +174,8 @@
   59.14      Uint16 samples;             /**< Audio buffer size in samples (power of 2) */
   59.15      Uint16 padding;             /**< Necessary for some compile environments */
   59.16      Uint32 size;                /**< Audio buffer size in bytes (calculated) */
   59.17 -    SDL_AudioCallback callback;
   59.18 -    void *userdata;
   59.19 +    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
   59.20 +    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
   59.21  } SDL_AudioSpec;
   59.22  
   59.23  
   59.24 @@ -273,9 +276,11 @@
   59.25   *      to the audio buffer, and the length in bytes of the audio buffer.
   59.26   *      This function usually runs in a separate thread, and so you should
   59.27   *      protect data structures that it accesses by calling SDL_LockAudio()
   59.28 - *      and SDL_UnlockAudio() in your code.
   59.29 + *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
   59.30 + *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
   59.31 + *      more audio samples to be played.
   59.32   *    - \c desired->userdata is passed as the first parameter to your callback
   59.33 - *      function.
   59.34 + *      function. If you passed a NULL callback, this value is ignored.
   59.35   *
   59.36   *  The audio device starts out playing silence when it's opened, and should
   59.37   *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
   59.38 @@ -475,6 +480,100 @@
   59.39                                                  Uint32 len, int volume);
   59.40  
   59.41  /**
   59.42 + *  Queue more audio on non-callback devices.
   59.43 + *
   59.44 + *  SDL offers two ways to feed audio to the device: you can either supply a
   59.45 + *  callback that SDL triggers with some frequency to obtain more audio
   59.46 + *  (pull method), or you can supply no callback, and then SDL will expect
   59.47 + *  you to supply data at regular intervals (push method) with this function.
   59.48 + *
   59.49 + *  There are no limits on the amount of data you can queue, short of
   59.50 + *  exhaustion of address space. Queued data will drain to the device as
   59.51 + *  necessary without further intervention from you. If the device needs
   59.52 + *  audio but there is not enough queued, it will play silence to make up
   59.53 + *  the difference. This means you will have skips in your audio playback
   59.54 + *  if you aren't routinely queueing sufficient data.
   59.55 + *
   59.56 + *  This function copies the supplied data, so you are safe to free it when
   59.57 + *  the function returns. This function is thread-safe, but queueing to the
   59.58 + *  same device from two threads at once does not promise which buffer will
   59.59 + *  be queued first.
   59.60 + *
   59.61 + *  You may not queue audio on a device that is using an application-supplied
   59.62 + *  callback; doing so returns an error. You have to use the audio callback
   59.63 + *  or queue audio with this function, but not both.
   59.64 + *
   59.65 + *  You should not call SDL_LockAudio() on the device before queueing; SDL
   59.66 + *  handles locking internally for this function.
   59.67 + *
   59.68 + *  \param dev The device ID to which we will queue audio.
   59.69 + *  \param data The data to queue to the device for later playback.
   59.70 + *  \param len The number of bytes (not samples!) to which (data) points.
   59.71 + *  \return zero on success, -1 on error.
   59.72 + *
   59.73 + *  \sa SDL_GetQueuedAudioSize
   59.74 + *  \sa SDL_ClearQueuedAudio
   59.75 + */
   59.76 +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
   59.77 +
   59.78 +/**
   59.79 + *  Get the number of bytes of still-queued audio.
   59.80 + *
   59.81 + *  This is the number of bytes that have been queued for playback with
   59.82 + *  SDL_QueueAudio(), but have not yet been sent to the hardware.
   59.83 + *
   59.84 + *  Once we've sent it to the hardware, this function can not decide the exact
   59.85 + *  byte boundary of what has been played. It's possible that we just gave the
   59.86 + *  hardware several kilobytes right before you called this function, but it
   59.87 + *  hasn't played any of it yet, or maybe half of it, etc.
   59.88 + *
   59.89 + *  You may not queue audio on a device that is using an application-supplied
   59.90 + *  callback; calling this function on such a device always returns 0.
   59.91 + *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
   59.92 + *  but not both.
   59.93 + *
   59.94 + *  You should not call SDL_LockAudio() on the device before querying; SDL
   59.95 + *  handles locking internally for this function.
   59.96 + *
   59.97 + *  \param dev The device ID of which we will query queued audio size.
   59.98 + *  \return Number of bytes (not samples!) of queued audio.
   59.99 + *
  59.100 + *  \sa SDL_QueueAudio
  59.101 + *  \sa SDL_ClearQueuedAudio
  59.102 + */
  59.103 +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
  59.104 +
  59.105 +/**
  59.106 + *  Drop any queued audio data waiting to be sent to the hardware.
  59.107 + *
  59.108 + *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0 and
  59.109 + *  the hardware will start playing silence if more audio isn't queued.
  59.110 + *
  59.111 + *  This will not prevent playback of queued audio that's already been sent
  59.112 + *  to the hardware, as we can not undo that, so expect there to be some
  59.113 + *  fraction of a second of audio that might still be heard. This can be
  59.114 + *  useful if you want to, say, drop any pending music during a level change
  59.115 + *  in your game.
  59.116 + *
  59.117 + *  You may not queue audio on a device that is using an application-supplied
  59.118 + *  callback; calling this function on such a device is always a no-op.
  59.119 + *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
  59.120 + *  but not both.
  59.121 + *
  59.122 + *  You should not call SDL_LockAudio() on the device before clearing the
  59.123 + *  queue; SDL handles locking internally for this function.
  59.124 + *
  59.125 + *  This function always succeeds and thus returns void.
  59.126 + *
  59.127 + *  \param dev The device ID of which to clear the audio queue.
  59.128 + *
  59.129 + *  \sa SDL_QueueAudio
  59.130 + *  \sa SDL_GetQueuedAudioSize
  59.131 + */
  59.132 +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
  59.133 +
  59.134 +
  59.135 +/**
  59.136   *  \name Audio lock functions
  59.137   *
  59.138   *  The lock manipulated by these functions protects the callback function.
    60.1 --- a/include/doxyfile	Tue Jul 29 00:36:12 2014 -0300
    60.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.3 @@ -1,1555 +0,0 @@
    60.4 -# Doxyfile 1.5.9
    60.5 -
    60.6 -# This file describes the settings to be used by the documentation system
    60.7 -# doxygen (www.doxygen.org) for a project
    60.8 -#
    60.9 -# All text after a hash (#) is considered a comment and will be ignored
   60.10 -# The format is:
   60.11 -#       TAG = value [value, ...]
   60.12 -# For lists items can also be appended using:
   60.13 -#       TAG += value [value, ...]
   60.14 -# Values that contain spaces should be placed between quotes (" ")
   60.15 -
   60.16 -#---------------------------------------------------------------------------
   60.17 -# Project related configuration options
   60.18 -#---------------------------------------------------------------------------
   60.19 -
   60.20 -# This tag specifies the encoding used for all characters in the config file 
   60.21 -# that follow. The default is UTF-8 which is also the encoding used for all 
   60.22 -# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
   60.23 -# iconv built into libc) for the transcoding. See 
   60.24 -# http://www.gnu.org/software/libiconv for the list of possible encodings.
   60.25 -
   60.26 -DOXYFILE_ENCODING      = UTF-8
   60.27 -
   60.28 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
   60.29 -# by quotes) that should identify the project.
   60.30 -
   60.31 -PROJECT_NAME           = SDL
   60.32 -
   60.33 -# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
   60.34 -# This could be handy for archiving the generated documentation or 
   60.35 -# if some version control system is used.
   60.36 -
   60.37 -PROJECT_NUMBER         = 2.0.0
   60.38 -
   60.39 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
   60.40 -# base path where the generated documentation will be put. 
   60.41 -# If a relative path is entered, it will be relative to the location 
   60.42 -# where doxygen was started. If left blank the current directory will be used.
   60.43 -
   60.44 -OUTPUT_DIRECTORY       = .
   60.45 -
   60.46 -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
   60.47 -# 4096 sub-directories (in 2 levels) under the output directory of each output 
   60.48 -# format and will distribute the generated files over these directories. 
   60.49 -# Enabling this option can be useful when feeding doxygen a huge amount of 
   60.50 -# source files, where putting all generated files in the same directory would 
   60.51 -# otherwise cause performance problems for the file system.
   60.52 -
   60.53 -CREATE_SUBDIRS         = YES
   60.54 -
   60.55 -# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
   60.56 -# documentation generated by doxygen is written. Doxygen will use this 
   60.57 -# information to generate all constant output in the proper language. 
   60.58 -# The default language is English, other supported languages are: 
   60.59 -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
   60.60 -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
   60.61 -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
   60.62 -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
   60.63 -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
   60.64 -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
   60.65 -
   60.66 -OUTPUT_LANGUAGE        = English
   60.67 -
   60.68 -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
   60.69 -# include brief member descriptions after the members that are listed in 
   60.70 -# the file and class documentation (similar to JavaDoc). 
   60.71 -# Set to NO to disable this.
   60.72 -
   60.73 -BRIEF_MEMBER_DESC      = YES
   60.74 -
   60.75 -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
   60.76 -# the brief description of a member or function before the detailed description. 
   60.77 -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
   60.78 -# brief descriptions will be completely suppressed.
   60.79 -
   60.80 -REPEAT_BRIEF           = YES
   60.81 -
   60.82 -# This tag implements a quasi-intelligent brief description abbreviator 
   60.83 -# that is used to form the text in various listings. Each string 
   60.84 -# in this list, if found as the leading text of the brief description, will be 
   60.85 -# stripped from the text and the result after processing the whole list, is 
   60.86 -# used as the annotated text. Otherwise, the brief description is used as-is. 
   60.87 -# If left blank, the following values are used ("$name" is automatically 
   60.88 -# replaced with the name of the entity): "The $name class" "The $name widget" 
   60.89 -# "The $name file" "is" "provides" "specifies" "contains" 
   60.90 -# "represents" "a" "an" "the"
   60.91 -
   60.92 -ABBREVIATE_BRIEF       = "The $name class" \
   60.93 -                         "The $name widget" \
   60.94 -                         "The $name file" \
   60.95 -                         is \
   60.96 -                         provides \
   60.97 -                         specifies \
   60.98 -                         contains \
   60.99 -                         represents \
  60.100 -                         a \
  60.101 -                         an \
  60.102 -                         the
  60.103 -
  60.104 -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
  60.105 -# Doxygen will generate a detailed section even if there is only a brief 
  60.106 -# description.
  60.107 -
  60.108 -ALWAYS_DETAILED_SEC    = YES
  60.109 -
  60.110 -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
  60.111 -# inherited members of a class in the documentation of that class as if those 
  60.112 -# members were ordinary class members. Constructors, destructors and assignment 
  60.113 -# operators of the base classes will not be shown.
  60.114 -
  60.115 -INLINE_INHERITED_MEMB  = NO
  60.116 -
  60.117 -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
  60.118 -# path before files name in the file list and in the header files. If set 
  60.119 -# to NO the shortest path that makes the file name unique will be used.
  60.120 -
  60.121 -FULL_PATH_NAMES        = YES
  60.122 -
  60.123 -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
  60.124 -# can be used to strip a user-defined part of the path. Stripping is 
  60.125 -# only done if one of the specified strings matches the left-hand part of 
  60.126 -# the path. The tag can be used to show relative paths in the file list. 
  60.127 -# If left blank the directory from which doxygen is run is used as the 
  60.128 -# path to strip.
  60.129 -
  60.130 -STRIP_FROM_PATH        =
  60.131 -
  60.132 -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
  60.133 -# the path mentioned in the documentation of a class, which tells 
  60.134 -# the reader which header file to include in order to use a class. 
  60.135 -# If left blank only the name of the header file containing the class 
  60.136 -# definition is used. Otherwise one should specify the include paths that 
  60.137 -# are normally passed to the compiler using the -I flag.
  60.138 -
  60.139 -STRIP_FROM_INC_PATH    = 
  60.140 -
  60.141 -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
  60.142 -# (but less readable) file names. This can be useful is your file systems 
  60.143 -# doesn't support long names like on DOS, Mac, or CD-ROM.
  60.144 -
  60.145 -SHORT_NAMES            = NO
  60.146 -
  60.147 -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
  60.148 -# will interpret the first line (until the first dot) of a JavaDoc-style 
  60.149 -# comment as the brief description. If set to NO, the JavaDoc 
  60.150 -# comments will behave just like regular Qt-style comments 
  60.151 -# (thus requiring an explicit @brief command for a brief description.)
  60.152 -
  60.153 -JAVADOC_AUTOBRIEF      = NO
  60.154 -
  60.155 -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
  60.156 -# interpret the first line (until the first dot) of a Qt-style 
  60.157 -# comment as the brief description. If set to NO, the comments 
  60.158 -# will behave just like regular Qt-style comments (thus requiring 
  60.159 -# an explicit \brief command for a brief description.)
  60.160 -
  60.161 -QT_AUTOBRIEF           = NO
  60.162 -
  60.163 -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
  60.164 -# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
  60.165 -# comments) as a brief description. This used to be the default behaviour. 
  60.166 -# The new default is to treat a multi-line C++ comment block as a detailed 
  60.167 -# description. Set this tag to YES if you prefer the old behaviour instead.
  60.168 -
  60.169 -MULTILINE_CPP_IS_BRIEF = NO
  60.170 -
  60.171 -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
  60.172 -# member inherits the documentation from any documented member that it 
  60.173 -# re-implements.
  60.174 -
  60.175 -INHERIT_DOCS           = YES
  60.176 -
  60.177 -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
  60.178 -# a new page for each member. If set to NO, the documentation of a member will 
  60.179 -# be part of the file/class/namespace that contains it.
  60.180 -
  60.181 -SEPARATE_MEMBER_PAGES  = NO
  60.182 -
  60.183 -# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
  60.184 -# Doxygen uses this value to replace tabs by spaces in code fragments.
  60.185 -
  60.186 -TAB_SIZE               = 8
  60.187 -
  60.188 -# This tag can be used to specify a number of aliases that acts 
  60.189 -# as commands in the documentation. An alias has the form "name=value". 
  60.190 -# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
  60.191 -# put the command \sideeffect (or @sideeffect) in the documentation, which 
  60.192 -# will result in a user-defined paragraph with heading "Side Effects:". 
  60.193 -# You can put \n's in the value part of an alias to insert newlines.
  60.194 -
  60.195 -ALIASES                = "defined=\"\def\"" \
  60.196 -                         "discussion=\"\par Discussion:\n\""
  60.197 -
  60.198 -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
  60.199 -# sources only. Doxygen will then generate output that is more tailored for C. 
  60.200 -# For instance, some of the names that are used will be different. The list 
  60.201 -# of all members will be omitted, etc.
  60.202 -
  60.203 -OPTIMIZE_OUTPUT_FOR_C  = YES
  60.204 -
  60.205 -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
  60.206 -# sources only. Doxygen will then generate output that is more tailored for 
  60.207 -# Java. For instance, namespaces will be presented as packages, qualified 
  60.208 -# scopes will look different, etc.
  60.209 -
  60.210 -OPTIMIZE_OUTPUT_JAVA   = NO
  60.211 -
  60.212 -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
  60.213 -# sources only. Doxygen will then generate output that is more tailored for 
  60.214 -# Fortran.
  60.215 -
  60.216 -OPTIMIZE_FOR_FORTRAN   = NO
  60.217 -
  60.218 -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
  60.219 -# sources. Doxygen will then generate output that is tailored for 
  60.220 -# VHDL.
  60.221 -
  60.222 -OPTIMIZE_OUTPUT_VHDL   = NO
  60.223 -
  60.224 -# Doxygen selects the parser to use depending on the extension of the files it parses. 
  60.225 -# With this tag you can assign which parser to use for a given extension. 
  60.226 -# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
  60.227 -# The format is ext=language, where ext is a file extension, and language is one of 
  60.228 -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
  60.229 -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
  60.230 -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
  60.231 -# use: inc=Fortran f=C. Note that for custom extensions you also need to set
  60.232 -# FILE_PATTERNS otherwise the files are not read by doxygen.
  60.233 -
  60.234 -EXTENSION_MAPPING      = 
  60.235 -
  60.236 -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
  60.237 -# to include (a tag file for) the STL sources as input, then you should 
  60.238 -# set this tag to YES in order to let doxygen match functions declarations and 
  60.239 -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
  60.240 -# func(std::string) {}). This also make the inheritance and collaboration 
  60.241 -# diagrams that involve STL classes more complete and accurate.
  60.242 -
  60.243 -BUILTIN_STL_SUPPORT    = YES
  60.244 -
  60.245 -# If you use Microsoft's C++/CLI language, you should set this option to YES to 
  60.246 -# enable parsing support.
  60.247 -
  60.248 -CPP_CLI_SUPPORT        = NO
  60.249 -
  60.250 -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
  60.251 -# Doxygen will parse them like normal C++ but will assume all classes use public 
  60.252 -# instead of private inheritance when no explicit protection keyword is present.
  60.253 -
  60.254 -SIP_SUPPORT            = NO
  60.255 -
  60.256 -# For Microsoft's IDL there are propget and propput attributes to indicate getter 
  60.257 -# and setter methods for a property. Setting this option to YES (the default) 
  60.258 -# will make doxygen to replace the get and set methods by a property in the 
  60.259 -# documentation. This will only work if the methods are indeed getting or 
  60.260 -# setting a simple type. If this is not the case, or you want to show the 
  60.261 -# methods anyway, you should set this option to NO.
  60.262 -
  60.263 -IDL_PROPERTY_SUPPORT   = YES
  60.264 -
  60.265 -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
  60.266 -# tag is set to YES, then doxygen will reuse the documentation of the first 
  60.267 -# member in the group (if any) for the other members of the group. By default 
  60.268 -# all members of a group must be documented explicitly.
  60.269 -
  60.270 -DISTRIBUTE_GROUP_DOC   = NO
  60.271 -
  60.272 -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
  60.273 -# the same type (for instance a group of public functions) to be put as a 
  60.274 -# subgroup of that type (e.g. under the Public Functions section). Set it to 
  60.275 -# NO to prevent subgrouping. Alternatively, this can be done per class using 
  60.276 -# the \nosubgrouping command.
  60.277 -
  60.278 -SUBGROUPING            = YES
  60.279 -
  60.280 -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
  60.281 -# is documented as struct, union, or enum with the name of the typedef. So 
  60.282 -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
  60.283 -# with name TypeT. When disabled the typedef will appear as a member of a file, 
  60.284 -# namespace, or class. And the struct will be named TypeS. This can typically 
  60.285 -# be useful for C code in case the coding convention dictates that all compound 
  60.286 -# types are typedef'ed and only the typedef is referenced, never the tag name.
  60.287 -
  60.288 -TYPEDEF_HIDES_STRUCT   = YES
  60.289 -
  60.290 -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
  60.291 -# determine which symbols to keep in memory and which to flush to disk. 
  60.292 -# When the cache is full, less often used symbols will be written to disk. 
  60.293 -# For small to medium size projects (<1000 input files) the default value is 
  60.294 -# probably good enough. For larger projects a too small cache size can cause 
  60.295 -# doxygen to be busy swapping symbols to and from disk most of the time 
  60.296 -# causing a significant performance penality. 
  60.297 -# If the system has enough physical memory increasing the cache will improve the 
  60.298 -# performance by keeping more symbols in memory. Note that the value works on 
  60.299 -# a logarithmic scale so increasing the size by one will rougly double the 
  60.300 -# memory usage. The cache size is given by this formula: 
  60.301 -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
  60.302 -# corresponding to a cache size of 2^16 = 65536 symbols
  60.303 -
  60.304 -SYMBOL_CACHE_SIZE      = 0
  60.305 -
  60.306 -#---------------------------------------------------------------------------
  60.307 -# Build related configuration options
  60.308 -#---------------------------------------------------------------------------
  60.309 -
  60.310 -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
  60.311 -# documentation are documented, even if no documentation was available. 
  60.312 -# Private class members and static file members will be hidden unless 
  60.313 -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  60.314 -
  60.315 -EXTRACT_ALL            = YES
  60.316 -
  60.317 -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
  60.318 -# will be included in the documentation.
  60.319 -
  60.320 -EXTRACT_PRIVATE        = YES
  60.321 -
  60.322 -# If the EXTRACT_STATIC tag is set to YES all static members of a file 
  60.323 -# will be included in the documentation.
  60.324 -
  60.325 -EXTRACT_STATIC         = YES
  60.326 -
  60.327 -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
  60.328 -# defined locally in source files will be included in the documentation. 
  60.329 -# If set to NO only classes defined in header files are included.
  60.330 -
  60.331 -EXTRACT_LOCAL_CLASSES  = YES
  60.332 -
  60.333 -# This flag is only useful for Objective-C code. When set to YES local 
  60.334 -# methods, which are defined in the implementation section but not in 
  60.335 -# the interface are included in the documentation. 
  60.336 -# If set to NO (the default) only methods in the interface are included.
  60.337 -
  60.338 -EXTRACT_LOCAL_METHODS  = YES
  60.339 -
  60.340 -# If this flag is set to YES, the members of anonymous namespaces will be 
  60.341 -# extracted and appear in the documentation as a namespace called 
  60.342 -# 'anonymous_namespace{file}', where file will be replaced with the base 
  60.343 -# name of the file that contains the anonymous namespace. By default 
  60.344 -# anonymous namespace are hidden.
  60.345 -
  60.346 -EXTRACT_ANON_NSPACES   = YES
  60.347 -
  60.348 -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
  60.349 -# undocumented members of documented classes, files or namespaces. 
  60.350 -# If set to NO (the default) these members will be included in the 
  60.351 -# various overviews, but no documentation section is generated. 
  60.352 -# This option has no effect if EXTRACT_ALL is enabled.
  60.353 -
  60.354 -HIDE_UNDOC_MEMBERS     = NO
  60.355 -
  60.356 -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
  60.357 -# undocumented classes that are normally visible in the class hierarchy. 
  60.358 -# If set to NO (the default) these classes will be included in the various 
  60.359 -# overviews. This option has no effect if EXTRACT_ALL is enabled.
  60.360 -
  60.361 -HIDE_UNDOC_CLASSES     = NO
  60.362 -
  60.363 -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
  60.364 -# friend (class|struct|union) declarations. 
  60.365 -# If set to NO (the default) these declarations will be included in the 
  60.366 -# documentation.
  60.367 -
  60.368 -HIDE_FRIEND_COMPOUNDS  = NO
  60.369 -
  60.370 -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
  60.371 -# documentation blocks found inside the body of a function. 
  60.372 -# If set to NO (the default) these blocks will be appended to the 
  60.373 -# function's detailed documentation block.
  60.374 -
  60.375 -HIDE_IN_BODY_DOCS      = NO
  60.376 -
  60.377 -# The INTERNAL_DOCS tag determines if documentation 
  60.378 -# that is typed after a \internal command is included. If the tag is set 
  60.379 -# to NO (the default) then the documentation will be excluded. 
  60.380 -# Set it to YES to include the internal documentation.
  60.381 -
  60.382 -INTERNAL_DOCS          = YES
  60.383 -
  60.384 -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
  60.385 -# file names in lower-case letters. If set to YES upper-case letters are also 
  60.386 -# allowed. This is useful if you have classes or files whose names only differ 
  60.387 -# in case and if your file system supports case sensitive file names. Windows 
  60.388 -# and Mac users are advised to set this option to NO.
  60.389 -
  60.390 -CASE_SENSE_NAMES       = NO
  60.391 -
  60.392 -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
  60.393 -# will show members with their full class and namespace scopes in the 
  60.394 -# documentation. If set to YES the scope will be hidden.
  60.395 -
  60.396 -HIDE_SCOPE_NAMES       = NO
  60.397 -
  60.398 -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
  60.399 -# will put a list of the files that are included by a file in the documentation 
  60.400 -# of that file.
  60.401 -
  60.402 -SHOW_INCLUDE_FILES     = YES
  60.403 -
  60.404 -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
  60.405 -# is inserted in the documentation for inline members.
  60.406 -
  60.407 -INLINE_INFO            = YES
  60.408 -
  60.409 -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
  60.410 -# will sort the (detailed) documentation of file and class members 
  60.411 -# alphabetically by member name. If set to NO the members will appear in 
  60.412 -# declaration order.
  60.413 -
  60.414 -SORT_MEMBER_DOCS       = YES
  60.415 -
  60.416 -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
  60.417 -# brief documentation of file, namespace and class members alphabetically 
  60.418 -# by member name. If set to NO (the default) the members will appear in 
  60.419 -# declaration order.
  60.420 -
  60.421 -SORT_BRIEF_DOCS        = NO
  60.422 -
  60.423 -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
  60.424 -# hierarchy of group names into alphabetical order. If set to NO (the default) 
  60.425 -# the group names will appear in their defined order.
  60.426 -
  60.427 -SORT_GROUP_NAMES       = NO
  60.428 -
  60.429 -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
  60.430 -# sorted by fully-qualified names, including namespaces. If set to 
  60.431 -# NO (the default), the class list will be sorted only by class name, 
  60.432 -# not including the namespace part. 
  60.433 -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
  60.434 -# Note: This option applies only to the class list, not to the 
  60.435 -# alphabetical list.
  60.436 -
  60.437 -SORT_BY_SCOPE_NAME     = NO
  60.438 -
  60.439 -# The GENERATE_TODOLIST tag can be used to enable (YES) or 
  60.440 -# disable (NO) the todo list. This list is created by putting \todo 
  60.441 -# commands in the documentation.
  60.442 -
  60.443 -GENERATE_TODOLIST      = YES
  60.444 -
  60.445 -# The GENERATE_TESTLIST tag can be used to enable (YES) or 
  60.446 -# disable (NO) the test list. This list is created by putting \test 
  60.447 -# commands in the documentation.
  60.448 -
  60.449 -GENERATE_TESTLIST      = YES
  60.450 -
  60.451 -# The GENERATE_BUGLIST tag can be used to enable (YES) or 
  60.452 -# disable (NO) the bug list. This list is created by putting \bug 
  60.453 -# commands in the documentation.
  60.454 -
  60.455 -GENERATE_BUGLIST       = YES
  60.456 -
  60.457 -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
  60.458 -# disable (NO) the deprecated list. This list is created by putting 
  60.459 -# \deprecated commands in the documentation.
  60.460 -
  60.461 -GENERATE_DEPRECATEDLIST= YES
  60.462 -
  60.463 -# The ENABLED_SECTIONS tag can be used to enable conditional 
  60.464 -# documentation sections, marked by \if sectionname ... \endif.
  60.465 -
  60.466 -ENABLED_SECTIONS       = 
  60.467 -
  60.468 -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
  60.469 -# the initial value of a variable or define consists of for it to appear in 
  60.470 -# the documentation. If the initializer consists of more lines than specified 
  60.471 -# here it will be hidden. Use a value of 0 to hide initializers completely. 
  60.472 -# The appearance of the initializer of individual variables and defines in the 
  60.473 -# documentation can be controlled using \showinitializer or \hideinitializer 
  60.474 -# command in the documentation regardless of this setting.
  60.475 -
  60.476 -MAX_INITIALIZER_LINES  = 30
  60.477 -
  60.478 -# If the sources in your project are distributed over multiple directories 
  60.479 -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
  60.480 -# in the documentation. The default is NO.
  60.481 -
  60.482 -SHOW_DIRECTORIES       = YES
  60.483 -
  60.484 -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
  60.485 -# This will remove the Files entry from the Quick Index and from the 
  60.486 -# Folder Tree View (if specified). The default is YES.
  60.487 -
  60.488 -SHOW_FILES             = YES
  60.489 -
  60.490 -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
  60.491 -# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
  60.492 -# and from the Folder Tree View (if specified). The default is YES.
  60.493 -
  60.494 -SHOW_NAMESPACES        = YES
  60.495 -
  60.496 -# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
  60.497 -# doxygen should invoke to get the current version for each file (typically from 
  60.498 -# the version control system). Doxygen will invoke the program by executing (via 
  60.499 -# popen()) the command <command> <input-file>, where <command> is the value of 
  60.500 -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
  60.501 -# provided by doxygen. Whatever the program writes to standard output 
  60.502 -# is used as the file version. See the manual for examples.
  60.503 -
  60.504 -FILE_VERSION_FILTER    = 
  60.505 -
  60.506 -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
  60.507 -# doxygen. The layout file controls the global structure of the generated output files 
  60.508 -# in an output format independent way. The create the layout file that represents 
  60.509 -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
  60.510 -# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
  60.511 -# of the layout file.
  60.512 -
  60.513 -LAYOUT_FILE            = 
  60.514 -
  60.515 -#---------------------------------------------------------------------------
  60.516 -# configuration options related to warning and progress messages
  60.517 -#---------------------------------------------------------------------------
  60.518 -
  60.519 -# The QUIET tag can be used to turn on/off the messages that are generated 
  60.520 -# by doxygen. Possible values are YES and NO. If left blank NO is used.
  60.521 -
  60.522 -QUIET                  = NO
  60.523 -
  60.524 -# The WARNINGS tag can be used to turn on/off the warning messages that are 
  60.525 -# generated by doxygen. Possible values are YES and NO. If left blank 
  60.526 -# NO is used.
  60.527 -
  60.528 -WARNINGS               = YES
  60.529 -
  60.530 -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
  60.531 -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
  60.532 -# automatically be disabled.
  60.533 -
  60.534 -WARN_IF_UNDOCUMENTED   = YES
  60.535 -
  60.536 -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
  60.537 -# potential errors in the documentation, such as not documenting some 
  60.538 -# parameters in a documented function, or documenting parameters that 
  60.539 -# don't exist or using markup commands wrongly.
  60.540 -
  60.541 -WARN_IF_DOC_ERROR      = YES
  60.542 -
  60.543 -# This WARN_NO_PARAMDOC option can be abled to get warnings for 
  60.544 -# functions that are documented, but have no documentation for their parameters 
  60.545 -# or return value. If set to NO (the default) doxygen will only warn about 
  60.546 -# wrong or incomplete parameter documentation, but not about the absence of 
  60.547 -# documentation.
  60.548 -
  60.549 -WARN_NO_PARAMDOC       = YES
  60.550 -
  60.551 -# The WARN_FORMAT tag determines the format of the warning messages that 
  60.552 -# doxygen can produce. The string should contain the $file, $line, and $text 
  60.553 -# tags, which will be replaced by the file and line number from which the 
  60.554 -# warning originated and the warning text. Optionally the format may contain 
  60.555 -# $version, which will be replaced by the version of the file (if it could 
  60.556 -# be obtained via FILE_VERSION_FILTER)
  60.557 -
  60.558 -WARN_FORMAT            = "$file:$line: $text"
  60.559 -
  60.560 -# The WARN_LOGFILE tag can be used to specify a file to which warning 
  60.561 -# and error messages should be written. If left blank the output is written 
  60.562 -# to stderr.
  60.563 -
  60.564 -WARN_LOGFILE           = ./doxygen_warn.txt
  60.565 -
  60.566 -#---------------------------------------------------------------------------
  60.567 -# configuration options related to the input files
  60.568 -#---------------------------------------------------------------------------
  60.569 -
  60.570 -# The INPUT tag can be used to specify the files and/or directories that contain 
  60.571 -# documented source files. You may enter file names like "myfile.cpp" or 
  60.572 -# directories like "/usr/src/myproject". Separate the files or directories 
  60.573 -# with spaces.
  60.574 -
  60.575 -INPUT                  = .
  60.576 -
  60.577 -# This tag can be used to specify the character encoding of the source files 
  60.578 -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
  60.579 -# also the default input encoding. Doxygen uses libiconv (or the iconv built 
  60.580 -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
  60.581 -# the list of possible encodings.
  60.582 -
  60.583 -INPUT_ENCODING         = UTF-8
  60.584 -
  60.585 -# If the value of the INPUT tag contains directories, you can use the 
  60.586 -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  60.587 -# and *.h) to filter out the source-files in the directories. If left 
  60.588 -# blank the following patterns are tested: 
  60.589 -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
  60.590 -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  60.591 -
  60.592 -FILE_PATTERNS          = *.c \
  60.593 -                         *.cc \
  60.594 -                         *.cxx \
  60.595 -                         *.cpp \
  60.596 -                         *.c++ \
  60.597 -                         *.d \
  60.598 -                         *.java \
  60.599 -                         *.ii \
  60.600 -                         *.ixx \
  60.601 -                         *.ipp \
  60.602 -                         *.i++ \
  60.603 -                         *.inl \
  60.604 -                         *.h \
  60.605 -                         *.hh \
  60.606 -                         *.hxx \
  60.607 -                         *.hpp \
  60.608 -                         *.h++ \
  60.609 -                         *.idl \
  60.610 -                         *.odl \
  60.611 -                         *.cs \
  60.612 -                         *.php \
  60.613 -                         *.php3 \
  60.614 -                         *.inc \
  60.615 -                         *.m \
  60.616 -                         *.mm \
  60.617 -                         *.dox \
  60.618 -                         *.py \
  60.619 -                         *.f90 \
  60.620 -                         *.f \
  60.621 -                         *.vhd \
  60.622 -                         *.vhdl \
  60.623 -                         *.h.in \
  60.624 -                         *.h.default
  60.625 -
  60.626 -# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
  60.627 -# should be searched for input files as well. Possible values are YES and NO. 
  60.628 -# If left blank NO is used.
  60.629 -
  60.630 -RECURSIVE              = YES
  60.631 -
  60.632 -# The EXCLUDE tag can be used to specify files and/or directories that should 
  60.633 -# excluded from the INPUT source files. This way you can easily exclude a 
  60.634 -# subdirectory from a directory tree whose root is specified with the INPUT tag.
  60.635 -
  60.636 -EXCLUDE                = ../doxy \
  60.637 -                         ../test \
  60.638 -                         ../Xcode \
  60.639 -                         ../VisualC \
  60.640 -                         ../VisualCE \
  60.641 -                         ../Xcode-iOS
  60.642 -
  60.643 -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
  60.644 -# directories that are symbolic links (a Unix filesystem feature) are excluded 
  60.645 -# from the input.
  60.646 -
  60.647 -EXCLUDE_SYMLINKS       = NO
  60.648 -
  60.649 -# If the value of the INPUT tag contains directories, you can use the 
  60.650 -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
  60.651 -# certain files from those directories. Note that the wildcards are matched 
  60.652 -# against the file with absolute path, so to exclude all test directories 
  60.653 -# for example use the pattern */test/*
  60.654 -
  60.655 -EXCLUDE_PATTERNS       =
  60.656 -
  60.657 -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
  60.658 -# (namespaces, classes, functions, etc.) that should be excluded from the 
  60.659 -# output. The symbol name can be a fully qualified name, a word, or if the 
  60.660 -# wildcard * is used, a substring. Examples: ANamespace, AClass, 
  60.661 -# AClass::ANamespace, ANamespace::*Test
  60.662 -
  60.663 -EXCLUDE_SYMBOLS        = 
  60.664 -
  60.665 -# The EXAMPLE_PATH tag can be used to specify one or more files or 
  60.666 -# directories that contain example code fragments that are included (see 
  60.667 -# the \include command).
  60.668 -
  60.669 -EXAMPLE_PATH           =
  60.670 -
  60.671 -# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
  60.672 -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  60.673 -# and *.h) to filter out the source-files in the directories. If left 
  60.674 -# blank all files are included.
  60.675 -
  60.676 -EXAMPLE_PATTERNS       = *
  60.677 -
  60.678 -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
  60.679 -# searched for input files to be used with the \include or \dontinclude 
  60.680 -# commands irrespective of the value of the RECURSIVE tag. 
  60.681 -# Possible values are YES and NO. If left blank NO is used.
  60.682 -
  60.683 -EXAMPLE_RECURSIVE      = YES
  60.684 -
  60.685 -# The IMAGE_PATH tag can be used to specify one or more files or 
  60.686 -# directories that contain image that are included in the documentation (see 
  60.687 -# the \image command).
  60.688 -
  60.689 -IMAGE_PATH             = 
  60.690 -
  60.691 -# The INPUT_FILTER tag can be used to specify a program that doxygen should 
  60.692 -# invoke to filter for each input file. Doxygen will invoke the filter program 
  60.693 -# by executing (via popen()) the command <filter> <input-file>, where <filter> 
  60.694 -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
  60.695 -# input file. Doxygen will then use the output that the filter program writes 
  60.696 -# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  60.697 -# ignored.
  60.698 -
  60.699 -INPUT_FILTER           = 
  60.700 -
  60.701 -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
  60.702 -# basis.  Doxygen will compare the file name with each pattern and apply the 
  60.703 -# filter if there is a match.  The filters are a list of the form: 
  60.704 -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
  60.705 -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
  60.706 -# is applied to all files.
  60.707 -
  60.708 -FILTER_PATTERNS        = 
  60.709 -
  60.710 -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
  60.711 -# INPUT_FILTER) will be used to filter the input files when producing source 
  60.712 -# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  60.713 -
  60.714 -FILTER_SOURCE_FILES    = NO
  60.715 -
  60.716 -#---------------------------------------------------------------------------
  60.717 -# configuration options related to source browsing
  60.718 -#---------------------------------------------------------------------------
  60.719 -
  60.720 -# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
  60.721 -# be generated. Documented entities will be cross-referenced with these sources. 
  60.722 -# Note: To get rid of all source code in the generated output, make sure also 
  60.723 -# VERBATIM_HEADERS is set to NO.
  60.724 -
  60.725 -SOURCE_BROWSER         = YES
  60.726 -
  60.727 -# Setting the INLINE_SOURCES tag to YES will include the body 
  60.728 -# of functions and classes directly in the documentation.
  60.729 -
  60.730 -INLINE_SOURCES         = YES
  60.731 -
  60.732 -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
  60.733 -# doxygen to hide any special comment blocks from generated source code 
  60.734 -# fragments. Normal C and C++ comments will always remain visible.
  60.735 -
  60.736 -STRIP_CODE_COMMENTS    = NO
  60.737 -
  60.738 -# If the REFERENCED_BY_RELATION tag is set to YES 
  60.739 -# then for each documented function all documented 
  60.740 -# functions referencing it will be listed.
  60.741 -
  60.742 -REFERENCED_BY_RELATION = YES
  60.743 -
  60.744 -# If the REFERENCES_RELATION tag is set to YES 
  60.745 -# then for each documented function all documented entities 
  60.746 -# called/used by that function will be listed.
  60.747 -
  60.748 -REFERENCES_RELATION    = YES
  60.749 -
  60.750 -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
  60.751 -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
  60.752 -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
  60.753 -# link to the source code.  Otherwise they will link to the documentation.
  60.754 -
  60.755 -REFERENCES_LINK_SOURCE = YES
  60.756 -
  60.757 -# If the USE_HTAGS tag is set to YES then the references to source code 
  60.758 -# will point to the HTML generated by the htags(1) tool instead of doxygen 
  60.759 -# built-in source browser. The htags tool is part of GNU's global source 
  60.760 -# tagging system (see http://www.gnu.org/software/global/global.html). You 
  60.761 -# will need version 4.8.6 or higher.
  60.762 -
  60.763 -USE_HTAGS              = NO
  60.764 -
  60.765 -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
  60.766 -# will generate a verbatim copy of the header file for each class for 
  60.767 -# which an include is specified. Set to NO to disable this.
  60.768 -
  60.769 -VERBATIM_HEADERS       = YES
  60.770 -
  60.771 -#---------------------------------------------------------------------------
  60.772 -# configuration options related to the alphabetical class index
  60.773 -#---------------------------------------------------------------------------
  60.774 -
  60.775 -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
  60.776 -# of all compounds will be generated. Enable this if the project 
  60.777 -# contains a lot of classes, structs, unions or interfaces.
  60.778 -
  60.779 -ALPHABETICAL_INDEX     = YES
  60.780 -
  60.781 -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
  60.782 -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
  60.783 -# in which this list will be split (can be a number in the range [1..20])
  60.784 -
  60.785 -COLS_IN_ALPHA_INDEX    = 5
  60.786 -
  60.787 -# In case all classes in a project start with a common prefix, all 
  60.788 -# classes will be put under the same header in the alphabetical index. 
  60.789 -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
  60.790 -# should be ignored while generating the index headers.
  60.791 -
  60.792 -IGNORE_PREFIX          = SDL_ \
  60.793 -                         SDL
  60.794 -
  60.795 -#---------------------------------------------------------------------------
  60.796 -# configuration options related to the HTML output
  60.797 -#---------------------------------------------------------------------------
  60.798 -
  60.799 -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
  60.800 -# generate HTML output.
  60.801 -
  60.802 -GENERATE_HTML          = YES
  60.803 -
  60.804 -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
  60.805 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
  60.806 -# put in front of it. If left blank `html' will be used as the default path.
  60.807 -
  60.808 -HTML_OUTPUT            = html
  60.809 -
  60.810 -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
  60.811 -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
  60.812 -# doxygen will generate files with .html extension.
  60.813 -
  60.814 -HTML_FILE_EXTENSION    = .html
  60.815 -
  60.816 -# The HTML_HEADER tag can be used to specify a personal HTML header for 
  60.817 -# each generated HTML page. If it is left blank doxygen will generate a 
  60.818 -# standard header.
  60.819 -
  60.820 -HTML_HEADER            = 
  60.821 -
  60.822 -# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  60.823 -# each generated HTML page. If it is left blank doxygen will generate a 
  60.824 -# standard footer.
  60.825 -
  60.826 -HTML_FOOTER            = 
  60.827 -
  60.828 -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  60.829 -# style sheet that is used by each HTML page. It can be used to 
  60.830 -# fine-tune the look of the HTML output. If the tag is left blank doxygen 
  60.831 -# will generate a default style sheet. Note that doxygen will try to copy 
  60.832 -# the style sheet file to the HTML output directory, so don't put your own 
  60.833 -# stylesheet in the HTML output directory as well, or it will be erased!
  60.834 -
  60.835 -HTML_STYLESHEET        = 
  60.836 -
  60.837 -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
  60.838 -# files or namespaces will be aligned in HTML using tables. If set to 
  60.839 -# NO a bullet list will be used.
  60.840 -
  60.841 -HTML_ALIGN_MEMBERS     = YES
  60.842 -
  60.843 -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
  60.844 -# documentation will contain sections tha