Moved documentation to docs, recreated a simple README.txt, fixed build
authorSam Lantinga <slouken@libsdl.org>
Tue, 29 Jul 2014 08:04:15 -0700
changeset 9025d09d4b578e77
parent 9023 276802355854
child 9030 3ac4c7b7c769
Moved documentation to docs, recreated a simple README.txt, fixed build
INSTALL.txt
README-SDL.txt
README.txt
doc/README-SDL.md
doc/README-android.md
doc/README-cmake.md
doc/README-directfb.md
doc/README-dynapi.md
doc/README-gesture.md
doc/README-hg.md
doc/README-ios.md
doc/README-linux.md
doc/README-macosx.md
doc/README-nacl.md
doc/README-pandora.md
doc/README-platforms.md
doc/README-porting.md
doc/README-psp.md
doc/README-raspberrypi.md
doc/README-touch.md
doc/README-wince.md
doc/README-windows.md
doc/README-winrt.md
doc/README.md
doc/doxyfile
docs/README-android.md
docs/README-cmake.md
docs/README-directfb.md
docs/README-dynapi.md
docs/README-gesture.md
docs/README-hg.md
docs/README-ios.md
docs/README-linux.md
docs/README-macosx.md
docs/README-nacl.md
docs/README-pandora.md
docs/README-platforms.md
docs/README-porting.md
docs/README-psp.md
docs/README-raspberrypi.md
docs/README-touch.md
docs/README-wince.md
docs/README-windows.md
docs/README-winrt.md
docs/README.md
docs/doxyfile
     1.1 --- a/INSTALL.txt	Tue Jul 29 09:20:12 2014 -0300
     1.2 +++ b/INSTALL.txt	Tue Jul 29 08:04:15 2014 -0700
     1.3 @@ -9,7 +9,7 @@
     1.4          * Run './configure; make; make install'
     1.5  
     1.6          Mac OS X with Xcode:
     1.7 -        * Read README-macosx.txt
     1.8 +        * Read docs/README-macosx.md
     1.9  
    1.10          Mac OS X from the command line:
    1.11          * Run './configure; make; make install'
    1.12 @@ -18,13 +18,13 @@
    1.13          * Run './configure; make; make install'
    1.14  
    1.15          Android:
    1.16 -        * Read README-android.txt
    1.17 +        * Read docs/README-android.md
    1.18  
    1.19          iOS:
    1.20 -        * Read README-ios.txt
    1.21 +        * Read docs/README-ios.md
    1.22  
    1.23          Using Cmake:
    1.24 -        * Read README-cmake.txt
    1.25 +        * Read docs/README-cmake.md
    1.26  
    1.27      2.  Look at the example programs in ./test, and check out the online
    1.28          documentation at http://wiki.libsdl.org/
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/README-SDL.txt	Tue Jul 29 08:04:15 2014 -0700
     2.3 @@ -0,0 +1,13 @@
     2.4 +
     2.5 +Please distribute this file with the SDL runtime environment:
     2.6 +
     2.7 +The Simple DirectMedia Layer (SDL for short) is a cross-platform library
     2.8 +designed to make it easy to write multi-media software, such as games and
     2.9 +emulators.
    2.10 +
    2.11 +The Simple DirectMedia Layer library source code is available from:
    2.12 +http://www.libsdl.org/
    2.13 +
    2.14 +This library is distributed under the terms of the zlib license:
    2.15 +http://www.zlib.net/zlib_license.html
    2.16 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/README.txt	Tue Jul 29 08:04:15 2014 -0700
     3.3 @@ -0,0 +1,21 @@
     3.4 +
     3.5 +                         Simple DirectMedia Layer
     3.6 +
     3.7 +                                  (SDL)
     3.8 +
     3.9 +                                Version 2.0
    3.10 +
    3.11 +---
    3.12 +http://www.libsdl.org/
    3.13 +
    3.14 +Simple DirectMedia Layer is a cross-platform development library designed
    3.15 +to provide low level access to audio, keyboard, mouse, joystick, and graphics
    3.16 +hardware via OpenGL and Direct3D. It is used by video playback software,
    3.17 +emulators, and popular games including Valve's award winning catalog
    3.18 +and many Humble Bundle games.
    3.19 +
    3.20 +More extensive documentation is available in the docs directory, starting
    3.21 +with README.md
    3.22 +
    3.23 +Enjoy!
    3.24 +	Sam Lantinga				(slouken@libsdl.org)
     4.1 --- a/doc/README-SDL.md	Tue Jul 29 09:20:12 2014 -0300
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,13 +0,0 @@
     4.4 -
     4.5 -Please distribute this file with the SDL runtime environment:
     4.6 -
     4.7 -The Simple DirectMedia Layer (SDL for short) is a cross-platform library
     4.8 -designed to make it easy to write multi-media software, such as games and
     4.9 -emulators.
    4.10 -
    4.11 -The Simple DirectMedia Layer library source code is available from:
    4.12 -http://www.libsdl.org/
    4.13 -
    4.14 -This library is distributed under the terms of the zlib license:
    4.15 -http://www.zlib.net/zlib_license.html
    4.16 -
     5.1 --- a/doc/README-android.md	Tue Jul 29 09:20:12 2014 -0300
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,437 +0,0 @@
     5.4 -Android
     5.5 -================================================================================
     5.6 -
     5.7 -Requirements:
     5.8 -
     5.9 -Android SDK (version 12 or later)
    5.10 -http://developer.android.com/sdk/index.html
    5.11 -
    5.12 -Android NDK r7 or later
    5.13 -http://developer.android.com/tools/sdk/ndk/index.html
    5.14 -
    5.15 -Minimum API level supported by SDL: 10 (Android 2.3.3)
    5.16 -Joystick support is available for API level >=12 devices.
    5.17 -
    5.18 -================================================================================
    5.19 - How the port works
    5.20 -================================================================================
    5.21 -
    5.22 -- Android applications are Java-based, optionally with parts written in C
    5.23 -- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to 
    5.24 -the SDL library
    5.25 -- This means that your application C code must be placed inside an Android 
    5.26 -Java project, along with some C support code that communicates with Java
    5.27 -- This eventually produces a standard Android .apk package
    5.28 -
    5.29 -The Android Java code implements an "Activity" and can be found in:
    5.30 -android-project/src/org/libsdl/app/SDLActivity.java
    5.31 -
    5.32 -The Java code loads your game code, the SDL shared library, and
    5.33 -dispatches to native functions implemented in the SDL library:
    5.34 -src/core/android/SDL_android.c
    5.35 -
    5.36 -Your project must include some glue code that starts your main() routine:
    5.37 -src/main/android/SDL_android_main.c
    5.38 -
    5.39 -
    5.40 -================================================================================
    5.41 - Building an app
    5.42 -================================================================================
    5.43 -
    5.44 -For simple projects you can use the script located at build-scripts/androidbuild.sh
    5.45 -
    5.46 -There's two ways of using it:
    5.47 -
    5.48 -androidbuild.sh com.yourcompany.yourapp < sources.list
    5.49 -androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
    5.50 -
    5.51 -sources.list should be a text file with a source file name in each line
    5.52 -Filenames should be specified relative to the current directory, for example if
    5.53 -you are in the build-scripts directory and want to create the testgles.c test, you'll
    5.54 -run:
    5.55 -    
    5.56 -./androidbuild.sh org.libsdl.testgles ../test/testgles.c
    5.57 -
    5.58 -One limitation of this script is that all sources provided will be aggregated into
    5.59 -a single directory, thus all your source files should have a unique name.
    5.60 -
    5.61 -Once the project is complete the script will tell you where the debug APK is located.
    5.62 -If you want to create a signed release APK, you can use the project created by this
    5.63 -utility to generate it.
    5.64 -
    5.65 -Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
    5.66 -done in the build directory for the app!
    5.67 -
    5.68 -
    5.69 -For more complex projects, follow these instructions:
    5.70 -    
    5.71 -1. Copy the android-project directory wherever you want to keep your projects
    5.72 -   and rename it to the name of your project.
    5.73 -2. Move or symlink this SDL directory into the <project>/jni directory
    5.74 -3. Edit <project>/jni/src/Android.mk to include your source files
    5.75 -4. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
    5.76 -
    5.77 -If you want to use the Eclipse IDE, skip to the Eclipse section below.
    5.78 -
    5.79 -5. Create <project>/local.properties and use that to point to the Android SDK directory, by writing a line with the following form:
    5.80 -sdk.dir=PATH_TO_ANDROID_SDK
    5.81 -6. Run 'ant debug' in android/project. This compiles the .java and eventually 
    5.82 -   creates a .apk with the native code embedded
    5.83 -7. 'ant debug install' will push the apk to the device or emulator (if connected)
    5.84 -
    5.85 -Here's an explanation of the files in the Android project, so you can customize them:
    5.86 -
    5.87 -android-project/
    5.88 -	AndroidManifest.xml	- package manifest. Among others, it contains the class name
    5.89 -				  of the main Activity and the package name of the application.
    5.90 -	build.properties	- empty
    5.91 -	build.xml		- build description file, used by ant. The actual application name
    5.92 -				  is specified here.
    5.93 -	default.properties	- holds the target ABI for the application, android-10 and up
    5.94 -	project.properties	- holds the target ABI for the application, android-10 and up
    5.95 -	local.properties	- holds the SDK path, you should change this to the path to your SDK
    5.96 -	jni/			- directory holding native code
    5.97 -	jni/Android.mk		- Android makefile that can call recursively the Android.mk files
    5.98 -				  in all subdirectories
    5.99 -	jni/SDL/		- (symlink to) directory holding the SDL library files
   5.100 -	jni/SDL/Android.mk	- Android makefile for creating the SDL shared library
   5.101 -	jni/src/		- directory holding your C/C++ source
   5.102 -	jni/src/Android.mk	- Android makefile that you should customize to include your 
   5.103 -                                  source code and any library references
   5.104 -	res/			- directory holding resources for your application
   5.105 -	res/drawable-*		- directories holding icons for different phone hardware. Could be
   5.106 -				  one dir called "drawable".
   5.107 -	res/layout/main.xml	- Usually contains a file main.xml, which declares the screen layout.
   5.108 -				  We don't need it because we use the SDL video output.
   5.109 -	res/values/strings.xml	- strings used in your application, including the application name
   5.110 -				  shown on the phone.
   5.111 -	src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding
   5.112 -				  to SDL.  Be very careful changing this, as the SDL library relies
   5.113 -				  on this implementation.
   5.114 -
   5.115 -
   5.116 -================================================================================
   5.117 - Build an app with static linking of libSDL
   5.118 -================================================================================
   5.119 -
   5.120 -This build uses the Android NDK module system.
   5.121 -
   5.122 -Instructions:
   5.123 -1. Copy the android-project directory wherever you want to keep your projects
   5.124 -   and rename it to the name of your project.
   5.125 -2. Rename <project>/jni/src/Android_static.mk to <project>/jni/src/Android.mk
   5.126 -   (overwrite the existing one)
   5.127 -3. Edit <project>/jni/src/Android.mk to include your source files
   5.128 -4. create and export an environment variable named NDK_MODULE_PATH that points
   5.129 -   to the parent directory of this SDL directory. e.g.:
   5.130 -
   5.131 -   export NDK_MODULE_PATH="$PWD"/..
   5.132 -
   5.133 -5. Edit <project>/src/org/libsdl/app/SDLActivity.java and remove the call to
   5.134 -   System.loadLibrary("SDL2") line 42.
   5.135 -6. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
   5.136 -
   5.137 -
   5.138 -================================================================================
   5.139 - Customizing your application name
   5.140 -================================================================================
   5.141 -
   5.142 -To customize your application name, edit AndroidManifest.xml and replace
   5.143 -"org.libsdl.app" with an identifier for your product package.
   5.144 -
   5.145 -Then create a Java class extending SDLActivity and place it in a directory
   5.146 -under src matching your package, e.g.
   5.147 -	src/com/gamemaker/game/MyGame.java
   5.148 -
   5.149 -Here's an example of a minimal class file:
   5.150 ---- MyGame.java --------------------------
   5.151 -package com.gamemaker.game;
   5.152 -
   5.153 -import org.libsdl.app.SDLActivity; 
   5.154 -
   5.155 -/* 
   5.156 - * A sample wrapper class that just calls SDLActivity 
   5.157 - */ 
   5.158 -
   5.159 -public class MyGame extends SDLActivity { }
   5.160 -
   5.161 -------------------------------------------
   5.162 -
   5.163 -Then replace "SDLActivity" in AndroidManifest.xml with the name of your
   5.164 -class, .e.g. "MyGame"
   5.165 -
   5.166 -================================================================================
   5.167 - Customizing your application icon
   5.168 -================================================================================
   5.169 -
   5.170 -Conceptually changing your icon is just replacing the "ic_launcher.png" files in
   5.171 -the drawable directories under the res directory. There are four directories for
   5.172 -different screen sizes. These can be replaced with one dir called "drawable",
   5.173 -containing an icon file "ic_launcher.png" with dimensions 48x48 or 72x72.
   5.174 -
   5.175 -You may need to change the name of your icon in AndroidManifest.xml to match
   5.176 -this icon filename.
   5.177 -
   5.178 -================================================================================
   5.179 - Loading assets
   5.180 -================================================================================
   5.181 -
   5.182 -Any files you put in the "assets" directory of your android-project directory
   5.183 -will get bundled into the application package and you can load them using the
   5.184 -standard functions in SDL_rwops.h.
   5.185 -
   5.186 -There are also a few Android specific functions that allow you to get other
   5.187 -useful paths for saving and loading data:
   5.188 -SDL_AndroidGetInternalStoragePath()
   5.189 -SDL_AndroidGetExternalStorageState()
   5.190 -SDL_AndroidGetExternalStoragePath()
   5.191 -
   5.192 -See SDL_system.h for more details on these functions.
   5.193 -
   5.194 -The asset packaging system will, by default, compress certain file extensions.
   5.195 -SDL includes two asset file access mechanisms, the preferred one is the so
   5.196 -called "File Descriptor" method, which is faster and doesn't involve the Dalvik
   5.197 -GC, but given this method does not work on compressed assets, there is also the
   5.198 -"Input Stream" method, which is automatically used as a fall back by SDL. You
   5.199 -may want to keep this fact in mind when building your APK, specially when large
   5.200 -files are involved.
   5.201 -For more information on which extensions get compressed by default and how to
   5.202 -disable this behaviour, see for example:
   5.203 -    
   5.204 -http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
   5.205 -
   5.206 -================================================================================
   5.207 - Pause / Resume behaviour
   5.208 -================================================================================
   5.209 -
   5.210 -If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
   5.211 -the event loop will block itself when the app is paused (ie, when the user
   5.212 -returns to the main Android dashboard). Blocking is better in terms of battery
   5.213 -use, and it allows your app to spring back to life instantaneously after resume
   5.214 -(versus polling for a resume message).
   5.215 -
   5.216 -Upon resume, SDL will attempt to restore the GL context automatically.
   5.217 -In modern devices (Android 3.0 and up) this will most likely succeed and your
   5.218 -app can continue to operate as it was.
   5.219 -
   5.220 -However, there's a chance (on older hardware, or on systems under heavy load),
   5.221 -where the GL context can not be restored. In that case you have to listen for
   5.222 -a specific message, (which is not yet implemented!) and restore your textures
   5.223 -manually or quit the app (which is actually the kind of behaviour you'll see
   5.224 -under iOS, if the OS can not restore your GL context it will just kill your app)
   5.225 -
   5.226 -================================================================================
   5.227 - Threads and the Java VM
   5.228 -================================================================================
   5.229 -
   5.230 -For a quick tour on how Linux native threads interoperate with the Java VM, take
   5.231 -a look here: http://developer.android.com/guide/practices/jni.html
   5.232 -If you want to use threads in your SDL app, it's strongly recommended that you
   5.233 -do so by creating them using SDL functions. This way, the required attach/detach
   5.234 -handling is managed by SDL automagically. If you have threads created by other
   5.235 -means and they make calls to SDL functions, make sure that you call
   5.236 -Android_JNI_SetupThread before doing anything else otherwise SDL will attach
   5.237 -your thread automatically anyway (when you make an SDL call), but it'll never
   5.238 -detach it.
   5.239 -
   5.240 -================================================================================
   5.241 - Using STL
   5.242 -================================================================================
   5.243 -
   5.244 -You can use STL in your project by creating an Application.mk file in the jni
   5.245 -folder and adding the following line:
   5.246 -APP_STL := stlport_static
   5.247 -
   5.248 -For more information check out CPLUSPLUS-SUPPORT.html in the NDK documentation.
   5.249 -
   5.250 -================================================================================
   5.251 - Additional documentation
   5.252 -================================================================================
   5.253 -
   5.254 -The documentation in the NDK docs directory is very helpful in understanding the
   5.255 -build process and how to work with native code on the Android platform.
   5.256 -
   5.257 -The best place to start is with docs/OVERVIEW.TXT
   5.258 -
   5.259 -
   5.260 -================================================================================
   5.261 - Using Eclipse
   5.262 -================================================================================
   5.263 -
   5.264 -First make sure that you've installed Eclipse and the Android extensions as described here:
   5.265 -	http://developer.android.com/tools/sdk/eclipse-adt.html
   5.266 -
   5.267 -Once you've copied the SDL android project and customized it, you can create an Eclipse project from it:
   5.268 - * File -> New -> Other
   5.269 - * Select the Android -> Android Project wizard and click Next
   5.270 - * Enter the name you'd like your project to have
   5.271 - * Select "Create project from existing source" and browse for your project directory
   5.272 - * Make sure the Build Target is set to Android 2.0
   5.273 - * Click Finish
   5.274 -
   5.275 -
   5.276 -================================================================================
   5.277 - Using the emulator
   5.278 -================================================================================
   5.279 -
   5.280 -There are some good tips and tricks for getting the most out of the
   5.281 -emulator here: http://developer.android.com/tools/devices/emulator.html
   5.282 -
   5.283 -Especially useful is the info on setting up OpenGL ES 2.0 emulation.
   5.284 -
   5.285 -Notice that this software emulator is incredibly slow and needs a lot of disk space.
   5.286 -Using a real device works better.
   5.287 -
   5.288 -================================================================================
   5.289 - Troubleshooting
   5.290 -================================================================================
   5.291 -
   5.292 -You can create and run an emulator from the Eclipse IDE:
   5.293 - * Window -> Android SDK and AVD Manager
   5.294 -
   5.295 -You can see if adb can see any devices with the following command:
   5.296 -	adb devices
   5.297 -
   5.298 -You can see the output of log messages on the default device with:
   5.299 -	adb logcat
   5.300 -
   5.301 -You can push files to the device with:
   5.302 -	adb push local_file remote_path_and_file
   5.303 -
   5.304 -You can push files to the SD Card at /sdcard, for example:
   5.305 -	adb push moose.dat /sdcard/moose.dat
   5.306 -
   5.307 -You can see the files on the SD card with a shell command:
   5.308 -	adb shell ls /sdcard/
   5.309 -
   5.310 -You can start a command shell on the default device with:
   5.311 -	adb shell
   5.312 -
   5.313 -You can remove the library files of your project (and not the SDL lib files) with:
   5.314 -	ndk-build clean
   5.315 -
   5.316 -You can do a build with the following command:
   5.317 -	ndk-build
   5.318 -
   5.319 -You can see the complete command line that ndk-build is using by passing V=1 on the command line:
   5.320 -	ndk-build V=1
   5.321 -
   5.322 -If your application crashes in native code, you can use addr2line to convert the
   5.323 -addresses in the stack trace to lines in your code.
   5.324 -
   5.325 -For example, if your crash looks like this:
   5.326 -I/DEBUG   (   31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
   5.327 -I/DEBUG   (   31):  r0 00000000  r1 00001000  r2 00000003  r3 400085d4
   5.328 -I/DEBUG   (   31):  r4 400085d0  r5 40008000  r6 afd41504  r7 436c6a7c
   5.329 -I/DEBUG   (   31):  r8 436c6b30  r9 435c6fb0  10 435c6f9c  fp 4168d82c
   5.330 -I/DEBUG   (   31):  ip 8346aff0  sp 436c6a60  lr afd1c8ff  pc afd1c902  cpsr 60000030
   5.331 -I/DEBUG   (   31):          #00  pc 0001c902  /system/lib/libc.so
   5.332 -I/DEBUG   (   31):          #01  pc 0001ccf6  /system/lib/libc.so
   5.333 -I/DEBUG   (   31):          #02  pc 000014bc  /data/data/org.libsdl.app/lib/libmain.so
   5.334 -I/DEBUG   (   31):          #03  pc 00001506  /data/data/org.libsdl.app/lib/libmain.so
   5.335 -
   5.336 -You can see that there's a crash in the C library being called from the main code.
   5.337 -I run addr2line with the debug version of my code:
   5.338 -	arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
   5.339 -and then paste in the number after "pc" in the call stack, from the line that I care about:
   5.340 -000014bc
   5.341 -
   5.342 -I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
   5.343 -
   5.344 -You can add logging to your code to help show what's happening:
   5.345 -
   5.346 -#include <android/log.h>
   5.347 -
   5.348 -	__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
   5.349 -
   5.350 -If you need to build without optimization turned on, you can create a file called
   5.351 -"Application.mk" in the jni directory, with the following line in it:
   5.352 -APP_OPTIM := debug
   5.353 -
   5.354 -
   5.355 -================================================================================
   5.356 - Memory debugging
   5.357 -================================================================================
   5.358 -
   5.359 -The best (and slowest) way to debug memory issues on Android is valgrind.
   5.360 -Valgrind has support for Android out of the box, just grab code using:
   5.361 -	svn co svn://svn.valgrind.org/valgrind/trunk valgrind
   5.362 -... and follow the instructions in the file README.android to build it.
   5.363 -
   5.364 -One thing I needed to do on Mac OS X was change the path to the toolchain,
   5.365 -and add ranlib to the environment variables:
   5.366 -export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
   5.367 -
   5.368 -Once valgrind is built, you can create a wrapper script to launch your
   5.369 -application with it, changing org.libsdl.app to your package identifier:
   5.370 ---- start_valgrind_app -------------------
   5.371 -#!/system/bin/sh
   5.372 -export TMPDIR=/data/data/org.libsdl.app
   5.373 -exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
   5.374 -------------------------------------------
   5.375 -
   5.376 -Then push it to the device:
   5.377 -	adb push start_valgrind_app /data/local
   5.378 -
   5.379 -and make it executable:
   5.380 -	adb shell chmod 755 /data/local/start_valgrind_app
   5.381 -
   5.382 -and tell Android to use the script to launch your application:
   5.383 -	adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
   5.384 -
   5.385 -If the setprop command says "could not set property", it's likely that
   5.386 -your package name is too long and you should make it shorter by changing
   5.387 -AndroidManifest.xml and the path to your class file in android-project/src
   5.388 -
   5.389 -You can then launch your application normally and waaaaaaaiiittt for it.
   5.390 -You can monitor the startup process with the logcat command above, and
   5.391 -when it's done (or even while it's running) you can grab the valgrind
   5.392 -output file:
   5.393 -	adb pull /sdcard/valgrind.log
   5.394 -
   5.395 -When you're done instrumenting with valgrind, you can disable the wrapper:
   5.396 -	adb shell setprop wrap.org.libsdl.app ""
   5.397 -
   5.398 -================================================================================
   5.399 - Why is API level 10 the minimum required?
   5.400 -================================================================================
   5.401 -
   5.402 -API level 10 is the minimum required level at runtime (that is, on the device) 
   5.403 -because SDL requires some functionality for running not
   5.404 -available on older devices. Since the incorporation of joystick support into SDL,
   5.405 -the minimum SDK required to *build* SDL is version 12. Devices running API levels
   5.406 -10-11 are still supported, only with the joystick functionality disabled.
   5.407 -
   5.408 -Support for native OpenGL ES and ES2 applications was introduced in the NDK for
   5.409 -API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which
   5.410 -has since then been obsoleted, with the recommendation to developers to bump the
   5.411 -required API level to 10.
   5.412 -As of this writing, according to http://developer.android.com/about/dashboards/index.html
   5.413 -about 90% of the Android devices accessing Google Play support API level 10 or
   5.414 -higher (March 2013).
   5.415 -
   5.416 -================================================================================
   5.417 - A note regarding the use of the "dirty rectangles" rendering technique
   5.418 -================================================================================
   5.419 -
   5.420 -If your app uses a variation of the "dirty rectangles" rendering technique,
   5.421 -where you only update a portion of the screen on each frame, you may notice a
   5.422 -variety of visual glitches on Android, that are not present on other platforms.
   5.423 -This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
   5.424 -contexts, in particular the use of the eglSwapBuffers function. As stated in the
   5.425 -documentation for the function "The contents of ancillary buffers are always 
   5.426 -undefined after calling eglSwapBuffers".
   5.427 -Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
   5.428 -is not possible for SDL as it requires EGL 1.4, available only on the API level
   5.429 -17+, so the only workaround available on this platform is to redraw the entire
   5.430 -screen each frame.
   5.431 -
   5.432 -Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
   5.433 -
   5.434 -================================================================================
   5.435 - Known issues
   5.436 -================================================================================
   5.437 -
   5.438 -- The number of buttons reported for each joystick is hardcoded to be 36, which
   5.439 -is the current maximum number of buttons Android can report.
   5.440 -
     6.1 --- a/doc/README-cmake.md	Tue Jul 29 09:20:12 2014 -0300
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,31 +0,0 @@
     6.4 -CMake
     6.5 -================================================================================
     6.6 -(www.cmake.org)
     6.7 -
     6.8 -SDL's build system was traditionally based on autotools. Over time, this
     6.9 -approach has suffered from several issues across the different supported 
    6.10 -platforms.
    6.11 -To solve these problems, a new build system based on CMake is under development.
    6.12 -It works in parallel to the legacy system, so users can experiment with it
    6.13 -without complication.
    6.14 -While still experimental, the build system should be usable on the following
    6.15 -platforms:
    6.16 -    
    6.17 -    * FreeBSD
    6.18 -    * Linux
    6.19 -    * VS.NET 2010
    6.20 -    * MinGW and Msys
    6.21 -    * OS X with support for XCode
    6.22 -    
    6.23 -================================================================================
    6.24 -Usage
    6.25 -================================================================================
    6.26 -
    6.27 -Assuming the source for SDL is located at ~/sdl
    6.28 -
    6.29 -cd ~
    6.30 -mkdir build
    6.31 -cd build
    6.32 -cmake ../sdl
    6.33 -
    6.34 -This will build the static and dynamic versions of SDL in the ~/build directory.
     7.1 --- a/doc/README-directfb.md	Tue Jul 29 09:20:12 2014 -0300
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,107 +0,0 @@
     7.4 -DirectFB
     7.5 -========
     7.6 -
     7.7 -Supports:
     7.8 -
     7.9 -- Hardware YUV overlays
    7.10 -- OpenGL - software only
    7.11 -- 2D/3D accelerations (depends on directfb driver)
    7.12 -- multiple displays
    7.13 -- windows
    7.14 -
    7.15 -What you need:
    7.16 -
    7.17 -DirectFB 1.0.1, 1.2.x, 1.3.0
    7.18 -Kernel-Framebuffer support: required: vesafb, radeonfb .... 
    7.19 -Mesa 7.0.x	   - optional for OpenGL
    7.20 -
    7.21 -/etc/directfbrc
    7.22 -
    7.23 -This file should contain the following lines to make
    7.24 -your joystick work and avoid crashes:
    7.25 -------------------------
    7.26 -disable-module=joystick
    7.27 -disable-module=cle266
    7.28 -disable-module=cyber5k
    7.29 -no-linux-input-grab
    7.30 -------------------------
    7.31 -
    7.32 -To disable to use x11 backend when DISPLAY variable is found use
    7.33 -
    7.34 -export SDL_DIRECTFB_X11_CHECK=0
    7.35 -
    7.36 -To disable the use of linux input devices, i.e. multimice/multikeyboard support,
    7.37 -use
    7.38 -
    7.39 -export SDL_DIRECTFB_LINUX_INPUT=0
    7.40 -
    7.41 -To use hardware accelerated YUV-overlays for YUV-textures, use:
    7.42 -
    7.43 -export SDL_DIRECTFB_YUV_DIRECT=1
    7.44 -
    7.45 -This is disabled by default. It will only support one 
    7.46 -YUV texture, namely the first. Every other YUV texture will be
    7.47 -rendered in software.
    7.48 -
    7.49 -In addition, you may use (directfb-1.2.x)
    7.50 -
    7.51 -export SDL_DIRECTFB_YUV_UNDERLAY=1
    7.52 -
    7.53 -to make the YUV texture an underlay. This will make the cursor to
    7.54 -be shown.
    7.55 -
    7.56 -Simple Window Manager
    7.57 -=====================
    7.58 -
    7.59 -The driver has support for a very, very basic window manager you may
    7.60 -want to use when running with "wm=default". Use
    7.61 -
    7.62 -export SDL_DIRECTFB_WM=1
    7.63 -
    7.64 -to enable basic window borders. In order to have the window title rendered,
    7.65 -you need to have the following font installed:
    7.66 -
    7.67 -/usr/share/fonts/truetype/freefont/FreeSans.ttf
    7.68 -
    7.69 -OpenGL Support
    7.70 -==============
    7.71 -
    7.72 -The following instructions will give you *software* OpenGL. However this
    7.73 -works at least on all directfb supported platforms.
    7.74 -
    7.75 -As of this writing 20100802 you need to pull Mesa from git and do the following:
    7.76 -
    7.77 -------------------------
    7.78 -git clone git://anongit.freedesktop.org/git/mesa/mesa
    7.79 -cd mesa 
    7.80 -git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
    7.81 -------------------------
    7.82 -
    7.83 -Edit configs/linux-directfb so that the Directories-section looks like
    7.84 -------------------------
    7.85 -# Directories
    7.86 -SRC_DIRS     = mesa glu 
    7.87 -GLU_DIRS     = sgi
    7.88 -DRIVER_DIRS  = directfb
    7.89 -PROGRAM_DIRS = 
    7.90 -------------------------
    7.91 -
    7.92 -make linux-directfb
    7.93 -make
    7.94 -
    7.95 -echo Installing - please enter sudo pw.
    7.96 -
    7.97 -sudo make install INSTALL_DIR=/usr/local/dfb_GL
    7.98 -cd src/mesa/drivers/directfb
    7.99 -make
   7.100 -sudo make install INSTALL_DIR=/usr/local/dfb_GL
   7.101 -------------------------
   7.102 -
   7.103 -To run the SDL - testprograms:
   7.104 -
   7.105 -export SDL_VIDEODRIVER=directfb
   7.106 -export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
   7.107 -export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
   7.108 -
   7.109 -./testgl
   7.110 -
     8.1 --- a/doc/README-dynapi.md	Tue Jul 29 09:20:12 2014 -0300
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,129 +0,0 @@
     8.4 -Dynamic API
     8.5 -================================================================================
     8.6 -Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
     8.7 -
     8.8 -Background:
     8.9 -
    8.10 -- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, 
    8.11 -  but developers are shipping their own SDL2 with individual Steam games. 
    8.12 -  These games might stop getting updates, but a newer SDL2 might be needed later. 
    8.13 -  Certainly we'll always be fixing bugs in SDL, even if a new video target isn't 
    8.14 -  ever needed, and these fixes won't make it to a game shipping its own SDL.
    8.15 -- Even if we replace the SDL2 in those games with a compatible one, that is to 
    8.16 -  say, edit a developer's Steam depot (yuck!), there are developers that are 
    8.17 -  statically linking SDL2 that we can't do this for. We can't even force the 
    8.18 -  dynamic loader to ignore their SDL2 in this case, of course.
    8.19 -- If you don't ship an SDL2 with the game in some form, people that disabled the
    8.20 -  Steam Runtime, or just tried to run the game from the command line instead of 
    8.21 -  Steam might find themselves unable to run the game, due to a missing dependency.
    8.22 -- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
    8.23 -  generic Linux boxes that may or may not have SDL2 installed, you have to ship 
    8.24 -  the library or risk a total failure to launch. So now, you might have to have 
    8.25 -  a non-Steam build plus a Steam build (that is, one with and one without SDL2 
    8.26 -  included), which is inconvenient if you could have had one universal build 
    8.27 -  that works everywhere.
    8.28 -- We like the zlib license, but the biggest complaint from the open source 
    8.29 -  community about the license change is the static linking. The LGPL forced this 
    8.30 -  as a legal, not technical issue, but zlib doesn't care. Even those that aren't
    8.31 -  concerned about the GNU freedoms found themselves solving the same problems: 
    8.32 -  swapping in a newer SDL to an older game often times can save the day. 
    8.33 -  Static linking stops this dead.
    8.34 -
    8.35 -So here's what we did:
    8.36 -
    8.37 -SDL now has, internally, a table of function pointers. So, this is what SDL_Init
    8.38 -now looks like:
    8.39 -
    8.40 -    UInt32 SDL_Init(Uint32 flags)
    8.41 -    {
    8.42 -        return jump_table.SDL_Init(flags);
    8.43 -    }
    8.44 -
    8.45 -Except that is all done with a bunch of macro magic so we don't have to maintain
    8.46 -every one of these.
    8.47 -
    8.48 -What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
    8.49 -SDL_Init() that you've been calling all this time. But at startup, it looks more 
    8.50 -like this:
    8.51 -
    8.52 -    Uint32 SDL_Init_DEFAULT(Uint32 flags)
    8.53 -    {
    8.54 -        SDL_InitDynamicAPI();
    8.55 -        return jump_table.SDL_Init(flags);
    8.56 -    }
    8.57 -
    8.58 -SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function 
    8.59 -pointers, which means that this _DEFAULT function never gets called again. 
    8.60 -First call to any SDL function sets the whole thing up.
    8.61 -
    8.62 -So you might be asking, what was the value in that? Isn't this what the operating
    8.63 -system's dynamic loader was supposed to do for us? Yes, but now we've got this 
    8.64 -level of indirection, we can do things like this:
    8.65 -
    8.66 -    export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
    8.67 -    ./MyGameThatIsStaticallyLinkedToSDL2
    8.68 -
    8.69 -And now, this game that is staticallly linked to SDL, can still be overridden 
    8.70 -with a newer, or better, SDL. The statically linked one will only be used as 
    8.71 -far as calling into the jump table in this case. But in cases where no override
    8.72 -is desired, the statically linked version will provide its own jump table, 
    8.73 -and everyone is happy.
    8.74 -
    8.75 -So now:
    8.76 -- Developers can statically link SDL, and users can still replace it. 
    8.77 -  (We'd still rather you ship a shared library, though!)
    8.78 -- Developers can ship an SDL with their game, Valve can override it for, say, 
    8.79 -  new features on SteamOS, or distros can override it for their own needs, 
    8.80 -  but it'll also just work in the default case.
    8.81 -- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), 
    8.82 -  and it'll do the right thing.
    8.83 -- End users (and Valve) can update a game's SDL in almost any case, 
    8.84 -  to keep abandoned games running on newer platforms.
    8.85 -- Everyone develops with SDL exactly as they have been doing all along. 
    8.86 -  Same headers, same ABI. Just get the latest version to enable this magic.
    8.87 -
    8.88 -
    8.89 -A little more about SDL_InitDynamicAPI():
    8.90 -
    8.91 -Internally, InitAPI does some locking to make sure everything waits until a 
    8.92 -single thread initializes everything (although even SDL_CreateThread() goes 
    8.93 -through here before spinning a thread, too), and then decides if it should use
    8.94 -an external SDL library. If not, it sets up the jump table using the current 
    8.95 -SDL's function pointers (which might be statically linked into a program, or in
    8.96 -a shared library of its own). If so, it loads that library and looks for and 
    8.97 -calls a single function:
    8.98 -
    8.99 -    SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
   8.100 -
   8.101 -That function takes a version number (more on that in a moment), the address of
   8.102 -the jump table, and the size, in bytes, of the table. 
   8.103 -Now, we've got policy here: this table's layout never changes; new stuff gets 
   8.104 -added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all 
   8.105 -the needed functions if tablesize <= sizeof its own jump table. If tablesize is
   8.106 -bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
   8.107 -if it's smaller, we know we can provide the entire API that the caller needs.
   8.108 -
   8.109 -The version variable is a failsafe switch. 
   8.110 -Right now it's always 1. This number changes when there are major API changes 
   8.111 -(so we know if the tablesize might be smaller, or entries in it have changed). 
   8.112 -Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not 
   8.113 -inconceivable to have a small dispatch library that only supplies this one 
   8.114 -function and loads different, otherwise-incompatible SDL libraries and has the
   8.115 -right one initialize the jump table based on the version. For something that 
   8.116 -must generically catch lots of different versions of SDL over time, like the 
   8.117 -Steam Client, this isn't a bad option.
   8.118 -
   8.119 -Finally, I'm sure some people are reading this and thinking,
   8.120 -"I don't want that overhead in my project!"  
   8.121 -To which I would point out that the extra function call through the jump table 
   8.122 -probably wouldn't even show up in a profile, but lucky you: this can all be 
   8.123 -disabled. You can build SDL without this if you absolutely must, but we would 
   8.124 -encourage you not to do that. However, on heavily locked down platforms like 
   8.125 -iOS, or maybe when debugging,  it makes sense to disable it. The way this is 
   8.126 -designed in SDL, you just have to change one #define, and the entire system 
   8.127 -vaporizes out, and SDL functions exactly like it always did. Most of it is 
   8.128 -macro magic, so the system is contained to one C file and a few headers. 
   8.129 -However, this is on by default and you have to edit a header file to turn it 
   8.130 -off. Our hopes is that if we make it easy to disable, but not too easy, 
   8.131 -everyone will ultimately be able to get what they want, but we've gently 
   8.132 -nudged everyone towards what we think is the best solution.
     9.1 --- a/doc/README-gesture.md	Tue Jul 29 09:20:12 2014 -0300
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,71 +0,0 @@
     9.4 -Dollar Gestures
     9.5 -===========================================================================
     9.6 -SDL Provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
     9.7 -
     9.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. 
     9.9 -
    9.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.
    9.11 -
    9.12 -Recording:
    9.13 -----------
    9.14 -To begin recording on a touch device call:
    9.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.
    9.16 -
    9.17 -Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
    9.18 -A SDL_DOLLARRECORD event is a dgesture with the following fields:
    9.19 -
    9.20 -event.dgesture.touchId   - the Id of the touch used to record the gesture.
    9.21 -event.dgesture.gestureId - the unique id of the recorded gesture.
    9.22 -
    9.23 -
    9.24 -Performing:
    9.25 ------------
    9.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:
    9.27 -
    9.28 -event.dgesture.touchId    - the Id of the touch which performed the gesture.
    9.29 -event.dgesture.gestureId  - the unique id of the closest gesture to the performed stroke.
    9.30 -event.dgesture.error      - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
    9.31 -event.dgesture.numFingers - the number of fingers used to draw the stroke.
    9.32 -
    9.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).
    9.34 -
    9.35 -
    9.36 -
    9.37 -Saving:
    9.38 --------
    9.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.
    9.40 -
    9.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.
    9.42 -
    9.43 -Both functions return the number of gestures successfully saved.
    9.44 -
    9.45 -
    9.46 -Loading:
    9.47 ---------
    9.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. 
    9.49 -
    9.50 -SDL_LoadDollarTemplates returns the number of templates successfully loaded.
    9.51 -
    9.52 -
    9.53 -
    9.54 -===========================================================================
    9.55 -Multi Gestures
    9.56 -===========================================================================
    9.57 -SDL provides simple support for pinch/rotate/swipe gestures. 
    9.58 -Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
    9.59 -
    9.60 -event.mgesture.touchId - the Id of the touch on which the gesture was performed.
    9.61 -event.mgesture.x       - the normalized x coordinate of the gesture. (0..1)
    9.62 -event.mgesture.y       - the normalized y coordinate of the gesture. (0..1)
    9.63 -event.mgesture.dTheta  - the amount that the fingers rotated during this motion.
    9.64 -event.mgesture.dDist   - the amount that the fingers pinched during this motion.
    9.65 -event.mgesture.numFingers - the number of fingers used in the gesture.
    9.66 -
    9.67 -
    9.68 -===========================================================================
    9.69 -Notes
    9.70 -===========================================================================
    9.71 -For a complete example see test/testgesture.c
    9.72 -
    9.73 -Please direct questions/comments to:
    9.74 -   jim.tla+sdl_touch@gmail.com
    10.1 --- a/doc/README-hg.md	Tue Jul 29 09:20:12 2014 -0300
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,26 +0,0 @@
    10.4 -Mercurial
    10.5 -=========
    10.6 -
    10.7 -The latest development version of SDL is available via Mercurial.
    10.8 -Mercurial allows you to get up-to-the-minute fixes and enhancements;
    10.9 -as a developer works on a source tree, you can use "hg" to mirror that
   10.10 -source tree instead of waiting for an official release. Please look
   10.11 -at the Mercurial website ( http://mercurial.selenic.com/ ) for more
   10.12 -information on using hg, where you can also download software for
   10.13 -Mac OS X, Windows, and Unix systems.
   10.14 -
   10.15 -  hg clone http://hg.libsdl.org/SDL
   10.16 -
   10.17 -If you are building SDL with an IDE, you will need to copy the file
   10.18 -include/SDL_config.h.default to include/SDL_config.h before building.
   10.19 -
   10.20 -If you are building SDL via configure, you will need to run autogen.sh
   10.21 -before running configure.
   10.22 -
   10.23 -There is a web interface to the subversion repository at:
   10.24 -
   10.25 -	http://hg.libsdl.org/SDL/
   10.26 -
   10.27 -There is an RSS feed available at that URL, for those that want to
   10.28 -track commits in real time.
   10.29 -
    11.1 --- a/doc/README-ios.md	Tue Jul 29 09:20:12 2014 -0300
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,225 +0,0 @@
    11.4 -iOS
    11.5 -======
    11.6 -
    11.7 -==============================================================================
    11.8 -Building the Simple DirectMedia Layer for iPhone OS 5.1
    11.9 -==============================================================================
   11.10 -
   11.11 -Requirements: Mac OS X v10.5 or later and the iPhone SDK.
   11.12 -
   11.13 -Instructions:
   11.14 -1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
   11.15 -2.  Select your desired target, and hit build.
   11.16 -
   11.17 -There are three build targets:
   11.18 -- libSDL.a:
   11.19 -	Build SDL as a statically linked library
   11.20 -- testsdl
   11.21 -	Build a test program (there are known test failures which are fine)
   11.22 -- Template:
   11.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.
   11.24 -
   11.25 -==============================================================================
   11.26 -Build SDL for iOS from the command line
   11.27 -==============================================================================
   11.28 -
   11.29 -1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
   11.30 -2. ./iosbuild.sh
   11.31 -
   11.32 -If everything goes fine, you should see a build/ios directory, inside there's
   11.33 -two directories "lib" and "include". 
   11.34 -"include" contains a copy of the SDL headers that you'll need for your project,
   11.35 -make sure to configure XCode to look for headers there.
   11.36 -"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
   11.37 -to your XCode project. These libraries contain three architectures in them,
   11.38 -armv6 for legacy devices, armv7, and i386 (for the simulator).
   11.39 -By default, iosbuild.sh will autodetect the SDK version you have installed using 
   11.40 -xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
   11.41 -by setting the MIN_OS_VERSION variable, ie:
   11.42 -
   11.43 -MIN_OS_VERSION=4.2 ./iosbuild.sh
   11.44 -
   11.45 -==============================================================================
   11.46 -Using the Simple DirectMedia Layer for iOS
   11.47 -==============================================================================
   11.48 -
   11.49 -FIXME: This needs to be updated for the latest methods
   11.50 -
   11.51 -Here is the easiest method:
   11.52 -1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
   11.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.
   11.54 -2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
   11.55 -
   11.56 -Here is a more manual method:
   11.57 -1.  Create a new iPhone view based application.
   11.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.
   11.59 -3.  Include the SDL header files in your project.
   11.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.
   11.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.
   11.62 -
   11.63 -==============================================================================
   11.64 -Notes -- Application events
   11.65 -==============================================================================
   11.66 -
   11.67 -On iOS the application goes through a fixed life cycle and you will get
   11.68 -notifications of state changes via application events. When these events
   11.69 -are delivered you must handle them in an event callback because the OS may
   11.70 -not give you any processing time after the events are delivered.
   11.71 -
   11.72 -e.g.
   11.73 -
   11.74 -int HandleAppEvents(void *userdata, SDL_Event *event)
   11.75 -{
   11.76 -    switch (event->type)
   11.77 -    {
   11.78 -    case SDL_APP_TERMINATING:
   11.79 -        /* Terminate the app.
   11.80 -           Shut everything down before returning from this function.
   11.81 -        */
   11.82 -        return 0;
   11.83 -    case SDL_APP_LOWMEMORY:
   11.84 -        /* You will get this when your app is paused and iOS wants more memory.
   11.85 -           Release as much memory as possible.
   11.86 -        */
   11.87 -        return 0;
   11.88 -    case SDL_APP_WILLENTERBACKGROUND:
   11.89 -        /* Prepare your app to go into the background.  Stop loops, etc.
   11.90 -           This gets called when the user hits the home button, or gets a call.
   11.91 -        */
   11.92 -        return 0;
   11.93 -    case SDL_APP_DIDENTERBACKGROUND:
   11.94 -        /* This will get called if the user accepted whatever sent your app to the background.
   11.95 -           If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
   11.96 -           When you get this, you have 5 seconds to save all your state or the app will be terminated.
   11.97 -           Your app is NOT active at this point.
   11.98 -        */
   11.99 -        return 0;
  11.100 -    case SDL_APP_WILLENTERFOREGROUND:
  11.101 -        /* This call happens when your app is coming back to the foreground.
  11.102 -           Restore all your state here.
  11.103 -        */
  11.104 -        return 0;
  11.105 -    case SDL_APP_DIDENTERFOREGROUND:
  11.106 -        /* Restart your loops here.
  11.107 -           Your app is interactive and getting CPU again.
  11.108 -        */
  11.109 -        return 0;
  11.110 -    default:
  11.111 -        /* No special processing, add it to the event queue */
  11.112 -        return 1;
  11.113 -    }
  11.114 -}
  11.115 -
  11.116 -int main(int argc, char *argv[])
  11.117 -{
  11.118 -    SDL_SetEventFilter(HandleAppEvents, NULL);
  11.119 -
  11.120 -    ... run your main loop
  11.121 -
  11.122 -    return 0;
  11.123 -}
  11.124 -
  11.125 -    
  11.126 -==============================================================================
  11.127 -Notes -- Accelerometer as Joystick
  11.128 -==============================================================================
  11.129 -
  11.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.
  11.131 -
  11.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.
  11.133 -
  11.134 -==============================================================================
  11.135 -Notes -- OpenGL ES
  11.136 -==============================================================================
  11.137 -
  11.138 -Your SDL application for iPhone uses OpenGL ES for video by default.
  11.139 -
  11.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.
  11.141 -
  11.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.
  11.143 -
  11.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.
  11.145 -
  11.146 -==============================================================================
  11.147 -Notes -- Keyboard
  11.148 -==============================================================================
  11.149 -
  11.150 -The SDL keyboard API has been extended to support on-screen keyboards:
  11.151 -
  11.152 -void SDL_StartTextInput()
  11.153 -	-- enables text events and reveals the onscreen keyboard.
  11.154 -void SDL_StopTextInput()
  11.155 -	-- disables text events and hides the onscreen keyboard.
  11.156 -SDL_bool SDL_IsTextInputActive()
  11.157 -	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
  11.158 -
  11.159 -==============================================================================
  11.160 -Notes -- Reading and Writing files
  11.161 -==============================================================================
  11.162 -
  11.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.
  11.164 -
  11.165 -Once your application is installed its directory tree looks like:
  11.166 -
  11.167 -MySDLApp Home/
  11.168 -	MySDLApp.app
  11.169 -	Documents/
  11.170 -	Library/
  11.171 -		Preferences/
  11.172 -	tmp/
  11.173 -
  11.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".  
  11.175 -
  11.176 -More information on this subject is available here:
  11.177 -http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
  11.178 -
  11.179 -==============================================================================
  11.180 -Notes -- iPhone SDL limitations
  11.181 -==============================================================================
  11.182 -
  11.183 -Windows:
  11.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).
  11.185 -
  11.186 -Textures:
  11.187 -	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
  11.188 -
  11.189 -Loading Shared Objects:
  11.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.
  11.191 -
  11.192 -==============================================================================
  11.193 -Game Center 
  11.194 -==============================================================================
  11.195 -
  11.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:
  11.197 -    
  11.198 -int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
  11.199 -
  11.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.
  11.201 -
  11.202 -e.g.
  11.203 -
  11.204 -extern "C"
  11.205 -void ShowFrame(void*)
  11.206 -{
  11.207 -    ... do event handling, frame logic and rendering
  11.208 -}
  11.209 -
  11.210 -int main(int argc, char *argv[])
  11.211 -{
  11.212 -   ... initialize game ...
  11.213 -
  11.214 -#if __IPHONEOS__
  11.215 -        // Initialize the Game Center for scoring and matchmaking
  11.216 -        InitGameCenter();
  11.217 -
  11.218 -        // Set up the game to run in the window animation callback on iOS
  11.219 -        // so that Game Center and so forth works correctly.
  11.220 -        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
  11.221 -#else
  11.222 -        while ( running ) {
  11.223 -                ShowFrame(0);
  11.224 -                DelayFrame();
  11.225 -        }
  11.226 -#endif
  11.227 -        return 0;
  11.228 -}
    12.1 --- a/doc/README-linux.md	Tue Jul 29 09:20:12 2014 -0300
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,82 +0,0 @@
    12.4 -Linux
    12.5 -================================================================================
    12.6 -
    12.7 -By default SDL will only link against glibc, the rest of the features will be
    12.8 -enabled dynamically at runtime depending on the available features on the target
    12.9 -system. So, for example if you built SDL with Xinerama support and the target
   12.10 -system does not have the Xinerama libraries installed, it will be disabled
   12.11 -at runtime, and you won't get a missing library error, at least with the 
   12.12 -default configuration parameters.
   12.13 -
   12.14 -
   12.15 -================================================================================
   12.16 -Build Dependencies
   12.17 -================================================================================
   12.18 -    
   12.19 -Ubuntu 13.04, all available features enabled:
   12.20 -
   12.21 -sudo apt-get install build-essential mercurial make cmake autoconf automake \
   12.22 -libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \
   12.23 -libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \
   12.24 -libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \
   12.25 -libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
   12.26 -
   12.27 -Ubuntu 14.04 can also add "libwayland-dev libmirclient-dev libxkbcommon-dev"
   12.28 -to that command line for Wayland and Mir support.
   12.29 -
   12.30 -NOTES:
   12.31 -- This includes all the audio targets except arts, because Ubuntu pulled the 
   12.32 -  artsc0-dev package, but in theory SDL still supports it.
   12.33 -- DirectFB isn't included because the configure script (currently) fails to find
   12.34 -  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
   12.35 -  configure script to include DirectFB support. Send patches.  :)
   12.36 -
   12.37 -
   12.38 -================================================================================
   12.39 -Joystick does not work
   12.40 -================================================================================
   12.41 -
   12.42 -If you compiled or are using a version of SDL with udev support (and you should!)
   12.43 -there's a few issues that may cause SDL to fail to detect your joystick. To
   12.44 -debug this, start by installing the evtest utility. On Ubuntu/Debian:
   12.45 -
   12.46 -    sudo apt-get install evtest
   12.47 -    
   12.48 -Then run:
   12.49 -    
   12.50 -    sudo evtest
   12.51 -    
   12.52 -You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
   12.53 -Now run:
   12.54 -    
   12.55 -    cat /dev/input/event/XX
   12.56 -
   12.57 -If you get a permission error, you need to set a udev rule to change the mode of
   12.58 -your device (see below)    
   12.59 -    
   12.60 -Also, try:
   12.61 -    
   12.62 -    sudo udevadm info --query=all --name=input/eventXX
   12.63 -    
   12.64 -If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
   12.65 -you need to set up an udev rule to force this variable.
   12.66 -
   12.67 -A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks 
   12.68 -like:
   12.69 -    
   12.70 -   SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   12.71 -   SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   12.72 -   
   12.73 -You can set up similar rules for your device by changing the values listed in
   12.74 -idProduct and idVendor. To obtain these values, try:
   12.75 -    
   12.76 -    sudo udevadm info -a --name=input/eventXX | grep idVendor
   12.77 -    sudo udevadm info -a --name=input/eventXX | grep idProduct
   12.78 -    
   12.79 -If multiple values come up for each of these, the one you want is the first one of each.    
   12.80 -
   12.81 -On other systems which ship with an older udev (such as CentOS), you may need
   12.82 -to set up a rule such as:
   12.83 -    
   12.84 -    SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
   12.85 -
    13.1 --- a/doc/README-macosx.md	Tue Jul 29 09:20:12 2014 -0300
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,225 +0,0 @@
    13.4 -Mac OS X
    13.5 -==============================================================================
    13.6 -
    13.7 -These instructions are for people using Apple's Mac OS X (pronounced
    13.8 -"ten").
    13.9 -
   13.10 -From the developer's point of view, OS X is a sort of hybrid Mac and
   13.11 -Unix system, and you have the option of using either traditional
   13.12 -command line tools or Apple's IDE Xcode.
   13.13 -
   13.14 -To build SDL using the command line, use the standard configure and make
   13.15 -process:
   13.16 -
   13.17 -	./configure
   13.18 -	make
   13.19 -	sudo make install
   13.20 -
   13.21 -You can also build SDL as a Universal library (a single binary for both
   13.22 -32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using
   13.23 -the fatbuild.sh script in build-scripts:
   13.24 -	sh build-scripts/fatbuild.sh
   13.25 -	sudo build-scripts/fatbuild.sh install
   13.26 -This script builds SDL with 10.5 ABI compatibility on i386 and 10.6
   13.27 -ABI compatibility on x86_64 architectures.  For best compatibility you
   13.28 -should compile your application the same way.  A script which wraps
   13.29 -gcc to make this easy is provided in test/gcc-fat.sh
   13.30 -
   13.31 -Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK
   13.32 -(even if you target back to 10.5 systems). PowerPC support for Mac OS X has
   13.33 -been officially dropped as of SDL 2.0.2.
   13.34 -
   13.35 -To use the library once it's built, you essential have two possibilities:
   13.36 -use the traditional autoconf/automake/make method, or use Xcode.
   13.37 -
   13.38 -==============================================================================
   13.39 -Caveats for using SDL with Mac OS X
   13.40 -==============================================================================
   13.41 -
   13.42 -Some things you have to be aware of when using SDL on Mac OS X:
   13.43 -
   13.44 -- If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
   13.45 -  SDL will not register its own. This means that SDL will not terminate using
   13.46 -  SDL_Quit if it receives a termination request, it will terminate like a 
   13.47 -  normal app, and it will not send a SDL_DROPFILE when you request to open a
   13.48 -  file with the app. To solve these issues, put the following code in your 
   13.49 -  NSApplicationDelegate implementation:
   13.50 -
   13.51 -  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
   13.52 -  {
   13.53 -      if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
   13.54 -          SDL_Event event;
   13.55 -          event.type = SDL_QUIT;
   13.56 -          SDL_PushEvent(&event);
   13.57 -      }
   13.58 -
   13.59 -      return NSTerminateCancel;
   13.60 -  }
   13.61 -
   13.62 -  - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   13.63 -  {
   13.64 -      if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
   13.65 -          SDL_Event event;
   13.66 -          event.type = SDL_DROPFILE;
   13.67 -          event.drop.file = SDL_strdup([filename UTF8String]);
   13.68 -          return (SDL_PushEvent(&event) > 0);
   13.69 -      }
   13.70 -
   13.71 -      return NO;
   13.72 -  }
   13.73 -
   13.74 -==============================================================================
   13.75 -Using the Simple DirectMedia Layer with a traditional Makefile
   13.76 -==============================================================================
   13.77 -
   13.78 -An existing autoconf/automake build system for your SDL app has good chances
   13.79 -to work almost unchanged on OS X. However, to produce a "real" Mac OS X binary
   13.80 -that you can distribute to users, you need to put the generated binary into a
   13.81 -so called "bundle", which basically is a fancy folder with a name like
   13.82 -"MyCoolGame.app".
   13.83 -
   13.84 -To get this build automatically, add something like the following rule to
   13.85 -your Makefile.am:
   13.86 -
   13.87 -bundle_contents = APP_NAME.app/Contents
   13.88 -APP_NAME_bundle: EXE_NAME
   13.89 -	mkdir -p $(bundle_contents)/MacOS
   13.90 -	mkdir -p $(bundle_contents)/Resources
   13.91 -	echo "APPL????" > $(bundle_contents)/PkgInfo
   13.92 -	$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
   13.93 -
   13.94 -You should replace EXE_NAME with the name of the executable. APP_NAME is what
   13.95 -will be visible to the user in the Finder. Usually it will be the same
   13.96 -as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME 
   13.97 -usually is "TestGame". You might also want to use @PACKAGE@ to use the package
   13.98 -name as specified in your configure.in file.
   13.99 -
  13.100 -If your project builds more than one application, you will have to do a bit
  13.101 -more. For each of your target applications, you need a separate rule.
  13.102 -
  13.103 -If you want the created bundles to be installed, you may want to add this
  13.104 -rule to your Makefile.am:
  13.105 -
  13.106 -install-exec-hook: APP_NAME_bundle
  13.107 -	rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
  13.108 -	mkdir -p $(DESTDIR)$(prefix)/Applications/
  13.109 -	cp -r $< /$(DESTDIR)$(prefix)Applications/
  13.110 -
  13.111 -This rule takes the Bundle created by the rule from step 3 and installs them
  13.112 -into $(DESTDIR)$(prefix)/Applications/.
  13.113 -
  13.114 -Again, if you want to install multiple applications, you will have to augment
  13.115 -the make rule accordingly.
  13.116 -
  13.117 -
  13.118 -But beware! That is only part of the story! With the above, you end up with
  13.119 -a bare bone .app bundle, which is double clickable from the Finder. But
  13.120 -there are some more things you should do before shipping your product...
  13.121 -
  13.122 -1) The bundle right now probably is dynamically linked against SDL. That 
  13.123 -   means that when you copy it to another computer, *it will not run*,
  13.124 -   unless you also install SDL on that other computer. A good solution
  13.125 -   for this dilemma is to static link against SDL. On OS X, you can
  13.126 -   achieve that by linking against the libraries listed by
  13.127 -     sdl-config --static-libs
  13.128 -   instead of those listed by
  13.129 -     sdl-config --libs
  13.130 -   Depending on how exactly SDL is integrated into your build systems, the
  13.131 -   way to achieve that varies, so I won't describe it here in detail
  13.132 -2) Add an 'Info.plist' to your application. That is a special XML file which
  13.133 -   contains some meta-information about your application (like some copyright
  13.134 -   information, the version of your app, the name of an optional icon file,
  13.135 -   and other things). Part of that information is displayed by the Finder
  13.136 -   when you click on the .app, or if you look at the "Get Info" window.
  13.137 -   More information about Info.plist files can be found on Apple's homepage.
  13.138 -
  13.139 -
  13.140 -As a final remark, let me add that I use some of the techniques (and some
  13.141 -variations of them) in Exult and ScummVM; both are available in source on
  13.142 -the net, so feel free to take a peek at them for inspiration!
  13.143 -
  13.144 -
  13.145 -==============================================================================
  13.146 -Using the Simple DirectMedia Layer with Xcode
  13.147 -==============================================================================
  13.148 -
  13.149 -These instructions are for using Apple's Xcode IDE to build SDL applications.
  13.150 -
  13.151 -- First steps
  13.152 -
  13.153 -The first thing to do is to unpack the Xcode.tar.gz archive in the
  13.154 -top level SDL directory (where the Xcode.tar.gz archive resides).
  13.155 -Because Stuffit Expander will unpack the archive into a subdirectory,
  13.156 -you should unpack the archive manually from the command line:
  13.157 -	cd [path_to_SDL_source]
  13.158 -	tar zxf Xcode.tar.gz
  13.159 -This will create a new folder called Xcode, which you can browse
  13.160 -normally from the Finder.
  13.161 -
  13.162 -- Building the Framework
  13.163 -
  13.164 -The SDL Library is packaged as a framework bundle, an organized
  13.165 -relocatable folder hierarchy of executable code, interface headers,
  13.166 -and additional resources. For practical purposes, you can think of a 
  13.167 -framework as a more user and system-friendly shared library, whose library
  13.168 -file behaves more or less like a standard UNIX shared library.
  13.169 -
  13.170 -To build the framework, simply open the framework project and build it. 
  13.171 -By default, the framework bundle "SDL.framework" is installed in 
  13.172 -/Library/Frameworks. Therefore, the testers and project stationary expect
  13.173 -it to be located there. However, it will function the same in any of the
  13.174 -following locations:
  13.175 -
  13.176 -    ~/Library/Frameworks
  13.177 -    /Local/Library/Frameworks
  13.178 -    /System/Library/Frameworks
  13.179 -
  13.180 -- Build Options
  13.181 -    There are two "Build Styles" (See the "Targets" tab) for SDL.
  13.182 -    "Deployment" should be used if you aren't tweaking the SDL library.
  13.183 -    "Development" should be used to debug SDL apps or the library itself.
  13.184 -
  13.185 -- Building the Testers
  13.186 -    Open the SDLTest project and build away!
  13.187 -
  13.188 -- Using the Project Stationary
  13.189 -    Copy the stationary to the indicated folders to access it from
  13.190 -    the "New Project" and "Add target" menus. What could be easier?
  13.191 -
  13.192 -- Setting up a new project by hand
  13.193 -    Some of you won't want to use the Stationary so I'll give some tips:
  13.194 -    * Create a new "Cocoa Application"
  13.195 -    * Add src/main/macosx/SDLMain.m , .h and .nib to your project
  13.196 -    * Remove "main.c" from your project
  13.197 -    * Remove "MainMenu.nib" from your project
  13.198 -    * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
  13.199 -    * Add "$(HOME)/Library/Frameworks" to the frameworks search path
  13.200 -    * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
  13.201 -    * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib"
  13.202 -    * Add your files
  13.203 -    * Clean and build
  13.204 -
  13.205 -- Building from command line
  13.206 -    Use pbxbuild in the same directory as your .pbproj file
  13.207 -
  13.208 -- Running your app
  13.209 -    You can send command line args to your app by either invoking it from
  13.210 -    the command line (in *.app/Contents/MacOS) or by entering them in the
  13.211 -    "Executables" panel of the target settings.
  13.212 -    
  13.213 -- Implementation Notes
  13.214 -    Some things that may be of interest about how it all works...
  13.215 -    * Working directory
  13.216 -        As defined in the SDL_main.m file, the working directory of your SDL app
  13.217 -        is by default set to its parent. You may wish to change this to better
  13.218 -        suit your needs.
  13.219 -    * You have a Cocoa App!
  13.220 -        Your SDL app is essentially a Cocoa application. When your app
  13.221 -        starts up and the libraries finish loading, a Cocoa procedure is called,
  13.222 -        which sets up the working directory and calls your main() method.
  13.223 -        You are free to modify your Cocoa app with generally no consequence 
  13.224 -        to SDL. You cannot, however, easily change the SDL window itself.
  13.225 -        Functionality may be added in the future to help this.
  13.226 -
  13.227 -
  13.228 -Known bugs are listed in the file "BUGS"
    14.1 --- a/doc/README-nacl.md	Tue Jul 29 09:20:12 2014 -0300
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,103 +0,0 @@
    14.4 -Native Client
    14.5 -================================================================================
    14.6 -
    14.7 -Requirements: 
    14.8 -    
    14.9 -    * Native Client SDK (https://developer.chrome.com/native-client), 
   14.10 -      (tested with Pepper version 33 or higher).
   14.11 -
   14.12 -The SDL backend for Chrome's Native Client has been tested only with the PNaCl
   14.13 -toolchain, which generates binaries designed to run on ARM and x86_32/64 
   14.14 -platforms. This does not mean it won't work with the other toolchains!
   14.15 -
   14.16 -================================================================================
   14.17 -Building SDL for NaCl
   14.18 -================================================================================
   14.19 -
   14.20 -Set up the right environment variables (see naclbuild.sh), then configure SDL with:
   14.21 -
   14.22 -    configure --host=pnacl --prefix some/install/destination
   14.23 -    
   14.24 -Then "make". 
   14.25 -
   14.26 -As an example of how to create a deployable app a Makefile project is provided 
   14.27 -in test/nacl/Makefile, which includes some monkey patching of the common.mk file 
   14.28 -provided by NaCl, without which linking properly to SDL won't work (the search 
   14.29 -path can't be modified externally, so the linker won't find SDL's binaries unless 
   14.30 -you dump them into the SDK path, which is inconvenient).
   14.31 -Also provided in test/nacl is the required support file, such as index.html, 
   14.32 -manifest.json, etc.
   14.33 -SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
   14.34 -This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
   14.35 -hiding the asynchronous nature of the browser behind the scenes...which is not the
   14.36 -same as making it disappear!
   14.37 -
   14.38 -
   14.39 -================================================================================
   14.40 -Running tests
   14.41 -================================================================================
   14.42 -
   14.43 -Due to the nature of NaCl programs, building and running SDL tests is not as
   14.44 -straightforward as one would hope. The script naclbuild.sh in build-scripts 
   14.45 -automates the process and should serve as a guide for users of SDL trying to build 
   14.46 -their own applications.
   14.47 -
   14.48 -Basic usage:
   14.49 -    
   14.50 -    ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
   14.51 -    
   14.52 -This will build testgles2.c by default.
   14.53 -
   14.54 -If you want to build a different test, for example testrendercopyex.c:
   14.55 -    
   14.56 -    SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
   14.57 -    
   14.58 -Once the build finishes, you have to serve the contents with a web server (the
   14.59 -script will give you instructions on how to do that with Python).
   14.60 -
   14.61 -================================================================================
   14.62 -RWops and nacl_io
   14.63 -================================================================================
   14.64 -
   14.65 -SDL_RWops work transparently with nacl_io. Two functions control the mount points:
   14.66 -    
   14.67 -    int mount(const char* source, const char* target, 
   14.68 -                      const char* filesystemtype, 
   14.69 -                      unsigned long mountflags, const void *data);
   14.70 -    int umount(const char *target);
   14.71 -    
   14.72 -    For convenience, SDL will by default mount an httpfs tree at / before calling 
   14.73 -the app's main function. Such setting can be overridden by calling:
   14.74 -    
   14.75 -    umount("/");
   14.76 -
   14.77 -And then mounting a different filesystem at /
   14.78 -
   14.79 -It's important to consider that the asynchronous nature of file operations on a
   14.80 -browser is hidden from the application, effectively providing the developer with
   14.81 -a set of blocking file operations just like you get in a regular desktop 
   14.82 -environment, which eases the job of porting to Native Client, but also introduces 
   14.83 -a set of challenges of its own, in particular when big file sizes and slow 
   14.84 -connections are involved.
   14.85 -
   14.86 -For more information on how nacl_io and mount points work, see:
   14.87 -    
   14.88 -    https://developer.chrome.com/native-client/devguide/coding/nacl_io
   14.89 -    https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
   14.90 -
   14.91 -To be able to save into the directory "/save/" (like backup of game) :
   14.92 -
   14.93 -    mount("", "/save", "html5fs", 0, "type=PERSISTENT");
   14.94 -
   14.95 -And add to manifest.json :
   14.96 -
   14.97 -  "permissions": [
   14.98 -     "unlimitedStorage"
   14.99 -  ]
  14.100 -
  14.101 -================================================================================
  14.102 -TODO - Known Issues
  14.103 -================================================================================
  14.104 -* Testing of all systems with a real application (something other than SDL's tests)
  14.105 -* Key events don't seem to work properly
  14.106 -
    15.1 --- a/doc/README-pandora.md	Tue Jul 29 09:20:12 2014 -0300
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,17 +0,0 @@
    15.4 -Pandora 
    15.5 -=====================================================================
    15.6 -
    15.7 -( http://openpandora.org/ )
    15.8 -- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
    15.9 -support to work on the pandora under the framebuffer. This driver do not have
   15.10 -input support for now, so if you use it you will have to add your own control code.
   15.11 -The video driver name is "pandora" so if you have problem running it from
   15.12 -the framebuffer, try to set the following variable before starting your application :
   15.13 -"export SDL_VIDEODRIVER=pandora"
   15.14 -
   15.15 -- OpenGL ES support was added to the x11 driver, so it's working like the normal
   15.16 -x11 driver one with OpenGLX support, with SDL input event's etc..
   15.17 -
   15.18 -
   15.19 -David Carré (Cpasjuste)
   15.20 -cpasjuste@gmail.com
    16.1 --- a/doc/README-platforms.md	Tue Jul 29 09:20:12 2014 -0300
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,34 +0,0 @@
    16.4 -Platforms
    16.5 -=========
    16.6 -
    16.7 -
    16.8 -This is a list of the platforms SDL supports, and who maintains them.
    16.9 -
   16.10 -Officially supported platforms
   16.11 -==============================
   16.12 -(code compiles, and thoroughly tested for release)
   16.13 -==============================
   16.14 -Windows XP/Vista/7/8
   16.15 -Mac OS X 10.5+
   16.16 -Linux 2.6+
   16.17 -iOS 5.1.1+
   16.18 -Android 2.3.3+
   16.19 -
   16.20 -Unofficially supported platforms
   16.21 -================================
   16.22 -(code compiles, but not thoroughly tested)
   16.23 -================================
   16.24 -FreeBSD
   16.25 -NetBSD
   16.26 -OpenBSD
   16.27 -Solaris
   16.28 -
   16.29 -Platforms supported by volunteers
   16.30 -=================================
   16.31 -Haiku - maintained by Axel Dörfler <axeld@pinc-software.de>
   16.32 -PSP - maintained by 527721088@qq.com
   16.33 -Pandora - maintained by Scott Smith <pickle136@sbcglobal.net>
   16.34 -NaCl - maintained by Gabriel Jacobo <gabomdq@gmail.com>
   16.35 -
   16.36 -Platforms that need maintainers
   16.37 -===============================
    17.1 --- a/doc/README-porting.md	Tue Jul 29 09:20:12 2014 -0300
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,63 +0,0 @@
    17.4 -Porting
    17.5 -=======
    17.6 -
    17.7 -* Porting To A New Platform
    17.8 -
    17.9 -  The first thing you have to do when porting to a new platform, is look at
   17.10 -include/SDL_platform.h and create an entry there for your operating system.
   17.11 -The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
   17.12 -Ideally SDL_platform.h will be able to auto-detect the system it's building
   17.13 -on based on C preprocessor symbols.
   17.14 -
   17.15 -There are two basic ways of building SDL at the moment:
   17.16 -
   17.17 -1. The "UNIX" way:  ./configure; make; make install
   17.18 -
   17.19 -   If you have a GNUish system, then you might try this.  Edit configure.in,
   17.20 -   take a look at the large section labelled:
   17.21 -	"Set up the configuration based on the target platform!"
   17.22 -   Add a section for your platform, and then re-run autogen.sh and build!
   17.23 -
   17.24 -2. Using an IDE:
   17.25 -
   17.26 -   If you're using an IDE or other non-configure build system, you'll probably
   17.27 -   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
   17.28 -   add a section for your platform, and create a custom SDL_config_{platform}.h,
   17.29 -   based on SDL_config.h.minimal and SDL_config.h.in
   17.30 -
   17.31 -   Add the top level include directory to the header search path, and then add
   17.32 -   the following sources to the project:
   17.33 -	src/*.c
   17.34 -	src/atomic/*.c
   17.35 -	src/audio/*.c
   17.36 -	src/cpuinfo/*.c
   17.37 -	src/events/*.c
   17.38 -	src/file/*.c
   17.39 -	src/haptic/*.c
   17.40 -	src/joystick/*.c
   17.41 -	src/power/*.c
   17.42 -	src/render/*.c
   17.43 -	src/stdlib/*.c
   17.44 -	src/thread/*.c
   17.45 -	src/timer/*.c
   17.46 -	src/video/*.c
   17.47 -	src/audio/disk/*.c
   17.48 -	src/audio/dummy/*.c
   17.49 -	src/video/dummy/*.c
   17.50 -	src/haptic/dummy/*.c
   17.51 -	src/joystick/dummy/*.c
   17.52 -	src/main/dummy/*.c
   17.53 -	src/thread/generic/*.c
   17.54 -	src/timer/dummy/*.c
   17.55 -	src/loadso/dummy/*.c
   17.56 -
   17.57 -
   17.58 -Once you have a working library without any drivers, you can go back to each
   17.59 -of the major subsystems and start implementing drivers for your platform.
   17.60 -
   17.61 -If you have any questions, don't hesitate to ask on the SDL mailing list:
   17.62 -	http://www.libsdl.org/mailing-list.php
   17.63 -
   17.64 -Enjoy!
   17.65 -	Sam Lantinga				(slouken@libsdl.org)
   17.66 -
    18.1 --- a/doc/README-psp.md	Tue Jul 29 09:20:12 2014 -0300
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,19 +0,0 @@
    18.4 -PSP
    18.5 -======
    18.6 -SDL port for the Sony PSP contributed by 
    18.7 -   Captian Lex 
    18.8 -
    18.9 -Credit to
   18.10 -   Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
   18.11 -   Geecko for his PSP GU lib "Glib2d"
   18.12 -
   18.13 -Building
   18.14 ---------
   18.15 -To build for the PSP, make sure psp-config is in the path and run:
   18.16 -   make -f Makefile.psp
   18.17 -
   18.18 -
   18.19 -
   18.20 -To Do
   18.21 -------
   18.22 -PSP Screen Keyboard
    19.1 --- a/doc/README-raspberrypi.md	Tue Jul 29 09:20:12 2014 -0300
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,160 +0,0 @@
    19.4 -Raspberry Pi
    19.5 -================================================================================
    19.6 -
    19.7 -Requirements:
    19.8 -
    19.9 -Raspbian (other Linux distros may work as well).
   19.10 -
   19.11 -================================================================================
   19.12 - Features
   19.13 -================================================================================
   19.14 -
   19.15 -* Works without X11
   19.16 -* Hardware accelerated OpenGL ES 2.x
   19.17 -* Sound via ALSA
   19.18 -* Input (mouse/keyboard/joystick) via EVDEV
   19.19 -* Hotplugging of input devices via UDEV
   19.20 -
   19.21 -================================================================================
   19.22 - Raspbian Build Dependencies
   19.23 -================================================================================
   19.24 -
   19.25 -sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
   19.26 -
   19.27 -You also need the VideoCore binary stuff that ships in /opt/vc for EGL and 
   19.28 -OpenGL ES 2.x, it usually comes pre installed, but in any case:
   19.29 -    
   19.30 -sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
   19.31 -
   19.32 -================================================================================
   19.33 - Cross compiling from x86 Linux
   19.34 -================================================================================
   19.35 -
   19.36 -To cross compile SDL for Raspbian from your desktop machine, you'll need a
   19.37 -Raspbian system root and the cross compilation tools. We'll assume these tools
   19.38 -will be placed in /opt/rpi-tools
   19.39 -
   19.40 -    sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
   19.41 -
   19.42 -You'll also need a Rasbian binary image.
   19.43 -Get it from: http://downloads.raspberrypi.org/raspbian_latest 
   19.44 -After unzipping, you'll get file with a name like: <date>-wheezy-raspbian.img
   19.45 -Let's assume the sysroot will be built in /opt/rpi-sysroot.
   19.46 -
   19.47 -    export SYSROOT=/opt/rpi-sysroot
   19.48 -    sudo kpartx -a -v <path_to_raspbian_image>.img
   19.49 -    sudo mount -o loop /dev/mapper/loop0p2 /mnt
   19.50 -    sudo cp -r /mnt $SYSROOT
   19.51 -    sudo apt-get install qemu binfmt-support qemu-user-static
   19.52 -    sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
   19.53 -    sudo mount --bind /dev $SYSROOT/dev
   19.54 -    sudo mount --bind /proc $SYSROOT/proc
   19.55 -    sudo mount --bind /sys $SYSROOT/sys
   19.56 -
   19.57 -Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
   19.58 -edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
   19.59 -
   19.60 -    sudo chroot $SYSROOT
   19.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
   19.62 -    exit
   19.63 -    sudo umount $SYSROOT/dev
   19.64 -    sudo umount $SYSROOT/proc
   19.65 -    sudo umount $SYSROOT/sys
   19.66 -    sudo umount /mnt
   19.67 -    
   19.68 -There's one more fix required, as the libdl.so symlink uses an absolute path 
   19.69 -which doesn't quite work in our setup.
   19.70 -
   19.71 -    sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   19.72 -    sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   19.73 -
   19.74 -The final step is compiling SDL itself.
   19.75 -
   19.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"
   19.77 -    cd <SDL SOURCE>
   19.78 -    mkdir -p build;cd build
   19.79 -    ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
   19.80 -    make
   19.81 -    make install
   19.82 -
   19.83 -To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
   19.84 -    
   19.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
   19.86 -    
   19.87 -================================================================================
   19.88 - Apps don't work or poor video/audio performance
   19.89 -================================================================================
   19.90 -
   19.91 -If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to 
   19.92 -update the RPi's firmware. Note that doing so will fix these problems, but it
   19.93 -will also render the CMA - Dynamic Memory Split functionality useless.
   19.94 -
   19.95 -Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
   19.96 -low in general, specially if a 1080p TV is hooked up.
   19.97 -
   19.98 -See here how to configure this setting: http://elinux.org/RPiconfig
   19.99 -
  19.100 -Using a fixed gpu_mem=128 is the best option (specially if you updated the 
  19.101 -firmware, using CMA probably won't work, at least it's the current case).
  19.102 -
  19.103 -================================================================================
  19.104 - No input
  19.105 -================================================================================
  19.106 -
  19.107 -Make sure you belong to the "input" group.
  19.108 -
  19.109 -    sudo usermod -aG input `whoami`
  19.110 -
  19.111 -================================================================================
  19.112 - No HDMI Audio
  19.113 -================================================================================
  19.114 -
  19.115 -If you notice that ALSA works but there's no audio over HDMI, try adding:
  19.116 -    
  19.117 -    hdmi_drive=2
  19.118 -    
  19.119 -to your config.txt file and reboot.
  19.120 -
  19.121 -Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
  19.122 -
  19.123 -================================================================================
  19.124 - Text Input API support
  19.125 -================================================================================
  19.126 -
  19.127 -The Text Input API is supported, with translation of scan codes done via the
  19.128 -kernel symbol tables. For this to work, SDL needs access to a valid console.
  19.129 -If you notice there's no SDL_TEXTINPUT message being emitted, double check that
  19.130 -your app has read access to one of the following:
  19.131 -    
  19.132 -* /proc/self/fd/0
  19.133 -* /dev/tty
  19.134 -* /dev/tty[0...6]
  19.135 -* /dev/vc/0
  19.136 -* /dev/console
  19.137 -
  19.138 -This is usually not a problem if you run from the physical terminal (as opposed
  19.139 -to running from a pseudo terminal, such as via SSH). If running from a PTS, a 
  19.140 -quick workaround is to run your app as root or add yourself to the tty group,
  19.141 -then re login to the system.
  19.142 -
  19.143 -   sudo usermod -aG tty `whoami`
  19.144 -    
  19.145 -The keyboard layout used by SDL is the same as the one the kernel uses.
  19.146 -To configure the layout on Raspbian:
  19.147 -    
  19.148 -    sudo dpkg-reconfigure keyboard-configuration
  19.149 -    
  19.150 -To configure the locale, which controls which keys are interpreted as letters,
  19.151 -this determining the CAPS LOCK behavior:
  19.152 -
  19.153 -    sudo dpkg-reconfigure locales
  19.154 -
  19.155 -================================================================================
  19.156 - Notes
  19.157 -================================================================================
  19.158 -
  19.159 -* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
  19.160 -  leaking into the console only if it has root privileges. Launching apps locally
  19.161 -  does not suffer from this issue.
  19.162 -  
  19.163 -
    20.1 --- a/doc/README-touch.md	Tue Jul 29 09:20:12 2014 -0300
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,85 +0,0 @@
    20.4 -Touch
    20.5 -===========================================================================
    20.6 -System Specific Notes
    20.7 -===========================================================================
    20.8 -Linux:
    20.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.
   20.10 -
   20.11 -Mac:
   20.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.
   20.13 -
   20.14 -iPhone: 
   20.15 -Works out of box.
   20.16 -
   20.17 -Windows:
   20.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
   20.19 -
   20.20 -===========================================================================
   20.21 -Events
   20.22 -===========================================================================
   20.23 -SDL_FINGERDOWN:
   20.24 -Sent when a finger (or stylus) is placed on a touch device.
   20.25 -Fields:
   20.26 -event.tfinger.touchId  - the Id of the touch device.
   20.27 -event.tfinger.fingerId - the Id of the finger which just went down.
   20.28 -event.tfinger.x        - the x coordinate of the touch (0..1)
   20.29 -event.tfinger.y        - the y coordinate of the touch (0..1)
   20.30 -event.tfinger.pressure - the pressure of the touch (0..1)
   20.31 -
   20.32 -SDL_FINGERMOTION:
   20.33 -Sent when a finger (or stylus) is moved on the touch device.
   20.34 -Fields:
   20.35 -Same as SDL_FINGERDOWN but with additional:
   20.36 -event.tfinger.dx       - change in x coordinate during this motion event.
   20.37 -event.tfinger.dy       - change in y coordinate during this motion event.
   20.38 -
   20.39 -SDL_FINGERUP:
   20.40 -Sent when a finger (or stylus) is lifted from the touch device.
   20.41 -Fields:
   20.42 -Same as SDL_FINGERDOWN.
   20.43 -
   20.44 -
   20.45 -===========================================================================
   20.46 -Functions
   20.47 -===========================================================================
   20.48 -SDL provides the ability to access the underlying Finger structures.
   20.49 -These structures should _never_ be modified.
   20.50 -
   20.51 -The following functions are included from SDL_touch.h
   20.52 -
   20.53 -To get a SDL_TouchID call SDL_GetTouchDevice(index).
   20.54 -This returns a SDL_TouchID.
   20.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!
   20.56 -
   20.57 -The number of touch devices can be queried with SDL_GetNumTouchDevices().
   20.58 -
   20.59 -A SDL_TouchID may be used to get pointers to SDL_Finger.
   20.60 -
   20.61 -SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
   20.62 -
   20.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:
   20.64 -
   20.65 -      float x = event.tfinger.x;
   20.66 -      float y = event.tfinger.y;
   20.67 -
   20.68 -
   20.69 -
   20.70 -To get a SDL_Finger, call SDL_GetTouchFinger(touchID,index), where touchID is a SDL_TouchID, and index is the requested finger.
   20.71 -This returns a SDL_Finger*, or NULL if the finger does not exist, or has been removed.
   20.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.
   20.73 -As a result, be very careful to check for NULL return values.
   20.74 -
   20.75 -A SDL_Finger has the following fields:
   20.76 ->x,y,pressure:
   20.77 -	The current coordinates of the touch.
   20.78 ->pressure:
   20.79 -	The pressure of the touch.
   20.80 -
   20.81 -===========================================================================
   20.82 -Notes
   20.83 -===========================================================================
   20.84 -For a complete example see test/testgesture.c
   20.85 -
   20.86 -Please direct questions/comments to:
   20.87 -   jim.tla+sdl_touch@gmail.com
   20.88 -   (original author, API was changed since)
    21.1 --- a/doc/README-wince.md	Tue Jul 29 09:20:12 2014 -0300
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,10 +0,0 @@
    21.4 -WinCE
    21.5 -=====
    21.6 -
    21.7 -Windows CE is no longer supported by SDL.
    21.8 -
    21.9 -We have left the CE support in SDL 1.2 for those that must have it, and we
   21.10 -have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
   21.11 -
   21.12 ---ryan.
   21.13 -
    22.1 --- a/doc/README-windows.md	Tue Jul 29 09:20:12 2014 -0300
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,41 +0,0 @@
    22.4 -Windows
    22.5 -================================================================================
    22.6 -
    22.7 -================================================================================
    22.8 -OpenGL ES 2.x support
    22.9 -================================================================================
   22.10 -
   22.11 -SDL has support for OpenGL ES 2.x under Windows via two alternative 
   22.12 -implementations. 
   22.13 -The most straightforward method consists in running your app in a system with 
   22.14 -a graphic card paired with a relatively recent (as of November of 2013) driver 
   22.15 -which supports the WGL_EXT_create_context_es2_profile extension. Vendors known 
   22.16 -to ship said extension on Windows currently include nVidia and Intel.
   22.17 -
   22.18 -The other method involves using the ANGLE library (https://code.google.com/p/angleproject/)
   22.19 -If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile
   22.20 -extension is found, SDL will try to load the libEGL.dll library provided by
   22.21 -ANGLE.
   22.22 -To obtain the ANGLE binaries, you can either compile from source from
   22.23 -https://chromium.googlesource.com/angle/angle or copy the relevant binaries from
   22.24 -a recent Chrome/Chromium install for Windows. The files you need are:
   22.25 -    
   22.26 -    * libEGL.dll
   22.27 -    * libGLESv2.dll
   22.28 -    * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler)
   22.29 -    or...
   22.30 -    * d3dcompiler_43.dll (supports Windows XP or later)
   22.31 -    
   22.32 -If you compile ANGLE from source, you can configure it so it does not need the
   22.33 -d3dcompiler_* DLL at all (for details on this, see their documentation). 
   22.34 -However, by default SDL will try to preload the d3dcompiler_46.dll to
   22.35 -comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to
   22.36 -support Windows XP) or to skip this step at all, you can use the 
   22.37 -SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details).
   22.38 -
   22.39 -Known Bugs:
   22.40 -    
   22.41 -    * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
   22.42 -      that there's a bug in the library which prevents the window contents from
   22.43 -      refreshing if this is set to anything other than the default value.
   22.44 -      
    23.1 --- a/doc/README-winrt.md	Tue Jul 29 09:20:12 2014 -0300
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,44 +0,0 @@
    23.4 -WinRT
    23.5 -================================================================================
    23.6 -
    23.7 -SDL/WinRT layer allows SDL2-based applications to run on many of Microsoft's
    23.8 -platforms that utilize the "Windows Runtime" (aka "WinRT") APIs.  WinRT apps
    23.9 -are currently always full-screen apps, run in what Microsoft calls their
   23.10 -"Modern" environment (aka. "Metro"), and are distributed via Microsoft-run
   23.11 -online stores.  Some of the operating systems that support such apps include:
   23.12 -
   23.13 -* Windows 8.x
   23.14 -* Windows RT 8.x (aka. Windows 8.x for ARM processors)
   23.15 -* Windows Phone 8.x
   23.16 -
   23.17 -To note, WinRT applications that run on Windows 8.x and/or Windows RT are often
   23.18 -called "Windows Store" apps.
   23.19 -
   23.20 -
   23.21 ---------------------------------------------------------------------------------
   23.22 -Requirements
   23.23 ---------------------------------------------------------------------------------
   23.24 -- Microsoft Visual C++ 2012 -- Free, "Express" editions may be used, so long
   23.25 -  as they include support for either "Windows Store" or "Windows Phone" apps.
   23.26 -  (NOTE: MSVC 2013 support is pending.  2012 projects may be converted to 2013
   23.27 -  projects by MSVC, in the meantime.)
   23.28 -- A valid Microsoft account -- This requirement is not imposed by SDL, but
   23.29 -  rather by Microsoft's Visual C++ toolchain.
   23.30 -
   23.31 -
   23.32 ---------------------------------------------------------------------------------
   23.33 -TODO
   23.34 ---------------------------------------------------------------------------------
   23.35 -- Finish adding support for MSVC 2013, and "Universal" WinRT apps, which
   23.36 -  support Windows 8.1, Windows Phone 8.1, and in the future, Xbox One and
   23.37 -  Windows Desktop.
   23.38 -- Finish adding support for the SDL satellite libraries (SDL_image, SDL_mixer,
   23.39 -  SDL_ttf, etc.)
   23.40 -- Create templates for both MSVC 2012 and MSVC 2013, and have the corresponding
   23.41 -  VSIX packages either include pre-built copies of SDL, or reference binaries
   23.42 -  available via MSVC's NuGet servers
   23.43 -- Write setup instructions that use MSVC 201x templates
   23.44 -- Write setup instructions that don't use MSVC 201x templates, and use
   23.45 -  MSVC project-to-project references, rather than pre-built binaries
   23.46 -- Write a list of caveats found in SDL/WinRT, such as APIs that don't work due
   23.47 -  to platform restrictions, or things that need further work
    24.1 --- a/doc/README.md	Tue Jul 29 09:20:12 2014 -0300
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,62 +0,0 @@
    24.4 -Simple DirectMedia Layer {#mainpage}
    24.5 -========================
    24.6 -
    24.7 -                                  (SDL)
    24.8 -
    24.9 -                                Version 2.0
   24.10 -
   24.11 ----
   24.12 -http://www.libsdl.org/
   24.13 -
   24.14 -Simple DirectMedia Layer is a cross-platform development library designed
   24.15 -to provide low level access to audio, keyboard, mouse, joystick, and graphics
   24.16 -hardware via OpenGL and Direct3D. It is used by video playback software,
   24.17 -emulators, and popular games including Valve's award winning catalog
   24.18 -and many Humble Bundle games. 42
   24.19 -
   24.20 -SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
   24.21 -Support for other platforms may be found in the source code.
   24.22 -
   24.23 -SDL is written in C, works natively with C++, and there are bindings 
   24.24 -available for several other languages, including C# and Python.
   24.25 -
   24.26 -This library is distributed under the zlib license, which can be found
   24.27 -in the file "COPYING.txt".
   24.28 -
   24.29 -The best way to learn how to use SDL is to check out the header files in
   24.30 -the "include" subdirectory and the programs in the "test" subdirectory.
   24.31 -The header files and test programs are well commented and always up to date.
   24.32 -
   24.33 -More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
   24.34 -
   24.35 -- [Android](README-android.md)
   24.36 -- [CMake](README-cmake.md)
   24.37 -- [DirectFB](README-directfb.md)
   24.38 -- [DynAPI](README-dynapi.md)
   24.39 -- [Gesture](README-gesture.md)
   24.40 -- [Mercurial](README-hg.md)
   24.41 -- [iOS](README-ios.md)
   24.42 -- [Linux](README-linux.md)
   24.43 -- [OS X](README-macosx.md)
   24.44 -- [Native Client](README-nacl.md)
   24.45 -- [Pandora](README-pandora.md)
   24.46 -- [Supported Platforms](README-platforms.md)
   24.47 -- [Porting information](README-porting.md)
   24.48 -- [PSP](README-psp.md)
   24.49 -- [Raspberry Pi](README-raspberrypi.md)
   24.50 -- [Touch](README-touch.md)
   24.51 -- [WinCE](README-wince.md)
   24.52 -- [Windows](README-windows.md)
   24.53 -- [WinRT](README-winrt.md)
   24.54 -
   24.55 -If you need help with the library, or just want to discuss SDL related
   24.56 -issues, you can join the [developers mailing list](http://www.libsdl.org/mailing-list.php)
   24.57 -
   24.58 -If you want to report bugs or contribute patches, please submit them to
   24.59 -[bugzilla](http://bugzilla.libsdl.org/)
   24.60 -
   24.61 -Enjoy!
   24.62 -
   24.63 -
   24.64 -Sam Lantinga <mailto:slouken@libsdl.org>
   24.65 -
    25.1 --- a/doc/doxyfile	Tue Jul 29 09:20:12 2014 -0300
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,1559 +0,0 @@
    25.4 -# Doxyfile 1.5.9
    25.5 -
    25.6 -# This file describes the settings to be used by the documentation system
    25.7 -# doxygen (www.doxygen.org) for a project
    25.8 -#
    25.9 -# All text after a hash (#) is considered a comment and will be ignored
   25.10 -# The format is:
   25.11 -#       TAG = value [value, ...]
   25.12 -# For lists items can also be appended using:
   25.13 -#       TAG += value [value, ...]
   25.14 -# Values that contain spaces should be placed between quotes (" ")
   25.15 -
   25.16 -#---------------------------------------------------------------------------
   25.17 -# Project related configuration options
   25.18 -#---------------------------------------------------------------------------
   25.19 -
   25.20 -# This tag specifies the encoding used for all characters in the config file 
   25.21 -# that follow. The default is UTF-8 which is also the encoding used for all 
   25.22 -# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
   25.23 -# iconv built into libc) for the transcoding. See 
   25.24 -# http://www.gnu.org/software/libiconv for the list of possible encodings.
   25.25 -
   25.26 -DOXYFILE_ENCODING      = UTF-8
   25.27 -
   25.28 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
   25.29 -# by quotes) that should identify the project.
   25.30 -
   25.31 -PROJECT_NAME           = SDL
   25.32 -
   25.33 -# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
   25.34 -# This could be handy for archiving the generated documentation or 
   25.35 -# if some version control system is used.
   25.36 -
   25.37 -PROJECT_NUMBER         = 2.0.0
   25.38 -
   25.39 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
   25.40 -# base path where the generated documentation will be put. 
   25.41 -# If a relative path is entered, it will be relative to the location 
   25.42 -# where doxygen was started. If left blank the current directory will be used.
   25.43 -
   25.44 -OUTPUT_DIRECTORY       = ./output
   25.45 -
   25.46 -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
   25.47 -# 4096 sub-directories (in 2 levels) under the output directory of each output 
   25.48 -# format and will distribute the generated files over these directories. 
   25.49 -# Enabling this option can be useful when feeding doxygen a huge amount of 
   25.50 -# source files, where putting all generated files in the same directory would 
   25.51 -# otherwise cause performance problems for the file system.
   25.52 -
   25.53 -CREATE_SUBDIRS         = YES
   25.54 -
   25.55 -# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
   25.56 -# documentation generated by doxygen is written. Doxygen will use this 
   25.57 -# information to generate all constant output in the proper language. 
   25.58 -# The default language is English, other supported languages are: 
   25.59 -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
   25.60 -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
   25.61 -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
   25.62 -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
   25.63 -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
   25.64 -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
   25.65 -
   25.66 -OUTPUT_LANGUAGE        = English
   25.67 -
   25.68 -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
   25.69 -# include brief member descriptions after the members that are listed in 
   25.70 -# the file and class documentation (similar to JavaDoc). 
   25.71 -# Set to NO to disable this.
   25.72 -
   25.73 -BRIEF_MEMBER_DESC      = YES
   25.74 -
   25.75 -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
   25.76 -# the brief description of a member or function before the detailed description. 
   25.77 -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
   25.78 -# brief descriptions will be completely suppressed.
   25.79 -
   25.80 -REPEAT_BRIEF           = YES
   25.81 -
   25.82 -# This tag implements a quasi-intelligent brief description abbreviator 
   25.83 -# that is used to form the text in various listings. Each string 
   25.84 -# in this list, if found as the leading text of the brief description, will be 
   25.85 -# stripped from the text and the result after processing the whole list, is 
   25.86 -# used as the annotated text. Otherwise, the brief description is used as-is. 
   25.87 -# If left blank, the following values are used ("$name" is automatically 
   25.88 -# replaced with the name of the entity): "The $name class" "The $name widget" 
   25.89 -# "The $name file" "is" "provides" "specifies" "contains" 
   25.90 -# "represents" "a" "an" "the"
   25.91 -
   25.92 -ABBREVIATE_BRIEF       = "The $name class" \
   25.93 -                         "The $name widget" \
   25.94 -                         "The $name file" \
   25.95 -                         is \
   25.96 -                         provides \
   25.97 -                         specifies \
   25.98 -                         contains \
   25.99 -                         represents \
  25.100 -                         a \
  25.101 -                         an \
  25.102 -                         the
  25.103 -
  25.104 -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
  25.105 -# Doxygen will generate a detailed section even if there is only a brief 
  25.106 -# description.
  25.107 -
  25.108 -ALWAYS_DETAILED_SEC    = YES
  25.109 -
  25.110 -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
  25.111 -# inherited members of a class in the documentation of that class as if those 
  25.112 -# members were ordinary class members. Constructors, destructors and assignment 
  25.113 -# operators of the base classes will not be shown.
  25.114 -
  25.115 -INLINE_INHERITED_MEMB  = NO
  25.116 -
  25.117 -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
  25.118 -# path before files name in the file list and in the header files. If set 
  25.119 -# to NO the shortest path that makes the file name unique will be used.
  25.120 -
  25.121 -FULL_PATH_NAMES        = YES
  25.122 -
  25.123 -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
  25.124 -# can be used to strip a user-defined part of the path. Stripping is 
  25.125 -# only done if one of the specified strings matches the left-hand part of 
  25.126 -# the path. The tag can be used to show relative paths in the file list. 
  25.127 -# If left blank the directory from which doxygen is run is used as the 
  25.128 -# path to strip.
  25.129 -
  25.130 -STRIP_FROM_PATH        =
  25.131 -
  25.132 -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
  25.133 -# the path mentioned in the documentation of a class, which tells 
  25.134 -# the reader which header file to include in order to use a class. 
  25.135 -# If left blank only the name of the header file containing the class 
  25.136 -# definition is used. Otherwise one should specify the include paths that 
  25.137 -# are normally passed to the compiler using the -I flag.
  25.138 -
  25.139 -STRIP_FROM_INC_PATH    = 
  25.140 -
  25.141 -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
  25.142 -# (but less readable) file names. This can be useful is your file systems 
  25.143 -# doesn't support long names like on DOS, Mac, or CD-ROM.
  25.144 -
  25.145 -SHORT_NAMES            = NO
  25.146 -
  25.147 -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
  25.148 -# will interpret the first line (until the first dot) of a JavaDoc-style 
  25.149 -# comment as the brief description. If set to NO, the JavaDoc 
  25.150 -# comments will behave just like regular Qt-style comments 
  25.151 -# (thus requiring an explicit @brief command for a brief description.)
  25.152 -
  25.153 -JAVADOC_AUTOBRIEF      = NO
  25.154 -
  25.155 -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
  25.156 -# interpret the first line (until the first dot) of a Qt-style 
  25.157 -# comment as the brief description. If set to NO, the comments 
  25.158 -# will behave just like regular Qt-style comments (thus requiring 
  25.159 -# an explicit \brief command for a brief description.)
  25.160 -
  25.161 -QT_AUTOBRIEF           = NO
  25.162 -
  25.163 -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
  25.164 -# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
  25.165 -# comments) as a brief description. This used to be the default behaviour. 
  25.166 -# The new default is to treat a multi-line C++ comment block as a detailed 
  25.167 -# description. Set this tag to YES if you prefer the old behaviour instead.
  25.168 -
  25.169 -MULTILINE_CPP_IS_BRIEF = NO
  25.170 -
  25.171 -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
  25.172 -# member inherits the documentation from any documented member that it 
  25.173 -# re-implements.
  25.174 -
  25.175 -INHERIT_DOCS           = YES
  25.176 -
  25.177 -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
  25.178 -# a new page for each member. If set to NO, the documentation of a member will 
  25.179 -# be part of the file/class/namespace that contains it.
  25.180 -
  25.181 -SEPARATE_MEMBER_PAGES  = NO
  25.182 -
  25.183 -# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
  25.184 -# Doxygen uses this value to replace tabs by spaces in code fragments.
  25.185 -
  25.186 -TAB_SIZE               = 8
  25.187 -
  25.188 -# This tag can be used to specify a number of aliases that acts 
  25.189 -# as commands in the documentation. An alias has the form "name=value". 
  25.190 -# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
  25.191 -# put the command \sideeffect (or @sideeffect) in the documentation, which 
  25.192 -# will result in a user-defined paragraph with heading "Side Effects:". 
  25.193 -# You can put \n's in the value part of an alias to insert newlines.
  25.194 -
  25.195 -ALIASES                = "defined=\"\def\"" \
  25.196 -                         "discussion=\"\par Discussion:\n\""
  25.197 -
  25.198 -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
  25.199 -# sources only. Doxygen will then generate output that is more tailored for C. 
  25.200 -# For instance, some of the names that are used will be different. The list 
  25.201 -# of all members will be omitted, etc.
  25.202 -
  25.203 -OPTIMIZE_OUTPUT_FOR_C  = YES
  25.204 -
  25.205 -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
  25.206 -# sources only. Doxygen will then generate output that is more tailored for 
  25.207 -# Java. For instance, namespaces will be presented as packages, qualified 
  25.208 -# scopes will look different, etc.
  25.209 -
  25.210 -OPTIMIZE_OUTPUT_JAVA   = NO
  25.211 -
  25.212 -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
  25.213 -# sources only. Doxygen will then generate output that is more tailored for 
  25.214 -# Fortran.
  25.215 -
  25.216 -OPTIMIZE_FOR_FORTRAN   = NO
  25.217 -
  25.218 -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
  25.219 -# sources. Doxygen will then generate output that is tailored for 
  25.220 -# VHDL.
  25.221 -
  25.222 -OPTIMIZE_OUTPUT_VHDL   = NO
  25.223 -
  25.224 -# Doxygen selects the parser to use depending on the extension of the files it parses. 
  25.225 -# With this tag you can assign which parser to use for a given extension. 
  25.226 -# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
  25.227 -# The format is ext=language, where ext is a file extension, and language is one of 
  25.228 -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
  25.229 -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
  25.230 -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
  25.231 -# use: inc=Fortran f=C. Note that for custom extensions you also need to set
  25.232 -# FILE_PATTERNS otherwise the files are not read by doxygen.
  25.233 -
  25.234 -EXTENSION_MAPPING      = 
  25.235 -
  25.236 -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
  25.237 -# to include (a tag file for) the STL sources as input, then you should 
  25.238 -# set this tag to YES in order to let doxygen match functions declarations and 
  25.239 -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
  25.240 -# func(std::string) {}). This also make the inheritance and collaboration 
  25.241 -# diagrams that involve STL classes more complete and accurate.
  25.242 -
  25.243 -BUILTIN_STL_SUPPORT    = YES
  25.244 -
  25.245 -# If you use Microsoft's C++/CLI language, you should set this option to YES to 
  25.246 -# enable parsing support.
  25.247 -
  25.248 -CPP_CLI_SUPPORT        = NO
  25.249 -
  25.250 -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
  25.251 -# Doxygen will parse them like normal C++ but will assume all classes use public 
  25.252 -# instead of private inheritance when no explicit protection keyword is present.
  25.253 -
  25.254 -SIP_SUPPORT            = NO
  25.255 -
  25.256 -# For Microsoft's IDL there are propget and propput attributes to indicate getter 
  25.257 -# and setter methods for a property. Setting this option to YES (the default) 
  25.258 -# will make doxygen to replace the get and set methods by a property in the 
  25.259 -# documentation. This will only work if the methods are indeed getting or 
  25.260 -# setting a simple type. If this is not the case, or you want to show the 
  25.261 -# methods anyway, you should set this option to NO.
  25.262 -
  25.263 -IDL_PROPERTY_SUPPORT   = YES
  25.264 -
  25.265 -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
  25.266 -# tag is set to YES, then doxygen will reuse the documentation of the first 
  25.267 -# member in the group (if any) for the other members of the group. By default 
  25.268 -# all members of a group must be documented explicitly.
  25.269 -
  25.270 -DISTRIBUTE_GROUP_DOC   = NO
  25.271 -
  25.272 -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
  25.273 -# the same type (for instance a group of public functions) to be put as a 
  25.274 -# subgroup of that type (e.g. under the Public Functions section). Set it to 
  25.275 -# NO to prevent subgrouping. Alternatively, this can be done per class using 
  25.276 -# the \nosubgrouping command.
  25.277 -
  25.278 -SUBGROUPING            = YES
  25.279 -
  25.280 -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
  25.281 -# is documented as struct, union, or enum with the name of the typedef. So 
  25.282 -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
  25.283 -# with name TypeT. When disabled the typedef will appear as a member of a file, 
  25.284 -# namespace, or class. And the struct will be named TypeS. This can typically 
  25.285 -# be useful for C code in case the coding convention dictates that all compound 
  25.286 -# types are typedef'ed and only the typedef is referenced, never the tag name.
  25.287 -
  25.288 -TYPEDEF_HIDES_STRUCT   = YES
  25.289 -
  25.290 -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
  25.291 -# determine which symbols to keep in memory and which to flush to disk. 
  25.292 -# When the cache is full, less often used symbols will be written to disk. 
  25.293 -# For small to medium size projects (<1000 input files) the default value is 
  25.294 -# probably good enough. For larger projects a too small cache size can cause 
  25.295 -# doxygen to be busy swapping symbols to and from disk most of the time 
  25.296 -# causing a significant performance penality. 
  25.297 -# If the system has enough physical memory increasing the cache will improve the 
  25.298 -# performance by keeping more symbols in memory. Note that the value works on 
  25.299 -# a logarithmic scale so increasing the size by one will rougly double the 
  25.300 -# memory usage. The cache size is given by this formula: 
  25.301 -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
  25.302 -# corresponding to a cache size of 2^16 = 65536 symbols
  25.303 -
  25.304 -SYMBOL_CACHE_SIZE      = 0
  25.305 -
  25.306 -#---------------------------------------------------------------------------
  25.307 -# Build related configuration options
  25.308 -#---------------------------------------------------------------------------
  25.309 -
  25.310 -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
  25.311 -# documentation are documented, even if no documentation was available. 
  25.312 -# Private class members and static file members will be hidden unless 
  25.313 -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  25.314 -
  25.315 -EXTRACT_ALL            = YES
  25.316 -
  25.317 -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
  25.318 -# will be included in the documentation.
  25.319 -
  25.320 -EXTRACT_PRIVATE        = YES
  25.321 -
  25.322 -# If the EXTRACT_STATIC tag is set to YES all static members of a file 
  25.323 -# will be included in the documentation.
  25.324 -
  25.325 -EXTRACT_STATIC         = YES
  25.326 -
  25.327 -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
  25.328 -# defined locally in source files will be included in the documentation. 
  25.329 -# If set to NO only classes defined in header files are included.
  25.330 -
  25.331 -EXTRACT_LOCAL_CLASSES  = YES
  25.332 -
  25.333 -# This flag is only useful for Objective-C code. When set to YES local 
  25.334 -# methods, which are defined in the implementation section but not in 
  25.335 -# the interface are included in the documentation. 
  25.336 -# If set to NO (the default) only methods in the interface are included.
  25.337 -
  25.338 -EXTRACT_LOCAL_METHODS  = YES
  25.339 -
  25.340 -# If this flag is set to YES, the members of anonymous namespaces will be 
  25.341 -# extracted and appear in the documentation as a namespace called 
  25.342 -# 'anonymous_namespace{file}', where file will be replaced with the base 
  25.343 -# name of the file that contains the anonymous namespace. By default 
  25.344 -# anonymous namespace are hidden.
  25.345 -
  25.346 -EXTRACT_ANON_NSPACES   = YES
  25.347 -
  25.348 -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
  25.349 -# undocumented members of documented classes, files or namespaces. 
  25.350 -# If set to NO (the default) these members will be included in the 
  25.351 -# various overviews, but no documentation section is generated. 
  25.352 -# This option has no effect if EXTRACT_ALL is enabled.
  25.353 -
  25.354 -HIDE_UNDOC_MEMBERS     = NO
  25.355 -
  25.356 -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
  25.357 -# undocumented classes that are normally visible in the class hierarchy. 
  25.358 -# If set to NO (the default) these classes will be included in the various 
  25.359 -# overviews. This option has no effect if EXTRACT_ALL is enabled.
  25.360 -
  25.361 -HIDE_UNDOC_CLASSES     = NO
  25.362 -
  25.363 -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
  25.364 -# friend (class|struct|union) declarations. 
  25.365 -# If set to NO (the default) these declarations will be included in the 
  25.366 -# documentation.
  25.367 -
  25.368 -HIDE_FRIEND_COMPOUNDS  = NO
  25.369 -
  25.370 -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
  25.371 -# documentation blocks found inside the body of a function. 
  25.372 -# If set to NO (the default) these blocks will be appended to the 
  25.373 -# function's detailed documentation block.
  25.374 -
  25.375 -HIDE_IN_BODY_DOCS      = NO
  25.376 -
  25.377 -# The INTERNAL_DOCS tag determines if documentation 
  25.378 -# that is typed after a \internal command is included. If the tag is set 
  25.379 -# to NO (the default) then the documentation will be excluded. 
  25.380 -# Set it to YES to include the internal documentation.
  25.381 -
  25.382 -INTERNAL_DOCS          = YES
  25.383 -
  25.384 -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
  25.385 -# file names in lower-case letters. If set to YES upper-case letters are also 
  25.386 -# allowed. This is useful if you have classes or files whose names only differ 
  25.387 -# in case and if your file system supports case sensitive file names. Windows 
  25.388 -# and Mac users are advised to set this option to NO.
  25.389 -
  25.390 -CASE_SENSE_NAMES       = NO
  25.391 -
  25.392 -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
  25.393 -# will show members with their full class and namespace scopes in the 
  25.394 -# documentation. If set to YES the scope will be hidden.
  25.395 -
  25.396 -HIDE_SCOPE_NAMES       = NO
  25.397 -
  25.398 -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
  25.399 -# will put a list of the files that are included by a file in the documentation 
  25.400 -# of that file.
  25.401 -
  25.402 -SHOW_INCLUDE_FILES     = YES
  25.403 -
  25.404 -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
  25.405 -# is inserted in the documentation for inline members.
  25.406 -
  25.407 -INLINE_INFO            = YES
  25.408 -
  25.409 -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
  25.410 -# will sort the (detailed) documentation of file and class members 
  25.411 -# alphabetically by member name. If set to NO the members will appear in 
  25.412 -# declaration order.
  25.413 -
  25.414 -SORT_MEMBER_DOCS       = YES
  25.415 -
  25.416 -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
  25.417 -# brief documentation of file, namespace and class members alphabetically 
  25.418 -# by member name. If set to NO (the default) the members will appear in 
  25.419 -# declaration order.
  25.420 -
  25.421 -SORT_BRIEF_DOCS        = NO
  25.422 -
  25.423 -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
  25.424 -# hierarchy of group names into alphabetical order. If set to NO (the default) 
  25.425 -# the group names will appear in their defined order.
  25.426 -
  25.427 -SORT_GROUP_NAMES       = NO
  25.428 -
  25.429 -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
  25.430 -# sorted by fully-qualified names, including namespaces. If set to 
  25.431 -# NO (the default), the class list will be sorted only by class name, 
  25.432 -# not including the namespace part. 
  25.433 -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
  25.434 -# Note: This option applies only to the class list, not to the 
  25.435 -# alphabetical list.
  25.436 -
  25.437 -SORT_BY_SCOPE_NAME     = NO
  25.438 -
  25.439 -# The GENERATE_TODOLIST tag can be used to enable (YES) or 
  25.440 -# disable (NO) the todo list. This list is created by putting \todo 
  25.441 -# commands in the documentation.
  25.442 -
  25.443 -GENERATE_TODOLIST      = YES
  25.444 -
  25.445 -# The GENERATE_TESTLIST tag can be used to enable (YES) or 
  25.446 -# disable (NO) the test list. This list is created by putting \test 
  25.447 -# commands in the documentation.
  25.448 -
  25.449 -GENERATE_TESTLIST      = YES
  25.450 -
  25.451 -# The GENERATE_BUGLIST tag can be used to enable (YES) or 
  25.452 -# disable (NO) the bug list. This list is created by putting \bug 
  25.453 -# commands in the documentation.
  25.454 -
  25.455 -GENERATE_BUGLIST       = YES
  25.456 -
  25.457 -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
  25.458 -# disable (NO) the deprecated list. This list is created by putting 
  25.459 -# \deprecated commands in the documentation.
  25.460 -
  25.461 -GENERATE_DEPRECATEDLIST= YES
  25.462 -
  25.463 -# The ENABLED_SECTIONS tag can be used to enable conditional 
  25.464 -# documentation sections, marked by \if sectionname ... \endif.
  25.465 -
  25.466 -ENABLED_SECTIONS       = 
  25.467 -
  25.468 -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
  25.469 -# the initial value of a variable or define consists of for it to appear in 
  25.470 -# the documentation. If the initializer consists of more lines than specified 
  25.471 -# here it will be hidden. Use a value of 0 to hide initializers completely. 
  25.472 -# The appearance of the initializer of individual variables and defines in the 
  25.473 -# documentation can be controlled using \showinitializer or \hideinitializer 
  25.474 -# command in the documentation regardless of this setting.
  25.475 -
  25.476 -MAX_INITIALIZER_LINES  = 30
  25.477 -
  25.478 -# If the sources in your project are distributed over multiple directories 
  25.479 -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
  25.480 -# in the documentation. The default is NO.
  25.481 -
  25.482 -SHOW_DIRECTORIES       = YES
  25.483 -
  25.484 -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
  25.485 -# This will remove the Files entry from the Quick Index and from the 
  25.486 -# Folder Tree View (if specified). The default is YES.
  25.487 -
  25.488 -SHOW_FILES             = YES
  25.489 -
  25.490 -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
  25.491 -# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
  25.492 -# and from the Folder Tree View (if specified). The default is YES.
  25.493 -
  25.494 -SHOW_NAMESPACES        = YES
  25.495 -
  25.496 -# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
  25.497 -# doxygen should invoke to get the current version for each file (typically from 
  25.498 -# the version control system). Doxygen will invoke the program by executing (via 
  25.499 -# popen()) the command <command> <input-file>, where <command> is the value of 
  25.500 -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
  25.501 -# provided by doxygen. Whatever the program writes to standard output 
  25.502 -# is used as the file version. See the manual for examples.
  25.503 -
  25.504 -FILE_VERSION_FILTER    = 
  25.505 -
  25.506 -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
  25.507 -# doxygen. The layout file controls the global structure of the generated output files 
  25.508 -# in an output format independent way. The create the layout file that represents 
  25.509 -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
  25.510 -# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
  25.511 -# of the layout file.
  25.512 -
  25.513 -LAYOUT_FILE            = 
  25.514 -
  25.515 -#---------------------------------------------------------------------------
  25.516 -# configuration options related to warning and progress messages
  25.517 -#---------------------------------------------------------------------------
  25.518 -
  25.519 -# The QUIET tag can be used to turn on/off the messages that are generated 
  25.520 -# by doxygen. Possible values are YES and NO. If left blank NO is used.
  25.521 -
  25.522 -QUIET                  = NO
  25.523 -
  25.524 -# The WARNINGS tag can be used to turn on/off the warning messages that are 
  25.525 -# generated by doxygen. Possible values are YES and NO. If left blank 
  25.526 -# NO is used.
  25.527 -
  25.528 -WARNINGS               = YES
  25.529 -
  25.530 -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
  25.531 -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
  25.532 -# automatically be disabled.
  25.533 -
  25.534 -WARN_IF_UNDOCUMENTED   = YES
  25.535 -
  25.536 -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
  25.537 -# potential errors in the documentation, such as not documenting some 
  25.538 -# parameters in a documented function, or documenting parameters that 
  25.539 -# don't exist or using markup commands wrongly.
  25.540 -
  25.541 -WARN_IF_DOC_ERROR      = YES
  25.542 -
  25.543 -# This WARN_NO_PARAMDOC option can be abled to get warnings for 
  25.544 -# functions that are documented, but have no documentation for their parameters 
  25.545 -# or return value. If set to NO (the default) doxygen will only warn about 
  25.546 -# wrong or incomplete parameter documentation, but not about the absence of 
  25.547 -# documentation.
  25.548 -
  25.549 -WARN_NO_PARAMDOC       = YES
  25.550 -
  25.551 -# The WARN_FORMAT tag determines the format of the warning messages that 
  25.552 -# doxygen can produce. The string should contain the $file, $line, and $text 
  25.553 -# tags, which will be replaced by the file and line number from which the 
  25.554 -# warning originated and the warning text. Optionally the format may contain 
  25.555 -# $version, which will be replaced by the version of the file (if it could 
  25.556 -# be obtained via FILE_VERSION_FILTER)
  25.557 -
  25.558 -WARN_FORMAT            = "$file:$line: $text"
  25.559 -
  25.560 -# The WARN_LOGFILE tag can be used to specify a file to which warning 
  25.561 -# and error messages should be written. If left blank the output is written 
  25.562 -# to stderr.
  25.563 -
  25.564 -WARN_LOGFILE           = ./doxygen_warn.txt
  25.565 -
  25.566 -#---------------------------------------------------------------------------
  25.567 -# configuration options related to the input files
  25.568 -#---------------------------------------------------------------------------
  25.569 -
  25.570 -# The INPUT tag can be used to specify the files and/or directories that contain 
  25.571 -# documented source files. You may enter file names like "myfile.cpp" or 
  25.572 -# directories like "/usr/src/myproject". Separate the files or directories 
  25.573 -# with spaces.
  25.574 -
  25.575 -INPUT                  = . ../include
  25.576 -
  25.577 -# This tag can be used to specify the character encoding of the source files 
  25.578 -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
  25.579 -# also the default input encoding. Doxygen uses libiconv (or the iconv built 
  25.580 -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
  25.581 -# the list of possible encodings.
  25.582 -
  25.583 -INPUT_ENCODING         = UTF-8
  25.584 -
  25.585 -# If the value of the INPUT tag contains directories, you can use the 
  25.586 -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  25.587 -# and *.h) to filter out the source-files in the directories. If left 
  25.588 -# blank the following patterns are tested: 
  25.589 -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
  25.590 -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  25.591 -
  25.592 -FILE_PATTERNS          = *.c \
  25.593 -                         *.cc \
  25.594 -                         *.cxx \
  25.595 -                         *.cpp \
  25.596 -                         *.c++ \
  25.597 -                         *.d \
  25.598 -                         *.java \
  25.599 -                         *.ii \
  25.600 -                         *.ixx \
  25.601 -                         *.ipp \
  25.602 -                         *.i++ \
  25.603 -                         *.inl \
  25.604 -                         *.h \
  25.605 -                         *.hh \
  25.606 -                         *.hxx \
  25.607 -                         *.hpp \
  25.608 -                         *.h++ \
  25.609 -                         *.idl \
  25.610 -                         *.odl \
  25.611 -                         *.cs \
  25.612 -                         *.php \
  25.613 -                         *.php3 \
  25.614 -                         *.inc \
  25.615 -                         *.m \
  25.616 -                         *.mm \
  25.617 -                         *.dox \
  25.618 -                         *.py \
  25.619 -                         *.f90 \
  25.620 -                         *.f \
  25.621 -                         *.vhd \
  25.622 -                         *.vhdl \
  25.623 -                         *.h.in \
  25.624 -                         *.h.default \
  25.625 -                         *.md
  25.626 -
  25.627 -# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
  25.628 -# should be searched for input files as well. Possible values are YES and NO. 
  25.629 -# If left blank NO is used.
  25.630 -
  25.631 -RECURSIVE              = YES
  25.632 -
  25.633 -# The EXCLUDE tag can be used to specify files and/or directories that should 
  25.634 -# excluded from the INPUT source files. This way you can easily exclude a 
  25.635 -# subdirectory from a directory tree whose root is specified with the INPUT tag.
  25.636 -
  25.637 -EXCLUDE                = ../include/SDL_opengles2_gl2ext.h \
  25.638 -                         ../include/SDL_opengles2_gl2platform.h \
  25.639 -                         ../include/SDL_opengles2_khrplatform.h \
  25.640 -                         ../include/SDL_opengl_glext.h \
  25.641 -                         ../include/SDL_opengles2_gl2.h \
  25.642 -                         ../include/SDL_opengles2.h \
  25.643 -                         ../include/SDL_opengles.h \
  25.644 -                         ../include/SDL_opengl.h \
  25.645 -
  25.646 -
  25.647 -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
  25.648 -# directories that are symbolic links (a Unix filesystem feature) are excluded 
  25.649 -# from the input.
  25.650 -
  25.651 -EXCLUDE_SYMLINKS       = NO
  25.652 -
  25.653 -# If the value of the INPUT tag contains directories, you can use the 
  25.654 -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
  25.655 -# certain files from those directories. Note that the wildcards are matched 
  25.656 -# against the file with absolute path, so to exclude all test directories 
  25.657 -# for example use the pattern */test/*
  25.658 -
  25.659 -EXCLUDE_PATTERNS       =
  25.660 -
  25.661 -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
  25.662 -# (namespaces, classes, functions, etc.) that should be excluded from the 
  25.663 -# output. The symbol name can be a fully qualified name, a word, or if the 
  25.664 -# wildcard * is used, a substring. Examples: ANamespace, AClass, 
  25.665 -# AClass::ANamespace, ANamespace::*Test
  25.666 -
  25.667 -EXCLUDE_SYMBOLS        = 
  25.668 -
  25.669 -# The EXAMPLE_PATH tag can be used to specify one or more files or 
  25.670 -# directories that contain example code fragments that are included (see 
  25.671 -# the \include command).
  25.672 -
  25.673 -EXAMPLE_PATH           =
  25.674 -
  25.675 -# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
  25.676 -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  25.677 -# and *.h) to filter out the source-files in the directories. If left 
  25.678 -# blank all files are included.
  25.679 -
  25.680 -EXAMPLE_PATTERNS       = *
  25.681 -
  25.682 -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
  25.683 -# searched for input files to be used with the \include or \dontinclude 
  25.684 -# commands irrespective of the value of the RECURSIVE tag. 
  25.685 -# Possible values are YES and NO. If left blank NO is used.
  25.686 -
  25.687 -EXAMPLE_RECURSIVE      = YES
  25.688 -
  25.689 -# The IMAGE_PATH tag can be used to specify one or more files or 
  25.690 -# directories that contain image that are included in the documentation (see 
  25.691 -# the \image command).
  25.692 -
  25.693 -IMAGE_PATH             = 
  25.694 -
  25.695 -# The INPUT_FILTER tag can be used to specify a program that doxygen should 
  25.696 -# invoke to filter for each input file. Doxygen will invoke the filter program 
  25.697 -# by executing (via popen()) the command <filter> <input-file>, where <filter> 
  25.698 -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
  25.699 -# input file. Doxygen will then use the output that the filter program writes 
  25.700 -# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  25.701 -# ignored.
  25.702 -
  25.703 -INPUT_FILTER           = 
  25.704 -
  25.705 -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
  25.706 -# basis.  Doxygen will compare the file name with each pattern and apply the 
  25.707 -# filter if there is a match.  The filters are a list of the form: 
  25.708 -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
  25.709 -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
  25.710 -# is applied to all files.
  25.711 -
  25.712 -FILTER_PATTERNS        = 
  25.713 -
  25.714 -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
  25.715 -# INPUT_FILTER) will be used to filter the input files when producing source 
  25.716 -# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  25.717 -
  25.718 -FILTER_SOURCE_FILES    = NO
  25.719 -
  25.720 -#---------------------------------------------------------------------------
  25.721 -# configuration options related to source browsing
  25.722 -#---------------------------------------------------------------------------
  25.723 -
  25.724 -# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
  25.725 -# be generated. Documented entities will be cross-referenced with these sources. 
  25.726 -# Note: To get rid of all source code in the generated output, make sure also 
  25.727 -# VERBATIM_HEADERS is set to NO.
  25.728 -
  25.729 -SOURCE_BROWSER         = YES
  25.730 -
  25.731 -# Setting the INLINE_SOURCES tag to YES will include the body 
  25.732 -# of functions and classes directly in the documentation.
  25.733 -
  25.734 -INLINE_SOURCES         = YES
  25.735 -
  25.736 -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
  25.737 -# doxygen to hide any special comment blocks from generated source code 
  25.738 -# fragments. Normal C and C++ comments will always remain visible.
  25.739 -
  25.740 -STRIP_CODE_COMMENTS    = NO
  25.741 -
  25.742 -# If the REFERENCED_BY_RELATION tag is set to YES 
  25.743 -# then for each documented function all documented 
  25.744 -# functions referencing it will be listed.
  25.745 -
  25.746 -REFERENCED_BY_RELATION = YES
  25.747 -
  25.748 -# If the REFERENCES_RELATION tag is set to YES 
  25.749 -# then for each documented function all documented entities 
  25.750 -# called/used by that function will be listed.
  25.751 -
  25.752 -REFERENCES_RELATION    = YES
  25.753 -
  25.754 -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
  25.755 -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
  25.756 -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
  25.757 -# link to the source code.  Otherwise they will link to the documentation.
  25.758 -
  25.759 -REFERENCES_LINK_SOURCE = YES
  25.760 -
  25.761 -# If the USE_HTAGS tag is set to YES then the references to source code 
  25.762 -# will point to the HTML generated by the htags(1) tool instead of doxygen 
  25.763 -# built-in source browser. The htags tool is part of GNU's global source 
  25.764 -# tagging system (see http://www.gnu.org/software/global/global.html). You 
  25.765 -# will need version 4.8.6 or higher.
  25.766 -
  25.767 -USE_HTAGS              = NO
  25.768 -
  25.769 -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
  25.770 -# will generate a verbatim copy of the header file for each class for 
  25.771 -# which an include is specified. Set to NO to disable this.
  25.772 -
  25.773 -VERBATIM_HEADERS       = YES
  25.774 -
  25.775 -#---------------------------------------------------------------------------
  25.776 -# configuration options related to the alphabetical class index
  25.777 -#---------------------------------------------------------------------------
  25.778 -
  25.779 -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
  25.780 -# of all compounds will be generated. Enable this if the project 
  25.781 -# contains a lot of classes, structs, unions or interfaces.
  25.782 -
  25.783 -ALPHABETICAL_INDEX     = YES
  25.784 -
  25.785 -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
  25.786 -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
  25.787 -# in which this list will be split (can be a number in the range [1..20])
  25.788 -
  25.789 -COLS_IN_ALPHA_INDEX    = 5
  25.790 -
  25.791 -# In case all classes in a project start with a common prefix, all 
  25.792 -# classes will be put under the same header in the alphabetical index. 
  25.793 -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
  25.794 -# should be ignored while generating the index headers.
  25.795 -
  25.796 -IGNORE_PREFIX          = SDL_ \
  25.797 -                         SDL
  25.798 -
  25.799 -#---------------------------------------------------------------------------
  25.800 -# configuration options related to the HTML output
  25.801 -#---------------------------------------------------------------------------
  25.802 -
  25.803 -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
  25.804 -# generate HTML output.
  25.805 -
  25.806 -GENERATE_HTML          = YES
  25.807 -
  25.808 -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
  25.809 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
  25.810 -# put in front of it. If left blank `html' will be used as the default path.
  25.811 -
  25.812 -HTML_OUTPUT            = html
  25.813 -
  25.814 -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
  25.815 -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
  25.816 -# doxygen will generate files with .html extension.
  25.817 -
  25.818 -HTML_FILE_EXTENSION    = .html
  25.819 -
  25.820 -# The HTML_HEADER tag can be used to specify a personal HTML header for 
  25.821 -# each generated HTML page. If it is left blank doxygen will generate a 
  25.822 -# standard header.
  25.823 -
  25.824 -HTML_HEADER            = 
  25.825 -
  25.826 -# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  25.827 -# each generated HTML page. If it is left blank doxygen will generate a 
  25.828 -# standard footer.
  25.829 -
  25.830 -HTML_FOOTER            = 
  25.831 -
  25.832 -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  25.833 -# style sheet that is used by each HTML page. It can be used to 
  25.834 -# fine-tune the look of the HTML output. If the tag is left blank doxygen 
  25.835 -# will generate a default style sheet. Note that doxygen will try to copy 
  25.836 -# the style sheet file to the HTML output directory, so don't put your own 
  25.837 -# stylesheet in the HTML output directory as well, or it will be erased!
  25.838 -
  25.839 -HTML_STYLESHEET        = 
  25.840 -
  25.841 -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
  25.842 -# files or namespaces will be aligned in HTML using tables. If set to 
  25.843 -# NO a bullet list will be used.
  25.844 -
  25.845 -HTML_ALIGN_MEMBERS     = YES
  25.846 -
  25.847 -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
  25.848 -# documentation will contain sections that can be hidden and shown after the 
  25.849 -# page has loaded. For this to work a browser that supports 
  25.850 -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
  25.851 -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
  25.852 -
  25.853 -HTML_DYNAMIC_SECTIONS  = YES
  25.854 -
  25.855 -# If the GENERATE_DOCSET tag is set to YES, additional index files 
  25.856 -# will be generated that can be used as input for Apple's Xcode 3 
  25.857 -# integrated development environment, introduced with OSX 10.5 (Leopard). 
  25.858 -# To create a documentation set, doxygen will generate a Makefile in the 
  25.859 -# HTML output directory. Running make will produce the docset in that 
  25.860 -# directory and running "make install" will install the docset in 
  25.861 -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
  25.862 -# it at startup. 
  25.863 -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
  25.864 -
  25.865 -GENERATE_DOCSET        = NO
  25.866 -
  25.867 -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
  25.868 -# feed. A documentation feed provides an umbrella under which multiple 
  25.869 -# documentation sets from a single provider (such as a company or product suite) 
  25.870 -# can be grouped.
  25.871 -
  25.872 -DOCSET_FEEDNAME        = "SDL 2.0 Doxygen"
  25.873 -
  25.874 -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
  25.875 -# should uniquely identify the documentation set bundle. This should be a 
  25.876 -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
  25.877 -# will append .docset to the name.
  25.878 -
  25.879 -DOCSET_BUNDLE_ID       = org.libsdl.sdl20
  25.880 -
  25.881 -# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
  25.882 -# will be generated that can be used as input for tools like the 
  25.883 -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
  25.884 -# of the generated HTML documentation.
  25.885 -
  25.886 -GENERATE_HTMLHELP      = NO
  25.887 -
  25.888 -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
  25.889 -# be used to specify the file name of the resulting .chm file. You 
  25.890 -# can add a path in front of the file if the result should not be 
  25.891 -# written to the html output directory.
  25.892 -
  25.893 -CHM_FILE               = ./sdl20.chm
  25.894 -
  25.895 -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
  25.896 -# be used to specify the location (absolute path including file name) of 
  25.897 -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
  25.898 -# the HTML help compiler on the generated index.hhp.
  25.899 -
  25.900 -HHC_LOCATION           = 
  25.901 -
  25.902 -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
  25.903 -# controls if a separate .chi index file is generated (YES) or that 
  25.904 -# it should be included in the master .chm file (NO).
  25.905 -
  25.906 -GENERATE_CHI           = NO
  25.907 -
  25.908 -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
  25.909 -# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
  25.910 -# content.
  25.911 -
  25.912 -CHM_INDEX_ENCODING     = 
  25.913 -
  25.914 -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
  25.915 -# controls whether a binary table of contents is generated (YES) or a 
  25.916 -# normal table of contents (NO) in the .chm file.
  25.917 -
  25.918 -BINARY_TOC             = NO
  25.919 -
  25.920 -# The TOC_EXPAND flag can be set to YES to add extra items for group members 
  25.921 -# to the contents of the HTML help documentation and to the tree view.
  25.922 -
  25.923 -TOC_EXPAND             = YES
  25.924 -
  25.925 -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
  25.926 -# are set, an additional index file will be generated that can be used as input for 
  25.927 -# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
  25.928 -# HTML documentation.
  25.929 -
  25.930 -GENERATE_QHP           = NO
  25.931 -
  25.932 -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
  25.933 -# be used to specify the file name of the resulting .qch file. 
  25.934 -# The path specified is relative to the HTML output folder.
  25.935 -
  25.936 -QCH_FILE               = 
  25.937 -
  25.938 -# The QHP_NAMESPACE tag specifies the namespace to use when generating 
  25.939 -# Qt Help Project output. For more information please see 
  25.940 -# http://doc.trolltech.com/qthelpproject.html#namespace
  25.941 -
  25.942 -QHP_NAMESPACE          = 
  25.943 -
  25.944 -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
  25.945 -# Qt Help Project output. For more information please see 
  25.946 -# http://doc.trolltech.com/qthelpproject.html#virtual-folders
  25.947 -
  25.948 -QHP_VIRTUAL_FOLDER     = doc
  25.949 -
  25.950 -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
  25.951 -# For more information please see 
  25.952 -# http://doc.trolltech.com/qthelpproject.html#custom-filters
  25.953 -
  25.954 -QHP_CUST_FILTER_NAME   = 
  25.955 -
  25.956 -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
  25.957 -# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
  25.958 -
  25.959 -QHP_CUST_FILTER_ATTRS  = 
  25.960 -
  25.961 -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
  25.962 -# filter section matches. 
  25.963 -# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
  25.964 -
  25.965 -QHP_SECT_FILTER_ATTRS  = 
  25.966 -
  25.967 -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
  25.968 -# be used to specify the location of Qt's qhelpgenerator. 
  25.969 -# If non-empty doxygen will try to run qhelpgenerator on the generated 
  25.970 -# .qhp file.
  25.971 -
  25.972 -QHG_LOCATION           = 
  25.973 -
  25.974 -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
  25.975 -# top of each HTML page. The value NO (the default) enables the index and 
  25.976 -# the value YES disables it.
  25.977 -
  25.978 -DISABLE_INDEX          = NO
  25.979 -
  25.980 -# This tag can be used to set the number of enum values (range [1..20]) 
  25.981 -# that doxygen will group on one line in the generated HTML documentation.
  25.982 -
  25.983 -ENUM_VALUES_PER_LINE   = 1
  25.984 -
  25.985 -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
  25.986 -# structure should be generated to display hierarchical information. 
  25.987 -# If the tag value is set to FRAME, a side panel will be generated 
  25.988 -# containing a tree-like index structure (just like the one that 
  25.989 -# is generated for HTML Help). For this to work a browser that supports 
  25.990 -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
  25.991 -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
  25.992 -# probably better off using the HTML help feature. Other possible values 
  25.993 -# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
  25.994 -# and Class Hierarchy pages using a tree view instead of an ordered list; 
  25.995 -# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
  25.996 -# disables this behavior completely. For backwards compatibility with previous 
  25.997 -# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
  25.998 -# respectively.
  25.999 -
 25.1000 -GENERATE_TREEVIEW      = ALL
 25.1001 -
 25.1002 -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
 25.1003 -# used to set the initial width (in pixels) of the frame in which the tree 
 25.1004 -# is shown.
 25.1005 -
 25.1006 -TREEVIEW_WIDTH         = 250
 25.1007 -
 25.1008 -# Use this tag to change the font size of Latex formulas included 
 25.1009 -# as images in the HTML documentation. The default is 10. Note that 
 25.1010 -# when you change the font size after a successful doxygen run you need 
 25.1011 -# to manually remove any form_*.png images from the HTML output directory 
 25.1012 -# to force them to be regenerated.
 25.1013 -
 25.1014 -FORMULA_FONTSIZE       = 10
 25.1015 -
 25.1016 -#---------------------------------------------------------------------------
 25.1017 -# configuration options related to the LaTeX output
 25.1018 -#---------------------------------------------------------------------------
 25.1019 -
 25.1020 -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
 25.1021 -# generate Latex output.
 25.1022 -
 25.1023 -GENERATE_LATEX         = NO
 25.1024 -
 25.1025 -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
 25.1026 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 25.1027 -# put in front of it. If left blank `latex' will be used as the default path.
 25.1028 -
 25.1029 -LATEX_OUTPUT           = latex
 25.1030 -
 25.1031 -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
 25.1032 -# invoked. If left blank `latex' will be used as the default command name.
 25.1033 -
 25.1034 -LATEX_CMD_NAME         = latex
 25.1035 -
 25.1036 -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
 25.1037 -# generate index for LaTeX. If left blank `makeindex' will be used as the 
 25.1038 -# default command name.
 25.1039 -
 25.1040 -MAKEINDEX_CMD_NAME     = makeindex
 25.1041 -
 25.1042 -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
 25.1043 -# LaTeX documents. This may be useful for small projects and may help to 
 25.1044 -# save some trees in general.
 25.1045 -
 25.1046 -COMPACT_LATEX          = NO
 25.1047 -
 25.1048 -# The PAPER_TYPE tag can be used to set the paper type that is used 
 25.1049 -# by the printer. Possible values are: a4, a4wide, letter, legal and 
 25.1050 -# executive. If left blank a4wide will be used.
 25.1051 -
 25.1052 -PAPER_TYPE             = a4wide
 25.1053 -
 25.1054 -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
 25.1055 -# packages that should be included in the LaTeX output.
 25.1056 -
 25.1057 -EXTRA_PACKAGES         = 
 25.1058 -
 25.1059 -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
 25.1060 -# the generated latex document. The header should contain everything until 
 25.1061 -# the first chapter. If it is left blank doxygen will generate a 
 25.1062 -# standard header. Notice: only use this tag if you know what you are doing!
 25.1063 -
 25.1064 -LATEX_HEADER           = 
 25.1065 -
 25.1066 -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
 25.1067 -# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
 25.1068 -# contain links (just like the HTML output) instead of page references 
 25.1069 -# This makes the output suitable for online browsing using a pdf viewer.
 25.1070 -
 25.1071 -PDF_HYPERLINKS         = YES
 25.1072 -
 25.1073 -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
 25.1074 -# plain latex in the generated Makefile. Set this option to YES to get a 
 25.1075 -# higher quality PDF documentation.
 25.1076 -
 25.1077 -USE_PDFLATEX           = YES
 25.1078 -
 25.1079 -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
 25.1080 -# command to the generated LaTeX files. This will instruct LaTeX to keep 
 25.1081 -# running if errors occur, instead of asking the user for help. 
 25.1082 -# This option is also used when generating formulas in HTML.
 25.1083 -
 25.1084 -LATEX_BATCHMODE        = NO
 25.1085 -
 25.1086 -# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
 25.1087 -# include the index chapters (such as File Index, Compound Index, etc.) 
 25.1088 -# in the output.
 25.1089 -
 25.1090 -LATEX_HIDE_INDICES     = NO
 25.1091 -
 25.1092 -# If LATEX_SOURCE_CODE is set to YES then doxygen will include
 25.1093 -# source code with syntax highlighting in the LaTeX output.
 25.1094 -# Note that which sources are shown also depends on other settings
 25.1095 -# such as SOURCE_BROWSER.
 25.1096 -
 25.1097 -LATEX_SOURCE_CODE      = NO
 25.1098 -
 25.1099 -#---------------------------------------------------------------------------
 25.1100 -# configuration options related to the RTF output
 25.1101 -#---------------------------------------------------------------------------
 25.1102 -
 25.1103 -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
 25.1104 -# The RTF output is optimized for Word 97 and may not look very pretty with 
 25.1105 -# other RTF readers or editors.
 25.1106 -
 25.1107 -GENERATE_RTF           = NO
 25.1108 -
 25.1109 -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
 25.1110 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 25.1111 -# put in front of it. If left blank `rtf' will be used as the default path.
 25.1112 -
 25.1113 -RTF_OUTPUT             = rtf
 25.1114 -
 25.1115 -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
 25.1116 -# RTF documents. This may be useful for small projects and may help to 
 25.1117 -# save some trees in general.
 25.1118 -
 25.1119 -COMPACT_RTF            = NO
 25.1120 -
 25.1121 -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
 25.1122 -# will contain hyperlink fields. The RTF file will 
 25.1123 -# contain links (just like the HTML output) instead of page references. 
 25.1124 -# This makes the output suitable for online browsing using WORD or other 
 25.1125 -# programs which support those fields. 
 25.1126 -# Note: wordpad (write) and others do not support links.
 25.1127 -
 25.1128 -RTF_HYPERLINKS         = NO
 25.1129 -
 25.1130 -# Load stylesheet definitions from file. Syntax is similar to doxygen's 
 25.1131 -# config file, i.e. a series of assignments. You only have to provide 
 25.1132 -# replacements, missing definitions are set to their default value.
 25.1133 -
 25.1134 -RTF_STYLESHEET_FILE    = 
 25.1135 -
 25.1136 -# Set optional variables used in the generation of an rtf document. 
 25.1137 -# Syntax is similar to doxygen's config file.
 25.1138 -
 25.1139 -RTF_EXTENSIONS_FILE    = 
 25.1140 -
 25.1141 -#---------------------------------------------------------------------------
 25.1142 -# configuration options related to the man page output
 25.1143 -#---------------------------------------------------------------------------
 25.1144 -
 25.1145 -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
 25.1146 -# generate man pages
 25.1147 -
 25.1148 -GENERATE_MAN           = NO
 25.1149 -
 25.1150 -# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
 25.1151 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 25.1152 -# put in front of it. If left blank `man' will be used as the default path.
 25.1153 -
 25.1154 -MAN_OUTPUT             = man
 25.1155 -
 25.1156 -# The MAN_EXTENSION tag determines the extension that is added to 
 25.1157 -# the generated man pages (default is the subroutine's section .3)
 25.1158 -
 25.1159 -MAN_EXTENSION          = .3
 25.1160 -
 25.1161 -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
 25.1162 -# then it will generate one additional man file for each entity 
 25.1163 -# documented in the real man page(s). These additional files 
 25.1164 -# only source the real man page, but without them the man command 
 25.1165 -# would be unable to find the correct page. The default is NO.
 25.1166 -
 25.1167 -MAN_LINKS              = NO
 25.1168 -
 25.1169 -#---------------------------------------------------------------------------
 25.1170 -# configuration options related to the XML output
 25.1171 -#---------------------------------------------------------------------------
 25.1172 -
 25.1173 -# If the GENERATE_XML tag is set to YES Doxygen will 
 25.1174 -# generate an XML file that captures the structure of 
 25.1175 -# the code including all documentation.
 25.1176 -
 25.1177 -GENERATE_XML           = NO
 25.1178 -
 25.1179 -# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
 25.1180 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 25.1181 -# put in front of it. If left blank `xml' will be used as the default path.
 25.1182 -
 25.1183 -XML_OUTPUT             = xml
 25.1184 -
 25.1185 -# The XML_SCHEMA tag can be used to specify an XML schema, 
 25.1186 -# which can be used by a validating XML parser to check the 
 25.1187 -# syntax of the XML files.
 25.1188 -
 25.1189 -XML_SCHEMA             = 
 25.1190 -
 25.1191 -# The XML_DTD tag can be used to specify an XML DTD, 
 25.1192 -# which can be used by a validating XML parser to check the 
 25.1193 -# syntax of the XML files.
 25.1194 -
 25.1195 -XML_DTD                = 
 25.1196 -
 25.1197 -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
 25.1198 -# dump the program listings (including syntax highlighting 
 25.1199 -# and cross-referencing information) to the XML output. Note that 
 25.1200 -# enabling this will significantly increase the size of the XML output.
 25.1201 -
 25.1202 -XML_PROGRAMLISTING     = YES
 25.1203 -
 25.1204 -#---------------------------------------------------------------------------
 25.1205 -# configuration options for the AutoGen Definitions output
 25.1206 -#---------------------------------------------------------------------------
 25.1207 -
 25.1208 -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
 25.1209 -# generate an AutoGen Definitions (see autogen.sf.net) file 
 25.1210 -# that captures the structure of the code including all 
 25.1211 -# documentation. Note that this feature is still experimental 
 25.1212 -# and incomplete at the moment.
 25.1213 -
 25.1214 -GENERATE_AUTOGEN_DEF   = NO
 25.1215 -
 25.1216 -#---------------------------------------------------------------------------
 25.1217 -# configuration options related to the Perl module output
 25.1218 -#---------------------------------------------------------------------------
 25.1219 -
 25.1220 -# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
 25.1221 -# generate a Perl module file that captures the structure of 
 25.1222 -# the code including all documentation. Note that this 
 25.1223 -# feature is still experimental and incomplete at the 
 25.1224 -# moment.
 25.1225 -
 25.1226 -GENERATE_PERLMOD       = NO
 25.1227 -
 25.1228 -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
 25.1229 -# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
 25.1230 -# to generate PDF and DVI output from the Perl module output.
 25.1231 -
 25.1232 -PERLMOD_LATEX          = NO
 25.1233 -
 25.1234 -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
 25.1235 -# nicely formatted so it can be parsed by a human reader.  This is useful 
 25.1236 -# if you want to understand what is going on.  On the other hand, if this 
 25.1237 -# tag is set to NO the size of the Perl module output will be much smaller 
 25.1238 -# and Perl will parse it just the same.
 25.1239 -
 25.1240 -PERLMOD_PRETTY         = YES
 25.1241 -
 25.1242 -# The names of the make variables in the generated doxyrules.make file 
 25.1243 -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
 25.1244 -# This is useful so different doxyrules.make files included by the same 
 25.1245 -# Makefile don't overwrite each other's variables.
 25.1246 -
 25.1247 -PERLMOD_MAKEVAR_PREFIX = 
 25.1248 -
 25.1249 -#---------------------------------------------------------------------------
 25.1250 -# Configuration options related to the preprocessor   
 25.1251 -#---------------------------------------------------------------------------
 25.1252 -
 25.1253 -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
 25.1254 -# evaluate all C-preprocessor directives found in the sources and include 
 25.1255 -# files.
 25.1256 -
 25.1257 -ENABLE_PREPROCESSING   = YES
 25.1258 -
 25.1259 -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
 25.1260 -# names in the source code. If set to NO (the default) only conditional 
 25.1261 -# compilation will be performed. Macro expansion can be done in a controlled 
 25.1262 -# way by setting EXPAND_ONLY_PREDEF to YES.
 25.1263 -
 25.1264 -MACRO_EXPANSION        = YES
 25.1265 -
 25.1266 -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
 25.1267 -# then the macro expansion is limited to the macros specified with the 
 25.1268 -# PREDEFINED and EXPAND_AS_DEFINED tags.
 25.1269 -
 25.1270 -EXPAND_ONLY_PREDEF     = YES
 25.1271 -
 25.1272 -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
 25.1273 -# in the INCLUDE_PATH (see below) will be search if a #include is found.
 25.1274 -
 25.1275 -SEARCH_INCLUDES        = YES
 25.1276 -
 25.1277 -# The INCLUDE_PATH tag can be used to specify one or more directories that 
 25.1278 -# contain include files that are not input files but should be processed by 
 25.1279 -# the preprocessor.
 25.1280 -
 25.1281 -INCLUDE_PATH           =
 25.1282 -
 25.1283 -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
 25.1284 -# patterns (like *.h and *.hpp) to filter out the header-files in the 
 25.1285 -# directories. If left blank, the patterns specified with FILE_PATTERNS will 
 25.1286 -# be used.
 25.1287 -
 25.1288 -INCLUDE_FILE_PATTERNS  = 
 25.1289 -
 25.1290 -# The PREDEFINED tag can be used to specify one or more macro names that 
 25.1291 -# are defined before the preprocessor is started (similar to the -D option of 
 25.1292 -# gcc). The argument of the tag is a list of macros of the form: name 
 25.1293 -# or name=definition (no spaces). If the definition and the = are 
 25.1294 -# omitted =1 is assumed. To prevent a macro definition from being 
 25.1295 -# undefined via #undef or recursively expanded use the := operator 
 25.1296 -# instead of the = operator.
 25.1297 -
 25.1298 -PREDEFINED             = DOXYGEN_SHOULD_IGNORE_THIS=1 \
 25.1299 -                         DECLSPEC= \
 25.1300 -                         SDLCALL= \
 25.1301 -                         _WIN32=1
 25.1302 -
 25.1303 -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 25.1304 -# this tag can be used to specify a list of macro names that should be expanded. 
 25.1305 -# The macro definition that is found in the sources will be used. 
 25.1306 -# Use the PREDEFINED tag if you want to use a different macro definition.
 25.1307 -
 25.1308 -EXPAND_AS_DEFINED      = 
 25.1309 -
 25.1310 -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
 25.1311 -# doxygen's preprocessor will remove all function-like macros that are alone 
 25.1312 -# on a line, have an all uppercase name, and do not end with a semicolon. Such 
 25.1313 -# function macros are typically used for boiler-plate code, and will confuse 
 25.1314 -# the parser if not removed.
 25.1315 -
 25.1316 -SKIP_FUNCTION_MACROS   = YES
 25.1317 -
 25.1318 -#---------------------------------------------------------------------------
 25.1319 -# Configuration::additions related to external references   
 25.1320 -#---------------------------------------------------------------------------
 25.1321 -
 25.1322 -# The TAGFILES option can be used to specify one or more tagfiles. 
 25.1323 -# Optionally an initial location of the external documentation 
 25.1324 -# can be added for each tagfile. The format of a tag file without 
 25.1325 -# this location is as follows: 
 25.1326 -#   TAGFILES = file1 file2 ... 
 25.1327 -# Adding location for the tag files is done as follows: 
 25.1328 -#   TAGFILES = file1=loc1 "file2 = loc2" ... 
 25.1329 -# where "loc1" and "loc2" can be relative or absolute paths or 
 25.1330 -# URLs. If a location is present for each tag, the installdox tool 
 25.1331 -# does not have to be run to correct the links. 
 25.1332 -# Note that each tag file must have a unique name 
 25.1333 -# (where the name does NOT include the path) 
 25.1334 -# If a tag file is not located in the directory in which doxygen 
 25.1335 -# is run, you must also specify the path to the tagfile here.
 25.1336 -
 25.1337 -TAGFILES               = 
 25.1338 -
 25.1339 -# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
 25.1340 -# a tag file that is based on the input files it reads.
 25.1341 -
 25.1342 -GENERATE_TAGFILE       = ./SDL.tag
 25.1343 -
 25.1344 -# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
 25.1345 -# in the class index. If set to NO only the inherited external classes 
 25.1346 -# will be listed.
 25.1347 -
 25.1348 -ALLEXTERNALS           = NO
 25.1349 -
 25.1350 -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
 25.1351 -# in the modules index. If set to NO, only the current project's groups will 
 25.1352 -# be listed.
 25.1353 -
 25.1354 -EXTERNAL_GROUPS        = YES
 25.1355 -
 25.1356 -# The PERL_PATH should be the absolute path and name of the perl script 
 25.1357 -# interpreter (i.e. the result of `which perl').
 25.1358 -
 25.1359 -PERL_PATH              = c:\Perl\bin\perl.exe
 25.1360 -
 25.1361 -#---------------------------------------------------------------------------
 25.1362 -# Configuration options related to the dot tool   
 25.1363 -#---------------------------------------------------------------------------
 25.1364 -
 25.1365 -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
 25.1366 -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
 25.1367 -# or super classes. Setting the tag to NO turns the diagrams off. Note that 
 25.1368 -# this option is superseded by the HAVE_DOT option below. This is only a 
 25.1369 -# fallback. It is recommended to install and use dot, since it yields more 
 25.1370 -# powerful graphs.
 25.1371 -
 25.1372 -CLASS_DIAGRAMS         = YES
 25.1373 -
 25.1374 -# You can define message sequence charts within doxygen comments using the \msc 
 25.1375 -# command. Doxygen will then run the mscgen tool (see 
 25.1376 -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
 25.1377 -# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
 25.1378 -# the mscgen tool resides. If left empty the tool is assumed to be found in the 
 25.1379 -# default search path.
 25.1380 -
 25.1381 -MSCGEN_PATH            = 
 25.1382 -
 25.1383 -# If set to YES, the inheritance and collaboration graphs will hide 
 25.1384 -# inheritance and usage relations if the target is undocumented 
 25.1385 -# or is not a class.
 25.1386 -
 25.1387 -HIDE_UNDOC_RELATIONS   = YES
 25.1388 -
 25.1389 -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
 25.1390 -# available from the path. This tool is part of Graphviz, a graph visualization 
 25.1391 -# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
 25.1392 -# have no effect if this option is set to NO (the default)
 25.1393 -
 25.1394 -HAVE_DOT               = YES
 25.1395 -
 25.1396 -# By default doxygen will write a font called FreeSans.ttf to the output 
 25.1397 -# directory and reference it in all dot files that doxygen generates. This 
 25.1398 -# font does not include all possible unicode characters however, so when you need 
 25.1399 -# these (or just want a differently looking font) you can specify the font name 
 25.1400 -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
 25.1401 -# which can be done by putting it in a standard location or by setting the 
 25.1402 -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
 25.1403 -# containing the font.
 25.1404 -
 25.1405 -DOT_FONTNAME           = FreeSans
 25.1406 -
 25.1407 -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
 25.1408 -# The default size is 10pt.
 25.1409 -
 25.1410 -DOT_FONTSIZE           = 10
 25.1411 -
 25.1412 -# By default doxygen will tell dot to use the output directory to look for the 
 25.1413 -# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
 25.1414 -# different font using DOT_FONTNAME you can set the path where dot 
 25.1415 -# can find it using this tag.
 25.1416 -
 25.1417 -DOT_FONTPATH           = 
 25.1418 -
 25.1419 -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 25.1420 -# will generate a graph for each documented class showing the direct and 
 25.1421 -# indirect inheritance relations. Setting this tag to YES will force the 
 25.1422 -# the CLASS_DIAGRAMS tag to NO.
 25.1423 -
 25.1424 -CLASS_GRAPH            = YES
 25.1425 -
 25.1426 -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 25.1427 -# will generate a graph for each documented class showing the direct and 
 25.1428 -# indirect implementation dependencies (inheritance, containment, and 
 25.1429 -# class references variables) of the class with other documented classes.
 25.1430 -
 25.1431 -COLLABORATION_GRAPH    = YES
 25.1432 -
 25.1433 -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
 25.1434 -# will generate a graph for groups, showing the direct groups dependencies
 25.1435 -
 25.1436 -GROUP_GRAPHS           = YES
 25.1437 -
 25.1438 -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
 25.1439 -# collaboration diagrams in a style similar to the OMG's Unified Modeling 
 25.1440 -# Language.
 25.1441 -
 25.1442 -UML_LOOK               = NO
 25.1443 -
 25.1444 -# If set to YES, the inheritance and collaboration graphs will show the 
 25.1445 -# relations between templates and their instances.
 25.1446 -
 25.1447 -TEMPLATE_RELATIONS     = YES
 25.1448 -
 25.1449 -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
 25.1450 -# tags are set to YES then doxygen will generate a graph for each documented 
 25.1451 -# file showing the direct and indirect include dependencies of the file with 
 25.1452 -# other documented files.
 25.1453 -
 25.1454 -INCLUDE_GRAPH          = YES
 25.1455 -
 25.1456 -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
 25.1457 -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
 25.1458 -# documented header file showing the documented files that directly or 
 25.1459 -# indirectly include this file.
 25.1460 -
 25.1461 -INCLUDED_BY_GRAPH      = YES
 25.1462 -
 25.1463 -# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
 25.1464 -# doxygen will generate a call dependency graph for every global function 
 25.1465 -# or class method. Note that enabling this option will significantly increase 
 25.1466 -# the time of a run. So in most cases it will be better to enable call graphs 
 25.1467 -# for selected functions only using the \callgraph command.
 25.1468 -
 25.1469 -CALL_GRAPH             = NO
 25.1470 -
 25.1471 -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
 25.1472 -# doxygen will generate a caller dependency graph for every global function 
 25.1473 -# or class method. Note that enabling this option will significantly increase 
 25.1474 -# the time of a run. So in most cases it will be better to enable caller 
 25.1475 -# graphs for selected functions only using the \callergraph command.
 25.1476 -
 25.1477 -CALLER_GRAPH           = NO
 25.1478 -
 25.1479 -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
 25.1480 -# will graphical hierarchy of all classes instead of a textual one.
 25.1481 -
 25.1482 -GRAPHICAL_HIERARCHY    = YES
 25.1483 -
 25.1484 -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
 25.1485 -# then doxygen will show the dependencies a directory has on other directories 
 25.1486 -# in a graphical way. The dependency relations are determined by the #include 
 25.1487 -# relations between the files in the directories.
 25.1488 -
 25.1489 -DIRECTORY_GRAPH        = YES
 25.1490 -
 25.1491 -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
 25.1492 -# generated by dot. Possible values are png, jpg, or gif 
 25.1493 -# If left blank png will be used.
 25.1494 -
 25.1495 -DOT_IMAGE_FORMAT       = png
 25.1496 -
 25.1497 -# The tag DOT_PATH can be used to specify the path where the dot tool can be 
 25.1498 -# found. If left blank, it is assumed the dot tool can be found in the path.
 25.1499 -
 25.1500 -DOT_PATH               = 
 25.1501 -
 25.1502 -# The DOTFILE_DIRS tag can be used to specify one or more directories that 
 25.1503 -# contain dot files that are included in the documentation (see the 
 25.1504 -# \dotfile command).
 25.1505 -
 25.1506 -DOTFILE_DIRS           = 
 25.1507 -
 25.1508 -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
 25.1509 -# nodes that will be shown in the graph. If the number of nodes in a graph 
 25.1510 -# becomes larger than this value, doxygen will truncate the graph, which is 
 25.1511 -# visualized by representing a node as a red box. Note that doxygen if the 
 25.1512 -# number of direct children of the root node in a graph is already larger than 
 25.1513 -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
 25.1514 -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 25.1515 -
 25.1516 -DOT_GRAPH_MAX_NODES    = 50
 25.1517 -
 25.1518 -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
 25.1519 -# graphs generated by dot. A depth value of 3 means that only nodes reachable 
 25.1520 -# from the root by following a path via at most 3 edges will be shown. Nodes 
 25.1521 -# that lay further from the root node will be omitted. Note that setting this 
 25.1522 -# option to 1 or 2 may greatly reduce the computation time needed for large 
 25.1523 -# code bases. Also note that the size of a graph can be further restricted by 
 25.1524 -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
 25.1525 -
 25.1526 -MAX_DOT_GRAPH_DEPTH    = 2
 25.1527 -
 25.1528 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
 25.1529 -# background. This is disabled by default, because dot on Windows does not 
 25.1530 -# seem to support this out of the box. Warning: Depending on the platform used, 
 25.1531 -# enabling this option may lead to badly anti-aliased labels on the edges of 
 25.1532 -# a graph (i.e. they become hard to read).
 25.1533 -
 25.1534 -DOT_TRANSPARENT        = NO
 25.1535 -
 25.1536 -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
 25.1537 -# files in one run (i.e. multiple -o and -T options on the command line). This 
 25.1538 -# makes dot run faster, but since only newer versions of dot (>1.8.10) 
 25.1539 -# support this, this feature is disabled by default.
 25.1540 -
 25.1541 -DOT_MULTI_TARGETS      = YES
 25.1542 -
 25.1543 -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
 25.1544 -# generate a legend page explaining the meaning of the various boxes and 
 25.1545 -# arrows in the dot generated graphs.
 25.1546 -
 25.1547 -GENERATE_LEGEND        = YES
 25.1548 -
 25.1549 -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
 25.1550 -# remove the intermediate dot files that are used to generate 
 25.1551 -# the various graphs.
 25.1552 -
 25.1553 -DOT_CLEANUP            = YES
 25.1554 -
 25.1555 -#---------------------------------------------------------------------------
 25.1556 -# Options related to the search engine
 25.1557 -#---------------------------------------------------------------------------
 25.1558 -
 25.1559 -# The SEARCHENGINE tag specifies whether or not a search engine should be 
 25.1560 -# used. If set to NO the values of all tags below this one will be ignored.
 25.1561 -
 25.1562 -SEARCHENGINE           = NO
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/docs/README-android.md	Tue Jul 29 08:04:15 2014 -0700
    26.3 @@ -0,0 +1,437 @@
    26.4 +Android
    26.5 +================================================================================
    26.6 +
    26.7 +Requirements:
    26.8 +
    26.9 +Android SDK (version 12 or later)
   26.10 +http://developer.android.com/sdk/index.html
   26.11 +
   26.12 +Android NDK r7 or later
   26.13 +http://developer.android.com/tools/sdk/ndk/index.html
   26.14 +
   26.15 +Minimum API level supported by SDL: 10 (Android 2.3.3)
   26.16 +Joystick support is available for API level >=12 devices.
   26.17 +
   26.18 +================================================================================
   26.19 + How the port works
   26.20 +================================================================================
   26.21 +
   26.22 +- Android applications are Java-based, optionally with parts written in C
   26.23 +- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to 
   26.24 +the SDL library
   26.25 +- This means that your application C code must be placed inside an Android 
   26.26 +Java project, along with some C support code that communicates with Java
   26.27 +- This eventually produces a standard Android .apk package
   26.28 +
   26.29 +The Android Java code implements an "Activity" and can be found in:
   26.30 +android-project/src/org/libsdl/app/SDLActivity.java
   26.31 +
   26.32 +The Java code loads your game code, the SDL shared library, and
   26.33 +dispatches to native functions implemented in the SDL library:
   26.34 +src/core/android/SDL_android.c
   26.35 +
   26.36 +Your project must include some glue code that starts your main() routine:
   26.37 +src/main/android/SDL_android_main.c
   26.38 +
   26.39 +
   26.40 +================================================================================
   26.41 + Building an app
   26.42 +================================================================================
   26.43 +
   26.44 +For simple projects you can use the script located at build-scripts/androidbuild.sh
   26.45 +
   26.46 +There's two ways of using it:
   26.47 +
   26.48 +androidbuild.sh com.yourcompany.yourapp < sources.list
   26.49 +androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
   26.50 +
   26.51 +sources.list should be a text file with a source file name in each line
   26.52 +Filenames should be specified relative to the current directory, for example if
   26.53 +you are in the build-scripts directory and want to create the testgles.c test, you'll
   26.54 +run:
   26.55 +    
   26.56 +./androidbuild.sh org.libsdl.testgles ../test/testgles.c
   26.57 +
   26.58 +One limitation of this script is that all sources provided will be aggregated into
   26.59 +a single directory, thus all your source files should have a unique name.
   26.60 +
   26.61 +Once the project is complete the script will tell you where the debug APK is located.
   26.62 +If you want to create a signed release APK, you can use the project created by this
   26.63 +utility to generate it.
   26.64 +
   26.65 +Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
   26.66 +done in the build directory for the app!
   26.67 +
   26.68 +
   26.69 +For more complex projects, follow these instructions:
   26.70 +    
   26.71 +1. Copy the android-project directory wherever you want to keep your projects
   26.72 +   and rename it to the name of your project.
   26.73 +2. Move or symlink this SDL directory into the <project>/jni directory
   26.74 +3. Edit <project>/jni/src/Android.mk to include your source files
   26.75 +4. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
   26.76 +
   26.77 +If you want to use the Eclipse IDE, skip to the Eclipse section below.
   26.78 +
   26.79 +5. Create <project>/local.properties and use that to point to the Android SDK directory, by writing a line with the following form:
   26.80 +sdk.dir=PATH_TO_ANDROID_SDK
   26.81 +6. Run 'ant debug' in android/project. This compiles the .java and eventually 
   26.82 +   creates a .apk with the native code embedded
   26.83 +7. 'ant debug install' will push the apk to the device or emulator (if connected)
   26.84 +
   26.85 +Here's an explanation of the files in the Android project, so you can customize them:
   26.86 +
   26.87 +android-project/
   26.88 +	AndroidManifest.xml	- package manifest. Among others, it contains the class name
   26.89 +				  of the main Activity and the package name of the application.
   26.90 +	build.properties	- empty
   26.91 +	build.xml		- build description file, used by ant. The actual application name
   26.92 +				  is specified here.
   26.93 +	default.properties	- holds the target ABI for the application, android-10 and up
   26.94 +	project.properties	- holds the target ABI for the application, android-10 and up
   26.95 +	local.properties	- holds the SDK path, you should change this to the path to your SDK
   26.96 +	jni/			- directory holding native code
   26.97 +	jni/Android.mk		- Android makefile that can call recursively the Android.mk files
   26.98 +				  in all subdirectories
   26.99 +	jni/SDL/		- (symlink to) directory holding the SDL library files
  26.100 +	jni/SDL/Android.mk	- Android makefile for creating the SDL shared library
  26.101 +	jni/src/		- directory holding your C/C++ source
  26.102 +	jni/src/Android.mk	- Android makefile that you should customize to include your 
  26.103 +                                  source code and any library references
  26.104 +	res/			- directory holding resources for your application
  26.105 +	res/drawable-*		- directories holding icons for different phone hardware. Could be
  26.106 +				  one dir called "drawable".
  26.107 +	res/layout/main.xml	- Usually contains a file main.xml, which declares the screen layout.
  26.108 +				  We don't need it because we use the SDL video output.
  26.109 +	res/values/strings.xml	- strings used in your application, including the application name
  26.110 +				  shown on the phone.
  26.111 +	src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding
  26.112 +				  to SDL.  Be very careful changing this, as the SDL library relies
  26.113 +				  on this implementation.
  26.114 +
  26.115 +
  26.116 +================================================================================
  26.117 + Build an app with static linking of libSDL
  26.118 +================================================================================
  26.119 +
  26.120 +This build uses the Android NDK module system.
  26.121 +
  26.122 +Instructions:
  26.123 +1. Copy the android-project directory wherever you want to keep your projects
  26.124 +   and rename it to the name of your project.
  26.125 +2. Rename <project>/jni/src/Android_static.mk to <project>/jni/src/Android.mk
  26.126 +   (overwrite the existing one)
  26.127 +3. Edit <project>/jni/src/Android.mk to include your source files
  26.128 +4. create and export an environment variable named NDK_MODULE_PATH that points
  26.129 +   to the parent directory of this SDL directory. e.g.:
  26.130 +
  26.131 +   export NDK_MODULE_PATH="$PWD"/..
  26.132 +
  26.133 +5. Edit <project>/src/org/libsdl/app/SDLActivity.java and remove the call to
  26.134 +   System.loadLibrary("SDL2") line 42.
  26.135 +6. Run 'ndk-build' (a script provided by the NDK). This compiles the C source
  26.136 +
  26.137 +
  26.138 +================================================================================
  26.139 + Customizing your application name
  26.140 +================================================================================
  26.141 +
  26.142 +To customize your application name, edit AndroidManifest.xml and replace
  26.143 +"org.libsdl.app" with an identifier for your product package.
  26.144 +
  26.145 +Then create a Java class extending SDLActivity and place it in a directory
  26.146 +under src matching your package, e.g.
  26.147 +	src/com/gamemaker/game/MyGame.java
  26.148 +
  26.149 +Here's an example of a minimal class file:
  26.150 +--- MyGame.java --------------------------
  26.151 +package com.gamemaker.game;
  26.152 +
  26.153 +import org.libsdl.app.SDLActivity; 
  26.154 +
  26.155 +/* 
  26.156 + * A sample wrapper class that just calls SDLActivity 
  26.157 + */ 
  26.158 +
  26.159 +public class MyGame extends SDLActivity { }
  26.160 +
  26.161 +------------------------------------------
  26.162 +
  26.163 +Then replace "SDLActivity" in AndroidManifest.xml with the name of your
  26.164 +class, .e.g. "MyGame"
  26.165 +
  26.166 +================================================================================
  26.167 + Customizing your application icon
  26.168 +================================================================================
  26.169 +
  26.170 +Conceptually changing your icon is just replacing the "ic_launcher.png" files in
  26.171 +the drawable directories under the res directory. There are four directories for
  26.172 +different screen sizes. These can be replaced with one dir called "drawable",
  26.173 +containing an icon file "ic_launcher.png" with dimensions 48x48 or 72x72.
  26.174 +
  26.175 +You may need to change the name of your icon in AndroidManifest.xml to match
  26.176 +this icon filename.
  26.177 +
  26.178 +================================================================================
  26.179 + Loading assets
  26.180 +================================================================================
  26.181 +
  26.182 +Any files you put in the "assets" directory of your android-project directory
  26.183 +will get bundled into the application package and you can load them using the
  26.184 +standard functions in SDL_rwops.h.
  26.185 +
  26.186 +There are also a few Android specific functions that allow you to get other
  26.187 +useful paths for saving and loading data:
  26.188 +SDL_AndroidGetInternalStoragePath()
  26.189 +SDL_AndroidGetExternalStorageState()
  26.190 +SDL_AndroidGetExternalStoragePath()
  26.191 +
  26.192 +See SDL_system.h for more details on these functions.
  26.193 +
  26.194 +The asset packaging system will, by default, compress certain file extensions.
  26.195 +SDL includes two asset file access mechanisms, the preferred one is the so
  26.196 +called "File Descriptor" method, which is faster and doesn't involve the Dalvik
  26.197 +GC, but given this method does not work on compressed assets, there is also the
  26.198 +"Input Stream" method, which is automatically used as a fall back by SDL. You
  26.199 +may want to keep this fact in mind when building your APK, specially when large
  26.200 +files are involved.
  26.201 +For more information on which extensions get compressed by default and how to
  26.202 +disable this behaviour, see for example:
  26.203 +    
  26.204 +http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
  26.205 +
  26.206 +================================================================================
  26.207 + Pause / Resume behaviour
  26.208 +================================================================================
  26.209 +
  26.210 +If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
  26.211 +the event loop will block itself when the app is paused (ie, when the user
  26.212 +returns to the main Android dashboard). Blocking is better in terms of battery
  26.213 +use, and it allows your app to spring back to life instantaneously after resume
  26.214 +(versus polling for a resume message).
  26.215 +
  26.216 +Upon resume, SDL will attempt to restore the GL context automatically.
  26.217 +In modern devices (Android 3.0 and up) this will most likely succeed and your
  26.218 +app can continue to operate as it was.
  26.219 +
  26.220 +However, there's a chance (on older hardware, or on systems under heavy load),
  26.221 +where the GL context can not be restored. In that case you have to listen for
  26.222 +a specific message, (which is not yet implemented!) and restore your textures
  26.223 +manually or quit the app (which is actually the kind of behaviour you'll see
  26.224 +under iOS, if the OS can not restore your GL context it will just kill your app)
  26.225 +
  26.226 +================================================================================
  26.227 + Threads and the Java VM
  26.228 +================================================================================
  26.229 +
  26.230 +For a quick tour on how Linux native threads interoperate with the Java VM, take
  26.231 +a look here: http://developer.android.com/guide/practices/jni.html
  26.232 +If you want to use threads in your SDL app, it's strongly recommended that you
  26.233 +do so by creating them using SDL functions. This way, the required attach/detach
  26.234 +handling is managed by SDL automagically. If you have threads created by other
  26.235 +means and they make calls to SDL functions, make sure that you call
  26.236 +Android_JNI_SetupThread before doing anything else otherwise SDL will attach
  26.237 +your thread automatically anyway (when you make an SDL call), but it'll never
  26.238 +detach it.
  26.239 +
  26.240 +================================================================================
  26.241 + Using STL
  26.242 +================================================================================
  26.243 +
  26.244 +You can use STL in your project by creating an Application.mk file in the jni
  26.245 +folder and adding the following line:
  26.246 +APP_STL := stlport_static
  26.247 +
  26.248 +For more information check out CPLUSPLUS-SUPPORT.html in the NDK documentation.
  26.249 +
  26.250 +================================================================================
  26.251 + Additional documentation
  26.252 +================================================================================
  26.253 +
  26.254 +The documentation in the NDK docs directory is very helpful in understanding the
  26.255 +build process and how to work with native code on the Android platform.
  26.256 +
  26.257 +The best place to start is with docs/OVERVIEW.TXT
  26.258 +
  26.259 +
  26.260 +================================================================================
  26.261 + Using Eclipse
  26.262 +================================================================================
  26.263 +
  26.264 +First make sure that you've installed Eclipse and the Android extensions as described here:
  26.265 +	http://developer.android.com/tools/sdk/eclipse-adt.html
  26.266 +
  26.267 +Once you've copied the SDL android project and customized it, you can create an Eclipse project from it:
  26.268 + * File -> New -> Other
  26.269 + * Select the Android -> Android Project wizard and click Next
  26.270 + * Enter the name you'd like your project to have
  26.271 + * Select "Create project from existing source" and browse for your project directory
  26.272 + * Make sure the Build Target is set to Android 2.0
  26.273 + * Click Finish
  26.274 +
  26.275 +
  26.276 +================================================================================
  26.277 + Using the emulator
  26.278 +================================================================================
  26.279 +
  26.280 +There are some good tips and tricks for getting the most out of the
  26.281 +emulator here: http://developer.android.com/tools/devices/emulator.html
  26.282 +
  26.283 +Especially useful is the info on setting up OpenGL ES 2.0 emulation.
  26.284 +
  26.285 +Notice that this software emulator is incredibly slow and needs a lot of disk space.
  26.286 +Using a real device works better.
  26.287 +
  26.288 +================================================================================
  26.289 + Troubleshooting
  26.290 +================================================================================
  26.291 +
  26.292 +You can create and run an emulator from the Eclipse IDE:
  26.293 + * Window -> Android SDK and AVD Manager
  26.294 +
  26.295 +You can see if adb can see any devices with the following command:
  26.296 +	adb devices
  26.297 +
  26.298 +You can see the output of log messages on the default device with:
  26.299 +	adb logcat
  26.300 +
  26.301 +You can push files to the device with:
  26.302 +	adb push local_file remote_path_and_file
  26.303 +
  26.304 +You can push files to the SD Card at /sdcard, for example:
  26.305 +	adb push moose.dat /sdcard/moose.dat
  26.306 +
  26.307 +You can see the files on the SD card with a shell command:
  26.308 +	adb shell ls /sdcard/
  26.309 +
  26.310 +You can start a command shell on the default device with:
  26.311 +	adb shell
  26.312 +
  26.313 +You can remove the library files of your project (and not the SDL lib files) with:
  26.314 +	ndk-build clean
  26.315 +
  26.316 +You can do a build with the following command:
  26.317 +	ndk-build
  26.318 +
  26.319 +You can see the complete command line that ndk-build is using by passing V=1 on the command line:
  26.320 +	ndk-build V=1
  26.321 +
  26.322 +If your application crashes in native code, you can use addr2line to convert the
  26.323 +addresses in the stack trace to lines in your code.
  26.324 +
  26.325 +For example, if your crash looks like this:
  26.326 +I/DEBUG   (   31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
  26.327 +I/DEBUG   (   31):  r0 00000000  r1 00001000  r2 00000003  r3 400085d4
  26.328 +I/DEBUG   (   31):  r4 400085d0  r5 40008000  r6 afd41504  r7 436c6a7c
  26.329 +I/DEBUG   (   31):  r8 436c6b30  r9 435c6fb0  10 435c6f9c  fp 4168d82c
  26.330 +I/DEBUG   (   31):  ip 8346aff0  sp 436c6a60  lr afd1c8ff  pc afd1c902  cpsr 60000030
  26.331 +I/DEBUG   (   31):          #00  pc 0001c902  /system/lib/libc.so
  26.332 +I/DEBUG   (   31):          #01  pc 0001ccf6  /system/lib/libc.so
  26.333 +I/DEBUG   (   31):          #02  pc 000014bc  /data/data/org.libsdl.app/lib/libmain.so
  26.334 +I/DEBUG   (   31):          #03  pc 00001506  /data/data/org.libsdl.app/lib/libmain.so
  26.335 +
  26.336 +You can see that there's a crash in the C library being called from the main code.
  26.337 +I run addr2line with the debug version of my code:
  26.338 +	arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
  26.339 +and then paste in the number after "pc" in the call stack, from the line that I care about:
  26.340 +000014bc
  26.341 +
  26.342 +I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
  26.343 +
  26.344 +You can add logging to your code to help show what's happening:
  26.345 +
  26.346 +#include <android/log.h>
  26.347 +
  26.348 +	__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
  26.349 +
  26.350 +If you need to build without optimization turned on, you can create a file called
  26.351 +"Application.mk" in the jni directory, with the following line in it:
  26.352 +APP_OPTIM := debug
  26.353 +
  26.354 +
  26.355 +================================================================================
  26.356 + Memory debugging
  26.357 +================================================================================
  26.358 +
  26.359 +The best (and slowest) way to debug memory issues on Android is valgrind.
  26.360 +Valgrind has support for Android out of the box, just grab code using:
  26.361 +	svn co svn://svn.valgrind.org/valgrind/trunk valgrind
  26.362 +... and follow the instructions in the file README.android to build it.
  26.363 +
  26.364 +One thing I needed to do on Mac OS X was change the path to the toolchain,
  26.365 +and add ranlib to the environment variables:
  26.366 +export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
  26.367 +
  26.368 +Once valgrind is built, you can create a wrapper script to launch your
  26.369 +application with it, changing org.libsdl.app to your package identifier:
  26.370 +--- start_valgrind_app -------------------
  26.371 +#!/system/bin/sh
  26.372 +export TMPDIR=/data/data/org.libsdl.app
  26.373 +exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
  26.374 +------------------------------------------
  26.375 +
  26.376 +Then push it to the device:
  26.377 +	adb push start_valgrind_app /data/local
  26.378 +
  26.379 +and make it executable:
  26.380 +	adb shell chmod 755 /data/local/start_valgrind_app
  26.381 +
  26.382 +and tell Android to use the script to launch your application:
  26.383 +	adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
  26.384 +
  26.385 +If the setprop command says "could not set property", it's likely that
  26.386 +your package name is too long and you should make it shorter by changing
  26.387 +AndroidManifest.xml and the path to your class file in android-project/src
  26.388 +
  26.389 +You can then launch your application normally and waaaaaaaiiittt for it.
  26.390 +You can monitor the startup process with the logcat command above, and
  26.391 +when it's done (or even while it's running) you can grab the valgrind
  26.392 +output file:
  26.393 +	adb pull /sdcard/valgrind.log
  26.394 +
  26.395 +When you're done instrumenting with valgrind, you can disable the wrapper:
  26.396 +	adb shell setprop wrap.org.libsdl.app ""
  26.397 +
  26.398 +================================================================================
  26.399 + Why is API level 10 the minimum required?
  26.400 +================================================================================
  26.401 +
  26.402 +API level 10 is the minimum required level at runtime (that is, on the device) 
  26.403 +because SDL requires some functionality for running not
  26.404 +available on older devices. Since the incorporation of joystick support into SDL,
  26.405 +the minimum SDK required to *build* SDL is version 12. Devices running API levels
  26.406 +10-11 are still supported, only with the joystick functionality disabled.
  26.407 +
  26.408 +Support for native OpenGL ES and ES2 applications was introduced in the NDK for
  26.409 +API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which
  26.410 +has since then been obsoleted, with the recommendation to developers to bump the
  26.411 +required API level to 10.
  26.412 +As of this writing, according to http://developer.android.com/about/dashboards/index.html
  26.413 +about 90% of the Android devices accessing Google Play support API level 10 or
  26.414 +higher (March 2013).
  26.415 +
  26.416 +================================================================================
  26.417 + A note regarding the use of the "dirty rectangles" rendering technique
  26.418 +================================================================================
  26.419 +
  26.420 +If your app uses a variation of the "dirty rectangles" rendering technique,
  26.421 +where you only update a portion of the screen on each frame, you may notice a
  26.422 +variety of visual glitches on Android, that are not present on other platforms.
  26.423 +This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
  26.424 +contexts, in particular the use of the eglSwapBuffers function. As stated in the
  26.425 +documentation for the function "The contents of ancillary buffers are always 
  26.426 +undefined after calling eglSwapBuffers".
  26.427 +Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
  26.428 +is not possible for SDL as it requires EGL 1.4, available only on the API level
  26.429 +17+, so the only workaround available on this platform is to redraw the entire
  26.430 +screen each frame.
  26.431 +
  26.432 +Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
  26.433 +
  26.434 +================================================================================
  26.435 + Known issues
  26.436 +================================================================================
  26.437 +
  26.438 +- The number of buttons reported for each joystick is hardcoded to be 36, which
  26.439 +is the current maximum number of buttons Android can report.
  26.440 +
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/docs/README-cmake.md	Tue Jul 29 08:04:15 2014 -0700
    27.3 @@ -0,0 +1,31 @@
    27.4 +CMake
    27.5 +================================================================================
    27.6 +(www.cmake.org)
    27.7 +
    27.8 +SDL's build system was traditionally based on autotools. Over time, this
    27.9 +approach has suffered from several issues across the different supported 
   27.10 +platforms.
   27.11 +To solve these problems, a new build system based on CMake is under development.
   27.12 +It works in parallel to the legacy system, so users can experiment with it
   27.13 +without complication.
   27.14 +While still experimental, the build system should be usable on the following
   27.15 +platforms:
   27.16 +    
   27.17 +    * FreeBSD
   27.18 +    * Linux
   27.19 +    * VS.NET 2010
   27.20 +    * MinGW and Msys
   27.21 +    * OS X with support for XCode
   27.22 +    
   27.23 +================================================================================
   27.24 +Usage
   27.25 +================================================================================
   27.26 +
   27.27 +Assuming the source for SDL is located at ~/sdl
   27.28 +
   27.29 +cd ~
   27.30 +mkdir build
   27.31 +cd build
   27.32 +cmake ../sdl
   27.33 +
   27.34 +This will build the static and dynamic versions of SDL in the ~/build directory.
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/docs/README-directfb.md	Tue Jul 29 08:04:15 2014 -0700
    28.3 @@ -0,0 +1,107 @@
    28.4 +DirectFB
    28.5 +========
    28.6 +
    28.7 +Supports:
    28.8 +
    28.9 +- Hardware YUV overlays
   28.10 +- OpenGL - software only
   28.11 +- 2D/3D accelerations (depends on directfb driver)
   28.12 +- multiple displays
   28.13 +- windows
   28.14 +
   28.15 +What you need:
   28.16 +
   28.17 +DirectFB 1.0.1, 1.2.x, 1.3.0
   28.18 +Kernel-Framebuffer support: required: vesafb, radeonfb .... 
   28.19 +Mesa 7.0.x	   - optional for OpenGL
   28.20 +
   28.21 +/etc/directfbrc
   28.22 +
   28.23 +This file should contain the following lines to make
   28.24 +your joystick work and avoid crashes:
   28.25 +------------------------
   28.26 +disable-module=joystick
   28.27 +disable-module=cle266
   28.28 +disable-module=cyber5k
   28.29 +no-linux-input-grab
   28.30 +------------------------
   28.31 +
   28.32 +To disable to use x11 backend when DISPLAY variable is found use
   28.33 +
   28.34 +export SDL_DIRECTFB_X11_CHECK=0
   28.35 +
   28.36 +To disable the use of linux input devices, i.e. multimice/multikeyboard support,
   28.37 +use
   28.38 +
   28.39 +export SDL_DIRECTFB_LINUX_INPUT=0
   28.40 +
   28.41 +To use hardware accelerated YUV-overlays for YUV-textures, use:
   28.42 +
   28.43 +export SDL_DIRECTFB_YUV_DIRECT=1
   28.44 +
   28.45 +This is disabled by default. It will only support one 
   28.46 +YUV texture, namely the first. Every other YUV texture will be
   28.47 +rendered in software.
   28.48 +
   28.49 +In addition, you may use (directfb-1.2.x)
   28.50 +
   28.51 +export SDL_DIRECTFB_YUV_UNDERLAY=1
   28.52 +
   28.53 +to make the YUV texture an underlay. This will make the cursor to
   28.54 +be shown.
   28.55 +
   28.56 +Simple Window Manager
   28.57 +=====================
   28.58 +
   28.59 +The driver has support for a very, very basic window manager you may
   28.60 +want to use when running with "wm=default". Use
   28.61 +
   28.62 +export SDL_DIRECTFB_WM=1
   28.63 +
   28.64 +to enable basic window borders. In order to have the window title rendered,
   28.65 +you need to have the following font installed:
   28.66 +
   28.67 +/usr/share/fonts/truetype/freefont/FreeSans.ttf
   28.68 +
   28.69 +OpenGL Support
   28.70 +==============
   28.71 +
   28.72 +The following instructions will give you *software* OpenGL. However this
   28.73 +works at least on all directfb supported platforms.
   28.74 +
   28.75 +As of this writing 20100802 you need to pull Mesa from git and do the following:
   28.76 +
   28.77 +------------------------
   28.78 +git clone git://anongit.freedesktop.org/git/mesa/mesa
   28.79 +cd mesa 
   28.80 +git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
   28.81 +------------------------
   28.82 +
   28.83 +Edit configs/linux-directfb so that the Directories-section looks like
   28.84 +------------------------
   28.85 +# Directories
   28.86 +SRC_DIRS     = mesa glu 
   28.87 +GLU_DIRS     = sgi
   28.88 +DRIVER_DIRS  = directfb
   28.89 +PROGRAM_DIRS = 
   28.90 +------------------------
   28.91 +
   28.92 +make linux-directfb
   28.93 +make
   28.94 +
   28.95 +echo Installing - please enter sudo pw.
   28.96 +
   28.97 +sudo make install INSTALL_DIR=/usr/local/dfb_GL
   28.98 +cd src/mesa/drivers/directfb
   28.99 +make
  28.100 +sudo make install INSTALL_DIR=/usr/local/dfb_GL
  28.101 +------------------------
  28.102 +
  28.103 +To run the SDL - testprograms:
  28.104 +
  28.105 +export SDL_VIDEODRIVER=directfb
  28.106 +export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
  28.107 +export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
  28.108 +
  28.109 +./testgl
  28.110 +
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/docs/README-dynapi.md	Tue Jul 29 08:04:15 2014 -0700
    29.3 @@ -0,0 +1,129 @@
    29.4 +Dynamic API
    29.5 +================================================================================
    29.6 +Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
    29.7 +
    29.8 +Background:
    29.9 +
   29.10 +- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, 
   29.11 +  but developers are shipping their own SDL2 with individual Steam games. 
   29.12 +  These games might stop getting updates, but a newer SDL2 might be needed later. 
   29.13 +  Certainly we'll always be fixing bugs in SDL, even if a new video target isn't 
   29.14 +  ever needed, and these fixes won't make it to a game shipping its own SDL.
   29.15 +- Even if we replace the SDL2 in those games with a compatible one, that is to 
   29.16 +  say, edit a developer's Steam depot (yuck!), there are developers that are 
   29.17 +  statically linking SDL2 that we can't do this for. We can't even force the 
   29.18 +  dynamic loader to ignore their SDL2 in this case, of course.
   29.19 +- If you don't ship an SDL2 with the game in some form, people that disabled the
   29.20 +  Steam Runtime, or just tried to run the game from the command line instead of 
   29.21 +  Steam might find themselves unable to run the game, due to a missing dependency.
   29.22 +- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
   29.23 +  generic Linux boxes that may or may not have SDL2 installed, you have to ship 
   29.24 +  the library or risk a total failure to launch. So now, you might have to have 
   29.25 +  a non-Steam build plus a Steam build (that is, one with and one without SDL2 
   29.26 +  included), which is inconvenient if you could have had one universal build 
   29.27 +  that works everywhere.
   29.28 +- We like the zlib license, but the biggest complaint from the open source 
   29.29 +  community about the license change is the static linking. The LGPL forced this 
   29.30 +  as a legal, not technical issue, but zlib doesn't care. Even those that aren't
   29.31 +  concerned about the GNU freedoms found themselves solving the same problems: 
   29.32 +  swapping in a newer SDL to an older game often times can save the day. 
   29.33 +  Static linking stops this dead.
   29.34 +
   29.35 +So here's what we did:
   29.36 +
   29.37 +SDL now has, internally, a table of function pointers. So, this is what SDL_Init
   29.38 +now looks like:
   29.39 +
   29.40 +    UInt32 SDL_Init(Uint32 flags)
   29.41 +    {
   29.42 +        return jump_table.SDL_Init(flags);
   29.43 +    }
   29.44 +
   29.45 +Except that is all done with a bunch of macro magic so we don't have to maintain
   29.46 +every one of these.
   29.47 +
   29.48 +What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
   29.49 +SDL_Init() that you've been calling all this time. But at startup, it looks more 
   29.50 +like this:
   29.51 +
   29.52 +    Uint32 SDL_Init_DEFAULT(Uint32 flags)
   29.53 +    {
   29.54 +        SDL_InitDynamicAPI();
   29.55 +        return jump_table.SDL_Init(flags);
   29.56 +    }
   29.57 +
   29.58 +SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function 
   29.59 +pointers, which means that this _DEFAULT function never gets called again. 
   29.60 +First call to any SDL function sets the whole thing up.
   29.61 +
   29.62 +So you might be asking, what was the value in that? Isn't this what the operating
   29.63 +system's dynamic loader was supposed to do for us? Yes, but now we've got this 
   29.64 +level of indirection, we can do things like this:
   29.65 +
   29.66 +    export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
   29.67 +    ./MyGameThatIsStaticallyLinkedToSDL2
   29.68 +
   29.69 +And now, this game that is staticallly linked to SDL, can still be overridden 
   29.70 +with a newer, or better, SDL. The statically linked one will only be used as 
   29.71 +far as calling into the jump table in this case. But in cases where no override
   29.72 +is desired, the statically linked version will provide its own jump table, 
   29.73 +and everyone is happy.
   29.74 +
   29.75 +So now:
   29.76 +- Developers can statically link SDL, and users can still replace it. 
   29.77 +  (We'd still rather you ship a shared library, though!)
   29.78 +- Developers can ship an SDL with their game, Valve can override it for, say, 
   29.79 +  new features on SteamOS, or distros can override it for their own needs, 
   29.80 +  but it'll also just work in the default case.
   29.81 +- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), 
   29.82 +  and it'll do the right thing.
   29.83 +- End users (and Valve) can update a game's SDL in almost any case, 
   29.84 +  to keep abandoned games running on newer platforms.
   29.85 +- Everyone develops with SDL exactly as they have been doing all along. 
   29.86 +  Same headers, same ABI. Just get the latest version to enable this magic.
   29.87 +
   29.88 +
   29.89 +A little more about SDL_InitDynamicAPI():
   29.90 +
   29.91 +Internally, InitAPI does some locking to make sure everything waits until a 
   29.92 +single thread initializes everything (although even SDL_CreateThread() goes 
   29.93 +through here before spinning a thread, too), and then decides if it should use
   29.94 +an external SDL library. If not, it sets up the jump table using the current 
   29.95 +SDL's function pointers (which might be statically linked into a program, or in
   29.96 +a shared library of its own). If so, it loads that library and looks for and 
   29.97 +calls a single function:
   29.98 +
   29.99 +    SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
  29.100 +
  29.101 +That function takes a version number (more on that in a moment), the address of
  29.102 +the jump table, and the size, in bytes, of the table. 
  29.103 +Now, we've got policy here: this table's layout never changes; new stuff gets 
  29.104 +added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all 
  29.105 +the needed functions if tablesize <= sizeof its own jump table. If tablesize is
  29.106 +bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
  29.107 +if it's smaller, we know we can provide the entire API that the caller needs.
  29.108 +
  29.109 +The version variable is a failsafe switch. 
  29.110 +Right now it's always 1. This number changes when there are major API changes 
  29.111 +(so we know if the tablesize might be smaller, or entries in it have changed). 
  29.112 +Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not 
  29.113 +inconceivable to have a small dispatch library that only supplies this one 
  29.114 +function and loads different, otherwise-incompatible SDL libraries and has the
  29.115 +right one initialize the jump table based on the version. For something that 
  29.116 +must generically catch lots of different versions of SDL over time, like the 
  29.117 +Steam Client, this isn't a bad option.
  29.118 +
  29.119 +Finally, I'm sure some people are reading this and thinking,
  29.120 +"I don't want that overhead in my project!"  
  29.121 +To which I would point out that the extra function call through the jump table 
  29.122 +probably wouldn't even show up in a profile, but lucky you: this can all be 
  29.123 +disabled. You can build SDL without this if you absolutely must, but we would 
  29.124 +encourage you not to do that. However, on heavily locked down platforms like 
  29.125 +iOS, or maybe when debugging,  it makes sense to disable it. The way this is 
  29.126 +designed in SDL, you just have to change one #define, and the entire system 
  29.127 +vaporizes out, and SDL functions exactly like it always did. Most of it is 
  29.128 +macro magic, so the system is contained to one C file and a few headers. 
  29.129 +However, this is on by default and you have to edit a header file to turn it 
  29.130 +off. Our hopes is that if we make it easy to disable, but not too easy, 
  29.131 +everyone will ultimately be able to get what they want, but we've gently 
  29.132 +nudged everyone towards what we think is the best solution.
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/docs/README-gesture.md	Tue Jul 29 08:04:15 2014 -0700
    30.3 @@ -0,0 +1,71 @@
    30.4 +Dollar Gestures
    30.5 +===========================================================================
    30.6 +SDL Provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
    30.7 +
    30.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. 
    30.9 +
   30.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.
   30.11 +
   30.12 +Recording:
   30.13 +----------
   30.14 +To begin recording on a touch device call:
   30.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.
   30.16 +
   30.17 +Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
   30.18 +A SDL_DOLLARRECORD event is a dgesture with the following fields:
   30.19 +
   30.20 +event.dgesture.touchId   - the Id of the touch used to record the gesture.
   30.21 +event.dgesture.gestureId - the unique id of the recorded gesture.
   30.22 +
   30.23 +
   30.24 +Performing:
   30.25 +-----------
   30.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:
   30.27 +
   30.28 +event.dgesture.touchId    - the Id of the touch which performed the gesture.
   30.29 +event.dgesture.gestureId  - the unique id of the closest gesture to the performed stroke.
   30.30 +event.dgesture.error      - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
   30.31 +event.dgesture.numFingers - the number of fingers used to draw the stroke.
   30.32 +
   30.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).
   30.34 +
   30.35 +
   30.36 +
   30.37 +Saving:
   30.38 +-------
   30.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.
   30.40 +
   30.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.
   30.42 +
   30.43 +Both functions return the number of gestures successfully saved.
   30.44 +
   30.45 +
   30.46 +Loading:
   30.47 +--------
   30.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. 
   30.49 +
   30.50 +SDL_LoadDollarTemplates returns the number of templates successfully loaded.
   30.51 +
   30.52 +
   30.53 +
   30.54 +===========================================================================
   30.55 +Multi Gestures
   30.56 +===========================================================================
   30.57 +SDL provides simple support for pinch/rotate/swipe gestures. 
   30.58 +Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
   30.59 +
   30.60 +event.mgesture.touchId - the Id of the touch on which the gesture was performed.
   30.61 +event.mgesture.x       - the normalized x coordinate of the gesture. (0..1)
   30.62 +event.mgesture.y       - the normalized y coordinate of the gesture. (0..1)
   30.63 +event.mgesture.dTheta  - the amount that the fingers rotated during this motion.
   30.64 +event.mgesture.dDist   - the amount that the fingers pinched during this motion.
   30.65 +event.mgesture.numFingers - the number of fingers used in the gesture.
   30.66 +
   30.67 +
   30.68 +===========================================================================
   30.69 +Notes
   30.70 +===========================================================================
   30.71 +For a complete example see test/testgesture.c
   30.72 +
   30.73 +Please direct questions/comments to:
   30.74 +   jim.tla+sdl_touch@gmail.com
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/docs/README-hg.md	Tue Jul 29 08:04:15 2014 -0700
    31.3 @@ -0,0 +1,26 @@
    31.4 +Mercurial
    31.5 +=========
    31.6 +
    31.7 +The latest development version of SDL is available via Mercurial.
    31.8 +Mercurial allows you to get up-to-the-minute fixes and enhancements;
    31.9 +as a developer works on a source tree, you can use "hg" to mirror that
   31.10 +source tree instead of waiting for an official release. Please look
   31.11 +at the Mercurial website ( http://mercurial.selenic.com/ ) for more
   31.12 +information on using hg, where you can also download software for
   31.13 +Mac OS X, Windows, and Unix systems.
   31.14 +
   31.15 +  hg clone http://hg.libsdl.org/SDL
   31.16 +
   31.17 +If you are building SDL with an IDE, you will need to copy the file
   31.18 +include/SDL_config.h.default to include/SDL_config.h before building.
   31.19 +
   31.20 +If you are building SDL via configure, you will need to run autogen.sh
   31.21 +before running configure.
   31.22 +
   31.23 +There is a web interface to the subversion repository at:
   31.24 +
   31.25 +	http://hg.libsdl.org/SDL/
   31.26 +
   31.27 +There is an RSS feed available at that URL, for those that want to
   31.28 +track commits in real time.
   31.29 +
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/docs/README-ios.md	Tue Jul 29 08:04:15 2014 -0700
    32.3 @@ -0,0 +1,225 @@
    32.4 +iOS
    32.5 +======
    32.6 +
    32.7 +==============================================================================
    32.8 +Building the Simple DirectMedia Layer for iPhone OS 5.1
    32.9 +==============================================================================
   32.10 +
   32.11 +Requirements: Mac OS X v10.5 or later and the iPhone SDK.
   32.12 +
   32.13 +Instructions:
   32.14 +1.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in XCode.
   32.15 +2.  Select your desired target, and hit build.
   32.16 +
   32.17 +There are three build targets:
   32.18 +- libSDL.a:
   32.19 +	Build SDL as a statically linked library
   32.20 +- testsdl
   32.21 +	Build a test program (there are known test failures which are fine)
   32.22 +- Template:
   32.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.
   32.24 +
   32.25 +==============================================================================
   32.26 +Build SDL for iOS from the command line
   32.27 +==============================================================================
   32.28 +
   32.29 +1. cd (PATH WHERE THE SDL CODE IS)/build-scripts
   32.30 +2. ./iosbuild.sh
   32.31 +
   32.32 +If everything goes fine, you should see a build/ios directory, inside there's
   32.33 +two directories "lib" and "include". 
   32.34 +"include" contains a copy of the SDL headers that you'll need for your project,
   32.35 +make sure to configure XCode to look for headers there.
   32.36 +"lib" contains find two files, libSDL2.a and libSDL2main.a, you have to add both 
   32.37 +to your XCode project. These libraries contain three architectures in them,
   32.38 +armv6 for legacy devices, armv7, and i386 (for the simulator).
   32.39 +By default, iosbuild.sh will autodetect the SDK version you have installed using 
   32.40 +xcodebuild -showsdks, and build for iOS >= 3.0, you can override this behaviour 
   32.41 +by setting the MIN_OS_VERSION variable, ie:
   32.42 +
   32.43 +MIN_OS_VERSION=4.2 ./iosbuild.sh
   32.44 +
   32.45 +==============================================================================
   32.46 +Using the Simple DirectMedia Layer for iOS
   32.47 +==============================================================================
   32.48 +
   32.49 +FIXME: This needs to be updated for the latest methods
   32.50 +
   32.51 +Here is the easiest method:
   32.52 +1.  Build the SDL libraries (libSDL.a and libSDLSimulator.a) and the iPhone SDL Application template.
   32.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.
   32.54 +2.  Start a new project using the template.  The project should be immediately ready for use with SDL.
   32.55 +
   32.56 +Here is a more manual method:
   32.57 +1.  Create a new iPhone view based application.
   32.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.
   32.59 +3.  Include the SDL header files in your project.
   32.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.
   32.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.
   32.62 +
   32.63 +==============================================================================
   32.64 +Notes -- Application events
   32.65 +==============================================================================
   32.66 +
   32.67 +On iOS the application goes through a fixed life cycle and you will get
   32.68 +notifications of state changes via application events. When these events
   32.69 +are delivered you must handle them in an event callback because the OS may
   32.70 +not give you any processing time after the events are delivered.
   32.71 +
   32.72 +e.g.
   32.73 +
   32.74 +int HandleAppEvents(void *userdata, SDL_Event *event)
   32.75 +{
   32.76 +    switch (event->type)
   32.77 +    {
   32.78 +    case SDL_APP_TERMINATING:
   32.79 +        /* Terminate the app.
   32.80 +           Shut everything down before returning from this function.
   32.81 +        */
   32.82 +        return 0;
   32.83 +    case SDL_APP_LOWMEMORY:
   32.84 +        /* You will get this when your app is paused and iOS wants more memory.
   32.85 +           Release as much memory as possible.
   32.86 +        */
   32.87 +        return 0;
   32.88 +    case SDL_APP_WILLENTERBACKGROUND:
   32.89 +        /* Prepare your app to go into the background.  Stop loops, etc.
   32.90 +           This gets called when the user hits the home button, or gets a call.
   32.91 +        */
   32.92 +        return 0;
   32.93 +    case SDL_APP_DIDENTERBACKGROUND:
   32.94 +        /* This will get called if the user accepted whatever sent your app to the background.
   32.95 +           If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
   32.96 +           When you get this, you have 5 seconds to save all your state or the app will be terminated.
   32.97 +           Your app is NOT active at this point.
   32.98 +        */
   32.99 +        return 0;
  32.100 +    case SDL_APP_WILLENTERFOREGROUND:
  32.101 +        /* This call happens when your app is coming back to the foreground.
  32.102 +           Restore all your state here.
  32.103 +        */
  32.104 +        return 0;
  32.105 +    case SDL_APP_DIDENTERFOREGROUND:
  32.106 +        /* Restart your loops here.
  32.107 +           Your app is interactive and getting CPU again.
  32.108 +        */
  32.109 +        return 0;
  32.110 +    default:
  32.111 +        /* No special processing, add it to the event queue */
  32.112 +        return 1;
  32.113 +    }
  32.114 +}
  32.115 +
  32.116 +int main(int argc, char *argv[])
  32.117 +{
  32.118 +    SDL_SetEventFilter(HandleAppEvents, NULL);
  32.119 +
  32.120 +    ... run your main loop
  32.121 +
  32.122 +    return 0;
  32.123 +}
  32.124 +
  32.125 +    
  32.126 +==============================================================================
  32.127 +Notes -- Accelerometer as Joystick
  32.128 +==============================================================================
  32.129 +
  32.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.
  32.131 +
  32.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.
  32.133 +
  32.134 +==============================================================================
  32.135 +Notes -- OpenGL ES
  32.136 +==============================================================================
  32.137 +
  32.138 +Your SDL application for iPhone uses OpenGL ES for video by default.
  32.139 +
  32.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.
  32.141 +
  32.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.
  32.143 +
  32.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.
  32.145 +
  32.146 +==============================================================================
  32.147 +Notes -- Keyboard
  32.148 +==============================================================================
  32.149 +
  32.150 +The SDL keyboard API has been extended to support on-screen keyboards:
  32.151 +
  32.152 +void SDL_StartTextInput()
  32.153 +	-- enables text events and reveals the onscreen keyboard.
  32.154 +void SDL_StopTextInput()
  32.155 +	-- disables text events and hides the onscreen keyboard.
  32.156 +SDL_bool SDL_IsTextInputActive()
  32.157 +	-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
  32.158 +
  32.159 +==============================================================================
  32.160 +Notes -- Reading and Writing files
  32.161 +==============================================================================
  32.162 +
  32.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.
  32.164 +
  32.165 +Once your application is installed its directory tree looks like:
  32.166 +
  32.167 +MySDLApp Home/
  32.168 +	MySDLApp.app
  32.169 +	Documents/
  32.170 +	Library/
  32.171 +		Preferences/
  32.172 +	tmp/
  32.173 +
  32.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".  
  32.175 +
  32.176 +More information on this subject is available here:
  32.177 +http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
  32.178 +
  32.179 +==============================================================================
  32.180 +Notes -- iPhone SDL limitations
  32.181 +==============================================================================
  32.182 +
  32.183 +Windows:
  32.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).
  32.185 +
  32.186 +Textures:
  32.187 +	The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
  32.188 +
  32.189 +Loading Shared Objects:
  32.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.
  32.191 +
  32.192 +==============================================================================
  32.193 +Game Center 
  32.194 +==============================================================================
  32.195 +
  32.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:
  32.197 +    
  32.198 +int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
  32.199 +
  32.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.
  32.201 +
  32.202 +e.g.
  32.203 +
  32.204 +extern "C"
  32.205 +void ShowFrame(void*)
  32.206 +{
  32.207 +    ... do event handling, frame logic and rendering
  32.208 +}
  32.209 +
  32.210 +int main(int argc, char *argv[])
  32.211 +{
  32.212 +   ... initialize game ...
  32.213 +
  32.214 +#if __IPHONEOS__
  32.215 +        // Initialize the Game Center for scoring and matchmaking
  32.216 +        InitGameCenter();
  32.217 +
  32.218 +        // Set up the game to run in the window animation callback on iOS
  32.219 +        // so that Game Center and so forth works correctly.
  32.220 +        SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
  32.221 +#else
  32.222 +        while ( running ) {
  32.223 +                ShowFrame(0);
  32.224 +                DelayFrame();
  32.225 +        }
  32.226 +#endif
  32.227 +        return 0;
  32.228 +}
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/docs/README-linux.md	Tue Jul 29 08:04:15 2014 -0700
    33.3 @@ -0,0 +1,82 @@
    33.4 +Linux
    33.5 +================================================================================
    33.6 +
    33.7 +By default SDL will only link against glibc, the rest of the features will be
    33.8 +enabled dynamically at runtime depending on the available features on the target
    33.9 +system. So, for example if you built SDL with Xinerama support and the target
   33.10 +system does not have the Xinerama libraries installed, it will be disabled
   33.11 +at runtime, and you won't get a missing library error, at least with the 
   33.12 +default configuration parameters.
   33.13 +
   33.14 +
   33.15 +================================================================================
   33.16 +Build Dependencies
   33.17 +================================================================================
   33.18 +    
   33.19 +Ubuntu 13.04, all available features enabled:
   33.20 +
   33.21 +sudo apt-get install build-essential mercurial make cmake autoconf automake \
   33.22 +libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \
   33.23 +libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \
   33.24 +libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \
   33.25 +libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
   33.26 +
   33.27 +Ubuntu 14.04 can also add "libwayland-dev libmirclient-dev libxkbcommon-dev"
   33.28 +to that command line for Wayland and Mir support.
   33.29 +
   33.30 +NOTES:
   33.31 +- This includes all the audio targets except arts, because Ubuntu pulled the 
   33.32 +  artsc0-dev package, but in theory SDL still supports it.
   33.33 +- DirectFB isn't included because the configure script (currently) fails to find
   33.34 +  it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the 
   33.35 +  configure script to include DirectFB support. Send patches.  :)
   33.36 +
   33.37 +
   33.38 +================================================================================
   33.39 +Joystick does not work
   33.40 +================================================================================
   33.41 +
   33.42 +If you compiled or are using a version of SDL with udev support (and you should!)
   33.43 +there's a few issues that may cause SDL to fail to detect your joystick. To
   33.44 +debug this, start by installing the evtest utility. On Ubuntu/Debian:
   33.45 +
   33.46 +    sudo apt-get install evtest
   33.47 +    
   33.48 +Then run:
   33.49 +    
   33.50 +    sudo evtest
   33.51 +    
   33.52 +You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
   33.53 +Now run:
   33.54 +    
   33.55 +    cat /dev/input/event/XX
   33.56 +
   33.57 +If you get a permission error, you need to set a udev rule to change the mode of
   33.58 +your device (see below)    
   33.59 +    
   33.60 +Also, try:
   33.61 +    
   33.62 +    sudo udevadm info --query=all --name=input/eventXX
   33.63 +    
   33.64 +If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
   33.65 +you need to set up an udev rule to force this variable.
   33.66 +
   33.67 +A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks 
   33.68 +like:
   33.69 +    
   33.70 +   SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   33.71 +   SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
   33.72 +   
   33.73 +You can set up similar rules for your device by changing the values listed in
   33.74 +idProduct and idVendor. To obtain these values, try:
   33.75 +    
   33.76 +    sudo udevadm info -a --name=input/eventXX | grep idVendor
   33.77 +    sudo udevadm info -a --name=input/eventXX | grep idProduct
   33.78 +    
   33.79 +If multiple values come up for each of these, the one you want is the first one of each.    
   33.80 +
   33.81 +On other systems which ship with an older udev (such as CentOS), you may need
   33.82 +to set up a rule such as:
   33.83 +    
   33.84 +    SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
   33.85 +
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/docs/README-macosx.md	Tue Jul 29 08:04:15 2014 -0700
    34.3 @@ -0,0 +1,225 @@
    34.4 +Mac OS X
    34.5 +==============================================================================
    34.6 +
    34.7 +These instructions are for people using Apple's Mac OS X (pronounced
    34.8 +"ten").
    34.9 +
   34.10 +From the developer's point of view, OS X is a sort of hybrid Mac and
   34.11 +Unix system, and you have the option of using either traditional
   34.12 +command line tools or Apple's IDE Xcode.
   34.13 +
   34.14 +To build SDL using the command line, use the standard configure and make
   34.15 +process:
   34.16 +
   34.17 +	./configure
   34.18 +	make
   34.19 +	sudo make install
   34.20 +
   34.21 +You can also build SDL as a Universal library (a single binary for both
   34.22 +32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using
   34.23 +the fatbuild.sh script in build-scripts:
   34.24 +	sh build-scripts/fatbuild.sh
   34.25 +	sudo build-scripts/fatbuild.sh install
   34.26 +This script builds SDL with 10.5 ABI compatibility on i386 and 10.6
   34.27 +ABI compatibility on x86_64 architectures.  For best compatibility you
   34.28 +should compile your application the same way.  A script which wraps
   34.29 +gcc to make this easy is provided in test/gcc-fat.sh
   34.30 +
   34.31 +Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK
   34.32 +(even if you target back to 10.5 systems). PowerPC support for Mac OS X has
   34.33 +been officially dropped as of SDL 2.0.2.
   34.34 +
   34.35 +To use the library once it's built, you essential have two possibilities:
   34.36 +use the traditional autoconf/automake/make method, or use Xcode.
   34.37 +
   34.38 +==============================================================================
   34.39 +Caveats for using SDL with Mac OS X
   34.40 +==============================================================================
   34.41 +
   34.42 +Some things you have to be aware of when using SDL on Mac OS X:
   34.43 +
   34.44 +- If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
   34.45 +  SDL will not register its own. This means that SDL will not terminate using
   34.46 +  SDL_Quit if it receives a termination request, it will terminate like a 
   34.47 +  normal app, and it will not send a SDL_DROPFILE when you request to open a
   34.48 +  file with the app. To solve these issues, put the following code in your 
   34.49 +  NSApplicationDelegate implementation:
   34.50 +
   34.51 +  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
   34.52 +  {
   34.53 +      if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
   34.54 +          SDL_Event event;
   34.55 +          event.type = SDL_QUIT;
   34.56 +          SDL_PushEvent(&event);
   34.57 +      }
   34.58 +
   34.59 +      return NSTerminateCancel;
   34.60 +  }
   34.61 +
   34.62 +  - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   34.63 +  {
   34.64 +      if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
   34.65 +          SDL_Event event;
   34.66 +          event.type = SDL_DROPFILE;
   34.67 +          event.drop.file = SDL_strdup([filename UTF8String]);
   34.68 +          return (SDL_PushEvent(&event) > 0);
   34.69 +      }
   34.70 +
   34.71 +      return NO;
   34.72 +  }
   34.73 +
   34.74 +==============================================================================
   34.75 +Using the Simple DirectMedia Layer with a traditional Makefile
   34.76 +==============================================================================
   34.77 +
   34.78 +An existing autoconf/automake build system for your SDL app has good chances
   34.79 +to work almost unchanged on OS X. However, to produce a "real" Mac OS X binary
   34.80 +that you can distribute to users, you need to put the generated binary into a
   34.81 +so called "bundle", which basically is a fancy folder with a name like
   34.82 +"MyCoolGame.app".
   34.83 +
   34.84 +To get this build automatically, add something like the following rule to
   34.85 +your Makefile.am:
   34.86 +
   34.87 +bundle_contents = APP_NAME.app/Contents
   34.88 +APP_NAME_bundle: EXE_NAME
   34.89 +	mkdir -p $(bundle_contents)/MacOS
   34.90 +	mkdir -p $(bundle_contents)/Resources
   34.91 +	echo "APPL????" > $(bundle_contents)/PkgInfo
   34.92 +	$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
   34.93 +
   34.94 +You should replace EXE_NAME with the name of the executable. APP_NAME is what
   34.95 +will be visible to the user in the Finder. Usually it will be the same
   34.96 +as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME 
   34.97 +usually is "TestGame". You might also want to use @PACKAGE@ to use the package
   34.98 +name as specified in your configure.in file.
   34.99 +
  34.100 +If your project builds more than one application, you will have to do a bit
  34.101 +more. For each of your target applications, you need a separate rule.
  34.102 +
  34.103 +If you want the created bundles to be installed, you may want to add this
  34.104 +rule to your Makefile.am:
  34.105 +
  34.106 +install-exec-hook: APP_NAME_bundle
  34.107 +	rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
  34.108 +	mkdir -p $(DESTDIR)$(prefix)/Applications/
  34.109 +	cp -r $< /$(DESTDIR)$(prefix)Applications/
  34.110 +
  34.111 +This rule takes the Bundle created by the rule from step 3 and installs them
  34.112 +into $(DESTDIR)$(prefix)/Applications/.
  34.113 +
  34.114 +Again, if you want to install multiple applications, you will have to augment
  34.115 +the make rule accordingly.
  34.116 +
  34.117 +
  34.118 +But beware! That is only part of the story! With the above, you end up with
  34.119 +a bare bone .app bundle, which is double clickable from the Finder. But
  34.120 +there are some more things you should do before shipping your product...
  34.121 +
  34.122 +1) The bundle right now probably is dynamically linked against SDL. That 
  34.123 +   means that when you copy it to another computer, *it will not run*,
  34.124 +   unless you also install SDL on that other computer. A good solution
  34.125 +   for this dilemma is to static link against SDL. On OS X, you can
  34.126 +   achieve that by linking against the libraries listed by
  34.127 +     sdl-config --static-libs
  34.128 +   instead of those listed by
  34.129 +     sdl-config --libs
  34.130 +   Depending on how exactly SDL is integrated into your build systems, the
  34.131 +   way to achieve that varies, so I won't describe it here in detail
  34.132 +2) Add an 'Info.plist' to your application. That is a special XML file which
  34.133 +   contains some meta-information about your application (like some copyright
  34.134 +   information, the version of your app, the name of an optional icon file,
  34.135 +   and other things). Part of that information is displayed by the Finder
  34.136 +   when you click on the .app, or if you look at the "Get Info" window.
  34.137 +   More information about Info.plist files can be found on Apple's homepage.
  34.138 +
  34.139 +
  34.140 +As a final remark, let me add that I use some of the techniques (and some
  34.141 +variations of them) in Exult and ScummVM; both are available in source on
  34.142 +the net, so feel free to take a peek at them for inspiration!
  34.143 +
  34.144 +
  34.145 +==============================================================================
  34.146 +Using the Simple DirectMedia Layer with Xcode
  34.147 +==============================================================================
  34.148 +
  34.149 +These instructions are for using Apple's Xcode IDE to build SDL applications.
  34.150 +
  34.151 +- First steps
  34.152 +
  34.153 +The first thing to do is to unpack the Xcode.tar.gz archive in the
  34.154 +top level SDL directory (where the Xcode.tar.gz archive resides).
  34.155 +Because Stuffit Expander will unpack the archive into a subdirectory,
  34.156 +you should unpack the archive manually from the command line:
  34.157 +	cd [path_to_SDL_source]
  34.158 +	tar zxf Xcode.tar.gz
  34.159 +This will create a new folder called Xcode, which you can browse
  34.160 +normally from the Finder.
  34.161 +
  34.162 +- Building the Framework
  34.163 +
  34.164 +The SDL Library is packaged as a framework bundle, an organized
  34.165 +relocatable folder hierarchy of executable code, interface headers,
  34.166 +and additional resources. For practical purposes, you can think of a 
  34.167 +framework as a more user and system-friendly shared library, whose library
  34.168 +file behaves more or less like a standard UNIX shared library.
  34.169 +
  34.170 +To build the framework, simply open the framework project and build it. 
  34.171 +By default, the framework bundle "SDL.framework" is installed in 
  34.172 +/Library/Frameworks. Therefore, the testers and project stationary expect
  34.173 +it to be located there. However, it will function the same in any of the
  34.174 +following locations:
  34.175 +
  34.176 +    ~/Library/Frameworks
  34.177 +    /Local/Library/Frameworks
  34.178 +    /System/Library/Frameworks
  34.179 +
  34.180 +- Build Options
  34.181 +    There are two "Build Styles" (See the "Targets" tab) for SDL.
  34.182 +    "Deployment" should be used if you aren't tweaking the SDL library.
  34.183 +    "Development" should be used to debug SDL apps or the library itself.
  34.184 +
  34.185 +- Building the Testers
  34.186 +    Open the SDLTest project and build away!
  34.187 +
  34.188 +- Using the Project Stationary
  34.189 +    Copy the stationary to the indicated folders to access it from
  34.190 +    the "New Project" and "Add target" menus. What could be easier?
  34.191 +
  34.192 +- Setting up a new project by hand
  34.193 +    Some of you won't want to use the Stationary so I'll give some tips:
  34.194 +    * Create a new "Cocoa Application"
  34.195 +    * Add src/main/macosx/SDLMain.m , .h and .nib to your project
  34.196 +    * Remove "main.c" from your project
  34.197 +    * Remove "MainMenu.nib" from your project
  34.198 +    * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
  34.199 +    * Add "$(HOME)/Library/Frameworks" to the frameworks search path
  34.200 +    * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
  34.201 +    * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib"
  34.202 +    * Add your files
  34.203 +    * Clean and build
  34.204 +
  34.205 +- Building from command line
  34.206 +    Use pbxbuild in the same directory as your .pbproj file
  34.207 +
  34.208 +- Running your app
  34.209 +    You can send command line args to your app by either invoking it from
  34.210 +    the command line (in *.app/Contents/MacOS) or by entering them in the
  34.211 +    "Executables" panel of the target settings.
  34.212 +    
  34.213 +- Implementation Notes
  34.214 +    Some things that may be of interest about how it all works...
  34.215 +    * Working directory
  34.216 +        As defined in the SDL_main.m file, the working directory of your SDL app
  34.217 +        is by default set to its parent. You may wish to change this to better
  34.218 +        suit your needs.
  34.219 +    * You have a Cocoa App!
  34.220 +        Your SDL app is essentially a Cocoa application. When your app
  34.221 +        starts up and the libraries finish loading, a Cocoa procedure is called,
  34.222 +        which sets up the working directory and calls your main() method.
  34.223 +        You are free to modify your Cocoa app with generally no consequence 
  34.224 +        to SDL. You cannot, however, easily change the SDL window itself.
  34.225 +        Functionality may be added in the future to help this.
  34.226 +
  34.227 +
  34.228 +Known bugs are listed in the file "BUGS"
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/docs/README-nacl.md	Tue Jul 29 08:04:15 2014 -0700
    35.3 @@ -0,0 +1,103 @@
    35.4 +Native Client
    35.5 +================================================================================
    35.6 +
    35.7 +Requirements: 
    35.8 +    
    35.9 +    * Native Client SDK (https://developer.chrome.com/native-client), 
   35.10 +      (tested with Pepper version 33 or higher).
   35.11 +
   35.12 +The SDL backend for Chrome's Native Client has been tested only with the PNaCl
   35.13 +toolchain, which generates binaries designed to run on ARM and x86_32/64 
   35.14 +platforms. This does not mean it won't work with the other toolchains!
   35.15 +
   35.16 +================================================================================
   35.17 +Building SDL for NaCl
   35.18 +================================================================================
   35.19 +
   35.20 +Set up the right environment variables (see naclbuild.sh), then configure SDL with:
   35.21 +
   35.22 +    configure --host=pnacl --prefix some/install/destination
   35.23 +    
   35.24 +Then "make". 
   35.25 +
   35.26 +As an example of how to create a deployable app a Makefile project is provided 
   35.27 +in test/nacl/Makefile, which includes some monkey patching of the common.mk file 
   35.28 +provided by NaCl, without which linking properly to SDL won't work (the search 
   35.29 +path can't be modified externally, so the linker won't find SDL's binaries unless 
   35.30 +you dump them into the SDK path, which is inconvenient).
   35.31 +Also provided in test/nacl is the required support file, such as index.html, 
   35.32 +manifest.json, etc.
   35.33 +SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
   35.34 +This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
   35.35 +hiding the asynchronous nature of the browser behind the scenes...which is not the
   35.36 +same as making it disappear!
   35.37 +
   35.38 +
   35.39 +================================================================================
   35.40 +Running tests
   35.41 +================================================================================
   35.42 +
   35.43 +Due to the nature of NaCl programs, building and running SDL tests is not as
   35.44 +straightforward as one would hope. The script naclbuild.sh in build-scripts 
   35.45 +automates the process and should serve as a guide for users of SDL trying to build 
   35.46 +their own applications.
   35.47 +
   35.48 +Basic usage:
   35.49 +    
   35.50 +    ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
   35.51 +    
   35.52 +This will build testgles2.c by default.
   35.53 +
   35.54 +If you want to build a different test, for example testrendercopyex.c:
   35.55 +    
   35.56 +    SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
   35.57 +    
   35.58 +Once the build finishes, you have to serve the contents with a web server (the
   35.59 +script will give you instructions on how to do that with Python).
   35.60 +
   35.61 +================================================================================
   35.62 +RWops and nacl_io
   35.63 +================================================================================
   35.64 +
   35.65 +SDL_RWops work transparently with nacl_io. Two functions control the mount points:
   35.66 +    
   35.67 +    int mount(const char* source, const char* target, 
   35.68 +                      const char* filesystemtype, 
   35.69 +                      unsigned long mountflags, const void *data);
   35.70 +    int umount(const char *target);
   35.71 +    
   35.72 +    For convenience, SDL will by default mount an httpfs tree at / before calling 
   35.73 +the app's main function. Such setting can be overridden by calling:
   35.74 +    
   35.75 +    umount("/");
   35.76 +
   35.77 +And then mounting a different filesystem at /
   35.78 +
   35.79 +It's important to consider that the asynchronous nature of file operations on a
   35.80 +browser is hidden from the application, effectively providing the developer with
   35.81 +a set of blocking file operations just like you get in a regular desktop 
   35.82 +environment, which eases the job of porting to Native Client, but also introduces 
   35.83 +a set of challenges of its own, in particular when big file sizes and slow 
   35.84 +connections are involved.
   35.85 +
   35.86 +For more information on how nacl_io and mount points work, see:
   35.87 +    
   35.88 +    https://developer.chrome.com/native-client/devguide/coding/nacl_io
   35.89 +    https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
   35.90 +
   35.91 +To be able to save into the directory "/save/" (like backup of game) :
   35.92 +
   35.93 +    mount("", "/save", "html5fs", 0, "type=PERSISTENT");
   35.94 +
   35.95 +And add to manifest.json :
   35.96 +
   35.97 +  "permissions": [
   35.98 +     "unlimitedStorage"
   35.99 +  ]
  35.100 +
  35.101 +================================================================================
  35.102 +TODO - Known Issues
  35.103 +================================================================================
  35.104 +* Testing of all systems with a real application (something other than SDL's tests)
  35.105 +* Key events don't seem to work properly
  35.106 +
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/docs/README-pandora.md	Tue Jul 29 08:04:15 2014 -0700
    36.3 @@ -0,0 +1,17 @@
    36.4 +Pandora 
    36.5 +=====================================================================
    36.6 +
    36.7 +( http://openpandora.org/ )
    36.8 +- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
    36.9 +support to work on the pandora under the framebuffer. This driver do not have
   36.10 +input support for now, so if you use it you will have to add your own control code.
   36.11 +The video driver name is "pandora" so if you have problem running it from
   36.12 +the framebuffer, try to set the following variable before starting your application :
   36.13 +"export SDL_VIDEODRIVER=pandora"
   36.14 +
   36.15 +- OpenGL ES support was added to the x11 driver, so it's working like the normal
   36.16 +x11 driver one with OpenGLX support, with SDL input event's etc..
   36.17 +
   36.18 +
   36.19 +David Carré (Cpasjuste)
   36.20 +cpasjuste@gmail.com
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/docs/README-platforms.md	Tue Jul 29 08:04:15 2014 -0700
    37.3 @@ -0,0 +1,34 @@
    37.4 +Platforms
    37.5 +=========
    37.6 +
    37.7 +
    37.8 +This is a list of the platforms SDL supports, and who maintains them.
    37.9 +
   37.10 +Officially supported platforms
   37.11 +==============================
   37.12 +(code compiles, and thoroughly tested for release)
   37.13 +==============================
   37.14 +Windows XP/Vista/7/8
   37.15 +Mac OS X 10.5+
   37.16 +Linux 2.6+
   37.17 +iOS 5.1.1+
   37.18 +Android 2.3.3+
   37.19 +
   37.20 +Unofficially supported platforms
   37.21 +================================
   37.22 +(code compiles, but not thoroughly tested)
   37.23 +================================
   37.24 +FreeBSD
   37.25 +NetBSD
   37.26 +OpenBSD
   37.27 +Solaris
   37.28 +
   37.29 +Platforms supported by volunteers
   37.30 +=================================
   37.31 +Haiku - maintained by Axel Dörfler <axeld@pinc-software.de>
   37.32 +PSP - maintained by 527721088@qq.com
   37.33 +Pandora - maintained by Scott Smith <pickle136@sbcglobal.net>
   37.34 +NaCl - maintained by Gabriel Jacobo <gabomdq@gmail.com>
   37.35 +
   37.36 +Platforms that need maintainers
   37.37 +===============================
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/docs/README-porting.md	Tue Jul 29 08:04:15 2014 -0700
    38.3 @@ -0,0 +1,63 @@
    38.4 +Porting
    38.5 +=======
    38.6 +
    38.7 +* Porting To A New Platform
    38.8 +
    38.9 +  The first thing you have to do when porting to a new platform, is look at
   38.10 +include/SDL_platform.h and create an entry there for your operating system.
   38.11 +The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
   38.12 +Ideally SDL_platform.h will be able to auto-detect the system it's building
   38.13 +on based on C preprocessor symbols.
   38.14 +
   38.15 +There are two basic ways of building SDL at the moment:
   38.16 +
   38.17 +1. The "UNIX" way:  ./configure; make; make install
   38.18 +
   38.19 +   If you have a GNUish system, then you might try this.  Edit configure.in,
   38.20 +   take a look at the large section labelled:
   38.21 +	"Set up the configuration based on the target platform!"
   38.22 +   Add a section for your platform, and then re-run autogen.sh and build!
   38.23 +
   38.24 +2. Using an IDE:
   38.25 +
   38.26 +   If you're using an IDE or other non-configure build system, you'll probably
   38.27 +   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
   38.28 +   add a section for your platform, and create a custom SDL_config_{platform}.h,
   38.29 +   based on SDL_config.h.minimal and SDL_config.h.in
   38.30 +
   38.31 +   Add the top level include directory to the header search path, and then add
   38.32 +   the following sources to the project:
   38.33 +	src/*.c
   38.34 +	src/atomic/*.c
   38.35 +	src/audio/*.c
   38.36 +	src/cpuinfo/*.c
   38.37 +	src/events/*.c
   38.38 +	src/file/*.c
   38.39 +	src/haptic/*.c
   38.40 +	src/joystick/*.c
   38.41 +	src/power/*.c
   38.42 +	src/render/*.c
   38.43 +	src/stdlib/*.c
   38.44 +	src/thread/*.c
   38.45 +	src/timer/*.c
   38.46 +	src/video/*.c
   38.47 +	src/audio/disk/*.c
   38.48 +	src/audio/dummy/*.c
   38.49 +	src/video/dummy/*.c
   38.50 +	src/haptic/dummy/*.c
   38.51 +	src/joystick/dummy/*.c
   38.52 +	src/main/dummy/*.c
   38.53 +	src/thread/generic/*.c
   38.54 +	src/timer/dummy/*.c
   38.55 +	src/loadso/dummy/*.c
   38.56 +
   38.57 +
   38.58 +Once you have a working library without any drivers, you can go back to each
   38.59 +of the major subsystems and start implementing drivers for your platform.
   38.60 +
   38.61 +If you have any questions, don't hesitate to ask on the SDL mailing list:
   38.62 +	http://www.libsdl.org/mailing-list.php
   38.63 +
   38.64 +Enjoy!
   38.65 +	Sam Lantinga				(slouken@libsdl.org)
   38.66 +
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/docs/README-psp.md	Tue Jul 29 08:04:15 2014 -0700
    39.3 @@ -0,0 +1,19 @@
    39.4 +PSP
    39.5 +======
    39.6 +SDL port for the Sony PSP contributed by 
    39.7 +   Captian Lex 
    39.8 +
    39.9 +Credit to
   39.10 +   Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
   39.11 +   Geecko for his PSP GU lib "Glib2d"
   39.12 +
   39.13 +Building
   39.14 +--------
   39.15 +To build for the PSP, make sure psp-config is in the path and run:
   39.16 +   make -f Makefile.psp
   39.17 +
   39.18 +
   39.19 +
   39.20 +To Do
   39.21 +------
   39.22 +PSP Screen Keyboard
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/docs/README-raspberrypi.md	Tue Jul 29 08:04:15 2014 -0700
    40.3 @@ -0,0 +1,160 @@
    40.4 +Raspberry Pi
    40.5 +================================================================================
    40.6 +
    40.7 +Requirements:
    40.8 +
    40.9 +Raspbian (other Linux distros may work as well).
   40.10 +
   40.11 +================================================================================
   40.12 + Features
   40.13 +================================================================================
   40.14 +
   40.15 +* Works without X11
   40.16 +* Hardware accelerated OpenGL ES 2.x
   40.17 +* Sound via ALSA
   40.18 +* Input (mouse/keyboard/joystick) via EVDEV
   40.19 +* Hotplugging of input devices via UDEV
   40.20 +
   40.21 +================================================================================
   40.22 + Raspbian Build Dependencies
   40.23 +================================================================================
   40.24 +
   40.25 +sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
   40.26 +
   40.27 +You also need the VideoCore binary stuff that ships in /opt/vc for EGL and 
   40.28 +OpenGL ES 2.x, it usually comes pre installed, but in any case:
   40.29 +    
   40.30 +sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
   40.31 +
   40.32 +================================================================================
   40.33 + Cross compiling from x86 Linux
   40.34 +================================================================================
   40.35 +
   40.36 +To cross compile SDL for Raspbian from your desktop machine, you'll need a
   40.37 +Raspbian system root and the cross compilation tools. We'll assume these tools
   40.38 +will be placed in /opt/rpi-tools
   40.39 +
   40.40 +    sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
   40.41 +
   40.42 +You'll also need a Rasbian binary image.
   40.43 +Get it from: http://downloads.raspberrypi.org/raspbian_latest 
   40.44 +After unzipping, you'll get file with a name like: <date>-wheezy-raspbian.img
   40.45 +Let's assume the sysroot will be built in /opt/rpi-sysroot.
   40.46 +
   40.47 +    export SYSROOT=/opt/rpi-sysroot
   40.48 +    sudo kpartx -a -v <path_to_raspbian_image>.img
   40.49 +    sudo mount -o loop /dev/mapper/loop0p2 /mnt
   40.50 +    sudo cp -r /mnt $SYSROOT
   40.51 +    sudo apt-get install qemu binfmt-support qemu-user-static
   40.52 +    sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
   40.53 +    sudo mount --bind /dev $SYSROOT/dev
   40.54 +    sudo mount --bind /proc $SYSROOT/proc
   40.55 +    sudo mount --bind /sys $SYSROOT/sys
   40.56 +
   40.57 +Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
   40.58 +edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
   40.59 +
   40.60 +    sudo chroot $SYSROOT
   40.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
   40.62 +    exit
   40.63 +    sudo umount $SYSROOT/dev
   40.64 +    sudo umount $SYSROOT/proc
   40.65 +    sudo umount $SYSROOT/sys
   40.66 +    sudo umount /mnt
   40.67 +    
   40.68 +There's one more fix required, as the libdl.so symlink uses an absolute path 
   40.69 +which doesn't quite work in our setup.
   40.70 +
   40.71 +    sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   40.72 +    sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
   40.73 +
   40.74 +The final step is compiling SDL itself.
   40.75 +
   40.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"
   40.77 +    cd <SDL SOURCE>
   40.78 +    mkdir -p build;cd build
   40.79 +    ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
   40.80 +    make
   40.81 +    make install
   40.82 +
   40.83 +To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
   40.84 +    
   40.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
   40.86 +    
   40.87 +================================================================================
   40.88 + Apps don't work or poor video/audio performance
   40.89 +================================================================================
   40.90 +
   40.91 +If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to 
   40.92 +update the RPi's firmware. Note that doing so will fix these problems, but it
   40.93 +will also render the CMA - Dynamic Memory Split functionality useless.
   40.94 +
   40.95 +Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
   40.96 +low in general, specially if a 1080p TV is hooked up.
   40.97 +
   40.98 +See here how to configure this setting: http://elinux.org/RPiconfig
   40.99 +
  40.100 +Using a fixed gpu_mem=128 is the best option (specially if you updated the 
  40.101 +firmware, using CMA probably won't work, at least it's the current case).
  40.102 +
  40.103 +================================================================================
  40.104 + No input
  40.105 +================================================================================
  40.106 +
  40.107 +Make sure you belong to the "input" group.
  40.108 +
  40.109 +    sudo usermod -aG input `whoami`
  40.110 +
  40.111 +================================================================================
  40.112 + No HDMI Audio
  40.113 +================================================================================
  40.114 +
  40.115 +If you notice that ALSA works but there's no audio over HDMI, try adding:
  40.116 +    
  40.117 +    hdmi_drive=2
  40.118 +    
  40.119 +to your config.txt file and reboot.
  40.120 +
  40.121 +Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
  40.122 +
  40.123 +================================================================================
  40.124 + Text Input API support
  40.125 +================================================================================
  40.126 +
  40.127 +The Text Input API is supported, with translation of scan codes done via the
  40.128 +kernel symbol tables. For this to work, SDL needs access to a valid console.
  40.129 +If you notice there's no SDL_TEXTINPUT message being emitted, double check that
  40.130 +your app has read access to one of the following:
  40.131 +    
  40.132 +* /proc/self/fd/0
  40.133 +* /dev/tty
  40.134 +* /dev/tty[0...6]
  40.135 +* /dev/vc/0
  40.136 +* /dev/console
  40.137 +
  40.138 +This is usually not a problem if you run from the physical terminal (as opposed
  40.139 +to running from a pseudo terminal, such as via SSH). If running from a PTS, a 
  40.140 +quick workaround is to run your app as root or add yourself to the tty group,
  40.141 +then re login to the system.
  40.142 +
  40.143 +   sudo usermod -aG tty `whoami`
  40.144 +    
  40.145 +The keyboard layout used by SDL is the same as the one the kernel uses.
  40.146 +To configure the layout on Raspbian:
  40.147 +    
  40.148 +    sudo dpkg-reconfigure keyboard-configuration
  40.149 +    
  40.150 +To configure the locale, which controls which keys are interpreted as letters,
  40.151 +this determining the CAPS LOCK behavior:
  40.152 +
  40.153 +    sudo dpkg-reconfigure locales
  40.154 +
  40.155 +================================================================================
  40.156 + Notes
  40.157 +================================================================================
  40.158 +
  40.159 +* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
  40.160 +  leaking into the console only if it has root privileges. Launching apps locally
  40.161 +  does not suffer from this issue.
  40.162 +  
  40.163 +
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/docs/README-touch.md	Tue Jul 29 08:04:15 2014 -0700
    41.3 @@ -0,0 +1,85 @@
    41.4 +Touch
    41.5 +===========================================================================
    41.6 +System Specific Notes
    41.7 +===========================================================================
    41.8 +Linux:
    41.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.
   41.10 +
   41.11 +Mac:
   41.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.
   41.13 +
   41.14 +iPhone: 
   41.15 +Works out of box.
   41.16 +
   41.17 +Windows:
   41.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
   41.19 +
   41.20 +===========================================================================
   41.21 +Events
   41.22 +===========================================================================
   41.23 +SDL_FINGERDOWN:
   41.24 +Sent when a finger (or stylus) is placed on a touch device.
   41.25 +Fields:
   41.26 +event.tfinger.touchId  - the Id of the touch device.
   41.27 +event.tfinger.fingerId - the Id of the finger which just went down.
   41.28 +event.tfinger.x        - the x coordinate of the touch (0..1)
   41.29 +event.tfinger.y        - the y coordinate of the touch (0..1)
   41.30 +event.tfinger.pressure - the pressure of the touch (0..1)
   41.31 +
   41.32 +SDL_FINGERMOTION:
   41.33 +Sent when a finger (or stylus) is moved on the touch device.
   41.34 +Fields:
   41.35 +Same as SDL_FINGERDOWN but with additional:
   41.36 +event.tfinger.dx       - change in x coordinate during this motion event.
   41.37 +event.tfinger.dy       - change in y coordinate during this motion event.
   41.38 +
   41.39 +SDL_FINGERUP:
   41.40 +Sent when a finger (or stylus) is lifted from the touch device.
   41.41 +Fields:
   41.42 +Same as SDL_FINGERDOWN.
   41.43 +
   41.44 +
   41.45 +===========================================================================
   41.46 +Functions
   41.47 +===========================================================================
   41.48 +SDL provides the ability to access the underlying Finger structures.
   41.49 +These structures should _never_ be modified.
   41.50 +
   41.51 +The following functions are included from SDL_touch.h
   41.52 +
   41.53 +To get a SDL_TouchID call SDL_GetTouchDevice(index).
   41.54 +This returns a SDL_TouchID.
   41.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!
   41.56 +
   41.57 +The number of touch devices can be queried with SDL_GetNumTouchDevices().
   41.58 +
   41.59 +A SDL_TouchID may be used to get pointers to SDL_Finger.
   41.60 +
   41.61 +SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
   41.62 +
   41.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:
   41.64 +
   41.65 +      float x = event.tfinger.x;
   41.66 +      float y = event.tfinger.y;
   41.67 +
   41.68 +
   41.69 +
   41.70 +To get a SDL_Finger, call SDL_GetTouchFinger(touchID,index), where touchID is a SDL_TouchID, and index is the requested finger.
   41.71 +This returns a SDL_Finger*, or NULL if the finger does not exist, or has been removed.
   41.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.
   41.73 +As a result, be very careful to check for NULL return values.
   41.74 +
   41.75 +A SDL_Finger has the following fields:
   41.76 +>x,y,pressure:
   41.77 +	The current coordinates of the touch.
   41.78 +>pressure:
   41.79 +	The pressure of the touch.
   41.80 +
   41.81 +===========================================================================
   41.82 +Notes
   41.83 +===========================================================================
   41.84 +For a complete example see test/testgesture.c
   41.85 +
   41.86 +Please direct questions/comments to:
   41.87 +   jim.tla+sdl_touch@gmail.com
   41.88 +   (original author, API was changed since)
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/docs/README-wince.md	Tue Jul 29 08:04:15 2014 -0700
    42.3 @@ -0,0 +1,10 @@
    42.4 +WinCE
    42.5 +=====
    42.6 +
    42.7 +Windows CE is no longer supported by SDL.
    42.8 +
    42.9 +We have left the CE support in SDL 1.2 for those that must have it, and we
   42.10 +have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
   42.11 +
   42.12 +--ryan.
   42.13 +
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/docs/README-windows.md	Tue Jul 29 08:04:15 2014 -0700
    43.3 @@ -0,0 +1,41 @@
    43.4 +Windows
    43.5 +================================================================================
    43.6 +
    43.7 +================================================================================
    43.8 +OpenGL ES 2.x support
    43.9 +================================================================================
   43.10 +
   43.11 +SDL has support for OpenGL ES 2.x under Windows via two alternative 
   43.12 +implementations. 
   43.13 +The most straightforward method consists in running your app in a system with 
   43.14 +a graphic card paired with a relatively recent (as of November of 2013) driver 
   43.15 +which supports the WGL_EXT_create_context_es2_profile extension. Vendors known 
   43.16 +to ship said extension on Windows currently include nVidia and Intel.
   43.17 +
   43.18 +The other method involves using the ANGLE library (https://code.google.com/p/angleproject/)
   43.19 +If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile
   43.20 +extension is found, SDL will try to load the libEGL.dll library provided by
   43.21 +ANGLE.
   43.22 +To obtain the ANGLE binaries, you can either compile from source from
   43.23 +https://chromium.googlesource.com/angle/angle or copy the relevant binaries from
   43.24 +a recent Chrome/Chromium install for Windows. The files you need are:
   43.25 +    
   43.26 +    * libEGL.dll
   43.27 +    * libGLESv2.dll
   43.28 +    * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler)
   43.29 +    or...
   43.30 +    * d3dcompiler_43.dll (supports Windows XP or later)
   43.31 +    
   43.32 +If you compile ANGLE from source, you can configure it so it does not need the
   43.33 +d3dcompiler_* DLL at all (for details on this, see their documentation). 
   43.34 +However, by default SDL will try to preload the d3dcompiler_46.dll to
   43.35 +comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to
   43.36 +support Windows XP) or to skip this step at all, you can use the 
   43.37 +SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details).
   43.38 +
   43.39 +Known Bugs:
   43.40 +    
   43.41 +    * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
   43.42 +      that there's a bug in the library which prevents the window contents from
   43.43 +      refreshing if this is set to anything other than the default value.
   43.44 +      
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/docs/README-winrt.md	Tue Jul 29 08:04:15 2014 -0700
    44.3 @@ -0,0 +1,44 @@
    44.4 +WinRT
    44.5 +================================================================================
    44.6 +
    44.7 +SDL/WinRT layer allows SDL2-based applications to run on many of Microsoft's
    44.8 +platforms that utilize the "Windows Runtime" (aka "WinRT") APIs.  WinRT apps
    44.9 +are currently always full-screen apps, run in what Microsoft calls their
   44.10 +"Modern" environment (aka. "Metro"), and are distributed via Microsoft-run
   44.11 +online stores.  Some of the operating systems that support such apps include:
   44.12 +
   44.13 +* Windows 8.x
   44.14 +* Windows RT 8.x (aka. Windows 8.x for ARM processors)
   44.15 +* Windows Phone 8.x
   44.16 +
   44.17 +To note, WinRT applications that run on Windows 8.x and/or Windows RT are often
   44.18 +called "Windows Store" apps.
   44.19 +
   44.20 +
   44.21 +--------------------------------------------------------------------------------
   44.22 +Requirements
   44.23 +--------------------------------------------------------------------------------
   44.24 +- Microsoft Visual C++ 2012 -- Free, "Express" editions may be used, so long
   44.25 +  as they include support for either "Windows Store" or "Windows Phone" apps.
   44.26 +  (NOTE: MSVC 2013 support is pending.  2012 projects may be converted to 2013
   44.27 +  projects by MSVC, in the meantime.)
   44.28 +- A valid Microsoft account -- This requirement is not imposed by SDL, but
   44.29 +  rather by Microsoft's Visual C++ toolchain.
   44.30 +
   44.31 +
   44.32 +--------------------------------------------------------------------------------
   44.33 +TODO
   44.34 +--------------------------------------------------------------------------------
   44.35 +- Finish adding support for MSVC 2013, and "Universal" WinRT apps, which
   44.36 +  support Windows 8.1, Windows Phone 8.1, and in the future, Xbox One and
   44.37 +  Windows Desktop.
   44.38 +- Finish adding support for the SDL satellite libraries (SDL_image, SDL_mixer,
   44.39 +  SDL_ttf, etc.)
   44.40 +- Create templates for both MSVC 2012 and MSVC 2013, and have the corresponding
   44.41 +  VSIX packages either include pre-built copies of SDL, or reference binaries
   44.42 +  available via MSVC's NuGet servers
   44.43 +- Write setup instructions that use MSVC 201x templates
   44.44 +- Write setup instructions that don't use MSVC 201x templates, and use
   44.45 +  MSVC project-to-project references, rather than pre-built binaries
   44.46 +- Write a list of caveats found in SDL/WinRT, such as APIs that don't work due
   44.47 +  to platform restrictions, or things that need further work
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/docs/README.md	Tue Jul 29 08:04:15 2014 -0700
    45.3 @@ -0,0 +1,62 @@
    45.4 +Simple DirectMedia Layer {#mainpage}
    45.5 +========================
    45.6 +
    45.7 +                                  (SDL)
    45.8 +
    45.9 +                                Version 2.0
   45.10 +
   45.11 +---
   45.12 +http://www.libsdl.org/
   45.13 +
   45.14 +Simple DirectMedia Layer is a cross-platform development library designed
   45.15 +to provide low level access to audio, keyboard, mouse, joystick, and graphics
   45.16 +hardware via OpenGL and Direct3D. It is used by video playback software,
   45.17 +emulators, and popular games including Valve's award winning catalog
   45.18 +and many Humble Bundle games. 42
   45.19 +
   45.20 +SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
   45.21 +Support for other platforms may be found in the source code.
   45.22 +
   45.23 +SDL is written in C, works natively with C++, and there are bindings 
   45.24 +available for several other languages, including C# and Python.
   45.25 +
   45.26 +This library is distributed under the zlib license, which can be found
   45.27 +in the file "COPYING.txt".
   45.28 +
   45.29 +The best way to learn how to use SDL is to check out the header files in
   45.30 +the "include" subdirectory and the programs in the "test" subdirectory.
   45.31 +The header files and test programs are well commented and always up to date.
   45.32 +
   45.33 +More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
   45.34 +
   45.35 +- [Android](README-android.md)
   45.36 +- [CMake](README-cmake.md)
   45.37 +- [DirectFB](README-directfb.md)
   45.38 +- [DynAPI](README-dynapi.md)
   45.39 +- [Gesture](README-gesture.md)
   45.40 +- [Mercurial](README-hg.md)
   45.41 +- [iOS](README-ios.md)
   45.42 +- [Linux](README-linux.md)
   45.43 +- [OS X](README-macosx.md)
   45.44 +- [Native Client](README-nacl.md)
   45.45 +- [Pandora](README-pandora.md)
   45.46 +- [Supported Platforms](README-platforms.md)
   45.47 +- [Porting information](README-porting.md)
   45.48 +- [PSP](README-psp.md)
   45.49 +- [Raspberry Pi](README-raspberrypi.md)
   45.50 +- [Touch](README-touch.md)
   45.51 +- [WinCE](README-wince.md)
   45.52 +- [Windows](README-windows.md)
   45.53 +- [WinRT](README-winrt.md)
   45.54 +
   45.55 +If you need help with the library, or just want to discuss SDL related
   45.56 +issues, you can join the [developers mailing list](http://www.libsdl.org/mailing-list.php)
   45.57 +
   45.58 +If you want to report bugs or contribute patches, please submit them to
   45.59 +[bugzilla](http://bugzilla.libsdl.org/)
   45.60 +
   45.61 +Enjoy!
   45.62 +
   45.63 +
   45.64 +Sam Lantinga <mailto:slouken@libsdl.org>
   45.65 +
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/docs/doxyfile	Tue Jul 29 08:04:15 2014 -0700
    46.3 @@ -0,0 +1,1559 @@
    46.4 +# Doxyfile 1.5.9
    46.5 +
    46.6 +# This file describes the settings to be used by the documentation system
    46.7 +# doxygen (www.doxygen.org) for a project
    46.8 +#
    46.9 +# All text after a hash (#) is considered a comment and will be ignored
   46.10 +# The format is:
   46.11 +#       TAG = value [value, ...]
   46.12 +# For lists items can also be appended using:
   46.13 +#       TAG += value [value, ...]
   46.14 +# Values that contain spaces should be placed between quotes (" ")
   46.15 +
   46.16 +#---------------------------------------------------------------------------
   46.17 +# Project related configuration options
   46.18 +#---------------------------------------------------------------------------
   46.19 +
   46.20 +# This tag specifies the encoding used for all characters in the config file 
   46.21 +# that follow. The default is UTF-8 which is also the encoding used for all 
   46.22 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
   46.23 +# iconv built into libc) for the transcoding. See 
   46.24 +# http://www.gnu.org/software/libiconv for the list of possible encodings.
   46.25 +
   46.26 +DOXYFILE_ENCODING      = UTF-8
   46.27 +
   46.28 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
   46.29 +# by quotes) that should identify the project.
   46.30 +
   46.31 +PROJECT_NAME           = SDL
   46.32 +
   46.33 +# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
   46.34 +# This could be handy for archiving the generated documentation or 
   46.35 +# if some version control system is used.
   46.36 +
   46.37 +PROJECT_NUMBER         = 2.0.0
   46.38 +
   46.39 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
   46.40 +# base path where the generated documentation will be put. 
   46.41 +# If a relative path is entered, it will be relative to the location 
   46.42 +# where doxygen was started. If left blank the current directory will be used.
   46.43 +
   46.44 +OUTPUT_DIRECTORY       = ./output
   46.45 +
   46.46 +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
   46.47 +# 4096 sub-directories (in 2 levels) under the output directory of each output 
   46.48 +# format and will distribute the generated files over these directories. 
   46.49 +# Enabling this option can be useful when feeding doxygen a huge amount of 
   46.50 +# source files, where putting all generated files in the same directory would 
   46.51 +# otherwise cause performance problems for the file system.
   46.52 +
   46.53 +CREATE_SUBDIRS         = YES
   46.54 +
   46.55 +# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
   46.56 +# documentation generated by doxygen is written. Doxygen will use this 
   46.57 +# information to generate all constant output in the proper language. 
   46.58 +# The default language is English, other supported languages are: 
   46.59 +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
   46.60 +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
   46.61 +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
   46.62 +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
   46.63 +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
   46.64 +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
   46.65 +
   46.66 +OUTPUT_LANGUAGE        = English
   46.67 +
   46.68 +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
   46.69 +# include brief member descriptions after the members that are listed in 
   46.70 +# the file and class documentation (similar to JavaDoc). 
   46.71 +# Set to NO to disable this.
   46.72 +
   46.73 +BRIEF_MEMBER_DESC      = YES
   46.74 +
   46.75 +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
   46.76 +# the brief description of a member or function before the detailed description. 
   46.77 +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
   46.78 +# brief descriptions will be completely suppressed.
   46.79 +
   46.80 +REPEAT_BRIEF           = YES
   46.81 +
   46.82 +# This tag implements a quasi-intelligent brief description abbreviator 
   46.83 +# that is used to form the text in various listings. Each string 
   46.84 +# in this list, if found as the leading text of the brief description, will be 
   46.85 +# stripped from the text and the result after processing the whole list, is 
   46.86 +# used as the annotated text. Otherwise, the brief description is used as-is. 
   46.87 +# If left blank, the following values are used ("$name" is automatically 
   46.88 +# replaced with the name of the entity): "The $name class" "The $name widget" 
   46.89 +# "The $name file" "is" "provides" "specifies" "contains" 
   46.90 +# "represents" "a" "an" "the"
   46.91 +
   46.92 +ABBREVIATE_BRIEF       = "The $name class" \
   46.93 +                         "The $name widget" \
   46.94 +                         "The $name file" \
   46.95 +                         is \
   46.96 +                         provides \
   46.97 +                         specifies \
   46.98 +                         contains \
   46.99 +                         represents \
  46.100 +                         a \
  46.101 +                         an \
  46.102 +                         the
  46.103 +
  46.104 +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
  46.105 +# Doxygen will generate a detailed section even if there is only a brief 
  46.106 +# description.
  46.107 +
  46.108 +ALWAYS_DETAILED_SEC    = YES
  46.109 +
  46.110 +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
  46.111 +# inherited members of a class in the documentation of that class as if those 
  46.112 +# members were ordinary class members. Constructors, destructors and assignment 
  46.113 +# operators of the base classes will not be shown.
  46.114 +
  46.115 +INLINE_INHERITED_MEMB  = NO
  46.116 +
  46.117 +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
  46.118 +# path before files name in the file list and in the header files. If set 
  46.119 +# to NO the shortest path that makes the file name unique will be used.
  46.120 +
  46.121 +FULL_PATH_NAMES        = YES
  46.122 +
  46.123 +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
  46.124 +# can be used to strip a user-defined part of the path. Stripping is 
  46.125 +# only done if one of the specified strings matches the left-hand part of 
  46.126 +# the path. The tag can be used to show relative paths in the file list. 
  46.127 +# If left blank the directory from which doxygen is run is used as the 
  46.128 +# path to strip.
  46.129 +
  46.130 +STRIP_FROM_PATH        =
  46.131 +
  46.132 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
  46.133 +# the path mentioned in the documentation of a class, which tells 
  46.134 +# the reader which header file to include in order to use a class. 
  46.135 +# If left blank only the name of the header file containing the class 
  46.136 +# definition is used. Otherwise one should specify the include paths that 
  46.137 +# are normally passed to the compiler using the -I flag.
  46.138 +
  46.139 +STRIP_FROM_INC_PATH    = 
  46.140 +
  46.141 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
  46.142 +# (but less readable) file names. This can be useful is your file systems 
  46.143 +# doesn't support long names like on DOS, Mac, or CD-ROM.
  46.144 +
  46.145 +SHORT_NAMES            = NO
  46.146 +
  46.147 +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
  46.148 +# will interpret the first line (until the first dot) of a JavaDoc-style 
  46.149 +# comment as the brief description. If set to NO, the JavaDoc 
  46.150 +# comments will behave just like regular Qt-style comments 
  46.151 +# (thus requiring an explicit @brief command for a brief description.)
  46.152 +
  46.153 +JAVADOC_AUTOBRIEF      = NO
  46.154 +
  46.155 +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
  46.156 +# interpret the first line (until the first dot) of a Qt-style 
  46.157 +# comment as the brief description. If set to NO, the comments 
  46.158 +# will behave just like regular Qt-style comments (thus requiring 
  46.159 +# an explicit \brief command for a brief description.)
  46.160 +
  46.161 +QT_AUTOBRIEF           = NO
  46.162 +
  46.163 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
  46.164 +# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
  46.165 +# comments) as a brief description. This used to be the default behaviour. 
  46.166 +# The new default is to treat a multi-line C++ comment block as a detailed 
  46.167 +# description. Set this tag to YES if you prefer the old behaviour instead.
  46.168 +
  46.169 +MULTILINE_CPP_IS_BRIEF = NO
  46.170 +
  46.171 +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
  46.172 +# member inherits the documentation from any documented member that it 
  46.173 +# re-implements.
  46.174 +
  46.175 +INHERIT_DOCS           = YES
  46.176 +
  46.177 +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
  46.178 +# a new page for each member. If set to NO, the documentation of a member will 
  46.179 +# be part of the file/class/namespace that contains it.
  46.180 +
  46.181 +SEPARATE_MEMBER_PAGES  = NO
  46.182 +
  46.183 +# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
  46.184 +# Doxygen uses this value to replace tabs by spaces in code fragments.
  46.185 +
  46.186 +TAB_SIZE               = 8
  46.187 +
  46.188 +# This tag can be used to specify a number of aliases that acts 
  46.189 +# as commands in the documentation. An alias has the form "name=value". 
  46.190 +# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
  46.191 +# put the command \sideeffect (or @sideeffect) in the documentation, which 
  46.192 +# will result in a user-defined paragraph with heading "Side Effects:". 
  46.193 +# You can put \n's in the value part of an alias to insert newlines.
  46.194 +
  46.195 +ALIASES                = "defined=\"\def\"" \
  46.196 +                         "discussion=\"\par Discussion:\n\""
  46.197 +
  46.198 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
  46.199 +# sources only. Doxygen will then generate output that is more tailored for C. 
  46.200 +# For instance, some of the names that are used will be different. The list 
  46.201 +# of all members will be omitted, etc.
  46.202 +
  46.203 +OPTIMIZE_OUTPUT_FOR_C  = YES
  46.204 +
  46.205 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
  46.206 +# sources only. Doxygen will then generate output that is more tailored for 
  46.207 +# Java. For instance, namespaces will be presented as packages, qualified 
  46.208 +# scopes will look different, etc.
  46.209 +
  46.210 +OPTIMIZE_OUTPUT_JAVA   = NO
  46.211 +
  46.212 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
  46.213 +# sources only. Doxygen will then generate output that is more tailored for 
  46.214 +# Fortran.
  46.215 +
  46.216 +OPTIMIZE_FOR_FORTRAN   = NO
  46.217 +
  46.218 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
  46.219 +# sources. Doxygen will then generate output that is tailored for 
  46.220 +# VHDL.
  46.221 +
  46.222 +OPTIMIZE_OUTPUT_VHDL   = NO
  46.223 +
  46.224 +# Doxygen selects the parser to use depending on the extension of the files it parses. 
  46.225 +# With this tag you can assign which parser to use for a given extension. 
  46.226 +# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
  46.227 +# The format is ext=language, where ext is a file extension, and language is one of 
  46.228 +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
  46.229 +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
  46.230 +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
  46.231 +# use: inc=Fortran f=C. Note that for custom extensions you also need to set
  46.232 +# FILE_PATTERNS otherwise the files are not read by doxygen.
  46.233 +
  46.234 +EXTENSION_MAPPING      = 
  46.235 +
  46.236 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
  46.237 +# to include (a tag file for) the STL sources as input, then you should 
  46.238 +# set this tag to YES in order to let doxygen match functions declarations and 
  46.239 +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
  46.240 +# func(std::string) {}). This also make the inheritance and collaboration 
  46.241 +# diagrams that involve STL classes more complete and accurate.
  46.242 +
  46.243 +BUILTIN_STL_SUPPORT    = YES
  46.244 +
  46.245 +# If you use Microsoft's C++/CLI language, you should set this option to YES to 
  46.246 +# enable parsing support.
  46.247 +
  46.248 +CPP_CLI_SUPPORT        = NO
  46.249 +
  46.250 +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
  46.251 +# Doxygen will parse them like normal C++ but will assume all classes use public 
  46.252 +# instead of private inheritance when no explicit protection keyword is present.
  46.253 +
  46.254 +SIP_SUPPORT            = NO
  46.255 +
  46.256 +# For Microsoft's IDL there are propget and propput attributes to indicate getter 
  46.257 +# and setter methods for a property. Setting this option to YES (the default) 
  46.258 +# will make doxygen to replace the get and set methods by a property in the 
  46.259 +# documentation. This will only work if the methods are indeed getting or 
  46.260 +# setting a simple type. If this is not the case, or you want to show the 
  46.261 +# methods anyway, you should set this option to NO.
  46.262 +
  46.263 +IDL_PROPERTY_SUPPORT   = YES
  46.264 +
  46.265 +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
  46.266 +# tag is set to YES, then doxygen will reuse the documentation of the first 
  46.267 +# member in the group (if any) for the other members of the group. By default 
  46.268 +# all members of a group must be documented explicitly.
  46.269 +
  46.270 +DISTRIBUTE_GROUP_DOC   = NO
  46.271 +
  46.272 +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
  46.273 +# the same type (for instance a group of public functions) to be put as a 
  46.274 +# subgroup of that type (e.g. under the Public Functions section). Set it to 
  46.275 +# NO to prevent subgrouping. Alternatively, this can be done per class using 
  46.276 +# the \nosubgrouping command.
  46.277 +
  46.278 +SUBGROUPING            = YES
  46.279 +
  46.280 +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
  46.281 +# is documented as struct, union, or enum with the name of the typedef. So 
  46.282 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
  46.283 +# with name TypeT. When disabled the typedef will appear as a member of a file, 
  46.284 +# namespace, or class. And the struct will be named TypeS. This can typically 
  46.285 +# be useful for C code in case the coding convention dictates that all compound 
  46.286 +# types are typedef'ed and only the typedef is referenced, never the tag name.
  46.287 +
  46.288 +TYPEDEF_HIDES_STRUCT   = YES
  46.289 +
  46.290 +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
  46.291 +# determine which symbols to keep in memory and which to flush to disk. 
  46.292 +# When the cache is full, less often used symbols will be written to disk. 
  46.293 +# For small to medium size projects (<1000 input files) the default value is 
  46.294 +# probably good enough. For larger projects a too small cache size can cause 
  46.295 +# doxygen to be busy swapping symbols to and from disk most of the time 
  46.296 +# causing a significant performance penality. 
  46.297 +# If the system has enough physical memory increasing the cache will improve the 
  46.298 +# performance by keeping more symbols in memory. Note that the value works on 
  46.299 +# a logarithmic scale so increasing the size by one will rougly double the 
  46.300 +# memory usage. The cache size is given by this formula: 
  46.301 +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
  46.302 +# corresponding to a cache size of 2^16 = 65536 symbols
  46.303 +
  46.304 +SYMBOL_CACHE_SIZE      = 0
  46.305 +
  46.306 +#---------------------------------------------------------------------------
  46.307 +# Build related configuration options
  46.308 +#---------------------------------------------------------------------------
  46.309 +
  46.310 +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
  46.311 +# documentation are documented, even if no documentation was available. 
  46.312 +# Private class members and static file members will be hidden unless 
  46.313 +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  46.314 +
  46.315 +EXTRACT_ALL            = YES
  46.316 +
  46.317 +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
  46.318 +# will be included in the documentation.
  46.319 +
  46.320 +EXTRACT_PRIVATE        = YES
  46.321 +
  46.322 +# If the EXTRACT_STATIC tag is set to YES all static members of a file 
  46.323 +# will be included in the documentation.
  46.324 +
  46.325 +EXTRACT_STATIC         = YES
  46.326 +
  46.327 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
  46.328 +# defined locally in source files will be included in the documentation. 
  46.329 +# If set to NO only classes defined in header files are included.
  46.330 +
  46.331 +EXTRACT_LOCAL_CLASSES  = YES
  46.332 +
  46.333 +# This flag is only useful for Objective-C code. When set to YES local 
  46.334 +# methods, which are defined in the implementation section but not in 
  46.335 +# the interface are included in the documentation. 
  46.336 +# If set to NO (the default) only methods in the interface are included.
  46.337 +
  46.338 +EXTRACT_LOCAL_METHODS  = YES
  46.339 +
  46.340 +# If this flag is set to YES, the members of anonymous namespaces will be 
  46.341 +# extracted and appear in the documentation as a namespace called 
  46.342 +# 'anonymous_namespace{file}', where file will be replaced with the base 
  46.343 +# name of the file that contains the anonymous namespace. By default 
  46.344 +# anonymous namespace are hidden.
  46.345 +
  46.346 +EXTRACT_ANON_NSPACES   = YES
  46.347 +
  46.348 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
  46.349 +# undocumented members of documented classes, files or namespaces. 
  46.350 +# If set to NO (the default) these members will be included in the 
  46.351 +# various overviews, but no documentation section is generated. 
  46.352 +# This option has no effect if EXTRACT_ALL is enabled.
  46.353 +
  46.354 +HIDE_UNDOC_MEMBERS     = NO
  46.355 +
  46.356 +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
  46.357 +# undocumented classes that are normally visible in the class hierarchy. 
  46.358 +# If set to NO (the default) these classes will be included in the various 
  46.359 +# overviews. This option has no effect if EXTRACT_ALL is enabled.
  46.360 +
  46.361 +HIDE_UNDOC_CLASSES     = NO
  46.362 +
  46.363 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
  46.364 +# friend (class|struct|union) declarations. 
  46.365 +# If set to NO (the default) these declarations will be included in the 
  46.366 +# documentation.
  46.367 +
  46.368 +HIDE_FRIEND_COMPOUNDS  = NO
  46.369 +
  46.370 +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
  46.371 +# documentation blocks found inside the body of a function. 
  46.372 +# If set to NO (the default) these blocks will be appended to the 
  46.373 +# function's detailed documentation block.
  46.374 +
  46.375 +HIDE_IN_BODY_DOCS      = NO
  46.376 +
  46.377 +# The INTERNAL_DOCS tag determines if documentation 
  46.378 +# that is typed after a \internal command is included. If the tag is set 
  46.379 +# to NO (the default) then the documentation will be excluded. 
  46.380 +# Set it to YES to include the internal documentation.
  46.381 +
  46.382 +INTERNAL_DOCS          = YES
  46.383 +
  46.384 +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
  46.385 +# file names in lower-case letters. If set to YES upper-case letters are also 
  46.386 +# allowed. This is useful if you have classes or files whose names only differ 
  46.387 +# in case and if your file system supports case sensitive file names. Windows 
  46.388 +# and Mac users are advised to set this option to NO.
  46.389 +
  46.390 +CASE_SENSE_NAMES       = NO
  46.391 +
  46.392 +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
  46.393 +# will show members with their full class and namespace scopes in the 
  46.394 +# documentation. If set to YES the scope will be hidden.
  46.395 +
  46.396 +HIDE_SCOPE_NAMES       = NO
  46.397 +
  46.398 +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
  46.399 +# will put a list of the files that are included by a file in the documentation 
  46.400 +# of that file.
  46.401 +
  46.402 +SHOW_INCLUDE_FILES     = YES
  46.403 +
  46.404 +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
  46.405 +# is inserted in the documentation for inline members.
  46.406 +
  46.407 +INLINE_INFO            = YES
  46.408 +
  46.409 +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
  46.410 +# will sort the (detailed) documentation of file and class members 
  46.411 +# alphabetically by member name. If set to NO the members will appear in 
  46.412 +# declaration order.
  46.413 +
  46.414 +SORT_MEMBER_DOCS       = YES
  46.415 +
  46.416 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
  46.417 +# brief documentation of file, namespace and class members alphabetically 
  46.418 +# by member name. If set to NO (the default) the members will appear in 
  46.419 +# declaration order.
  46.420 +
  46.421 +SORT_BRIEF_DOCS        = NO
  46.422 +
  46.423 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
  46.424 +# hierarchy of group names into alphabetical order. If set to NO (the default) 
  46.425 +# the group names will appear in their defined order.
  46.426 +
  46.427 +SORT_GROUP_NAMES       = NO
  46.428 +
  46.429 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
  46.430 +# sorted by fully-qualified names, including namespaces. If set to 
  46.431 +# NO (the default), the class list will be sorted only by class name, 
  46.432 +# not including the namespace part. 
  46.433 +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
  46.434 +# Note: This option applies only to the class list, not to the 
  46.435 +# alphabetical list.
  46.436 +
  46.437 +SORT_BY_SCOPE_NAME     = NO
  46.438 +
  46.439 +# The GENERATE_TODOLIST tag can be used to enable (YES) or 
  46.440 +# disable (NO) the todo list. This list is created by putting \todo 
  46.441 +# commands in the documentation.
  46.442 +
  46.443 +GENERATE_TODOLIST      = YES
  46.444 +
  46.445 +# The GENERATE_TESTLIST tag can be used to enable (YES) or 
  46.446 +# disable (NO) the test list. This list is created by putting \test 
  46.447 +# commands in the documentation.
  46.448 +
  46.449 +GENERATE_TESTLIST      = YES
  46.450 +
  46.451 +# The GENERATE_BUGLIST tag can be used to enable (YES) or 
  46.452 +# disable (NO) the bug list. This list is created by putting \bug 
  46.453 +# commands in the documentation.
  46.454 +
  46.455 +GENERATE_BUGLIST       = YES
  46.456 +
  46.457 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
  46.458 +# disable (NO) the deprecated list. This list is created by putting 
  46.459 +# \deprecated commands in the documentation.
  46.460 +
  46.461 +GENERATE_DEPRECATEDLIST= YES
  46.462 +
  46.463 +# The ENABLED_SECTIONS tag can be used to enable conditional 
  46.464 +# documentation sections, marked by \if sectionname ... \endif.
  46.465 +
  46.466 +ENABLED_SECTIONS       = 
  46.467 +
  46.468 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
  46.469 +# the initial value of a variable or define consists of for it to appear in 
  46.470 +# the documentation. If the initializer consists of more lines than specified 
  46.471 +# here it will be hidden. Use a value of 0 to hide initializers completely. 
  46.472 +# The appearance of the initializer of individual variables and defines in the 
  46.473 +# documentation can be controlled using \showinitializer or \hideinitializer 
  46.474 +# command in the documentation regardless of this setting.
  46.475 +
  46.476 +MAX_INITIALIZER_LINES  = 30
  46.477 +
  46.478 +# If the sources in your project are distributed over multiple directories 
  46.479 +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
  46.480 +# in the documentation. The default is NO.
  46.481 +
  46.482 +SHOW_DIRECTORIES       = YES
  46.483 +
  46.484 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
  46.485 +# This will remove the Files entry from the Quick Index and from the 
  46.486 +# Folder Tree View (if specified). The default is YES.
  46.487 +
  46.488 +SHOW_FILES             = YES
  46.489 +
  46.490 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
  46.491 +# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
  46.492 +# and from the Folder Tree View (if specified). The default is YES.
  46.493 +
  46.494 +SHOW_NAMESPACES        = YES
  46.495 +
  46.496 +# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
  46.497 +# doxygen should invoke to get the current version for each file (typically from 
  46.498 +# the version control system). Doxygen will invoke the program by executing (via 
  46.499 +# popen()) the command <command> <input-file>, where <command> is the value of 
  46.500 +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
  46.501 +# provided by doxygen. Whatever the program writes to standard output 
  46.502 +# is used as the file version. See the manual for examples.
  46.503 +
  46.504 +FILE_VERSION_FILTER    = 
  46.505 +
  46.506 +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
  46.507 +# doxygen. The layout file controls the global structure of the generated output files 
  46.508 +# in an output format independent way. The create the layout file that represents 
  46.509 +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
  46.510 +# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
  46.511 +# of the layout file.
  46.512 +
  46.513 +LAYOUT_FILE            = 
  46.514 +
  46.515 +#---------------------------------------------------------------------------
  46.516 +# configuration options related to warning and progress messages
  46.517 +#---------------------------------------------------------------------------
  46.518 +
  46.519 +# The QUIET tag can be used to turn on/off the messages that are generated 
  46.520 +# by doxygen. Possible values are YES and NO. If left blank NO is used.
  46.521 +
  46.522 +QUIET                  = NO
  46.523 +
  46.524 +# The WARNINGS tag can be used to turn on/off the warning messages that are 
  46.525 +# generated by doxygen. Possible values are YES and NO. If left blank 
  46.526 +# NO is used.
  46.527 +
  46.528 +WARNINGS               = YES
  46.529 +
  46.530 +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
  46.531 +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
  46.532 +# automatically be disabled.
  46.533 +
  46.534 +WARN_IF_UNDOCUMENTED   = YES
  46.535 +
  46.536 +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
  46.537 +# potential errors in the documentation, such as not documenting some 
  46.538 +# parameters in a documented function, or documenting parameters that 
  46.539 +# don't exist or using markup commands wrongly.
  46.540 +
  46.541 +WARN_IF_DOC_ERROR      = YES
  46.542 +
  46.543 +# This WARN_NO_PARAMDOC option can be abled to get warnings for 
  46.544 +# functions that are documented, but have no documentation for their parameters 
  46.545 +# or return value. If set to NO (the default) doxygen will only warn about 
  46.546 +# wrong or incomplete parameter documentation, but not about the absence of 
  46.547 +# documentation.
  46.548 +
  46.549 +WARN_NO_PARAMDOC       = YES
  46.550 +
  46.551 +# The WARN_FORMAT tag determines the format of the warning messages that 
  46.552 +# doxygen can produce. The string should contain the $file, $line, and $text 
  46.553 +# tags, which will be replaced by the file and line number from which the 
  46.554 +# warning originated and the warning text. Optionally the format may contain 
  46.555 +# $version, which will be replaced by the version of the file (if it could 
  46.556 +# be obtained via FILE_VERSION_FILTER)
  46.557 +
  46.558 +WARN_FORMAT            = "$file:$line: $text"
  46.559 +
  46.560 +# The WARN_LOGFILE tag can be used to specify a file to which warning 
  46.561 +# and error messages should be written. If left blank the output is written 
  46.562 +# to stderr.
  46.563 +
  46.564 +WARN_LOGFILE           = ./doxygen_warn.txt
  46.565 +
  46.566 +#---------------------------------------------------------------------------
  46.567 +# configuration options related to the input files
  46.568 +#---------------------------------------------------------------------------
  46.569 +
  46.570 +# The INPUT tag can be used to specify the files and/or directories that contain 
  46.571 +# documented source files. You may enter file names like "myfile.cpp" or 
  46.572 +# directories like "/usr/src/myproject". Separate the files or directories 
  46.573 +# with spaces.
  46.574 +
  46.575 +INPUT                  = . ../include
  46.576 +
  46.577 +# This tag can be used to specify the character encoding of the source files 
  46.578 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
  46.579 +# also the default input encoding. Doxygen uses libiconv (or the iconv built 
  46.580 +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
  46.581 +# the list of possible encodings.
  46.582 +
  46.583 +INPUT_ENCODING         = UTF-8
  46.584 +
  46.585 +# If the value of the INPUT tag contains directories, you can use the 
  46.586 +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  46.587 +# and *.h) to filter out the source-files in the directories. If left 
  46.588 +# blank the following patterns are tested: 
  46.589 +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
  46.590 +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  46.591 +
  46.592 +FILE_PATTERNS          = *.c \
  46.593 +                         *.cc \
  46.594 +                         *.cxx \
  46.595 +                         *.cpp \
  46.596 +                         *.c++ \
  46.597 +                         *.d \
  46.598 +                         *.java \
  46.599 +                         *.ii \
  46.600 +                         *.ixx \
  46.601 +                         *.ipp \
  46.602 +                         *.i++ \
  46.603 +                         *.inl \
  46.604 +                         *.h \
  46.605 +                         *.hh \
  46.606 +                         *.hxx \
  46.607 +                         *.hpp \
  46.608 +                         *.h++ \
  46.609 +                         *.idl \
  46.610 +                         *.odl \
  46.611 +                         *.cs \
  46.612 +                         *.php \
  46.613 +                         *.php3 \
  46.614 +                         *.inc \
  46.615 +                         *.m \
  46.616 +                         *.mm \
  46.617 +                         *.dox \
  46.618 +                         *.py \
  46.619 +                         *.f90 \
  46.620 +                         *.f \
  46.621 +                         *.vhd \
  46.622 +                         *.vhdl \
  46.623 +                         *.h.in \
  46.624 +                         *.h.default \
  46.625 +                         *.md
  46.626 +
  46.627 +# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
  46.628 +# should be searched for input files as well. Possible values are YES and NO. 
  46.629 +# If left blank NO is used.
  46.630 +
  46.631 +RECURSIVE              = YES
  46.632 +
  46.633 +# The EXCLUDE tag can be used to specify files and/or directories that should 
  46.634 +# excluded from the INPUT source files. This way you can easily exclude a 
  46.635 +# subdirectory from a directory tree whose root is specified with the INPUT tag.
  46.636 +
  46.637 +EXCLUDE                = ../include/SDL_opengles2_gl2ext.h \
  46.638 +                         ../include/SDL_opengles2_gl2platform.h \
  46.639 +                         ../include/SDL_opengles2_khrplatform.h \
  46.640 +                         ../include/SDL_opengl_glext.h \
  46.641 +                         ../include/SDL_opengles2_gl2.h \
  46.642 +                         ../include/SDL_opengles2.h \
  46.643 +                         ../include/SDL_opengles.h \
  46.644 +                         ../include/SDL_opengl.h \
  46.645 +
  46.646 +
  46.647 +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
  46.648 +# directories that are symbolic links (a Unix filesystem feature) are excluded 
  46.649 +# from the input.
  46.650 +
  46.651 +EXCLUDE_SYMLINKS       = NO
  46.652 +
  46.653 +# If the value of the INPUT tag contains directories, you can use the 
  46.654 +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
  46.655 +# certain files from those directories. Note that the wildcards are matched 
  46.656 +# against the file with absolute path, so to exclude all test directories 
  46.657 +# for example use the pattern */test/*
  46.658 +
  46.659 +EXCLUDE_PATTERNS       =
  46.660 +
  46.661 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
  46.662 +# (namespaces, classes, functions, etc.) that should be excluded from the 
  46.663 +# output. The symbol name can be a fully qualified name, a word, or if the 
  46.664 +# wildcard * is used, a substring. Examples: ANamespace, AClass, 
  46.665 +# AClass::ANamespace, ANamespace::*Test
  46.666 +
  46.667 +EXCLUDE_SYMBOLS        = 
  46.668 +
  46.669 +# The EXAMPLE_PATH tag can be used to specify one or more files or 
  46.670 +# directories that contain example code fragments that are included (see 
  46.671 +# the \include command).
  46.672 +
  46.673 +EXAMPLE_PATH           =
  46.674 +
  46.675 +# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
  46.676 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
  46.677 +# and *.h) to filter out the source-files in the directories. If left 
  46.678 +# blank all files are included.
  46.679 +
  46.680 +EXAMPLE_PATTERNS       = *
  46.681 +
  46.682 +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
  46.683 +# searched for input files to be used with the \include or \dontinclude 
  46.684 +# commands irrespective of the value of the RECURSIVE tag. 
  46.685 +# Possible values are YES and NO. If left blank NO is used.
  46.686 +
  46.687 +EXAMPLE_RECURSIVE      = YES
  46.688 +
  46.689 +# The IMAGE_PATH tag can be used to specify one or more files or 
  46.690 +# directories that contain image that are included in the documentation (see 
  46.691 +# the \image command).
  46.692 +
  46.693 +IMAGE_PATH             = 
  46.694 +
  46.695 +# The INPUT_FILTER tag can be used to specify a program that doxygen should 
  46.696 +# invoke to filter for each input file. Doxygen will invoke the filter program 
  46.697 +# by executing (via popen()) the command <filter> <input-file>, where <filter> 
  46.698 +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
  46.699 +# input file. Doxygen will then use the output that the filter program writes 
  46.700 +# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  46.701 +# ignored.
  46.702 +
  46.703 +INPUT_FILTER           = 
  46.704 +
  46.705 +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
  46.706 +# basis.  Doxygen will compare the file name with each pattern and apply the 
  46.707 +# filter if there is a match.  The filters are a list of the form: 
  46.708 +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
  46.709 +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
  46.710 +# is applied to all files.
  46.711 +
  46.712 +FILTER_PATTERNS        = 
  46.713 +
  46.714 +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
  46.715 +# INPUT_FILTER) will be used to filter the input files when producing source 
  46.716 +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  46.717 +
  46.718 +FILTER_SOURCE_FILES    = NO
  46.719 +
  46.720 +#---------------------------------------------------------------------------
  46.721 +# configuration options related to source browsing
  46.722 +#---------------------------------------------------------------------------
  46.723 +
  46.724 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
  46.725 +# be generated. Documented entities will be cross-referenced with these sources. 
  46.726 +# Note: To get rid of all source code in the generated output, make sure also 
  46.727 +# VERBATIM_HEADERS is set to NO.
  46.728 +
  46.729 +SOURCE_BROWSER         = YES
  46.730 +
  46.731 +# Setting the INLINE_SOURCES tag to YES will include the body 
  46.732 +# of functions and classes directly in the documentation.
  46.733 +
  46.734 +INLINE_SOURCES         = YES
  46.735 +
  46.736 +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
  46.737 +# doxygen to hide any special comment blocks from generated source code 
  46.738 +# fragments. Normal C and C++ comments will always remain visible.
  46.739 +
  46.740 +STRIP_CODE_COMMENTS    = NO
  46.741 +
  46.742 +# If the REFERENCED_BY_RELATION tag is set to YES 
  46.743 +# then for each documented function all documented 
  46.744 +# functions referencing it will be listed.
  46.745 +
  46.746 +REFERENCED_BY_RELATION = YES
  46.747 +
  46.748 +# If the REFERENCES_RELATION tag is set to YES 
  46.749 +# then for each documented function all documented entities 
  46.750 +# called/used by that function will be listed.
  46.751 +
  46.752 +REFERENCES_RELATION    = YES
  46.753 +
  46.754 +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
  46.755 +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
  46.756 +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
  46.757 +# link to the source code.  Otherwise they will link to the documentation.
  46.758 +
  46.759 +REFERENCES_LINK_SOURCE = YES
  46.760 +
  46.761 +# If the USE_HTAGS tag is set to YES then the references to source code 
  46.762 +# will point to the HTML generated by the htags(1) tool instead of doxygen 
  46.763 +# built-in source browser. The htags tool is part of GNU's global source 
  46.764 +# tagging system (see http://www.gnu.org/software/global/global.html). You 
  46.765 +# will need version 4.8.6 or higher.
  46.766 +
  46.767 +USE_HTAGS              = NO
  46.768 +
  46.769 +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
  46.770 +# will generate a verbatim copy of the header file for each class for 
  46.771 +# which an include is specified. Set to NO to disable this.
  46.772 +
  46.773 +VERBATIM_HEADERS       = YES
  46.774 +
  46.775 +#---------------------------------------------------------------------------
  46.776 +# configuration options related to the alphabetical class index
  46.777 +#---------------------------------------------------------------------------
  46.778 +
  46.779 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
  46.780 +# of all compounds will be generated. Enable this if the project 
  46.781 +# contains a lot of classes, structs, unions or interfaces.
  46.782 +
  46.783 +ALPHABETICAL_INDEX     = YES
  46.784 +
  46.785 +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
  46.786 +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
  46.787 +# in which this list will be split (can be a number in the range [1..20])
  46.788 +
  46.789 +COLS_IN_ALPHA_INDEX    = 5
  46.790 +
  46.791 +# In case all classes in a project start with a common prefix, all 
  46.792 +# classes will be put under the same header in the alphabetical index. 
  46.793 +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
  46.794 +# should be ignored while generating the index headers.
  46.795 +
  46.796 +IGNORE_PREFIX          = SDL_ \
  46.797 +                         SDL
  46.798 +
  46.799 +#---------------------------------------------------------------------------
  46.800 +# configuration options related to the HTML output
  46.801 +#---------------------------------------------------------------------------
  46.802 +
  46.803 +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
  46.804 +# generate HTML output.
  46.805 +
  46.806 +GENERATE_HTML          = YES
  46.807 +
  46.808 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
  46.809 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
  46.810 +# put in front of it. If left blank `html' will be used as the default path.
  46.811 +
  46.812 +HTML_OUTPUT            = html
  46.813 +
  46.814 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
  46.815 +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
  46.816 +# doxygen will generate files with .html extension.
  46.817 +
  46.818 +HTML_FILE_EXTENSION    = .html
  46.819 +
  46.820 +# The HTML_HEADER tag can be used to specify a personal HTML header for 
  46.821 +# each generated HTML page. If it is left blank doxygen will generate a 
  46.822 +# standard header.
  46.823 +
  46.824 +HTML_HEADER            = 
  46.825 +
  46.826 +# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  46.827 +# each generated HTML page. If it is left blank doxygen will generate a 
  46.828 +# standard footer.
  46.829 +
  46.830 +HTML_FOOTER            = 
  46.831 +
  46.832 +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  46.833 +# style sheet that is used by each HTML page. It can be used to 
  46.834 +# fine-tune the look of the HTML output. If the tag is left blank doxygen 
  46.835 +# will generate a default style sheet. Note that doxygen will try to copy 
  46.836 +# the style sheet file to the HTML output directory, so don't put your own 
  46.837 +# stylesheet in the HTML output directory as well, or it will be erased!
  46.838 +
  46.839 +HTML_STYLESHEET        = 
  46.840 +
  46.841 +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
  46.842 +# files or namespaces will be aligned in HTML using tables. If set to 
  46.843 +# NO a bullet list will be used.
  46.844 +
  46.845 +HTML_ALIGN_MEMBERS     = YES
  46.846 +
  46.847 +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
  46.848 +# documentation will contain sections that can be hidden and shown after the 
  46.849 +# page has loaded. For this to work a browser that supports 
  46.850 +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
  46.851 +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
  46.852 +
  46.853 +HTML_DYNAMIC_SECTIONS  = YES
  46.854 +
  46.855 +# If the GENERATE_DOCSET tag is set to YES, additional index files 
  46.856 +# will be generated that can be used as input for Apple's Xcode 3 
  46.857 +# integrated development environment, introduced with OSX 10.5 (Leopard). 
  46.858 +# To create a documentation set, doxygen will generate a Makefile in the 
  46.859 +# HTML output directory. Running make will produce the docset in that 
  46.860 +# directory and running "make install" will install the docset in 
  46.861 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
  46.862 +# it at startup. 
  46.863 +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
  46.864 +
  46.865 +GENERATE_DOCSET        = NO
  46.866 +
  46.867 +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
  46.868 +# feed. A documentation feed provides an umbrella under which multiple 
  46.869 +# documentation sets from a single provider (such as a company or product suite) 
  46.870 +# can be grouped.
  46.871 +
  46.872 +DOCSET_FEEDNAME        = "SDL 2.0 Doxygen"
  46.873 +
  46.874 +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
  46.875 +# should uniquely identify the documentation set bundle. This should be a 
  46.876 +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
  46.877 +# will append .docset to the name.
  46.878 +
  46.879 +DOCSET_BUNDLE_ID       = org.libsdl.sdl20
  46.880 +
  46.881 +# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
  46.882 +# will be generated that can be used as input for tools like the 
  46.883 +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
  46.884 +# of the generated HTML documentation.
  46.885 +
  46.886 +GENERATE_HTMLHELP      = NO
  46.887 +
  46.888 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
  46.889 +# be used to specify the file name of the resulting .chm file. You 
  46.890 +# can add a path in front of the file if the result should not be 
  46.891 +# written to the html output directory.
  46.892 +
  46.893 +CHM_FILE               = ./sdl20.chm
  46.894 +
  46.895 +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
  46.896 +# be used to specify the location (absolute path including file name) of 
  46.897 +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
  46.898 +# the HTML help compiler on the generated index.hhp.
  46.899 +
  46.900 +HHC_LOCATION           = 
  46.901 +
  46.902 +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
  46.903 +# controls if a separate .chi index file is generated (YES) or that 
  46.904 +# it should be included in the master .chm file (NO).
  46.905 +
  46.906 +GENERATE_CHI           = NO
  46.907 +
  46.908 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
  46.909 +# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
  46.910 +# content.
  46.911 +
  46.912 +CHM_INDEX_ENCODING     = 
  46.913 +
  46.914 +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
  46.915 +# controls whether a binary table of contents is generated (YES) or a 
  46.916 +# normal table of contents (NO) in the .chm file.
  46.917 +
  46.918 +BINARY_TOC             = NO
  46.919 +
  46.920 +# The TOC_EXPAND flag can be set to YES to add extra items for group members 
  46.921 +# to the contents of the HTML help documentation and to the tree view.
  46.922 +
  46.923 +TOC_EXPAND             = YES
  46.924 +
  46.925 +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
  46.926 +# are set, an additional index file will be generated that can be used as input for 
  46.927 +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
  46.928 +# HTML documentation.
  46.929 +
  46.930 +GENERATE_QHP           = NO
  46.931 +
  46.932 +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
  46.933 +# be used to specify the file name of the resulting .qch file. 
  46.934 +# The path specified is relative to the HTML output folder.
  46.935 +
  46.936 +QCH_FILE               = 
  46.937 +
  46.938 +# The QHP_NAMESPACE tag specifies the namespace to use when generating 
  46.939 +# Qt Help Project output. For more information please see 
  46.940 +# http://doc.trolltech.com/qthelpproject.html#namespace
  46.941 +
  46.942 +QHP_NAMESPACE          = 
  46.943 +
  46.944 +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
  46.945 +# Qt Help Project output. For more information please see 
  46.946 +# http://doc.trolltech.com/qthelpproject.html#virtual-folders
  46.947 +
  46.948 +QHP_VIRTUAL_FOLDER     = doc
  46.949 +
  46.950 +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
  46.951 +# For more information please see 
  46.952 +# http://doc.trolltech.com/qthelpproject.html#custom-filters
  46.953 +
  46.954 +QHP_CUST_FILTER_NAME   = 
  46.955 +
  46.956 +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
  46.957 +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
  46.958 +
  46.959 +QHP_CUST_FILTER_ATTRS  = 
  46.960 +
  46.961 +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
  46.962 +# filter section matches. 
  46.963 +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
  46.964 +
  46.965 +QHP_SECT_FILTER_ATTRS  = 
  46.966 +
  46.967 +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
  46.968 +# be used to specify the location of Qt's qhelpgenerator. 
  46.969 +# If non-empty doxygen will try to run qhelpgenerator on the generated 
  46.970 +# .qhp file.
  46.971 +
  46.972 +QHG_LOCATION           = 
  46.973 +
  46.974 +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
  46.975 +# top of each HTML page. The value NO (the default) enables the index and 
  46.976 +# the value YES disables it.
  46.977 +
  46.978 +DISABLE_INDEX          = NO
  46.979 +
  46.980 +# This tag can be used to set the number of enum values (range [1..20]) 
  46.981 +# that doxygen will group on one line in the generated HTML documentation.
  46.982 +
  46.983 +ENUM_VALUES_PER_LINE   = 1
  46.984 +
  46.985 +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
  46.986 +# structure should be generated to display hierarchical information. 
  46.987 +# If the tag value is set to FRAME, a side panel will be generated 
  46.988 +# containing a tree-like index structure (just like the one that 
  46.989 +# is generated for HTML Help). For this to work a browser that supports 
  46.990 +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
  46.991 +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
  46.992 +# probably better off using the HTML help feature. Other possible values 
  46.993 +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
  46.994 +# and Class Hierarchy pages using a tree view instead of an ordered list; 
  46.995 +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
  46.996 +# disables this behavior completely. For backwards compatibility with previous 
  46.997 +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
  46.998 +# respectively.
  46.999 +
 46.1000 +GENERATE_TREEVIEW      = ALL
 46.1001 +
 46.1002 +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
 46.1003 +# used to set the initial width (in pixels) of the frame in which the tree 
 46.1004 +# is shown.
 46.1005 +
 46.1006 +TREEVIEW_WIDTH         = 250
 46.1007 +
 46.1008 +# Use this tag to change the font size of Latex formulas included 
 46.1009 +# as images in the HTML documentation. The default is 10. Note that 
 46.1010 +# when you change the font size after a successful doxygen run you need 
 46.1011 +# to manually remove any form_*.png images from the HTML output directory 
 46.1012 +# to force them to be regenerated.
 46.1013 +
 46.1014 +FORMULA_FONTSIZE       = 10
 46.1015 +
 46.1016 +#---------------------------------------------------------------------------
 46.1017 +# configuration options related to the LaTeX output
 46.1018 +#---------------------------------------------------------------------------
 46.1019 +
 46.1020 +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
 46.1021 +# generate Latex output.
 46.1022 +
 46.1023 +GENERATE_LATEX         = NO
 46.1024 +
 46.1025 +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
 46.1026 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 46.1027 +# put in front of it. If left blank `latex' will be used as the default path.
 46.1028 +
 46.1029 +LATEX_OUTPUT           = latex
 46.1030 +
 46.1031 +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
 46.1032 +# invoked. If left blank `latex' will be used as the default command name.
 46.1033 +
 46.1034 +LATEX_CMD_NAME         = latex
 46.1035 +
 46.1036 +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
 46.1037 +# generate index for LaTeX. If left blank `makeindex' will be used as the 
 46.1038 +# default command name.
 46.1039 +
 46.1040 +MAKEINDEX_CMD_NAME     = makeindex
 46.1041 +
 46.1042 +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
 46.1043 +# LaTeX documents. This may be useful for small projects and may help to 
 46.1044 +# save some trees in general.
 46.1045 +
 46.1046 +COMPACT_LATEX          = NO
 46.1047 +
 46.1048 +# The PAPER_TYPE tag can be used to set the paper type that is used 
 46.1049 +# by the printer. Possible values are: a4, a4wide, letter, legal and 
 46.1050 +# executive. If left blank a4wide will be used.
 46.1051 +
 46.1052 +PAPER_TYPE             = a4wide
 46.1053 +
 46.1054 +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
 46.1055 +# packages that should be included in the LaTeX output.
 46.1056 +
 46.1057 +EXTRA_PACKAGES         = 
 46.1058 +
 46.1059 +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
 46.1060 +# the generated latex document. The header should contain everything until 
 46.1061 +# the first chapter. If it is left blank doxygen will generate a 
 46.1062 +# standard header. Notice: only use this tag if you know what you are doing!
 46.1063 +
 46.1064 +LATEX_HEADER           = 
 46.1065 +
 46.1066 +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
 46.1067 +# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
 46.1068 +# contain links (just like the HTML output) instead of page references 
 46.1069 +# This makes the output suitable for online browsing using a pdf viewer.
 46.1070 +
 46.1071 +PDF_HYPERLINKS         = YES
 46.1072 +
 46.1073 +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
 46.1074 +# plain latex in the generated Makefile. Set this option to YES to get a 
 46.1075 +# higher quality PDF documentation.
 46.1076 +
 46.1077 +USE_PDFLATEX           = YES
 46.1078 +
 46.1079 +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
 46.1080 +# command to the generated LaTeX files. This will instruct LaTeX to keep 
 46.1081 +# running if errors occur, instead of asking the user for help. 
 46.1082 +# This option is also used when generating formulas in HTML.
 46.1083 +
 46.1084 +LATEX_BATCHMODE        = NO
 46.1085 +
 46.1086 +# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
 46.1087 +# include the index chapters (such as File Index, Compound Index, etc.) 
 46.1088 +# in the output.
 46.1089 +
 46.1090 +LATEX_HIDE_INDICES     = NO
 46.1091 +
 46.1092 +# If LATEX_SOURCE_CODE is set to YES then doxygen will include
 46.1093 +# source code with syntax highlighting in the LaTeX output.
 46.1094 +# Note that which sources are shown also depends on other settings
 46.1095 +# such as SOURCE_BROWSER.
 46.1096 +
 46.1097 +LATEX_SOURCE_CODE      = NO
 46.1098 +
 46.1099 +#---------------------------------------------------------------------------
 46.1100 +# configuration options related to the RTF output
 46.1101 +#---------------------------------------------------------------------------
 46.1102 +
 46.1103 +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
 46.1104 +# The RTF output is optimized for Word 97 and may not look very pretty with 
 46.1105 +# other RTF readers or editors.
 46.1106 +
 46.1107 +GENERATE_RTF           = NO
 46.1108 +
 46.1109 +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
 46.1110 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 46.1111 +# put in front of it. If left blank `rtf' will be used as the default path.
 46.1112 +
 46.1113 +RTF_OUTPUT             = rtf
 46.1114 +
 46.1115 +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
 46.1116 +# RTF documents. This may be useful for small projects and may help to 
 46.1117 +# save some trees in general.
 46.1118 +
 46.1119 +COMPACT_RTF            = NO
 46.1120 +
 46.1121 +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
 46.1122 +# will contain hyperlink fields. The RTF file will 
 46.1123 +# contain links (just like the HTML output) instead of page references. 
 46.1124 +# This makes the output suitable for online browsing using WORD or other 
 46.1125 +# programs which support those fields. 
 46.1126 +# Note: wordpad (write) and others do not support links.
 46.1127 +
 46.1128 +RTF_HYPERLINKS         = NO
 46.1129 +
 46.1130 +# Load stylesheet definitions from file. Syntax is similar to doxygen's 
 46.1131 +# config file, i.e. a series of assignments. You only have to provide 
 46.1132 +# replacements, missing definitions are set to their default value.
 46.1133 +
 46.1134 +RTF_STYLESHEET_FILE    = 
 46.1135 +
 46.1136 +# Set optional variables used in the generation of an rtf document. 
 46.1137 +# Syntax is similar to doxygen's config file.
 46.1138 +
 46.1139 +RTF_EXTENSIONS_FILE    = 
 46.1140 +
 46.1141 +#---------------------------------------------------------------------------
 46.1142 +# configuration options related to the man page output
 46.1143 +#---------------------------------------------------------------------------
 46.1144 +
 46.1145 +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
 46.1146 +# generate man pages
 46.1147 +
 46.1148 +GENERATE_MAN           = NO
 46.1149 +
 46.1150 +# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
 46.1151 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 46.1152 +# put in front of it. If left blank `man' will be used as the default path.
 46.1153 +
 46.1154 +MAN_OUTPUT             = man
 46.1155 +
 46.1156 +# The MAN_EXTENSION tag determines the extension that is added to 
 46.1157 +# the generated man pages (default is the subroutine's section .3)
 46.1158 +
 46.1159 +MAN_EXTENSION          = .3
 46.1160 +
 46.1161 +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
 46.1162 +# then it will generate one additional man file for each entity 
 46.1163 +# documented in the real man page(s). These additional files 
 46.1164 +# only source the real man page, but without them the man command 
 46.1165 +# would be unable to find the correct page. The default is NO.
 46.1166 +
 46.1167 +MAN_LINKS              = NO
 46.1168 +
 46.1169 +#---------------------------------------------------------------------------
 46.1170 +# configuration options related to the XML output
 46.1171 +#---------------------------------------------------------------------------
 46.1172 +
 46.1173 +# If the GENERATE_XML tag is set to YES Doxygen will 
 46.1174 +# generate an XML file that captures the structure of 
 46.1175 +# the code including all documentation.
 46.1176 +
 46.1177 +GENERATE_XML           = NO
 46.1178 +
 46.1179 +# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
 46.1180 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 46.1181 +# put in front of it. If left blank `xml' will be used as the default path.
 46.1182 +
 46.1183 +XML_OUTPUT             = xml
 46.1184 +
 46.1185 +# The XML_SCHEMA tag can be used to specify an XML schema, 
 46.1186 +# which can be used by a validating XML parser to check the 
 46.1187 +# syntax of the XML files.
 46.1188 +
 46.1189 +XML_SCHEMA             = 
 46.1190 +
 46.1191 +# The XML_DTD tag can be used to specify an XML DTD, 
 46.1192 +# which can be used by a validating XML parser to check the 
 46.1193 +# syntax of the XML files.
 46.1194 +
 46.1195 +XML_DTD                = 
 46.1196 +
 46.1197 +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
 46.1198 +# dump the program listings (including syntax highlighting 
 46.1199 +# and cross-referencing information) to the XML output. Note that 
 46.1200 +# enabling this will significantly increase the size of the XML output.
 46.1201 +
 46.1202 +XML_PROGRAMLISTING     = YES
 46.1203 +
 46.1204 +#---------------------------------------------------------------------------
 46.1205 +# configuration options for the AutoGen Definitions output
 46.1206 +#---------------------------------------------------------------------------
 46.1207 +
 46.1208 +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
 46.1209 +# generate an AutoGen Definitions (see autogen.sf.net) file 
 46.1210 +# that captures the structure of the code including all 
 46.1211 +# documentation. Note that this feature is still experimental 
 46.1212 +# and incomplete at the moment.
 46.1213 +
 46.1214 +GENERATE_AUTOGEN_DEF   = NO
 46.1215 +
 46.1216 +#---------------------------------------------------------------------------
 46.1217 +# configuration options related to the Perl module output
 46.1218 +#---------------------------------------------------------------------------
 46.1219 +
 46.1220 +# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
 46.1221 +# generate a Perl module file that captures the structure of 
 46.1222 +# the code including all documentation. Note that this 
 46.1223 +# feature is still experimental and incomplete at the 
 46.1224 +# moment.
 46.1225 +
 46.1226 +GENERATE_PERLMOD       = NO
 46.1227 +
 46.1228 +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
 46.1229 +# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
 46.1230 +# to generate PDF and DVI output from the Perl module output.
 46.1231 +
 46.1232 +PERLMOD_LATEX          = NO
 46.1233 +
 46.1234 +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
 46.1235 +# nicely formatted so it can be parsed by a human reader.  This is useful 
 46.1236 +# if you want to understand what is going on.  On the other hand, if this 
 46.1237 +# tag is set to NO the size of the Perl module output will be much smaller 
 46.1238 +# and Perl will parse it just the same.
 46.1239 +
 46.1240 +PERLMOD_PRETTY         = YES
 46.1241 +
 46.1242 +# The names of the make variables in the generated doxyrules.make file 
 46.1243 +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
 46.1244 +# This is useful so different doxyrules.make files included by the same 
 46.1245 +# Makefile don't overwrite each other's variables.
 46.1246 +
 46.1247 +PERLMOD_MAKEVAR_PREFIX = 
 46.1248 +
 46.1249 +#---------------------------------------------------------------------------
 46.1250 +# Configuration options related to the preprocessor   
 46.1251 +#---------------------------------------------------------------------------
 46.1252 +
 46.1253 +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
 46.1254 +# evaluate all C-preprocessor directives found in the sources and include 
 46.1255 +# files.
 46.1256 +
 46.1257 +ENABLE_PREPROCESSING   = YES
 46.1258 +
 46.1259 +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
 46.1260 +# names in the source code. If set to NO (the default) only conditional 
 46.1261 +# compilation will be performed. Macro expansion can be done in a controlled 
 46.1262 +# way by setting EXPAND_ONLY_PREDEF to YES.
 46.1263 +
 46.1264 +MACRO_EXPANSION        = YES
 46.1265 +
 46.1266 +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
 46.1267 +# then the macro expansion is limited to the macros specified with the 
 46.1268 +# PREDEFINED and EXPAND_AS_DEFINED tags.
 46.1269 +
 46.1270 +EXPAND_ONLY_PREDEF     = YES
 46.1271 +
 46.1272 +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
 46.1273 +# in the INCLUDE_PATH (see below) will be search if a #include is found.
 46.1274 +
 46.1275 +SEARCH_INCLUDES        = YES
 46.1276 +
 46.1277 +# The INCLUDE_PATH tag can be used to specify one or more directories that 
 46.1278 +# contain include files that are not input files but should be processed by 
 46.1279 +# the preprocessor.
 46.1280 +
 46.1281 +INCLUDE_PATH           =
 46.1282 +
 46.1283 +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
 46.1284 +# patterns (like *.h and *.hpp) to filter out the header-files in the 
 46.1285 +# directories. If left blank, the patterns specified with FILE_PATTERNS will 
 46.1286 +# be used.
 46.1287 +
 46.1288 +INCLUDE_FILE_PATTERNS  = 
 46.1289 +
 46.1290 +# The PREDEFINED tag can be used to specify one or more macro names that 
 46.1291 +# are defined before the preprocessor is started (similar to the -D option of 
 46.1292 +# gcc). The argument of the tag is a list of macros of the form: name 
 46.1293 +# or name=definition (no spaces). If the definition and the = are 
 46.1294 +# omitted =1 is assumed. To prevent a macro definition from being 
 46.1295 +# undefined via #undef or recursively expanded use the := operator 
 46.1296 +# instead of the = operator.
 46.1297 +
 46.1298 +PREDEFINED             = DOXYGEN_SHOULD_IGNORE_THIS=1 \
 46.1299 +                         DECLSPEC= \
 46.1300 +                         SDLCALL= \
 46.1301 +                         _WIN32=1
 46.1302 +
 46.1303 +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 46.1304 +# this tag can be used to specify a list of macro names that should be expanded. 
 46.1305 +# The macro definition that is found in the sources will be used. 
 46.1306 +# Use the PREDEFINED tag if you want to use a different macro definition.
 46.1307 +
 46.1308 +EXPAND_AS_DEFINED      = 
 46.1309 +
 46.1310 +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
 46.1311 +# doxygen's preprocessor will remove all function-like macros that are alone 
 46.1312 +# on a line, have an all uppercase name, and do not end with a semicolon. Such 
 46.1313 +# function macros are typically used for boiler-plate code, and will confuse 
 46.1314 +# the parser if not removed.
 46.1315 +
 46.1316 +SKIP_FUNCTION_MACROS   = YES
 46.1317 +
 46.1318 +#---------------------------------------------------------------------------
 46.1319 +# Configuration::additions related to external references   
 46.1320 +#---------------------------------------------------------------------------
 46.1321 +
 46.1322 +# The TAGFILES option can be used to specify one or more tagfiles. 
 46.1323 +# Optionally an initial location of the external documentation 
 46.1324 +# can be added for each tagfile. The format of a tag file without 
 46.1325 +# this location is as follows: 
 46.1326 +#   TAGFILES = file1 file2 ... 
 46.1327 +# Adding location for the tag files is done as follows: 
 46.1328 +#   TAGFILES = file1=loc1 "file2 = loc2" ... 
 46.1329 +# where "loc1" and "loc2" can be relative or absolute paths or 
 46.1330 +# URLs. If a location is present for each tag, the installdox tool 
 46.1331 +# does not have to be run to correct the links. 
 46.1332 +# Note that each tag file must have a unique name 
 46.1333 +# (where the name does NOT include the path) 
 46.1334 +# If a tag file is not located in the directory in which doxygen 
 46.1335 +# is run, you must also specify the path to the tagfile here.
 46.1336 +
 46.1337 +TAGFILES               = 
 46.1338 +
 46.1339 +# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
 46.1340 +# a tag file that is based on the input files it reads.
 46.1341 +
 46.1342 +GENERATE_TAGFILE       = ./SDL.tag
 46.1343 +
 46.1344 +# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
 46.1345 +# in the class index. If set to NO only the inherited external classes 
 46.1346 +# will be listed.
 46.1347 +
 46.1348 +ALLEXTERNALS           = NO
 46.1349 +
 46.1350 +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
 46.1351 +# in the modules index. If set to NO, only the current project's groups will 
 46.1352 +# be listed.
 46.1353 +
 46.1354 +EXTERNAL_GROUPS        = YES
 46.1355 +
 46.1356 +# The PERL_PATH should be the absolute path and name of the perl script 
 46.1357 +# interpreter (i.e. the result of `which perl').
 46.1358 +
 46.1359 +PERL_PATH              = c:\Perl\bin\perl.exe
 46.1360 +
 46.1361 +#---------------------------------------------------------------------------
 46.1362 +# Configuration options related to the dot tool   
 46.1363 +#---------------------------------------------------------------------------
 46.1364 +
 46.1365 +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
 46.1366 +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
 46.1367 +# or super classes. Setting the tag to NO turns the diagrams off. Note that 
 46.1368 +# this option is superseded by the HAVE_DOT option below. This is only a 
 46.1369 +# fallback. It is recommended to install and use dot, since it yields more 
 46.1370 +# powerful graphs.
 46.1371 +
 46.1372 +CLASS_DIAGRAMS         = YES
 46.1373 +
 46.1374 +# You can define message sequence charts within doxygen comments using the \msc 
 46.1375 +# command. Doxygen will then run the mscgen tool (see 
 46.1376 +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
 46.1377 +# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
 46.1378 +# the mscgen tool resides. If left empty the tool is assumed to be found in the 
 46.1379 +# default search path.
 46.1380 +
 46.1381 +MSCGEN_PATH            = 
 46.1382 +
 46.1383 +# If set to YES, the inheritance and collaboration graphs will hide 
 46.1384 +# inheritance and usage relations if the target is undocumented 
 46.1385 +# or is not a class.
 46.1386 +
 46.1387 +HIDE_UNDOC_RELATIONS   = YES
 46.1388 +
 46.1389 +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
 46.1390 +# available from the path. This tool is part of Graphviz, a graph visualization 
 46.1391 +# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
 46.1392 +# have no effect if this option is set to NO (the default)
 46.1393 +
 46.1394 +HAVE_DOT               = YES
 46.1395 +
 46.1396 +# By default doxygen will write a font called FreeSans.ttf to the output 
 46.1397 +# directory and reference it in all dot files that doxygen generates. This 
 46.1398 +# font does not include all possible unicode characters however, so when you need 
 46.1399 +# these (or just want a differently looking font) you can specify the font name 
 46.1400 +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
 46.1401 +# which can be done by putting it in a standard location or by setting the 
 46.1402 +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
 46.1403 +# containing the font.
 46.1404 +
 46.1405 +DOT_FONTNAME           = FreeSans
 46.1406 +
 46.1407 +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
 46.1408 +# The default size is 10pt.
 46.1409 +
 46.1410 +DOT_FONTSIZE           = 10
 46.1411 +
 46.1412 +# By default doxygen will tell dot to use the output directory to look for the 
 46.1413 +# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
 46.1414 +# different font using DOT_FONTNAME you can set the path where dot 
 46.1415 +# can find it using this tag.
 46.1416 +
 46.1417 +DOT_FONTPATH           = 
 46.1418 +
 46.1419 +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 46.1420 +# will generate a graph for each documented class showing the direct and 
 46.1421 +# indirect inheritance relations. Setting this tag to YES will force the 
 46.1422 +# the CLASS_DIAGRAMS tag to NO.
 46.1423 +
 46.1424 +CLASS_GRAPH            = YES
 46.1425 +
 46.1426 +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 46.1427 +# will generate a graph for each documented class showing the direct and 
 46.1428 +# indirect implementation dependencies (inheritance, containment, and 
 46.1429 +# class references variables) of the class with other documented classes.
 46.1430 +
 46.1431 +COLLABORATION_GRAPH    = YES
 46.1432 +
 46.1433 +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
 46.1434 +# will generate a graph for groups, showing the direct groups dependencies
 46.1435 +
 46.1436 +GROUP_GRAPHS           = YES
 46.1437 +
 46.1438 +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
 46.1439 +# collaboration diagrams in a style similar to the OMG's Unified Modeling 
 46.1440 +# Language.
 46.1441 +
 46.1442 +UML_LOOK               = NO
 46.1443 +
 46.1444 +# If set to YES, the inheritance and collaboration graphs will show the 
 46.1445 +# relations between templates and their instances.
 46.1446 +
 46.1447 +TEMPLATE_RELATIONS     = YES
 46.1448 +
 46.1449 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
 46.1450 +# tags are set to YES then doxygen will generate a graph for each documented 
 46.1451 +# file showing the direct and indirect include dependencies of the file with 
 46.1452 +# other documented files.
 46.1453 +
 46.1454 +INCLUDE_GRAPH          = YES
 46.1455 +
 46.1456 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
 46.1457 +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
 46.1458 +# documented header file showing the documented files that directly or 
 46.1459 +# indirectly include this file.
 46.1460 +
 46.1461 +INCLUDED_BY_GRAPH      = YES
 46.1462 +
 46.1463 +# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
 46.1464 +# doxygen will generate a call dependency graph for every global function 
 46.1465 +# or class method. Note that enabling this option will significantly increase 
 46.1466 +# the time of a run. So in most cases it will be better to enable call graphs 
 46.1467 +# for selected functions only using the \callgraph command.
 46.1468 +
 46.1469 +CALL_GRAPH             = NO
 46.1470 +
 46.1471 +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
 46.1472 +# doxygen will generate a caller dependency graph for every global function 
 46.1473 +# or class method. Note that enabling this option will significantly increase 
 46.1474 +# the time of a run. So in most cases it will be better to enable caller 
 46.1475 +# graphs for selected functions only using the \callergraph command.
 46.1476 +
 46.1477 +CALLER_GRAPH           = NO
 46.1478 +
 46.1479 +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
 46.1480 +# will graphical hierarchy of all classes instead of a textual one.
 46.1481 +
 46.1482 +GRAPHICAL_HIERARCHY    = YES
 46.1483 +
 46.1484 +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
 46.1485 +# then doxygen will show the dependencies a directory has on other directories 
 46.1486 +# in a graphical way. The dependency relations are determined by the #include 
 46.1487 +# relations between the files in the directories.
 46.1488 +
 46.1489 +DIRECTORY_GRAPH        = YES
 46.1490 +
 46.1491 +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
 46.1492 +# generated by dot. Possible values are png, jpg, or gif 
 46.1493 +# If left blank png will be used.
 46.1494 +
 46.1495 +DOT_IMAGE_FORMAT       = png
 46.1496 +
 46.1497 +# The tag DOT_PATH can be used to specify the path where the dot tool can be 
 46.1498 +# found. If left blank, it is assumed the dot tool can be found in the path.
 46.1499 +
 46.1500 +DOT_PATH               = 
 46.1501 +
 46.1502 +# The DOTFILE_DIRS tag can be used to specify one or more directories that 
 46.1503 +# contain dot files that are included in the documentation (see the 
 46.1504 +# \dotfile command).
 46.1505 +
 46.1506 +DOTFILE_DIRS           = 
 46.1507 +
 46.1508 +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
 46.1509 +# nodes that will be shown in the graph. If the number of nodes in a graph 
 46.1510 +# becomes larger than this value, doxygen will truncate the graph, which is 
 46.1511 +# visualized by representing a node as a red box. Note that doxygen if the 
 46.1512 +# number of direct children of the root node in a graph is already larger than 
 46.1513 +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
 46.1514 +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 46.1515 +
 46.1516 +DOT_GRAPH_MAX_NODES    = 50
 46.1517 +
 46.1518 +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
 46.1519 +# graphs generated by dot. A depth value of 3 means that only nodes reachable 
 46.1520 +# from the root by following a path via at most 3 edges will be shown. Nodes 
 46.1521 +# that lay further from the root node will be omitted. Note that setting this 
 46.1522 +# option to 1 or 2 may greatly reduce the computation time needed for large 
 46.1523 +# code bases. Also note that the size of a graph can be further restricted by 
 46.1524 +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
 46.1525 +
 46.1526 +MAX_DOT_GRAPH_DEPTH    = 2
 46.1527 +
 46.1528 +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
 46.1529 +# background. This is disabled by default, because dot on Windows does not 
 46.1530 +# seem to support this out of the box. Warning: Depending on the platform used, 
 46.1531 +# enabling this option may lead to badly anti-aliased labels on the edges of 
 46.1532 +# a graph (i.e. they become hard to read).
 46.1533 +
 46.1534 +DOT_TRANSPARENT        = NO
 46.1535 +
 46.1536 +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
 46.1537 +# files in one run (i.e. multiple -o and -T options on the command line). This 
 46.1538 +# makes dot run faster, but since only newer versions of dot (>1.8.10) 
 46.1539 +# support this, this feature is disabled by default.
 46.1540 +
 46.1541 +DOT_MULTI_TARGETS      = YES
 46.1542 +
 46.1543 +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
 46.1544 +# generate a legend page explaining the meaning of the various boxes and 
 46.1545 +# arrows in the dot generated graphs.
 46.1546 +
 46.1547 +GENERATE_LEGEND        = YES
 46.1548 +
 46.1549 +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
 46.1550 +# remove the intermediate dot files that are used to generate 
 46.1551 +# the various graphs.
 46.1552 +
 46.1553 +DOT_CLEANUP            = YES
 46.1554 +
 46.1555 +#---------------------------------------------------------------------------
 46.1556 +# Options related to the search engine
 46.1557 +#---------------------------------------------------------------------------
 46.1558 +
 46.1559 +# The SEARCHENGINE tag specifies whether or not a search engine should be 
 46.1560 +# used. If set to NO the values of all tags below this one will be ignored.
 46.1561 +
 46.1562 +SEARCHENGINE           = NO