From 2f524481c15e2a91099bf0bb138b0ddb21451d92 Mon Sep 17 00:00:00 2001 From: laurentgom Date: Wed, 28 Jan 2009 16:18:34 +0000 Subject: [PATCH] Added the trunk/branches/tags directories at repository root, and moved previous root into trunk/ git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1002 4e206d99-4929-0410-ac5d-dfc041789085 --- CSFML/Doxyfile | 239 + CSFML/Doxygen.hpp | 95 + CSFML/Makefile | 14 + CSFML/VC2005/CSFML.sln | 98 + CSFML/VC2005/csfml-audio-d.def | 96 + CSFML/VC2005/csfml-audio.def | 96 + CSFML/VC2005/csfml-audio.vcproj | 407 + CSFML/VC2005/csfml-graphics-d.def | 215 + CSFML/VC2005/csfml-graphics.def | 215 + CSFML/VC2005/csfml-graphics.vcproj | 450 + CSFML/VC2005/csfml-network-d.def | 125 + CSFML/VC2005/csfml-network.def | 125 + CSFML/VC2005/csfml-network.vcproj | 403 + CSFML/VC2005/csfml-system-d.def | 20 + CSFML/VC2005/csfml-system.def | 20 + CSFML/VC2005/csfml-system.vcproj | 383 + CSFML/VC2005/csfml-window-d.def | 38 + CSFML/VC2005/csfml-window.def | 38 + CSFML/VC2005/csfml-window.vcproj | 387 + CSFML/VC2008/CSFML.sln | 98 + CSFML/VC2008/csfml-audio-d.def | 96 + CSFML/VC2008/csfml-audio.def | 96 + CSFML/VC2008/csfml-audio.vcproj | 406 + CSFML/VC2008/csfml-graphics-d.def | 215 + CSFML/VC2008/csfml-graphics.def | 215 + CSFML/VC2008/csfml-graphics.vcproj | 445 + CSFML/VC2008/csfml-network-d.def | 125 + CSFML/VC2008/csfml-network.def | 125 + CSFML/VC2008/csfml-network.vcproj | 402 + CSFML/VC2008/csfml-system-d.def | 20 + CSFML/VC2008/csfml-system.def | 20 + CSFML/VC2008/csfml-system.vcproj | 382 + CSFML/VC2008/csfml-window-d.def | 38 + CSFML/VC2008/csfml-window.def | 38 + CSFML/VC2008/csfml-window.vcproj | 386 + CSFML/codeblocks/CSFML.workspace | 10 + CSFML/codeblocks/csfml-audio.cbp | 137 + CSFML/codeblocks/csfml-graphics.cbp | 151 + CSFML/codeblocks/csfml-network.cbp | 128 + CSFML/codeblocks/csfml-system.cbp | 116 + CSFML/codeblocks/csfml-window.cbp | 135 + CSFML/footer.htm | 8 + CSFML/header.htm | 12 + CSFML/include/SFML/Audio.h | 41 + CSFML/include/SFML/Audio/Listener.h | 93 + CSFML/include/SFML/Audio/Music.h | 267 + CSFML/include/SFML/Audio/Sound.h | 253 + CSFML/include/SFML/Audio/SoundBuffer.h | 147 + .../include/SFML/Audio/SoundBufferRecorder.h | 98 + CSFML/include/SFML/Audio/SoundRecorder.h | 108 + CSFML/include/SFML/Audio/SoundStatus.h | 42 + CSFML/include/SFML/Audio/SoundStream.h | 270 + CSFML/include/SFML/Config.h | 120 + CSFML/include/SFML/Graphics.h | 43 + CSFML/include/SFML/Graphics/BlendMode.h | 46 + CSFML/include/SFML/Graphics/Color.h | 107 + CSFML/include/SFML/Graphics/Font.h | 102 + CSFML/include/SFML/Graphics/Glyph.h | 45 + CSFML/include/SFML/Graphics/Image.h | 239 + CSFML/include/SFML/Graphics/PostFX.h | 128 + CSFML/include/SFML/Graphics/Rect.h | 93 + CSFML/include/SFML/Graphics/RenderWindow.h | 365 + CSFML/include/SFML/Graphics/Shape.h | 460 + CSFML/include/SFML/Graphics/Sprite.h | 399 + CSFML/include/SFML/Graphics/String.h | 430 + CSFML/include/SFML/Graphics/View.h | 163 + CSFML/include/SFML/Network.h | 40 + CSFML/include/SFML/Network/Ftp.h | 486 + CSFML/include/SFML/Network/Http.h | 282 + CSFML/include/SFML/Network/IPAddress.h | 133 + CSFML/include/SFML/Network/Packet.h | 153 + CSFML/include/SFML/Network/Selector.h | 120 + CSFML/include/SFML/Network/SocketStatus.h | 43 + CSFML/include/SFML/Network/SocketTCP.h | 167 + CSFML/include/SFML/Network/SocketUDP.h | 162 + CSFML/include/SFML/System.h | 40 + CSFML/include/SFML/System/Clock.h | 72 + CSFML/include/SFML/System/Mutex.h | 74 + CSFML/include/SFML/System/Randomizer.h | 74 + CSFML/include/SFML/System/Sleep.h | 43 + CSFML/include/SFML/System/Thread.h | 85 + CSFML/include/SFML/Window.h | 40 + CSFML/include/SFML/Window/Context.h | 68 + CSFML/include/SFML/Window/Event.h | 300 + CSFML/include/SFML/Window/Input.h | 110 + CSFML/include/SFML/Window/VideoMode.h | 87 + CSFML/include/SFML/Window/Window.h | 294 + CSFML/include/SFML/Window/WindowHandle.h | 56 + CSFML/src/SFML/Audio/Listener.cpp | 98 + CSFML/src/SFML/Audio/Makefile | 23 + CSFML/src/SFML/Audio/Music.cpp | 273 + CSFML/src/SFML/Audio/Sound.cpp | 258 + CSFML/src/SFML/Audio/SoundBuffer.cpp | 152 + CSFML/src/SFML/Audio/SoundBufferRecorder.cpp | 104 + CSFML/src/SFML/Audio/SoundRecorder.cpp | 150 + CSFML/src/SFML/Audio/SoundStream.cpp | 294 + CSFML/src/SFML/Graphics/Color.cpp | 96 + CSFML/src/SFML/Graphics/Font.cpp | 121 + CSFML/src/SFML/Graphics/Image.cpp | 268 + CSFML/src/SFML/Graphics/Makefile | 23 + CSFML/src/SFML/Graphics/PostFX.cpp | 138 + CSFML/src/SFML/Graphics/Rect.cpp | 121 + CSFML/src/SFML/Graphics/RenderWindow.cpp | 497 + CSFML/src/SFML/Graphics/Shape.cpp | 464 + CSFML/src/SFML/Graphics/Sprite.cpp | 407 + CSFML/src/SFML/Graphics/String.cpp | 436 + CSFML/src/SFML/Graphics/View.cpp | 175 + CSFML/src/SFML/Internal.h | 104 + CSFML/src/SFML/Makefile | 42 + CSFML/src/SFML/Network/Ftp.cpp | 396 + CSFML/src/SFML/Network/Http.cpp | 231 + CSFML/src/SFML/Network/IPAddress.cpp | 138 + CSFML/src/SFML/Network/Makefile | 23 + CSFML/src/SFML/Network/Packet.cpp | 204 + CSFML/src/SFML/Network/Selector.cpp | 114 + CSFML/src/SFML/Network/SocketTCP.cpp | 192 + CSFML/src/SFML/Network/SocketUDP.cpp | 187 + CSFML/src/SFML/System/Clock.cpp | 72 + CSFML/src/SFML/System/Makefile | 23 + CSFML/src/SFML/System/Mutex.cpp | 72 + CSFML/src/SFML/System/Randomizer.cpp | 67 + CSFML/src/SFML/System/Sleep.cpp | 39 + CSFML/src/SFML/System/Thread.cpp | 86 + CSFML/src/SFML/Window/Context.cpp | 63 + CSFML/src/SFML/Window/Input.cpp | 89 + CSFML/src/SFML/Window/Makefile | 23 + CSFML/src/SFML/Window/VideoMode.cpp | 82 + CSFML/src/SFML/Window/Window.cpp | 344 + DSFML/AUTHORS | 2 + DSFML/LICENCE | 18 + DSFML/import/dsfml/audio/all.d | 36 + DSFML/import/dsfml/audio/listener.d | 184 + DSFML/import/dsfml/audio/music.d | 396 + DSFML/import/dsfml/audio/sound.d | 415 + DSFML/import/dsfml/audio/soundbuffer.d | 226 + .../import/dsfml/audio/soundbufferrecorder.d | 105 + DSFML/import/dsfml/audio/soundrecorder.d | 332 + DSFML/import/dsfml/audio/soundstatus.d | 34 + DSFML/import/dsfml/audio/soundstream.d | 550 + DSFML/import/dsfml/graphics/all.d | 41 + DSFML/import/dsfml/graphics/blendmode.d | 37 + DSFML/import/dsfml/graphics/color.d | 130 + DSFML/import/dsfml/graphics/drawableimpl.d | 320 + DSFML/import/dsfml/graphics/font.d | 123 + DSFML/import/dsfml/graphics/idrawable.d | 284 + DSFML/import/dsfml/graphics/image.d | 366 + DSFML/import/dsfml/graphics/postfx.d | 175 + DSFML/import/dsfml/graphics/rect.d | 291 + DSFML/import/dsfml/graphics/renderwindow.d | 306 + DSFML/import/dsfml/graphics/shape.d | 333 + DSFML/import/dsfml/graphics/sprite.d | 248 + DSFML/import/dsfml/graphics/string.d | 290 + DSFML/import/dsfml/graphics/textstyle.d | 37 + DSFML/import/dsfml/graphics/view.d | 274 + DSFML/import/dsfml/network/all.d | 36 + DSFML/import/dsfml/network/ftp.d | 598 + DSFML/import/dsfml/network/http.d | 394 + DSFML/import/dsfml/network/ipaddress.d | 164 + DSFML/import/dsfml/network/packet.d | 413 + DSFML/import/dsfml/network/selector.d | 187 + DSFML/import/dsfml/network/socketstatus.d | 37 + DSFML/import/dsfml/network/sockettcp.d | 268 + DSFML/import/dsfml/network/socketudp.d | 243 + DSFML/import/dsfml/system/all.d | 45 + DSFML/import/dsfml/system/alloc.d | 81 + DSFML/import/dsfml/system/clock.d | 97 + DSFML/import/dsfml/system/common.d | 70 + DSFML/import/dsfml/system/dllloader.d | 189 + DSFML/import/dsfml/system/exception.d | 42 + DSFML/import/dsfml/system/linkedlist.d | 102 + DSFML/import/dsfml/system/lock.d | 65 + DSFML/import/dsfml/system/mutex.d | 94 + DSFML/import/dsfml/system/randomizer.d | 130 + DSFML/import/dsfml/system/sleep.d | 53 + DSFML/import/dsfml/system/stringutil.d | 169 + DSFML/import/dsfml/system/thread.d | 216 + DSFML/import/dsfml/system/vector2.d | 160 + DSFML/import/dsfml/system/vector3.d | 166 + DSFML/import/dsfml/window/all.d | 35 + DSFML/import/dsfml/window/event.d | 329 + DSFML/import/dsfml/window/input.d | 162 + DSFML/import/dsfml/window/videomode.d | 136 + DSFML/import/dsfml/window/window.d | 435 + DSFML/import/dsfml/window/windowhandle.d | 42 + DSFML/import/dsfml/window/windowsettings.d | 48 + DSFML/import/dsfml/window/windowstyle.d | 38 + DSFML/import/dsss.conf | 46 + DSFML/samples/dsfml/bin/Data/background.jpg | Bin 0 -> 157847 bytes DSFML/samples/dsfml/bin/Data/ball.tga | Bin 0 -> 2891 bytes DSFML/samples/dsfml/bin/Data/ball.wav | Bin 0 -> 15442 bytes .../dsfml/bin/Data/bluerallyecarleft.bmp | Bin 0 -> 27702 bytes .../dsfml/bin/Data/bluerallyecarright.bmp | Bin 0 -> 27702 bytes DSFML/samples/dsfml/bin/Data/blur.sfx | 16 + DSFML/samples/dsfml/bin/Data/car_idle.wav | Bin 0 -> 59291 bytes DSFML/samples/dsfml/bin/Data/cheeseburger.ttf | Bin 0 -> 42020 bytes DSFML/samples/dsfml/bin/Data/colorize.sfx | 10 + DSFML/samples/dsfml/bin/Data/crosshair.bmp | Bin 0 -> 3126 bytes DSFML/samples/dsfml/bin/Data/crosshair.tga | Bin 0 -> 1466 bytes DSFML/samples/dsfml/bin/Data/fisheye.sfx | 12 + DSFML/samples/dsfml/bin/Data/nothing.sfx | 6 + DSFML/samples/dsfml/bin/Data/paddle.tga | Bin 0 -> 1943 bytes DSFML/samples/dsfml/bin/Data/wave.jpg | Bin 0 -> 23249 bytes DSFML/samples/dsfml/bin/Data/wave.sfx | 12 + DSFML/samples/dsfml/bin/libsndfile-1.dll | Bin 0 -> 325120 bytes DSFML/samples/dsfml/bin/openal32.dll | Bin 0 -> 208896 bytes DSFML/samples/dsfml/dfl/DFLSample.d | 230 + DSFML/samples/dsfml/dsss.conf | 33 + DSFML/samples/dsfml/pong/pong.d | 183 + DSFML/samples/dsfml/postFX/postFX.d | 117 + DSFML/samples/dsfml/socket/socketclient.d | 66 + DSFML/samples/dsfml/socket/socketserver.d | 83 + DSFML/samples/dsfml/sound3d/sound3d.d | 190 + DSFML/samples/dsfml/soundstream/soundstream.d | 91 + DSFML/samples/dsfml/view/view.d | 69 + DSFML/samples/dsfml/voip/client.d | 72 + DSFML/samples/dsfml/voip/entry.d | 46 + DSFML/samples/dsfml/voip/server.d | 162 + DSFML/samples/dsfml/voip/util.d | 49 + Doxyfile | 1550 ++ Doxygen.hpp | 72 + Makefile | 19 + build/codeblocks/SFML.workspace | 23 + build/codeblocks/sfml-audio.cbp | 146 + build/codeblocks/sfml-graphics.cbp | 422 + build/codeblocks/sfml-main.cbp | 46 + build/codeblocks/sfml-network.cbp | 134 + build/codeblocks/sfml-system.cbp | 124 + build/codeblocks/sfml-window.cbp | 140 + build/vc2005/SFML.sln | 363 + build/vc2005/sfml-audio.vcproj | 495 + build/vc2005/sfml-graphics.vcproj | 3456 ++++ build/vc2005/sfml-main.vcproj | 158 + build/vc2005/sfml-network.vcproj | 430 + build/vc2005/sfml-system.vcproj | 460 + build/vc2005/sfml-window.vcproj | 518 + build/vc2008/SFML.sln | 112 + build/vc2008/sfml-audio.vcproj | 491 + build/vc2008/sfml-graphics.vcproj | 3454 ++++ build/vc2008/sfml-main.vcproj | 163 + build/vc2008/sfml-network.vcproj | 421 + build/vc2008/sfml-system.vcproj | 437 + build/vc2008/sfml-window.vcproj | 477 + build/xcode/SFML-Info.plist | 20 + .../xcode/SFML-bare.xcodeproj/project.pbxproj | 1392 ++ build/xcode/SFML.xcodeproj/project.pbxproj | 2468 +++ build/xcode/dummy.cpp | 6 + build/xcode/sfml-audio-Info.plist | 20 + build/xcode/sfml-graphics-Info.plist | 20 + build/xcode/sfml-network-Info.plist | 20 + build/xcode/sfml-system-Info.plist | 20 + build/xcode/sfml-window-Info.plist | 20 + .../Info.plist | 20 + .../TemplateIcon.icns | Bin 0 -> 40702 bytes .../TemplateInfo.plist | 6 + .../project.pbxproj | 235 + .../SFML Graphics-based Application/main.cpp | 42 + .../SFML Tool.xcodeproj/TemplateIcon.icns | Bin 0 -> 40702 bytes .../SFML Tool.xcodeproj/TemplateInfo.plist | 6 + .../SFML Tool.xcodeproj/project.pbxproj | 209 + build/xcode/templates/SFML Tool/main.cpp | 10 + .../SFML Window-based Application/Info.plist | 20 + .../TemplateIcon.icns | Bin 0 -> 40702 bytes .../TemplateInfo.plist | 6 + .../project.pbxproj | 233 + .../SFML Window-based Application/main.cpp | 54 + dotnet/MainPage.html | 71 + dotnet/SFML.ndoc | 35 + dotnet/build/vc2005/SFML.net.sln | 62 + dotnet/extlibs/csfml-audio.dll | Bin 0 -> 102400 bytes dotnet/extlibs/csfml-graphics.dll | Bin 0 -> 1159168 bytes dotnet/extlibs/csfml-window.dll | Bin 0 -> 40960 bytes dotnet/extlibs/libsndfile-1.dll | Bin 0 -> 325120 bytes dotnet/extlibs/openal32.dll | Bin 0 -> 208896 bytes .../samples/bin/datas/opengl/background.jpg | Bin 0 -> 133447 bytes dotnet/samples/bin/datas/opengl/texture.jpg | Bin 0 -> 5922 bytes .../samples/bin/datas/post-fx/background.jpg | Bin 0 -> 157847 bytes dotnet/samples/bin/datas/post-fx/blur.sfx | 16 + .../bin/datas/post-fx/cheeseburger.ttf | Bin 0 -> 42020 bytes dotnet/samples/bin/datas/post-fx/colorize.sfx | 10 + dotnet/samples/bin/datas/post-fx/fisheye.sfx | 12 + dotnet/samples/bin/datas/post-fx/nothing.sfx | 6 + dotnet/samples/bin/datas/post-fx/wave.jpg | Bin 0 -> 23249 bytes dotnet/samples/bin/datas/post-fx/wave.sfx | 12 + dotnet/samples/bin/datas/sound/footsteps.wav | Bin 0 -> 3880844 bytes .../samples/bin/datas/sound/lepidoptera.ogg | Bin 0 -> 4357992 bytes dotnet/samples/opengl/OpenGL.cs | 161 + dotnet/samples/opengl/sample-opengl.csproj | 66 + dotnet/samples/post-fx/PostFx.cs | 168 + dotnet/samples/post-fx/sample-postfx.csproj | 54 + dotnet/samples/sound/Sound.cs | 82 + dotnet/samples/sound/sample-sound.csproj | 56 + dotnet/samples/sound_capture/SoundCapture.cs | 83 + .../sound_capture/sample-soundcapture.csproj | 56 + .../My Project/Application.Designer.vb | 13 + .../visualbasic/My Project/Application.myapp | 10 + .../visualbasic/My Project/AssemblyInfo.vb | 35 + .../My Project/Resources.Designer.vb | 63 + .../visualbasic/My Project/Resources.resx | 117 + .../My Project/Settings.Designer.vb | 73 + .../visualbasic/My Project/Settings.settings | 7 + dotnet/samples/visualbasic/OpenGL.vb | 177 + dotnet/samples/visualbasic/visualbasic.sln | 20 + dotnet/samples/visualbasic/visualbasic.vbproj | 121 + dotnet/samples/window/Window.cs | 134 + dotnet/samples/window/sample-window.csproj | 60 + dotnet/src/Audio/Listener.cs | 73 + dotnet/src/Audio/Music.cs | 287 + dotnet/src/Audio/Sound.cs | 270 + dotnet/src/Audio/SoundBuffer.cs | 181 + dotnet/src/Audio/SoundBufferRecorder.cs | 70 + dotnet/src/Audio/SoundRecorder.cs | 180 + dotnet/src/Audio/SoundStream.cs | 343 + dotnet/src/Audio/Vector3.cs | 119 + dotnet/src/Audio/sfml-audio.csproj | 64 + dotnet/src/Graphics/Color.cs | 95 + dotnet/src/Graphics/Context.cs | 80 + dotnet/src/Graphics/Drawable.cs | 119 + dotnet/src/Graphics/Font.cs | 210 + dotnet/src/Graphics/Image.cs | 385 + dotnet/src/Graphics/PostFx.cs | 193 + dotnet/src/Graphics/Rect.cs | 274 + dotnet/src/Graphics/RenderWindow.cs | 558 + dotnet/src/Graphics/Shape.cs | 505 + dotnet/src/Graphics/Sprite.cs | 332 + dotnet/src/Graphics/String2D.cs | 380 + dotnet/src/Graphics/Vector2.cs | 114 + dotnet/src/Graphics/View.cs | 183 + dotnet/src/Graphics/sfml-graphics.csproj | 72 + dotnet/src/Window/Event.cs | 389 + dotnet/src/Window/EventArgs.cs | 223 + dotnet/src/Window/Input.cs | 133 + dotnet/src/Window/LoadingFailedException.cs | 84 + dotnet/src/Window/ObjectBase.cs | 93 + dotnet/src/Window/VideoMode.cs | 55 + dotnet/src/Window/Window.cs | 613 + dotnet/src/Window/WindowSettings.cs | 53 + dotnet/src/Window/sfml-window.csproj | 58 + doxygen.css | 384 + extlibs/bin/libsndfile-1.dll | Bin 0 -> 325120 bytes extlibs/bin/openal32.dll | Bin 0 -> 208896 bytes extlibs/headers/AL/al.h | 724 + extlibs/headers/AL/alc.h | 281 + extlibs/headers/AL/alext.h | 69 + extlibs/headers/freetype/cache/ftccache.h | 319 + extlibs/headers/freetype/cache/ftccmap.h | 216 + extlibs/headers/freetype/cache/ftcglyph.h | 313 + extlibs/headers/freetype/cache/ftcimage.h | 104 + extlibs/headers/freetype/cache/ftcmanag.h | 175 + extlibs/headers/freetype/cache/ftcmru.h | 247 + extlibs/headers/freetype/cache/ftcsbits.h | 96 + extlibs/headers/freetype/config/ftconfig.h | 335 + extlibs/headers/freetype/config/ftheader.h | 593 + extlibs/headers/freetype/config/ftmodule.h | 19 + extlibs/headers/freetype/config/ftoption.h | 565 + extlibs/headers/freetype/config/ftstdlib.h | 150 + extlibs/headers/freetype/freetype.h | 3089 ++++ extlibs/headers/freetype/ft2build.h | 61 + extlibs/headers/freetype/ftbbox.h | 89 + extlibs/headers/freetype/ftbdf.h | 200 + extlibs/headers/freetype/ftbitmap.h | 206 + extlibs/headers/freetype/ftcache.h | 817 + extlibs/headers/freetype/ftchapters.h | 82 + extlibs/headers/freetype/fterrdef.h | 231 + extlibs/headers/freetype/fterrors.h | 206 + extlibs/headers/freetype/ftglyph.h | 565 + extlibs/headers/freetype/ftgzip.h | 100 + extlibs/headers/freetype/ftimage.h | 1230 ++ extlibs/headers/freetype/ftincrem.h | 292 + extlibs/headers/freetype/ftlist.h | 274 + extlibs/headers/freetype/ftlzw.h | 99 + extlibs/headers/freetype/ftmac.h | 162 + extlibs/headers/freetype/ftmm.h | 378 + extlibs/headers/freetype/ftmodapi.h | 319 + extlibs/headers/freetype/ftmoderr.h | 155 + extlibs/headers/freetype/ftotval.h | 170 + extlibs/headers/freetype/ftoutln.h | 498 + extlibs/headers/freetype/ftpfr.h | 172 + extlibs/headers/freetype/ftrender.h | 229 + extlibs/headers/freetype/ftsizes.h | 159 + extlibs/headers/freetype/ftsnames.h | 167 + extlibs/headers/freetype/ftstroke.h | 710 + extlibs/headers/freetype/ftsynth.h | 71 + extlibs/headers/freetype/ftsysio.h | 195 + extlibs/headers/freetype/ftsysmem.h | 202 + extlibs/headers/freetype/ftsystem.h | 309 + extlibs/headers/freetype/fttrigon.h | 315 + extlibs/headers/freetype/fttypes.h | 582 + extlibs/headers/freetype/ftwinfnt.h | 257 + extlibs/headers/freetype/ftxf86.h | 60 + extlibs/headers/freetype/internal/autohint.h | 205 + extlibs/headers/freetype/internal/ftcalc.h | 128 + extlibs/headers/freetype/internal/ftdebug.h | 244 + extlibs/headers/freetype/internal/ftdriver.h | 206 + extlibs/headers/freetype/internal/ftgloadr.h | 147 + extlibs/headers/freetype/internal/ftmemory.h | 445 + extlibs/headers/freetype/internal/ftobjs.h | 749 + extlibs/headers/freetype/internal/ftrfork.h | 184 + extlibs/headers/freetype/internal/ftserv.h | 323 + extlibs/headers/freetype/internal/ftstream.h | 536 + extlibs/headers/freetype/internal/fttrace.h | 118 + extlibs/headers/freetype/internal/ftvalid.h | 148 + extlibs/headers/freetype/internal/internal.h | 50 + extlibs/headers/freetype/internal/pcftypes.h | 56 + extlibs/headers/freetype/internal/psaux.h | 741 + extlibs/headers/freetype/internal/pshints.h | 626 + extlibs/headers/freetype/internal/sfnt.h | 577 + extlibs/headers/freetype/internal/svbdf.h | 57 + extlibs/headers/freetype/internal/svgldict.h | 60 + extlibs/headers/freetype/internal/svmm.h | 79 + extlibs/headers/freetype/internal/svotval.h | 53 + extlibs/headers/freetype/internal/svpfr.h | 65 + extlibs/headers/freetype/internal/svpostnm.h | 58 + extlibs/headers/freetype/internal/svpscmap.h | 113 + extlibs/headers/freetype/internal/svpsinfo.h | 60 + extlibs/headers/freetype/internal/svsfnt.h | 80 + extlibs/headers/freetype/internal/svttcmap.h | 77 + extlibs/headers/freetype/internal/svwinfnt.h | 50 + extlibs/headers/freetype/internal/svxf86nm.h | 55 + extlibs/headers/freetype/internal/t1types.h | 191 + extlibs/headers/freetype/internal/tttypes.h | 1457 ++ extlibs/headers/freetype/t1tables.h | 431 + extlibs/headers/freetype/ttnameid.h | 1119 ++ extlibs/headers/freetype/tttables.h | 731 + extlibs/headers/freetype/tttags.h | 87 + extlibs/headers/freetype/ttunpat.h | 59 + extlibs/headers/ft2build.h | 61 + extlibs/headers/sndfile.h | 561 + extlibs/libs-mingw/libfreetype.a | Bin 0 -> 545428 bytes extlibs/libs-mingw/libopenal32.a | Bin 0 -> 70336 bytes extlibs/libs-mingw/libsndfile.a | Bin 0 -> 20856 bytes extlibs/libs-vc2005/OpenAL32.lib | Bin 0 -> 26934 bytes extlibs/libs-vc2005/freetype.lib | Bin 0 -> 850848 bytes extlibs/libs-vc2005/sndfile.lib | Bin 0 -> 8180 bytes extlibs/libs-xcode/libfreetype.a | Bin 0 -> 1430716 bytes extlibs/libs-xcode/libsndfile.a | Bin 0 -> 991100 bytes footer.htm | 8 + header.htm | 12 + include/SFML/Audio.hpp | 42 + include/SFML/Audio/AudioResource.hpp | 67 + include/SFML/Audio/Listener.hpp | 122 + include/SFML/Audio/Music.hpp | 120 + include/SFML/Audio/Sound.hpp | 286 + include/SFML/Audio/SoundBuffer.hpp | 188 + include/SFML/Audio/SoundBufferRecorder.hpp | 83 + include/SFML/Audio/SoundRecorder.hpp | 148 + include/SFML/Audio/SoundStream.hpp | 225 + include/SFML/Config.hpp | 165 + include/SFML/Graphics.hpp | 45 + include/SFML/Graphics/Color.hpp | 147 + include/SFML/Graphics/Drawable.hpp | 361 + include/SFML/Graphics/Font.hpp | 145 + include/SFML/Graphics/Glyph.hpp | 61 + include/SFML/Graphics/Image.hpp | 335 + include/SFML/Graphics/Matrix3.hpp | 148 + include/SFML/Graphics/Matrix3.inl | 186 + include/SFML/Graphics/PostFX.hpp | 194 + include/SFML/Graphics/Rect.hpp | 127 + include/SFML/Graphics/Rect.inl | 122 + include/SFML/Graphics/RenderTarget.hpp | 166 + include/SFML/Graphics/RenderWindow.hpp | 135 + include/SFML/Graphics/Shape.hpp | 310 + include/SFML/Graphics/Sprite.hpp | 176 + include/SFML/Graphics/String.hpp | 191 + include/SFML/Graphics/View.hpp | 188 + include/SFML/Network.hpp | 42 + include/SFML/Network/Ftp.hpp | 448 + include/SFML/Network/Http.hpp | 340 + include/SFML/Network/IPAddress.hpp | 231 + include/SFML/Network/Packet.hpp | 187 + include/SFML/Network/Selector.hpp | 116 + include/SFML/Network/Selector.inl | 97 + include/SFML/Network/SelectorBase.hpp | 112 + include/SFML/Network/SocketHelper.hpp | 64 + include/SFML/Network/SocketTCP.hpp | 225 + include/SFML/Network/SocketUDP.hpp | 226 + include/SFML/Network/Sockets.hpp | 45 + include/SFML/Network/Unix/SocketHelper.hpp | 96 + include/SFML/Network/Win32/SocketHelper.hpp | 90 + include/SFML/System.hpp | 43 + include/SFML/System/Clock.hpp | 74 + include/SFML/System/Lock.hpp | 71 + include/SFML/System/Mutex.hpp | 45 + include/SFML/System/NonCopyable.hpp | 70 + include/SFML/System/Randomizer.hpp | 94 + include/SFML/System/Resource.hpp | 216 + include/SFML/System/Resource.inl | 88 + include/SFML/System/ResourcePtr.inl | 149 + include/SFML/System/Sleep.hpp | 47 + include/SFML/System/Thread.hpp | 45 + include/SFML/System/Unicode.hpp | 290 + include/SFML/System/Unicode.inl | 474 + include/SFML/System/Unix/Mutex.hpp | 82 + include/SFML/System/Unix/Thread.hpp | 124 + include/SFML/System/Vector2.hpp | 215 + include/SFML/System/Vector2.inl | 179 + include/SFML/System/Vector3.hpp | 217 + include/SFML/System/Vector3.inl | 185 + include/SFML/System/Win32/Mutex.hpp | 84 + include/SFML/System/Win32/Thread.hpp | 123 + include/SFML/Window.hpp | 43 + include/SFML/Window/Context.hpp | 100 + include/SFML/Window/Event.hpp | 313 + include/SFML/Window/Input.hpp | 134 + include/SFML/Window/OpenGL.hpp | 46 + include/SFML/Window/VideoMode.hpp | 136 + include/SFML/Window/Window.hpp | 326 + include/SFML/Window/WindowHandle.hpp | 60 + include/SFML/Window/WindowListener.hpp | 66 + include/SFML/Window/WindowSettings.hpp | 62 + include/SFML/Window/WindowStyle.hpp | 51 + license.txt | 39 + python/MANIFEST.in | 10 + python/PKG-INFO | 10 + python/PySFML/__init__.py | 2 + python/doc/style.css | 96 + python/samples/data/apple.png | Bin 0 -> 868 bytes python/samples/data/fart.wav | Bin 0 -> 14962 bytes python/samples/data/rond2.png | Bin 0 -> 1167 bytes python/samples/libsndfile-1.dll | Bin 0 -> 325120 bytes python/samples/opengl.py | 166 + python/samples/sound.py | 43 + python/samples/sound_capture.py | 68 + python/samples/sound_stream.py | 49 + python/samples/worm.py | 240 + python/scripts/footer.htm | 7 + python/scripts/gen_doc.py | 118 + python/scripts/header.htm | 11 + python/setup.py | 27 + python/src/Blend.cpp | 136 + python/src/Blend.hpp | 31 + python/src/Clock.cpp | 130 + python/src/Clock.hpp | 35 + python/src/Color.cpp | 231 + python/src/Color.hpp | 55 + python/src/Drawable.cpp | 305 + python/src/Drawable.hpp | 54 + python/src/Event.cpp | 844 + python/src/Event.hpp | 108 + python/src/Font.cpp | 219 + python/src/Font.hpp | 46 + python/src/Glyph.cpp | 158 + python/src/Glyph.hpp | 56 + python/src/Image.cpp | 419 + python/src/Image.hpp | 49 + python/src/Input.cpp | 167 + python/src/Input.hpp | 43 + python/src/Joy.cpp | 141 + python/src/Joy.hpp | 31 + python/src/Key.cpp | 423 + python/src/Key.hpp | 31 + python/src/Listener.cpp | 160 + python/src/Listener.hpp | 41 + python/src/Mouse.cpp | 135 + python/src/Mouse.hpp | 31 + python/src/Music.cpp | 152 + python/src/Music.hpp | 41 + python/src/PostFX.cpp | 211 + python/src/PostFX.hpp | 42 + python/src/Rect.cpp | 437 + python/src/Rect.hpp | 73 + python/src/RenderWindow.cpp | 289 + python/src/RenderWindow.hpp | 42 + python/src/Shape.cpp | 396 + python/src/Shape.hpp | 45 + python/src/Sleep.cpp | 33 + python/src/Sleep.hpp | 37 + python/src/Sound.cpp | 339 + python/src/Sound.hpp | 42 + python/src/SoundBuffer.cpp | 218 + python/src/SoundBuffer.hpp | 42 + python/src/SoundBufferRecorder.cpp | 121 + python/src/SoundBufferRecorder.hpp | 41 + python/src/SoundRecorder.cpp | 174 + python/src/SoundRecorder.hpp | 50 + python/src/SoundStream.cpp | 320 + python/src/SoundStream.hpp | 53 + python/src/Sprite.cpp | 255 + python/src/Sprite.hpp | 45 + python/src/String.cpp | 269 + python/src/String.hpp | 41 + python/src/VideoMode.cpp | 202 + python/src/VideoMode.hpp | 52 + python/src/View.cpp | 194 + python/src/View.hpp | 47 + python/src/Window.cpp | 428 + python/src/Window.hpp | 49 + python/src/WindowSettings.cpp | 131 + python/src/WindowSettings.hpp | 51 + python/src/WindowStyle.cpp | 140 + python/src/WindowStyle.hpp | 31 + python/src/main.cpp | 276 + python/src/main.hpp | 38 + python/src/offsetof.hpp | 32 + ruby/LICENSE.txt | 41 + ruby/README-EN.txt | 28 + ruby/README-FR.txt | 28 + ruby/Rakefile | 167 + ruby/RubyOpenGL/common/common.h | 333 + ruby/RubyOpenGL/common/gl-enums.h | 10387 +++++++++++ ruby/RubyOpenGL/gl/extconf.rb | 20 + ruby/RubyOpenGL/gl/gl-1.0-1.1.c | 5197 ++++++ ruby/RubyOpenGL/gl/gl-1.2.c | 1061 ++ ruby/RubyOpenGL/gl/gl-1.3.c | 725 + ruby/RubyOpenGL/gl/gl-1.4.c | 647 + ruby/RubyOpenGL/gl/gl-1.5.c | 362 + ruby/RubyOpenGL/gl/gl-2.0.c | 1632 ++ ruby/RubyOpenGL/gl/gl-2.1.c | 154 + ruby/RubyOpenGL/gl/gl-enums.c | 2904 +++ ruby/RubyOpenGL/gl/gl.c | 87 + ruby/RubyOpenGL/glu/extconf.rb | 20 + ruby/RubyOpenGL/glu/glu.c | 1637 ++ ruby/RubySFML/RubySFML.cpp | 213 + ruby/RubySFML/RubySFML.h | 88 + ruby/RubySFML/RubySFML.rb | 83 + ruby/RubySFML/extconf-linux.rb | 26 + ruby/RubySFML/extconf-win.rb | 30 + ruby/RubySFML/ruby_helper.h | 846 + ruby/RubySFML/sfClock.cpp | 86 + ruby/RubySFML/sfColor.cpp | 120 + ruby/RubySFML/sfDrawable.cpp | 285 + ruby/RubySFML/sfEvent.cpp | 270 + ruby/RubySFML/sfFloatRect.cpp | 155 + ruby/RubySFML/sfImage.cpp | 238 + ruby/RubySFML/sfInput.cpp | 105 + ruby/RubySFML/sfIntRect.cpp | 157 + ruby/RubySFML/sfMusic.cpp | 153 + ruby/RubySFML/sfPostFX.cpp | 147 + ruby/RubySFML/sfRenderWindow.cpp | 237 + ruby/RubySFML/sfSound.cpp | 219 + ruby/RubySFML/sfSoundBuffer.cpp | 137 + ruby/RubySFML/sfSoundBufferRecorder.cpp | 101 + ruby/RubySFML/sfSprite.cpp | 319 + ruby/RubySFML/sfString.cpp | 190 + ruby/RubySFML/sfVideoMode.cpp | 114 + ruby/RubySFML/sfView.cpp | 93 + ruby/RubySFML/sfWindow.cpp | 181 + ruby/doc/Reference-en.html | 431 + ruby/doc/Reference-fr.html | 430 + ruby/gzip.exe | Bin 0 -> 49152 bytes ruby/rubygems-0.9.4.zip | Bin 0 -> 281601 bytes ruby/tar.exe | Bin 0 -> 114688 bytes ruby/test/SideScroller.bat | 1 + ruby/test/SideScroller.rb | 240 + ruby/test/Tetris.bat | 1 + ruby/test/Tutorial.bat | 1 + ruby/test/Tutorial.rb | 102 + ruby/test/fps.bat | 1 + ruby/test/fps.rb | 313 + ruby/test/media/Beep.wav | Bin 0 -> 4338 bytes ruby/test/media/CptnRuby.png | Bin 0 -> 14436 bytes ruby/test/media/Gem.png | Bin 0 -> 7713 bytes ruby/test/media/LICENSE | 29 + ruby/test/media/Level 1.txt | 10 + ruby/test/media/Level 2.txt | 26 + ruby/test/media/Level 3.txt | 25 + ruby/test/media/Space.png | Bin 0 -> 13307 bytes ruby/test/media/Star.png | Bin 0 -> 4354 bytes ruby/test/media/Starfighter.png | Bin 0 -> 2481 bytes ruby/test/media/Tileset.png | Bin 0 -> 8683 bytes ruby/test/media/cannon.wav | Bin 0 -> 4072 bytes ruby/test/media/cursor.png | Bin 0 -> 214 bytes ruby/test/test.bat | 1 + ruby/test/test.rb | 99 + ruby/test/tetris.rb | 196 + ruby/unzip.exe | Bin 0 -> 102400 bytes ruby/zip.exe | Bin 0 -> 68096 bytes ruby/zlib/zconf.h | 332 + ruby/zlib/zlib.h | 1357 ++ ruby/zlib/zlib.lib | Bin 0 -> 104750 bytes ruby/zlib/zlib1.dll | Bin 0 -> 75264 bytes ruby/zlib/zlibd.lib | Bin 0 -> 272438 bytes samples/Makefile | 79 + samples/X11/Makefile | 18 + samples/X11/X11.cpp | 212 + samples/bin/datas/opengl/background.jpg | Bin 0 -> 133447 bytes samples/bin/datas/opengl/texture.jpg | Bin 0 -> 5922 bytes samples/bin/datas/pong/background.jpg | Bin 0 -> 90083 bytes samples/bin/datas/pong/ball.png | Bin 0 -> 249 bytes samples/bin/datas/pong/ball.wav | Bin 0 -> 15442 bytes samples/bin/datas/pong/cheeseburger.ttf | Bin 0 -> 42020 bytes samples/bin/datas/pong/paddle_left.png | Bin 0 -> 762 bytes samples/bin/datas/pong/paddle_right.png | Bin 0 -> 683 bytes samples/bin/datas/post-fx/background.jpg | Bin 0 -> 157847 bytes samples/bin/datas/post-fx/blur.sfx | 16 + samples/bin/datas/post-fx/cheeseburger.ttf | Bin 0 -> 42020 bytes samples/bin/datas/post-fx/colorize.sfx | 10 + samples/bin/datas/post-fx/fisheye.sfx | 12 + samples/bin/datas/post-fx/nothing.sfx | 6 + samples/bin/datas/post-fx/wave.jpg | Bin 0 -> 23249 bytes samples/bin/datas/post-fx/wave.sfx | 12 + samples/bin/datas/qt/sfml.png | Bin 0 -> 60446 bytes samples/bin/datas/sound/footsteps.wav | Bin 0 -> 3880844 bytes samples/bin/datas/sound/lepidoptera.ogg | Bin 0 -> 4357992 bytes samples/bin/datas/win32/image1.jpg | Bin 0 -> 25996 bytes samples/bin/datas/win32/image2.jpg | Bin 0 -> 25527 bytes samples/bin/datas/wxwidgets/sfml.png | Bin 0 -> 60446 bytes samples/bin/libsndfile-1.dll | Bin 0 -> 325120 bytes samples/bin/openal32.dll | Bin 0 -> 208896 bytes samples/build/codeblocks/ftp.cbp | 59 + samples/build/codeblocks/opengl.cbp | 69 + samples/build/codeblocks/pong.cbp | 71 + samples/build/codeblocks/postfx.cbp | 65 + samples/build/codeblocks/qt.cbp | 94 + samples/build/codeblocks/sockets.cbp | 61 + samples/build/codeblocks/sound-capture.cbp | 61 + samples/build/codeblocks/sound.cbp | 61 + samples/build/codeblocks/voip.cbp | 65 + samples/build/codeblocks/win32.cbp | 63 + samples/build/codeblocks/window.cbp | 65 + samples/build/codeblocks/wxwidgets.cbp | 89 + samples/build/vc2005/ftp.vcproj | 189 + samples/build/vc2005/opengl.vcproj | 191 + samples/build/vc2005/pong.vcproj | 185 + samples/build/vc2005/postfx.vcproj | 189 + samples/build/vc2005/qt.vcproj | 202 + samples/build/vc2005/sockets.vcproj | 197 + samples/build/vc2005/sound-capture.vcproj | 190 + samples/build/vc2005/sound.vcproj | 190 + samples/build/vc2005/voip.vcproj | 198 + samples/build/vc2005/win32.vcproj | 197 + samples/build/vc2005/window.vcproj | 190 + samples/build/vc2005/wxwidgets.vcproj | 200 + samples/build/xcode/opengl-Info.plist | 24 + samples/build/xcode/pong-Info.plist | 24 + samples/build/xcode/post-fx-Info.plist | 24 + .../xcode/samples.xcodeproj/project.pbxproj | 1384 ++ samples/build/xcode/window-Info.plist | 24 + samples/ftp/Ftp.cpp | 205 + samples/ftp/Makefile | 18 + samples/opengl/Makefile | 18 + samples/opengl/OpenGL.cpp | 143 + samples/pong/Makefile | 18 + samples/pong/Pong.cpp | 190 + samples/post-fx/Makefile | 18 + samples/post-fx/PostFX.cpp | 184 + samples/qt/Main.cpp | 107 + samples/qt/Makefile | 18 + samples/qt/QSFMLCanvas.cpp | 106 + samples/qt/QSFMLCanvas.hpp | 75 + samples/sockets/Makefile | 18 + samples/sockets/Sockets.cpp | 62 + samples/sockets/TCP.cpp | 93 + samples/sockets/UDP.cpp | 65 + samples/sound/Makefile | 18 + samples/sound/Sound.cpp | 96 + samples/sound_capture/Makefile | 18 + samples/sound_capture/SoundCapture.cpp | 94 + samples/voip/Client.cpp | 110 + samples/voip/Makefile | 18 + samples/voip/Server.cpp | 213 + samples/voip/VoIP.cpp | 49 + samples/win32/Win32.cpp | 126 + samples/window/Makefile | 18 + samples/window/Window.cpp | 118 + samples/wxwidgets/Main.cpp | 116 + samples/wxwidgets/Makefile | 18 + samples/wxwidgets/wxSFMLCanvas.cpp | 105 + samples/wxwidgets/wxSFMLCanvas.hpp | 70 + src/SFML/Audio/AudioDevice.cpp | 170 + src/SFML/Audio/AudioDevice.hpp | 122 + src/SFML/Audio/AudioResource.cpp | 60 + src/SFML/Audio/Listener.cpp | 118 + src/SFML/Audio/Makefile | 39 + src/SFML/Audio/Music.cpp | 137 + src/SFML/Audio/OpenAL.hpp | 132 + src/SFML/Audio/Sound.cpp | 335 + src/SFML/Audio/SoundBuffer.cpp | 308 + src/SFML/Audio/SoundBufferRecorder.cpp | 75 + src/SFML/Audio/SoundFile.cpp | 271 + src/SFML/Audio/SoundFile.hpp | 209 + src/SFML/Audio/SoundFileDefault.cpp | 352 + src/SFML/Audio/SoundFileDefault.hpp | 156 + src/SFML/Audio/SoundFileOgg.cpp | 182 + src/SFML/Audio/SoundFileOgg.hpp | 114 + src/SFML/Audio/SoundRecorder.cpp | 226 + src/SFML/Audio/SoundStream.cpp | 347 + src/SFML/Audio/stb_vorbis/stb_vorbis.c | 5039 ++++++ src/SFML/Audio/stb_vorbis/stb_vorbis.h | 357 + src/SFML/Graphics/Arial.hpp | 14685 ++++++++++++++++ src/SFML/Graphics/Color.cpp | 142 + src/SFML/Graphics/Drawable.cpp | 402 + src/SFML/Graphics/Font.cpp | 178 + src/SFML/Graphics/FontLoader.cpp | 423 + src/SFML/Graphics/FontLoader.hpp | 132 + src/SFML/Graphics/GLEW/glew.c | 9752 ++++++++++ src/SFML/Graphics/GLEW/glew.h | 9793 +++++++++++ src/SFML/Graphics/GLEW/glxew.h | 1062 ++ src/SFML/Graphics/GLEW/wglew.h | 934 + src/SFML/Graphics/GraphicsContext.cpp | 94 + src/SFML/Graphics/GraphicsContext.hpp | 176 + src/SFML/Graphics/Image.cpp | 760 + src/SFML/Graphics/ImageLoader.cpp | 332 + src/SFML/Graphics/ImageLoader.hpp | 143 + src/SFML/Graphics/Makefile | 47 + src/SFML/Graphics/Matrix3.cpp | 40 + src/SFML/Graphics/PostFX.cpp | 506 + src/SFML/Graphics/RenderTarget.cpp | 191 + src/SFML/Graphics/RenderWindow.cpp | 167 + src/SFML/Graphics/SOIL/SOIL.c | 145 + src/SFML/Graphics/SOIL/SOIL.h | 152 + src/SFML/Graphics/SOIL/image_DXT.c | 632 + src/SFML/Graphics/SOIL/image_DXT.h | 123 + src/SFML/Graphics/SOIL/stb_image_aug.c | 3382 ++++ src/SFML/Graphics/SOIL/stb_image_aug.h | 329 + src/SFML/Graphics/SOIL/stbi_DDS_aug.h | 21 + src/SFML/Graphics/SOIL/stbi_DDS_aug_c.h | 507 + src/SFML/Graphics/Shape.cpp | 425 + src/SFML/Graphics/Sprite.cpp | 220 + src/SFML/Graphics/String.cpp | 412 + src/SFML/Graphics/View.cpp | 208 + src/SFML/Graphics/libjpeg/cderror.h | 132 + src/SFML/Graphics/libjpeg/jcapimin.c | 280 + src/SFML/Graphics/libjpeg/jcapistd.c | 161 + src/SFML/Graphics/libjpeg/jccoefct.c | 449 + src/SFML/Graphics/libjpeg/jccolor.c | 459 + src/SFML/Graphics/libjpeg/jcdctmgr.c | 387 + src/SFML/Graphics/libjpeg/jchuff.c | 909 + src/SFML/Graphics/libjpeg/jchuff.h | 47 + src/SFML/Graphics/libjpeg/jcinit.c | 72 + src/SFML/Graphics/libjpeg/jcmainct.c | 293 + src/SFML/Graphics/libjpeg/jcmarker.c | 664 + src/SFML/Graphics/libjpeg/jcmaster.c | 590 + src/SFML/Graphics/libjpeg/jcomapi.c | 106 + src/SFML/Graphics/libjpeg/jconfig.h | 45 + src/SFML/Graphics/libjpeg/jcparam.c | 610 + src/SFML/Graphics/libjpeg/jcphuff.c | 833 + src/SFML/Graphics/libjpeg/jcprepct.c | 354 + src/SFML/Graphics/libjpeg/jcsample.c | 519 + src/SFML/Graphics/libjpeg/jctrans.c | 388 + src/SFML/Graphics/libjpeg/jdapimin.c | 395 + src/SFML/Graphics/libjpeg/jdapistd.c | 275 + src/SFML/Graphics/libjpeg/jdatadst.c | 151 + src/SFML/Graphics/libjpeg/jdatasrc.c | 212 + src/SFML/Graphics/libjpeg/jdcoefct.c | 736 + src/SFML/Graphics/libjpeg/jdcolor.c | 396 + src/SFML/Graphics/libjpeg/jdct.h | 176 + src/SFML/Graphics/libjpeg/jddctmgr.c | 269 + src/SFML/Graphics/libjpeg/jdhuff.c | 651 + src/SFML/Graphics/libjpeg/jdhuff.h | 201 + src/SFML/Graphics/libjpeg/jdinput.c | 381 + src/SFML/Graphics/libjpeg/jdmainct.c | 512 + src/SFML/Graphics/libjpeg/jdmarker.c | 1360 ++ src/SFML/Graphics/libjpeg/jdmaster.c | 557 + src/SFML/Graphics/libjpeg/jdmerge.c | 400 + src/SFML/Graphics/libjpeg/jdphuff.c | 668 + src/SFML/Graphics/libjpeg/jdpostct.c | 290 + src/SFML/Graphics/libjpeg/jdsample.c | 478 + src/SFML/Graphics/libjpeg/jdtrans.c | 143 + src/SFML/Graphics/libjpeg/jerror.c | 252 + src/SFML/Graphics/libjpeg/jerror.h | 291 + src/SFML/Graphics/libjpeg/jfdctflt.c | 168 + src/SFML/Graphics/libjpeg/jfdctfst.c | 224 + src/SFML/Graphics/libjpeg/jfdctint.c | 283 + src/SFML/Graphics/libjpeg/jidctflt.c | 242 + src/SFML/Graphics/libjpeg/jidctfst.c | 368 + src/SFML/Graphics/libjpeg/jidctint.c | 389 + src/SFML/Graphics/libjpeg/jidctred.c | 398 + src/SFML/Graphics/libjpeg/jinclude.h | 91 + src/SFML/Graphics/libjpeg/jmemmgr.c | 1118 ++ src/SFML/Graphics/libjpeg/jmemnobs.c | 109 + src/SFML/Graphics/libjpeg/jmemsys.h | 198 + src/SFML/Graphics/libjpeg/jmorecfg.h | 363 + src/SFML/Graphics/libjpeg/jpegint.h | 392 + src/SFML/Graphics/libjpeg/jpeglib.h | 1096 ++ src/SFML/Graphics/libjpeg/jquant1.c | 856 + src/SFML/Graphics/libjpeg/jquant2.c | 1310 ++ src/SFML/Graphics/libjpeg/jutils.c | 179 + src/SFML/Graphics/libjpeg/jversion.h | 14 + src/SFML/Graphics/libpng/png.c | 828 + src/SFML/Graphics/libpng/png.h | 3419 ++++ src/SFML/Graphics/libpng/pngconf.h | 1437 ++ src/SFML/Graphics/libpng/pngerror.c | 295 + src/SFML/Graphics/libpng/pnggccrd.c | 5408 ++++++ src/SFML/Graphics/libpng/pngget.c | 934 + src/SFML/Graphics/libpng/pngmem.c | 595 + src/SFML/Graphics/libpng/pngpread.c | 1573 ++ src/SFML/Graphics/libpng/pngread.c | 1456 ++ src/SFML/Graphics/libpng/pngrio.c | 161 + src/SFML/Graphics/libpng/pngrtran.c | 4177 +++++ src/SFML/Graphics/libpng/pngrutil.c | 3124 ++++ src/SFML/Graphics/libpng/pngset.c | 1219 ++ src/SFML/Graphics/libpng/pngtrans.c | 650 + src/SFML/Graphics/libpng/pngvcrd.c | 3903 ++++ src/SFML/Graphics/libpng/pngwio.c | 228 + src/SFML/Graphics/libpng/pngwrite.c | 1464 ++ src/SFML/Graphics/libpng/pngwtran.c | 563 + src/SFML/Graphics/libpng/pngwutil.c | 2730 +++ src/SFML/Graphics/zlib/adler32.c | 149 + src/SFML/Graphics/zlib/compress.c | 79 + src/SFML/Graphics/zlib/crc32.c | 423 + src/SFML/Graphics/zlib/crc32.h | 441 + src/SFML/Graphics/zlib/deflate.c | 1736 ++ src/SFML/Graphics/zlib/deflate.h | 331 + src/SFML/Graphics/zlib/inffast.c | 318 + src/SFML/Graphics/zlib/inffast.h | 11 + src/SFML/Graphics/zlib/inffixed.h | 94 + src/SFML/Graphics/zlib/inflate.c | 1368 ++ src/SFML/Graphics/zlib/inflate.h | 115 + src/SFML/Graphics/zlib/inftrees.c | 329 + src/SFML/Graphics/zlib/inftrees.h | 55 + src/SFML/Graphics/zlib/trees.c | 1219 ++ src/SFML/Graphics/zlib/trees.h | 128 + src/SFML/Graphics/zlib/uncompr.c | 61 + src/SFML/Graphics/zlib/zconf.h | 332 + src/SFML/Graphics/zlib/zlib.h | 1357 ++ src/SFML/Graphics/zlib/zutil.c | 318 + src/SFML/Graphics/zlib/zutil.h | 269 + src/SFML/Main/SFML_Main.cpp | 44 + src/SFML/Makefile | 62 + src/SFML/Network/Ftp.cpp | 709 + src/SFML/Network/Http.cpp | 425 + src/SFML/Network/IPAddress.cpp | 312 + src/SFML/Network/Makefile | 34 + src/SFML/Network/Packet.cpp | 426 + src/SFML/Network/SelectorBase.cpp | 132 + src/SFML/Network/SocketTCP.cpp | 490 + src/SFML/Network/SocketUDP.cpp | 430 + src/SFML/Network/Unix/SocketHelper.cpp | 89 + src/SFML/Network/Win32/SocketHelper.cpp | 100 + src/SFML/System/Clock.cpp | 60 + src/SFML/System/Lock.cpp | 52 + src/SFML/System/Makefile | 34 + src/SFML/System/Platform.hpp | 45 + src/SFML/System/Randomizer.cpp | 96 + src/SFML/System/Sleep.cpp | 42 + src/SFML/System/Unicode.cpp | 300 + src/SFML/System/Unix/Mutex.cpp | 68 + src/SFML/System/Unix/Platform.cpp | 58 + src/SFML/System/Unix/Platform.hpp | 69 + src/SFML/System/Unix/Thread.cpp | 146 + src/SFML/System/Win32/Mutex.cpp | 68 + src/SFML/System/Win32/Platform.cpp | 70 + src/SFML/System/Win32/Platform.hpp | 69 + src/SFML/System/Win32/Thread.cpp | 144 + src/SFML/Window/Cocoa/AppController.h | 121 + src/SFML/Window/Cocoa/AppController.mm | 599 + src/SFML/Window/Cocoa/Joystick.cpp | 78 + src/SFML/Window/Cocoa/Joystick.hpp | 82 + src/SFML/Window/Cocoa/VideoModeSupport.cpp | 101 + src/SFML/Window/Cocoa/VideoModeSupport.hpp | 69 + src/SFML/Window/Cocoa/WindowController.h | 73 + src/SFML/Window/Cocoa/WindowController.mm | 157 + src/SFML/Window/Cocoa/WindowImplCocoa.hpp | 223 + src/SFML/Window/Cocoa/WindowImplCocoa.mm | 1459 ++ src/SFML/Window/Context.cpp | 87 + src/SFML/Window/Input.cpp | 169 + src/SFML/Window/Joystick.hpp | 70 + src/SFML/Window/Linux/Joystick.cpp | 171 + src/SFML/Window/Linux/Joystick.hpp | 92 + src/SFML/Window/Linux/VideoModeSupport.cpp | 135 + src/SFML/Window/Linux/VideoModeSupport.hpp | 69 + src/SFML/Window/Linux/WindowImplX11.cpp | 1221 ++ src/SFML/Window/Linux/WindowImplX11.hpp | 277 + src/SFML/Window/Makefile | 35 + .../Template for new ports/Joystick.cpp | 74 + .../Template for new ports/Joystick.hpp | 82 + .../VideoModeSupport.cpp | 60 + .../VideoModeSupport.hpp | 69 + .../Template for new ports/WindowImplXXX.cpp | 231 + .../Template for new ports/WindowImplXXX.hpp | 167 + src/SFML/Window/VideoMode.cpp | 170 + src/SFML/Window/VideoModeSupport.hpp | 49 + src/SFML/Window/Win32/Joystick.cpp | 136 + src/SFML/Window/Win32/Joystick.hpp | 91 + src/SFML/Window/Win32/VideoModeSupport.cpp | 74 + src/SFML/Window/Win32/VideoModeSupport.hpp | 69 + src/SFML/Window/Win32/WindowImplWin32.cpp | 1151 ++ src/SFML/Window/Win32/WindowImplWin32.hpp | 266 + src/SFML/Window/Window.cpp | 440 + src/SFML/Window/WindowImpl.cpp | 252 + src/SFML/Window/WindowImpl.hpp | 306 + src/SFML/Window/glext/glext.h | 6495 +++++++ src/SFML/Window/glext/glxext.h | 706 + src/SFML/Window/glext/wglext.h | 631 + 974 files changed, 295448 insertions(+) create mode 100644 CSFML/Doxyfile create mode 100644 CSFML/Doxygen.hpp create mode 100644 CSFML/Makefile create mode 100644 CSFML/VC2005/CSFML.sln create mode 100644 CSFML/VC2005/csfml-audio-d.def create mode 100644 CSFML/VC2005/csfml-audio.def create mode 100644 CSFML/VC2005/csfml-audio.vcproj create mode 100644 CSFML/VC2005/csfml-graphics-d.def create mode 100644 CSFML/VC2005/csfml-graphics.def create mode 100644 CSFML/VC2005/csfml-graphics.vcproj create mode 100644 CSFML/VC2005/csfml-network-d.def create mode 100644 CSFML/VC2005/csfml-network.def create mode 100644 CSFML/VC2005/csfml-network.vcproj create mode 100644 CSFML/VC2005/csfml-system-d.def create mode 100644 CSFML/VC2005/csfml-system.def create mode 100644 CSFML/VC2005/csfml-system.vcproj create mode 100644 CSFML/VC2005/csfml-window-d.def create mode 100644 CSFML/VC2005/csfml-window.def create mode 100644 CSFML/VC2005/csfml-window.vcproj create mode 100644 CSFML/VC2008/CSFML.sln create mode 100644 CSFML/VC2008/csfml-audio-d.def create mode 100644 CSFML/VC2008/csfml-audio.def create mode 100644 CSFML/VC2008/csfml-audio.vcproj create mode 100644 CSFML/VC2008/csfml-graphics-d.def create mode 100644 CSFML/VC2008/csfml-graphics.def create mode 100644 CSFML/VC2008/csfml-graphics.vcproj create mode 100644 CSFML/VC2008/csfml-network-d.def create mode 100644 CSFML/VC2008/csfml-network.def create mode 100644 CSFML/VC2008/csfml-network.vcproj create mode 100644 CSFML/VC2008/csfml-system-d.def create mode 100644 CSFML/VC2008/csfml-system.def create mode 100644 CSFML/VC2008/csfml-system.vcproj create mode 100644 CSFML/VC2008/csfml-window-d.def create mode 100644 CSFML/VC2008/csfml-window.def create mode 100644 CSFML/VC2008/csfml-window.vcproj create mode 100644 CSFML/codeblocks/CSFML.workspace create mode 100644 CSFML/codeblocks/csfml-audio.cbp create mode 100644 CSFML/codeblocks/csfml-graphics.cbp create mode 100644 CSFML/codeblocks/csfml-network.cbp create mode 100644 CSFML/codeblocks/csfml-system.cbp create mode 100644 CSFML/codeblocks/csfml-window.cbp create mode 100644 CSFML/footer.htm create mode 100644 CSFML/header.htm create mode 100644 CSFML/include/SFML/Audio.h create mode 100644 CSFML/include/SFML/Audio/Listener.h create mode 100644 CSFML/include/SFML/Audio/Music.h create mode 100644 CSFML/include/SFML/Audio/Sound.h create mode 100644 CSFML/include/SFML/Audio/SoundBuffer.h create mode 100644 CSFML/include/SFML/Audio/SoundBufferRecorder.h create mode 100644 CSFML/include/SFML/Audio/SoundRecorder.h create mode 100644 CSFML/include/SFML/Audio/SoundStatus.h create mode 100644 CSFML/include/SFML/Audio/SoundStream.h create mode 100644 CSFML/include/SFML/Config.h create mode 100644 CSFML/include/SFML/Graphics.h create mode 100644 CSFML/include/SFML/Graphics/BlendMode.h create mode 100644 CSFML/include/SFML/Graphics/Color.h create mode 100644 CSFML/include/SFML/Graphics/Font.h create mode 100644 CSFML/include/SFML/Graphics/Glyph.h create mode 100644 CSFML/include/SFML/Graphics/Image.h create mode 100644 CSFML/include/SFML/Graphics/PostFX.h create mode 100644 CSFML/include/SFML/Graphics/Rect.h create mode 100644 CSFML/include/SFML/Graphics/RenderWindow.h create mode 100644 CSFML/include/SFML/Graphics/Shape.h create mode 100644 CSFML/include/SFML/Graphics/Sprite.h create mode 100644 CSFML/include/SFML/Graphics/String.h create mode 100644 CSFML/include/SFML/Graphics/View.h create mode 100644 CSFML/include/SFML/Network.h create mode 100644 CSFML/include/SFML/Network/Ftp.h create mode 100644 CSFML/include/SFML/Network/Http.h create mode 100644 CSFML/include/SFML/Network/IPAddress.h create mode 100644 CSFML/include/SFML/Network/Packet.h create mode 100644 CSFML/include/SFML/Network/Selector.h create mode 100644 CSFML/include/SFML/Network/SocketStatus.h create mode 100644 CSFML/include/SFML/Network/SocketTCP.h create mode 100644 CSFML/include/SFML/Network/SocketUDP.h create mode 100644 CSFML/include/SFML/System.h create mode 100644 CSFML/include/SFML/System/Clock.h create mode 100644 CSFML/include/SFML/System/Mutex.h create mode 100644 CSFML/include/SFML/System/Randomizer.h create mode 100644 CSFML/include/SFML/System/Sleep.h create mode 100644 CSFML/include/SFML/System/Thread.h create mode 100644 CSFML/include/SFML/Window.h create mode 100644 CSFML/include/SFML/Window/Context.h create mode 100644 CSFML/include/SFML/Window/Event.h create mode 100644 CSFML/include/SFML/Window/Input.h create mode 100644 CSFML/include/SFML/Window/VideoMode.h create mode 100644 CSFML/include/SFML/Window/Window.h create mode 100644 CSFML/include/SFML/Window/WindowHandle.h create mode 100644 CSFML/src/SFML/Audio/Listener.cpp create mode 100644 CSFML/src/SFML/Audio/Makefile create mode 100644 CSFML/src/SFML/Audio/Music.cpp create mode 100644 CSFML/src/SFML/Audio/Sound.cpp create mode 100644 CSFML/src/SFML/Audio/SoundBuffer.cpp create mode 100644 CSFML/src/SFML/Audio/SoundBufferRecorder.cpp create mode 100644 CSFML/src/SFML/Audio/SoundRecorder.cpp create mode 100644 CSFML/src/SFML/Audio/SoundStream.cpp create mode 100644 CSFML/src/SFML/Graphics/Color.cpp create mode 100644 CSFML/src/SFML/Graphics/Font.cpp create mode 100644 CSFML/src/SFML/Graphics/Image.cpp create mode 100644 CSFML/src/SFML/Graphics/Makefile create mode 100644 CSFML/src/SFML/Graphics/PostFX.cpp create mode 100644 CSFML/src/SFML/Graphics/Rect.cpp create mode 100644 CSFML/src/SFML/Graphics/RenderWindow.cpp create mode 100644 CSFML/src/SFML/Graphics/Shape.cpp create mode 100644 CSFML/src/SFML/Graphics/Sprite.cpp create mode 100644 CSFML/src/SFML/Graphics/String.cpp create mode 100644 CSFML/src/SFML/Graphics/View.cpp create mode 100644 CSFML/src/SFML/Internal.h create mode 100644 CSFML/src/SFML/Makefile create mode 100644 CSFML/src/SFML/Network/Ftp.cpp create mode 100644 CSFML/src/SFML/Network/Http.cpp create mode 100644 CSFML/src/SFML/Network/IPAddress.cpp create mode 100644 CSFML/src/SFML/Network/Makefile create mode 100644 CSFML/src/SFML/Network/Packet.cpp create mode 100644 CSFML/src/SFML/Network/Selector.cpp create mode 100644 CSFML/src/SFML/Network/SocketTCP.cpp create mode 100644 CSFML/src/SFML/Network/SocketUDP.cpp create mode 100644 CSFML/src/SFML/System/Clock.cpp create mode 100644 CSFML/src/SFML/System/Makefile create mode 100644 CSFML/src/SFML/System/Mutex.cpp create mode 100644 CSFML/src/SFML/System/Randomizer.cpp create mode 100644 CSFML/src/SFML/System/Sleep.cpp create mode 100644 CSFML/src/SFML/System/Thread.cpp create mode 100644 CSFML/src/SFML/Window/Context.cpp create mode 100644 CSFML/src/SFML/Window/Input.cpp create mode 100644 CSFML/src/SFML/Window/Makefile create mode 100644 CSFML/src/SFML/Window/VideoMode.cpp create mode 100644 CSFML/src/SFML/Window/Window.cpp create mode 100644 DSFML/AUTHORS create mode 100644 DSFML/LICENCE create mode 100644 DSFML/import/dsfml/audio/all.d create mode 100644 DSFML/import/dsfml/audio/listener.d create mode 100644 DSFML/import/dsfml/audio/music.d create mode 100644 DSFML/import/dsfml/audio/sound.d create mode 100644 DSFML/import/dsfml/audio/soundbuffer.d create mode 100644 DSFML/import/dsfml/audio/soundbufferrecorder.d create mode 100644 DSFML/import/dsfml/audio/soundrecorder.d create mode 100644 DSFML/import/dsfml/audio/soundstatus.d create mode 100644 DSFML/import/dsfml/audio/soundstream.d create mode 100644 DSFML/import/dsfml/graphics/all.d create mode 100644 DSFML/import/dsfml/graphics/blendmode.d create mode 100644 DSFML/import/dsfml/graphics/color.d create mode 100644 DSFML/import/dsfml/graphics/drawableimpl.d create mode 100644 DSFML/import/dsfml/graphics/font.d create mode 100644 DSFML/import/dsfml/graphics/idrawable.d create mode 100644 DSFML/import/dsfml/graphics/image.d create mode 100644 DSFML/import/dsfml/graphics/postfx.d create mode 100644 DSFML/import/dsfml/graphics/rect.d create mode 100644 DSFML/import/dsfml/graphics/renderwindow.d create mode 100644 DSFML/import/dsfml/graphics/shape.d create mode 100644 DSFML/import/dsfml/graphics/sprite.d create mode 100644 DSFML/import/dsfml/graphics/string.d create mode 100644 DSFML/import/dsfml/graphics/textstyle.d create mode 100644 DSFML/import/dsfml/graphics/view.d create mode 100644 DSFML/import/dsfml/network/all.d create mode 100644 DSFML/import/dsfml/network/ftp.d create mode 100644 DSFML/import/dsfml/network/http.d create mode 100644 DSFML/import/dsfml/network/ipaddress.d create mode 100644 DSFML/import/dsfml/network/packet.d create mode 100644 DSFML/import/dsfml/network/selector.d create mode 100644 DSFML/import/dsfml/network/socketstatus.d create mode 100644 DSFML/import/dsfml/network/sockettcp.d create mode 100644 DSFML/import/dsfml/network/socketudp.d create mode 100644 DSFML/import/dsfml/system/all.d create mode 100644 DSFML/import/dsfml/system/alloc.d create mode 100644 DSFML/import/dsfml/system/clock.d create mode 100644 DSFML/import/dsfml/system/common.d create mode 100644 DSFML/import/dsfml/system/dllloader.d create mode 100644 DSFML/import/dsfml/system/exception.d create mode 100644 DSFML/import/dsfml/system/linkedlist.d create mode 100644 DSFML/import/dsfml/system/lock.d create mode 100644 DSFML/import/dsfml/system/mutex.d create mode 100644 DSFML/import/dsfml/system/randomizer.d create mode 100644 DSFML/import/dsfml/system/sleep.d create mode 100644 DSFML/import/dsfml/system/stringutil.d create mode 100644 DSFML/import/dsfml/system/thread.d create mode 100644 DSFML/import/dsfml/system/vector2.d create mode 100644 DSFML/import/dsfml/system/vector3.d create mode 100644 DSFML/import/dsfml/window/all.d create mode 100644 DSFML/import/dsfml/window/event.d create mode 100644 DSFML/import/dsfml/window/input.d create mode 100644 DSFML/import/dsfml/window/videomode.d create mode 100644 DSFML/import/dsfml/window/window.d create mode 100644 DSFML/import/dsfml/window/windowhandle.d create mode 100644 DSFML/import/dsfml/window/windowsettings.d create mode 100644 DSFML/import/dsfml/window/windowstyle.d create mode 100644 DSFML/import/dsss.conf create mode 100644 DSFML/samples/dsfml/bin/Data/background.jpg create mode 100644 DSFML/samples/dsfml/bin/Data/ball.tga create mode 100644 DSFML/samples/dsfml/bin/Data/ball.wav create mode 100644 DSFML/samples/dsfml/bin/Data/bluerallyecarleft.bmp create mode 100644 DSFML/samples/dsfml/bin/Data/bluerallyecarright.bmp create mode 100644 DSFML/samples/dsfml/bin/Data/blur.sfx create mode 100644 DSFML/samples/dsfml/bin/Data/car_idle.wav create mode 100644 DSFML/samples/dsfml/bin/Data/cheeseburger.ttf create mode 100644 DSFML/samples/dsfml/bin/Data/colorize.sfx create mode 100644 DSFML/samples/dsfml/bin/Data/crosshair.bmp create mode 100644 DSFML/samples/dsfml/bin/Data/crosshair.tga create mode 100644 DSFML/samples/dsfml/bin/Data/fisheye.sfx create mode 100644 DSFML/samples/dsfml/bin/Data/nothing.sfx create mode 100644 DSFML/samples/dsfml/bin/Data/paddle.tga create mode 100644 DSFML/samples/dsfml/bin/Data/wave.jpg create mode 100644 DSFML/samples/dsfml/bin/Data/wave.sfx create mode 100644 DSFML/samples/dsfml/bin/libsndfile-1.dll create mode 100644 DSFML/samples/dsfml/bin/openal32.dll create mode 100644 DSFML/samples/dsfml/dfl/DFLSample.d create mode 100644 DSFML/samples/dsfml/dsss.conf create mode 100644 DSFML/samples/dsfml/pong/pong.d create mode 100644 DSFML/samples/dsfml/postFX/postFX.d create mode 100644 DSFML/samples/dsfml/socket/socketclient.d create mode 100644 DSFML/samples/dsfml/socket/socketserver.d create mode 100644 DSFML/samples/dsfml/sound3d/sound3d.d create mode 100644 DSFML/samples/dsfml/soundstream/soundstream.d create mode 100644 DSFML/samples/dsfml/view/view.d create mode 100644 DSFML/samples/dsfml/voip/client.d create mode 100644 DSFML/samples/dsfml/voip/entry.d create mode 100644 DSFML/samples/dsfml/voip/server.d create mode 100644 DSFML/samples/dsfml/voip/util.d create mode 100644 Doxyfile create mode 100644 Doxygen.hpp create mode 100644 Makefile create mode 100644 build/codeblocks/SFML.workspace create mode 100644 build/codeblocks/sfml-audio.cbp create mode 100644 build/codeblocks/sfml-graphics.cbp create mode 100644 build/codeblocks/sfml-main.cbp create mode 100644 build/codeblocks/sfml-network.cbp create mode 100644 build/codeblocks/sfml-system.cbp create mode 100644 build/codeblocks/sfml-window.cbp create mode 100644 build/vc2005/SFML.sln create mode 100644 build/vc2005/sfml-audio.vcproj create mode 100644 build/vc2005/sfml-graphics.vcproj create mode 100644 build/vc2005/sfml-main.vcproj create mode 100644 build/vc2005/sfml-network.vcproj create mode 100644 build/vc2005/sfml-system.vcproj create mode 100644 build/vc2005/sfml-window.vcproj create mode 100644 build/vc2008/SFML.sln create mode 100644 build/vc2008/sfml-audio.vcproj create mode 100644 build/vc2008/sfml-graphics.vcproj create mode 100644 build/vc2008/sfml-main.vcproj create mode 100644 build/vc2008/sfml-network.vcproj create mode 100644 build/vc2008/sfml-system.vcproj create mode 100644 build/vc2008/sfml-window.vcproj create mode 100644 build/xcode/SFML-Info.plist create mode 100644 build/xcode/SFML-bare.xcodeproj/project.pbxproj create mode 100644 build/xcode/SFML.xcodeproj/project.pbxproj create mode 100644 build/xcode/dummy.cpp create mode 100644 build/xcode/sfml-audio-Info.plist create mode 100644 build/xcode/sfml-graphics-Info.plist create mode 100644 build/xcode/sfml-network-Info.plist create mode 100644 build/xcode/sfml-system-Info.plist create mode 100644 build/xcode/sfml-window-Info.plist create mode 100644 build/xcode/templates/SFML Graphics-based Application/Info.plist create mode 100644 build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateIcon.icns create mode 100755 build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateInfo.plist create mode 100644 build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/project.pbxproj create mode 100644 build/xcode/templates/SFML Graphics-based Application/main.cpp create mode 100644 build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateIcon.icns create mode 100755 build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateInfo.plist create mode 100644 build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/project.pbxproj create mode 100644 build/xcode/templates/SFML Tool/main.cpp create mode 100644 build/xcode/templates/SFML Window-based Application/Info.plist create mode 100644 build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateIcon.icns create mode 100755 build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateInfo.plist create mode 100644 build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/project.pbxproj create mode 100644 build/xcode/templates/SFML Window-based Application/main.cpp create mode 100644 dotnet/MainPage.html create mode 100644 dotnet/SFML.ndoc create mode 100644 dotnet/build/vc2005/SFML.net.sln create mode 100644 dotnet/extlibs/csfml-audio.dll create mode 100644 dotnet/extlibs/csfml-graphics.dll create mode 100644 dotnet/extlibs/csfml-window.dll create mode 100644 dotnet/extlibs/libsndfile-1.dll create mode 100644 dotnet/extlibs/openal32.dll create mode 100644 dotnet/samples/bin/datas/opengl/background.jpg create mode 100644 dotnet/samples/bin/datas/opengl/texture.jpg create mode 100644 dotnet/samples/bin/datas/post-fx/background.jpg create mode 100644 dotnet/samples/bin/datas/post-fx/blur.sfx create mode 100644 dotnet/samples/bin/datas/post-fx/cheeseburger.ttf create mode 100644 dotnet/samples/bin/datas/post-fx/colorize.sfx create mode 100644 dotnet/samples/bin/datas/post-fx/fisheye.sfx create mode 100644 dotnet/samples/bin/datas/post-fx/nothing.sfx create mode 100644 dotnet/samples/bin/datas/post-fx/wave.jpg create mode 100644 dotnet/samples/bin/datas/post-fx/wave.sfx create mode 100644 dotnet/samples/bin/datas/sound/footsteps.wav create mode 100644 dotnet/samples/bin/datas/sound/lepidoptera.ogg create mode 100644 dotnet/samples/opengl/OpenGL.cs create mode 100644 dotnet/samples/opengl/sample-opengl.csproj create mode 100644 dotnet/samples/post-fx/PostFx.cs create mode 100644 dotnet/samples/post-fx/sample-postfx.csproj create mode 100644 dotnet/samples/sound/Sound.cs create mode 100644 dotnet/samples/sound/sample-sound.csproj create mode 100644 dotnet/samples/sound_capture/SoundCapture.cs create mode 100644 dotnet/samples/sound_capture/sample-soundcapture.csproj create mode 100644 dotnet/samples/visualbasic/My Project/Application.Designer.vb create mode 100644 dotnet/samples/visualbasic/My Project/Application.myapp create mode 100644 dotnet/samples/visualbasic/My Project/AssemblyInfo.vb create mode 100644 dotnet/samples/visualbasic/My Project/Resources.Designer.vb create mode 100644 dotnet/samples/visualbasic/My Project/Resources.resx create mode 100644 dotnet/samples/visualbasic/My Project/Settings.Designer.vb create mode 100644 dotnet/samples/visualbasic/My Project/Settings.settings create mode 100644 dotnet/samples/visualbasic/OpenGL.vb create mode 100644 dotnet/samples/visualbasic/visualbasic.sln create mode 100644 dotnet/samples/visualbasic/visualbasic.vbproj create mode 100644 dotnet/samples/window/Window.cs create mode 100644 dotnet/samples/window/sample-window.csproj create mode 100644 dotnet/src/Audio/Listener.cs create mode 100644 dotnet/src/Audio/Music.cs create mode 100644 dotnet/src/Audio/Sound.cs create mode 100644 dotnet/src/Audio/SoundBuffer.cs create mode 100644 dotnet/src/Audio/SoundBufferRecorder.cs create mode 100644 dotnet/src/Audio/SoundRecorder.cs create mode 100644 dotnet/src/Audio/SoundStream.cs create mode 100644 dotnet/src/Audio/Vector3.cs create mode 100644 dotnet/src/Audio/sfml-audio.csproj create mode 100644 dotnet/src/Graphics/Color.cs create mode 100644 dotnet/src/Graphics/Context.cs create mode 100644 dotnet/src/Graphics/Drawable.cs create mode 100644 dotnet/src/Graphics/Font.cs create mode 100644 dotnet/src/Graphics/Image.cs create mode 100644 dotnet/src/Graphics/PostFx.cs create mode 100644 dotnet/src/Graphics/Rect.cs create mode 100644 dotnet/src/Graphics/RenderWindow.cs create mode 100644 dotnet/src/Graphics/Shape.cs create mode 100644 dotnet/src/Graphics/Sprite.cs create mode 100644 dotnet/src/Graphics/String2D.cs create mode 100644 dotnet/src/Graphics/Vector2.cs create mode 100644 dotnet/src/Graphics/View.cs create mode 100644 dotnet/src/Graphics/sfml-graphics.csproj create mode 100644 dotnet/src/Window/Event.cs create mode 100644 dotnet/src/Window/EventArgs.cs create mode 100644 dotnet/src/Window/Input.cs create mode 100644 dotnet/src/Window/LoadingFailedException.cs create mode 100644 dotnet/src/Window/ObjectBase.cs create mode 100644 dotnet/src/Window/VideoMode.cs create mode 100644 dotnet/src/Window/Window.cs create mode 100644 dotnet/src/Window/WindowSettings.cs create mode 100644 dotnet/src/Window/sfml-window.csproj create mode 100644 doxygen.css create mode 100644 extlibs/bin/libsndfile-1.dll create mode 100644 extlibs/bin/openal32.dll create mode 100644 extlibs/headers/AL/al.h create mode 100644 extlibs/headers/AL/alc.h create mode 100644 extlibs/headers/AL/alext.h create mode 100644 extlibs/headers/freetype/cache/ftccache.h create mode 100644 extlibs/headers/freetype/cache/ftccmap.h create mode 100644 extlibs/headers/freetype/cache/ftcglyph.h create mode 100644 extlibs/headers/freetype/cache/ftcimage.h create mode 100644 extlibs/headers/freetype/cache/ftcmanag.h create mode 100644 extlibs/headers/freetype/cache/ftcmru.h create mode 100644 extlibs/headers/freetype/cache/ftcsbits.h create mode 100644 extlibs/headers/freetype/config/ftconfig.h create mode 100644 extlibs/headers/freetype/config/ftheader.h create mode 100644 extlibs/headers/freetype/config/ftmodule.h create mode 100644 extlibs/headers/freetype/config/ftoption.h create mode 100644 extlibs/headers/freetype/config/ftstdlib.h create mode 100644 extlibs/headers/freetype/freetype.h create mode 100644 extlibs/headers/freetype/ft2build.h create mode 100644 extlibs/headers/freetype/ftbbox.h create mode 100644 extlibs/headers/freetype/ftbdf.h create mode 100644 extlibs/headers/freetype/ftbitmap.h create mode 100644 extlibs/headers/freetype/ftcache.h create mode 100644 extlibs/headers/freetype/ftchapters.h create mode 100644 extlibs/headers/freetype/fterrdef.h create mode 100644 extlibs/headers/freetype/fterrors.h create mode 100644 extlibs/headers/freetype/ftglyph.h create mode 100644 extlibs/headers/freetype/ftgzip.h create mode 100644 extlibs/headers/freetype/ftimage.h create mode 100644 extlibs/headers/freetype/ftincrem.h create mode 100644 extlibs/headers/freetype/ftlist.h create mode 100644 extlibs/headers/freetype/ftlzw.h create mode 100644 extlibs/headers/freetype/ftmac.h create mode 100644 extlibs/headers/freetype/ftmm.h create mode 100644 extlibs/headers/freetype/ftmodapi.h create mode 100644 extlibs/headers/freetype/ftmoderr.h create mode 100644 extlibs/headers/freetype/ftotval.h create mode 100644 extlibs/headers/freetype/ftoutln.h create mode 100644 extlibs/headers/freetype/ftpfr.h create mode 100644 extlibs/headers/freetype/ftrender.h create mode 100644 extlibs/headers/freetype/ftsizes.h create mode 100644 extlibs/headers/freetype/ftsnames.h create mode 100644 extlibs/headers/freetype/ftstroke.h create mode 100644 extlibs/headers/freetype/ftsynth.h create mode 100644 extlibs/headers/freetype/ftsysio.h create mode 100644 extlibs/headers/freetype/ftsysmem.h create mode 100644 extlibs/headers/freetype/ftsystem.h create mode 100644 extlibs/headers/freetype/fttrigon.h create mode 100644 extlibs/headers/freetype/fttypes.h create mode 100644 extlibs/headers/freetype/ftwinfnt.h create mode 100644 extlibs/headers/freetype/ftxf86.h create mode 100644 extlibs/headers/freetype/internal/autohint.h create mode 100644 extlibs/headers/freetype/internal/ftcalc.h create mode 100644 extlibs/headers/freetype/internal/ftdebug.h create mode 100644 extlibs/headers/freetype/internal/ftdriver.h create mode 100644 extlibs/headers/freetype/internal/ftgloadr.h create mode 100644 extlibs/headers/freetype/internal/ftmemory.h create mode 100644 extlibs/headers/freetype/internal/ftobjs.h create mode 100644 extlibs/headers/freetype/internal/ftrfork.h create mode 100644 extlibs/headers/freetype/internal/ftserv.h create mode 100644 extlibs/headers/freetype/internal/ftstream.h create mode 100644 extlibs/headers/freetype/internal/fttrace.h create mode 100644 extlibs/headers/freetype/internal/ftvalid.h create mode 100644 extlibs/headers/freetype/internal/internal.h create mode 100644 extlibs/headers/freetype/internal/pcftypes.h create mode 100644 extlibs/headers/freetype/internal/psaux.h create mode 100644 extlibs/headers/freetype/internal/pshints.h create mode 100644 extlibs/headers/freetype/internal/sfnt.h create mode 100644 extlibs/headers/freetype/internal/svbdf.h create mode 100644 extlibs/headers/freetype/internal/svgldict.h create mode 100644 extlibs/headers/freetype/internal/svmm.h create mode 100644 extlibs/headers/freetype/internal/svotval.h create mode 100644 extlibs/headers/freetype/internal/svpfr.h create mode 100644 extlibs/headers/freetype/internal/svpostnm.h create mode 100644 extlibs/headers/freetype/internal/svpscmap.h create mode 100644 extlibs/headers/freetype/internal/svpsinfo.h create mode 100644 extlibs/headers/freetype/internal/svsfnt.h create mode 100644 extlibs/headers/freetype/internal/svttcmap.h create mode 100644 extlibs/headers/freetype/internal/svwinfnt.h create mode 100644 extlibs/headers/freetype/internal/svxf86nm.h create mode 100644 extlibs/headers/freetype/internal/t1types.h create mode 100644 extlibs/headers/freetype/internal/tttypes.h create mode 100644 extlibs/headers/freetype/t1tables.h create mode 100644 extlibs/headers/freetype/ttnameid.h create mode 100644 extlibs/headers/freetype/tttables.h create mode 100644 extlibs/headers/freetype/tttags.h create mode 100644 extlibs/headers/freetype/ttunpat.h create mode 100644 extlibs/headers/ft2build.h create mode 100644 extlibs/headers/sndfile.h create mode 100644 extlibs/libs-mingw/libfreetype.a create mode 100644 extlibs/libs-mingw/libopenal32.a create mode 100644 extlibs/libs-mingw/libsndfile.a create mode 100644 extlibs/libs-vc2005/OpenAL32.lib create mode 100644 extlibs/libs-vc2005/freetype.lib create mode 100644 extlibs/libs-vc2005/sndfile.lib create mode 100644 extlibs/libs-xcode/libfreetype.a create mode 100644 extlibs/libs-xcode/libsndfile.a create mode 100644 footer.htm create mode 100644 header.htm create mode 100644 include/SFML/Audio.hpp create mode 100644 include/SFML/Audio/AudioResource.hpp create mode 100644 include/SFML/Audio/Listener.hpp create mode 100644 include/SFML/Audio/Music.hpp create mode 100644 include/SFML/Audio/Sound.hpp create mode 100644 include/SFML/Audio/SoundBuffer.hpp create mode 100644 include/SFML/Audio/SoundBufferRecorder.hpp create mode 100644 include/SFML/Audio/SoundRecorder.hpp create mode 100644 include/SFML/Audio/SoundStream.hpp create mode 100644 include/SFML/Config.hpp create mode 100644 include/SFML/Graphics.hpp create mode 100644 include/SFML/Graphics/Color.hpp create mode 100644 include/SFML/Graphics/Drawable.hpp create mode 100644 include/SFML/Graphics/Font.hpp create mode 100644 include/SFML/Graphics/Glyph.hpp create mode 100644 include/SFML/Graphics/Image.hpp create mode 100644 include/SFML/Graphics/Matrix3.hpp create mode 100644 include/SFML/Graphics/Matrix3.inl create mode 100644 include/SFML/Graphics/PostFX.hpp create mode 100644 include/SFML/Graphics/Rect.hpp create mode 100644 include/SFML/Graphics/Rect.inl create mode 100644 include/SFML/Graphics/RenderTarget.hpp create mode 100644 include/SFML/Graphics/RenderWindow.hpp create mode 100644 include/SFML/Graphics/Shape.hpp create mode 100644 include/SFML/Graphics/Sprite.hpp create mode 100644 include/SFML/Graphics/String.hpp create mode 100644 include/SFML/Graphics/View.hpp create mode 100644 include/SFML/Network.hpp create mode 100644 include/SFML/Network/Ftp.hpp create mode 100644 include/SFML/Network/Http.hpp create mode 100644 include/SFML/Network/IPAddress.hpp create mode 100644 include/SFML/Network/Packet.hpp create mode 100644 include/SFML/Network/Selector.hpp create mode 100644 include/SFML/Network/Selector.inl create mode 100644 include/SFML/Network/SelectorBase.hpp create mode 100644 include/SFML/Network/SocketHelper.hpp create mode 100644 include/SFML/Network/SocketTCP.hpp create mode 100644 include/SFML/Network/SocketUDP.hpp create mode 100644 include/SFML/Network/Sockets.hpp create mode 100644 include/SFML/Network/Unix/SocketHelper.hpp create mode 100644 include/SFML/Network/Win32/SocketHelper.hpp create mode 100644 include/SFML/System.hpp create mode 100644 include/SFML/System/Clock.hpp create mode 100644 include/SFML/System/Lock.hpp create mode 100644 include/SFML/System/Mutex.hpp create mode 100644 include/SFML/System/NonCopyable.hpp create mode 100644 include/SFML/System/Randomizer.hpp create mode 100644 include/SFML/System/Resource.hpp create mode 100644 include/SFML/System/Resource.inl create mode 100644 include/SFML/System/ResourcePtr.inl create mode 100644 include/SFML/System/Sleep.hpp create mode 100644 include/SFML/System/Thread.hpp create mode 100644 include/SFML/System/Unicode.hpp create mode 100644 include/SFML/System/Unicode.inl create mode 100644 include/SFML/System/Unix/Mutex.hpp create mode 100644 include/SFML/System/Unix/Thread.hpp create mode 100644 include/SFML/System/Vector2.hpp create mode 100644 include/SFML/System/Vector2.inl create mode 100644 include/SFML/System/Vector3.hpp create mode 100644 include/SFML/System/Vector3.inl create mode 100644 include/SFML/System/Win32/Mutex.hpp create mode 100644 include/SFML/System/Win32/Thread.hpp create mode 100644 include/SFML/Window.hpp create mode 100644 include/SFML/Window/Context.hpp create mode 100644 include/SFML/Window/Event.hpp create mode 100644 include/SFML/Window/Input.hpp create mode 100644 include/SFML/Window/OpenGL.hpp create mode 100644 include/SFML/Window/VideoMode.hpp create mode 100644 include/SFML/Window/Window.hpp create mode 100644 include/SFML/Window/WindowHandle.hpp create mode 100644 include/SFML/Window/WindowListener.hpp create mode 100644 include/SFML/Window/WindowSettings.hpp create mode 100644 include/SFML/Window/WindowStyle.hpp create mode 100644 license.txt create mode 100644 python/MANIFEST.in create mode 100644 python/PKG-INFO create mode 100644 python/PySFML/__init__.py create mode 100644 python/doc/style.css create mode 100644 python/samples/data/apple.png create mode 100644 python/samples/data/fart.wav create mode 100644 python/samples/data/rond2.png create mode 100644 python/samples/libsndfile-1.dll create mode 100644 python/samples/opengl.py create mode 100644 python/samples/sound.py create mode 100644 python/samples/sound_capture.py create mode 100755 python/samples/sound_stream.py create mode 100644 python/samples/worm.py create mode 100644 python/scripts/footer.htm create mode 100755 python/scripts/gen_doc.py create mode 100644 python/scripts/header.htm create mode 100644 python/setup.py create mode 100644 python/src/Blend.cpp create mode 100644 python/src/Blend.hpp create mode 100644 python/src/Clock.cpp create mode 100644 python/src/Clock.hpp create mode 100644 python/src/Color.cpp create mode 100644 python/src/Color.hpp create mode 100644 python/src/Drawable.cpp create mode 100644 python/src/Drawable.hpp create mode 100644 python/src/Event.cpp create mode 100644 python/src/Event.hpp create mode 100644 python/src/Font.cpp create mode 100644 python/src/Font.hpp create mode 100644 python/src/Glyph.cpp create mode 100644 python/src/Glyph.hpp create mode 100644 python/src/Image.cpp create mode 100644 python/src/Image.hpp create mode 100644 python/src/Input.cpp create mode 100644 python/src/Input.hpp create mode 100644 python/src/Joy.cpp create mode 100644 python/src/Joy.hpp create mode 100644 python/src/Key.cpp create mode 100644 python/src/Key.hpp create mode 100644 python/src/Listener.cpp create mode 100644 python/src/Listener.hpp create mode 100644 python/src/Mouse.cpp create mode 100644 python/src/Mouse.hpp create mode 100644 python/src/Music.cpp create mode 100644 python/src/Music.hpp create mode 100644 python/src/PostFX.cpp create mode 100644 python/src/PostFX.hpp create mode 100644 python/src/Rect.cpp create mode 100644 python/src/Rect.hpp create mode 100644 python/src/RenderWindow.cpp create mode 100644 python/src/RenderWindow.hpp create mode 100644 python/src/Shape.cpp create mode 100644 python/src/Shape.hpp create mode 100644 python/src/Sleep.cpp create mode 100644 python/src/Sleep.hpp create mode 100644 python/src/Sound.cpp create mode 100644 python/src/Sound.hpp create mode 100644 python/src/SoundBuffer.cpp create mode 100644 python/src/SoundBuffer.hpp create mode 100644 python/src/SoundBufferRecorder.cpp create mode 100644 python/src/SoundBufferRecorder.hpp create mode 100644 python/src/SoundRecorder.cpp create mode 100644 python/src/SoundRecorder.hpp create mode 100644 python/src/SoundStream.cpp create mode 100644 python/src/SoundStream.hpp create mode 100644 python/src/Sprite.cpp create mode 100644 python/src/Sprite.hpp create mode 100644 python/src/String.cpp create mode 100644 python/src/String.hpp create mode 100644 python/src/VideoMode.cpp create mode 100644 python/src/VideoMode.hpp create mode 100644 python/src/View.cpp create mode 100644 python/src/View.hpp create mode 100644 python/src/Window.cpp create mode 100644 python/src/Window.hpp create mode 100644 python/src/WindowSettings.cpp create mode 100644 python/src/WindowSettings.hpp create mode 100644 python/src/WindowStyle.cpp create mode 100644 python/src/WindowStyle.hpp create mode 100644 python/src/main.cpp create mode 100644 python/src/main.hpp create mode 100644 python/src/offsetof.hpp create mode 100644 ruby/LICENSE.txt create mode 100644 ruby/README-EN.txt create mode 100644 ruby/README-FR.txt create mode 100644 ruby/Rakefile create mode 100644 ruby/RubyOpenGL/common/common.h create mode 100644 ruby/RubyOpenGL/common/gl-enums.h create mode 100644 ruby/RubyOpenGL/gl/extconf.rb create mode 100644 ruby/RubyOpenGL/gl/gl-1.0-1.1.c create mode 100644 ruby/RubyOpenGL/gl/gl-1.2.c create mode 100644 ruby/RubyOpenGL/gl/gl-1.3.c create mode 100644 ruby/RubyOpenGL/gl/gl-1.4.c create mode 100644 ruby/RubyOpenGL/gl/gl-1.5.c create mode 100644 ruby/RubyOpenGL/gl/gl-2.0.c create mode 100644 ruby/RubyOpenGL/gl/gl-2.1.c create mode 100644 ruby/RubyOpenGL/gl/gl-enums.c create mode 100644 ruby/RubyOpenGL/gl/gl.c create mode 100644 ruby/RubyOpenGL/glu/extconf.rb create mode 100644 ruby/RubyOpenGL/glu/glu.c create mode 100644 ruby/RubySFML/RubySFML.cpp create mode 100644 ruby/RubySFML/RubySFML.h create mode 100644 ruby/RubySFML/RubySFML.rb create mode 100644 ruby/RubySFML/extconf-linux.rb create mode 100644 ruby/RubySFML/extconf-win.rb create mode 100644 ruby/RubySFML/ruby_helper.h create mode 100644 ruby/RubySFML/sfClock.cpp create mode 100644 ruby/RubySFML/sfColor.cpp create mode 100644 ruby/RubySFML/sfDrawable.cpp create mode 100644 ruby/RubySFML/sfEvent.cpp create mode 100644 ruby/RubySFML/sfFloatRect.cpp create mode 100644 ruby/RubySFML/sfImage.cpp create mode 100644 ruby/RubySFML/sfInput.cpp create mode 100644 ruby/RubySFML/sfIntRect.cpp create mode 100644 ruby/RubySFML/sfMusic.cpp create mode 100644 ruby/RubySFML/sfPostFX.cpp create mode 100644 ruby/RubySFML/sfRenderWindow.cpp create mode 100644 ruby/RubySFML/sfSound.cpp create mode 100644 ruby/RubySFML/sfSoundBuffer.cpp create mode 100644 ruby/RubySFML/sfSoundBufferRecorder.cpp create mode 100644 ruby/RubySFML/sfSprite.cpp create mode 100644 ruby/RubySFML/sfString.cpp create mode 100644 ruby/RubySFML/sfVideoMode.cpp create mode 100644 ruby/RubySFML/sfView.cpp create mode 100644 ruby/RubySFML/sfWindow.cpp create mode 100644 ruby/doc/Reference-en.html create mode 100644 ruby/doc/Reference-fr.html create mode 100644 ruby/gzip.exe create mode 100644 ruby/rubygems-0.9.4.zip create mode 100644 ruby/tar.exe create mode 100644 ruby/test/SideScroller.bat create mode 100644 ruby/test/SideScroller.rb create mode 100644 ruby/test/Tetris.bat create mode 100644 ruby/test/Tutorial.bat create mode 100644 ruby/test/Tutorial.rb create mode 100644 ruby/test/fps.bat create mode 100644 ruby/test/fps.rb create mode 100644 ruby/test/media/Beep.wav create mode 100644 ruby/test/media/CptnRuby.png create mode 100644 ruby/test/media/Gem.png create mode 100644 ruby/test/media/LICENSE create mode 100644 ruby/test/media/Level 1.txt create mode 100644 ruby/test/media/Level 2.txt create mode 100644 ruby/test/media/Level 3.txt create mode 100644 ruby/test/media/Space.png create mode 100644 ruby/test/media/Star.png create mode 100644 ruby/test/media/Starfighter.png create mode 100644 ruby/test/media/Tileset.png create mode 100644 ruby/test/media/cannon.wav create mode 100644 ruby/test/media/cursor.png create mode 100644 ruby/test/test.bat create mode 100644 ruby/test/test.rb create mode 100644 ruby/test/tetris.rb create mode 100644 ruby/unzip.exe create mode 100644 ruby/zip.exe create mode 100644 ruby/zlib/zconf.h create mode 100644 ruby/zlib/zlib.h create mode 100644 ruby/zlib/zlib.lib create mode 100644 ruby/zlib/zlib1.dll create mode 100644 ruby/zlib/zlibd.lib create mode 100644 samples/Makefile create mode 100644 samples/X11/Makefile create mode 100644 samples/X11/X11.cpp create mode 100644 samples/bin/datas/opengl/background.jpg create mode 100644 samples/bin/datas/opengl/texture.jpg create mode 100644 samples/bin/datas/pong/background.jpg create mode 100644 samples/bin/datas/pong/ball.png create mode 100644 samples/bin/datas/pong/ball.wav create mode 100644 samples/bin/datas/pong/cheeseburger.ttf create mode 100644 samples/bin/datas/pong/paddle_left.png create mode 100644 samples/bin/datas/pong/paddle_right.png create mode 100644 samples/bin/datas/post-fx/background.jpg create mode 100644 samples/bin/datas/post-fx/blur.sfx create mode 100644 samples/bin/datas/post-fx/cheeseburger.ttf create mode 100644 samples/bin/datas/post-fx/colorize.sfx create mode 100644 samples/bin/datas/post-fx/fisheye.sfx create mode 100644 samples/bin/datas/post-fx/nothing.sfx create mode 100644 samples/bin/datas/post-fx/wave.jpg create mode 100644 samples/bin/datas/post-fx/wave.sfx create mode 100644 samples/bin/datas/qt/sfml.png create mode 100644 samples/bin/datas/sound/footsteps.wav create mode 100644 samples/bin/datas/sound/lepidoptera.ogg create mode 100644 samples/bin/datas/win32/image1.jpg create mode 100644 samples/bin/datas/win32/image2.jpg create mode 100644 samples/bin/datas/wxwidgets/sfml.png create mode 100644 samples/bin/libsndfile-1.dll create mode 100644 samples/bin/openal32.dll create mode 100644 samples/build/codeblocks/ftp.cbp create mode 100644 samples/build/codeblocks/opengl.cbp create mode 100644 samples/build/codeblocks/pong.cbp create mode 100644 samples/build/codeblocks/postfx.cbp create mode 100644 samples/build/codeblocks/qt.cbp create mode 100644 samples/build/codeblocks/sockets.cbp create mode 100644 samples/build/codeblocks/sound-capture.cbp create mode 100644 samples/build/codeblocks/sound.cbp create mode 100644 samples/build/codeblocks/voip.cbp create mode 100644 samples/build/codeblocks/win32.cbp create mode 100644 samples/build/codeblocks/window.cbp create mode 100644 samples/build/codeblocks/wxwidgets.cbp create mode 100644 samples/build/vc2005/ftp.vcproj create mode 100644 samples/build/vc2005/opengl.vcproj create mode 100644 samples/build/vc2005/pong.vcproj create mode 100644 samples/build/vc2005/postfx.vcproj create mode 100644 samples/build/vc2005/qt.vcproj create mode 100644 samples/build/vc2005/sockets.vcproj create mode 100644 samples/build/vc2005/sound-capture.vcproj create mode 100644 samples/build/vc2005/sound.vcproj create mode 100644 samples/build/vc2005/voip.vcproj create mode 100644 samples/build/vc2005/win32.vcproj create mode 100644 samples/build/vc2005/window.vcproj create mode 100644 samples/build/vc2005/wxwidgets.vcproj create mode 100644 samples/build/xcode/opengl-Info.plist create mode 100644 samples/build/xcode/pong-Info.plist create mode 100644 samples/build/xcode/post-fx-Info.plist create mode 100644 samples/build/xcode/samples.xcodeproj/project.pbxproj create mode 100644 samples/build/xcode/window-Info.plist create mode 100644 samples/ftp/Ftp.cpp create mode 100644 samples/ftp/Makefile create mode 100644 samples/opengl/Makefile create mode 100644 samples/opengl/OpenGL.cpp create mode 100644 samples/pong/Makefile create mode 100644 samples/pong/Pong.cpp create mode 100644 samples/post-fx/Makefile create mode 100644 samples/post-fx/PostFX.cpp create mode 100644 samples/qt/Main.cpp create mode 100644 samples/qt/Makefile create mode 100644 samples/qt/QSFMLCanvas.cpp create mode 100644 samples/qt/QSFMLCanvas.hpp create mode 100644 samples/sockets/Makefile create mode 100644 samples/sockets/Sockets.cpp create mode 100644 samples/sockets/TCP.cpp create mode 100644 samples/sockets/UDP.cpp create mode 100644 samples/sound/Makefile create mode 100644 samples/sound/Sound.cpp create mode 100644 samples/sound_capture/Makefile create mode 100644 samples/sound_capture/SoundCapture.cpp create mode 100644 samples/voip/Client.cpp create mode 100644 samples/voip/Makefile create mode 100644 samples/voip/Server.cpp create mode 100644 samples/voip/VoIP.cpp create mode 100644 samples/win32/Win32.cpp create mode 100644 samples/window/Makefile create mode 100644 samples/window/Window.cpp create mode 100644 samples/wxwidgets/Main.cpp create mode 100644 samples/wxwidgets/Makefile create mode 100644 samples/wxwidgets/wxSFMLCanvas.cpp create mode 100644 samples/wxwidgets/wxSFMLCanvas.hpp create mode 100644 src/SFML/Audio/AudioDevice.cpp create mode 100644 src/SFML/Audio/AudioDevice.hpp create mode 100644 src/SFML/Audio/AudioResource.cpp create mode 100644 src/SFML/Audio/Listener.cpp create mode 100644 src/SFML/Audio/Makefile create mode 100644 src/SFML/Audio/Music.cpp create mode 100644 src/SFML/Audio/OpenAL.hpp create mode 100644 src/SFML/Audio/Sound.cpp create mode 100644 src/SFML/Audio/SoundBuffer.cpp create mode 100644 src/SFML/Audio/SoundBufferRecorder.cpp create mode 100644 src/SFML/Audio/SoundFile.cpp create mode 100644 src/SFML/Audio/SoundFile.hpp create mode 100644 src/SFML/Audio/SoundFileDefault.cpp create mode 100644 src/SFML/Audio/SoundFileDefault.hpp create mode 100644 src/SFML/Audio/SoundFileOgg.cpp create mode 100644 src/SFML/Audio/SoundFileOgg.hpp create mode 100644 src/SFML/Audio/SoundRecorder.cpp create mode 100644 src/SFML/Audio/SoundStream.cpp create mode 100755 src/SFML/Audio/stb_vorbis/stb_vorbis.c create mode 100755 src/SFML/Audio/stb_vorbis/stb_vorbis.h create mode 100644 src/SFML/Graphics/Arial.hpp create mode 100644 src/SFML/Graphics/Color.cpp create mode 100644 src/SFML/Graphics/Drawable.cpp create mode 100644 src/SFML/Graphics/Font.cpp create mode 100644 src/SFML/Graphics/FontLoader.cpp create mode 100644 src/SFML/Graphics/FontLoader.hpp create mode 100644 src/SFML/Graphics/GLEW/glew.c create mode 100644 src/SFML/Graphics/GLEW/glew.h create mode 100644 src/SFML/Graphics/GLEW/glxew.h create mode 100644 src/SFML/Graphics/GLEW/wglew.h create mode 100644 src/SFML/Graphics/GraphicsContext.cpp create mode 100644 src/SFML/Graphics/GraphicsContext.hpp create mode 100644 src/SFML/Graphics/Image.cpp create mode 100644 src/SFML/Graphics/ImageLoader.cpp create mode 100644 src/SFML/Graphics/ImageLoader.hpp create mode 100644 src/SFML/Graphics/Makefile create mode 100644 src/SFML/Graphics/Matrix3.cpp create mode 100644 src/SFML/Graphics/PostFX.cpp create mode 100644 src/SFML/Graphics/RenderTarget.cpp create mode 100644 src/SFML/Graphics/RenderWindow.cpp create mode 100644 src/SFML/Graphics/SOIL/SOIL.c create mode 100644 src/SFML/Graphics/SOIL/SOIL.h create mode 100644 src/SFML/Graphics/SOIL/image_DXT.c create mode 100644 src/SFML/Graphics/SOIL/image_DXT.h create mode 100644 src/SFML/Graphics/SOIL/stb_image_aug.c create mode 100644 src/SFML/Graphics/SOIL/stb_image_aug.h create mode 100644 src/SFML/Graphics/SOIL/stbi_DDS_aug.h create mode 100644 src/SFML/Graphics/SOIL/stbi_DDS_aug_c.h create mode 100644 src/SFML/Graphics/Shape.cpp create mode 100644 src/SFML/Graphics/Sprite.cpp create mode 100644 src/SFML/Graphics/String.cpp create mode 100644 src/SFML/Graphics/View.cpp create mode 100644 src/SFML/Graphics/libjpeg/cderror.h create mode 100644 src/SFML/Graphics/libjpeg/jcapimin.c create mode 100644 src/SFML/Graphics/libjpeg/jcapistd.c create mode 100644 src/SFML/Graphics/libjpeg/jccoefct.c create mode 100644 src/SFML/Graphics/libjpeg/jccolor.c create mode 100644 src/SFML/Graphics/libjpeg/jcdctmgr.c create mode 100644 src/SFML/Graphics/libjpeg/jchuff.c create mode 100644 src/SFML/Graphics/libjpeg/jchuff.h create mode 100644 src/SFML/Graphics/libjpeg/jcinit.c create mode 100644 src/SFML/Graphics/libjpeg/jcmainct.c create mode 100644 src/SFML/Graphics/libjpeg/jcmarker.c create mode 100644 src/SFML/Graphics/libjpeg/jcmaster.c create mode 100644 src/SFML/Graphics/libjpeg/jcomapi.c create mode 100644 src/SFML/Graphics/libjpeg/jconfig.h create mode 100644 src/SFML/Graphics/libjpeg/jcparam.c create mode 100644 src/SFML/Graphics/libjpeg/jcphuff.c create mode 100644 src/SFML/Graphics/libjpeg/jcprepct.c create mode 100644 src/SFML/Graphics/libjpeg/jcsample.c create mode 100644 src/SFML/Graphics/libjpeg/jctrans.c create mode 100644 src/SFML/Graphics/libjpeg/jdapimin.c create mode 100644 src/SFML/Graphics/libjpeg/jdapistd.c create mode 100644 src/SFML/Graphics/libjpeg/jdatadst.c create mode 100644 src/SFML/Graphics/libjpeg/jdatasrc.c create mode 100644 src/SFML/Graphics/libjpeg/jdcoefct.c create mode 100644 src/SFML/Graphics/libjpeg/jdcolor.c create mode 100644 src/SFML/Graphics/libjpeg/jdct.h create mode 100644 src/SFML/Graphics/libjpeg/jddctmgr.c create mode 100644 src/SFML/Graphics/libjpeg/jdhuff.c create mode 100644 src/SFML/Graphics/libjpeg/jdhuff.h create mode 100644 src/SFML/Graphics/libjpeg/jdinput.c create mode 100644 src/SFML/Graphics/libjpeg/jdmainct.c create mode 100644 src/SFML/Graphics/libjpeg/jdmarker.c create mode 100644 src/SFML/Graphics/libjpeg/jdmaster.c create mode 100644 src/SFML/Graphics/libjpeg/jdmerge.c create mode 100644 src/SFML/Graphics/libjpeg/jdphuff.c create mode 100644 src/SFML/Graphics/libjpeg/jdpostct.c create mode 100644 src/SFML/Graphics/libjpeg/jdsample.c create mode 100644 src/SFML/Graphics/libjpeg/jdtrans.c create mode 100644 src/SFML/Graphics/libjpeg/jerror.c create mode 100644 src/SFML/Graphics/libjpeg/jerror.h create mode 100644 src/SFML/Graphics/libjpeg/jfdctflt.c create mode 100644 src/SFML/Graphics/libjpeg/jfdctfst.c create mode 100644 src/SFML/Graphics/libjpeg/jfdctint.c create mode 100644 src/SFML/Graphics/libjpeg/jidctflt.c create mode 100644 src/SFML/Graphics/libjpeg/jidctfst.c create mode 100644 src/SFML/Graphics/libjpeg/jidctint.c create mode 100644 src/SFML/Graphics/libjpeg/jidctred.c create mode 100644 src/SFML/Graphics/libjpeg/jinclude.h create mode 100644 src/SFML/Graphics/libjpeg/jmemmgr.c create mode 100644 src/SFML/Graphics/libjpeg/jmemnobs.c create mode 100644 src/SFML/Graphics/libjpeg/jmemsys.h create mode 100644 src/SFML/Graphics/libjpeg/jmorecfg.h create mode 100644 src/SFML/Graphics/libjpeg/jpegint.h create mode 100644 src/SFML/Graphics/libjpeg/jpeglib.h create mode 100644 src/SFML/Graphics/libjpeg/jquant1.c create mode 100644 src/SFML/Graphics/libjpeg/jquant2.c create mode 100644 src/SFML/Graphics/libjpeg/jutils.c create mode 100644 src/SFML/Graphics/libjpeg/jversion.h create mode 100644 src/SFML/Graphics/libpng/png.c create mode 100644 src/SFML/Graphics/libpng/png.h create mode 100644 src/SFML/Graphics/libpng/pngconf.h create mode 100644 src/SFML/Graphics/libpng/pngerror.c create mode 100644 src/SFML/Graphics/libpng/pnggccrd.c create mode 100644 src/SFML/Graphics/libpng/pngget.c create mode 100644 src/SFML/Graphics/libpng/pngmem.c create mode 100644 src/SFML/Graphics/libpng/pngpread.c create mode 100644 src/SFML/Graphics/libpng/pngread.c create mode 100644 src/SFML/Graphics/libpng/pngrio.c create mode 100644 src/SFML/Graphics/libpng/pngrtran.c create mode 100644 src/SFML/Graphics/libpng/pngrutil.c create mode 100644 src/SFML/Graphics/libpng/pngset.c create mode 100644 src/SFML/Graphics/libpng/pngtrans.c create mode 100644 src/SFML/Graphics/libpng/pngvcrd.c create mode 100644 src/SFML/Graphics/libpng/pngwio.c create mode 100644 src/SFML/Graphics/libpng/pngwrite.c create mode 100644 src/SFML/Graphics/libpng/pngwtran.c create mode 100644 src/SFML/Graphics/libpng/pngwutil.c create mode 100644 src/SFML/Graphics/zlib/adler32.c create mode 100644 src/SFML/Graphics/zlib/compress.c create mode 100644 src/SFML/Graphics/zlib/crc32.c create mode 100644 src/SFML/Graphics/zlib/crc32.h create mode 100644 src/SFML/Graphics/zlib/deflate.c create mode 100644 src/SFML/Graphics/zlib/deflate.h create mode 100644 src/SFML/Graphics/zlib/inffast.c create mode 100644 src/SFML/Graphics/zlib/inffast.h create mode 100644 src/SFML/Graphics/zlib/inffixed.h create mode 100644 src/SFML/Graphics/zlib/inflate.c create mode 100644 src/SFML/Graphics/zlib/inflate.h create mode 100644 src/SFML/Graphics/zlib/inftrees.c create mode 100644 src/SFML/Graphics/zlib/inftrees.h create mode 100644 src/SFML/Graphics/zlib/trees.c create mode 100644 src/SFML/Graphics/zlib/trees.h create mode 100644 src/SFML/Graphics/zlib/uncompr.c create mode 100644 src/SFML/Graphics/zlib/zconf.h create mode 100644 src/SFML/Graphics/zlib/zlib.h create mode 100644 src/SFML/Graphics/zlib/zutil.c create mode 100644 src/SFML/Graphics/zlib/zutil.h create mode 100644 src/SFML/Main/SFML_Main.cpp create mode 100644 src/SFML/Makefile create mode 100644 src/SFML/Network/Ftp.cpp create mode 100644 src/SFML/Network/Http.cpp create mode 100644 src/SFML/Network/IPAddress.cpp create mode 100644 src/SFML/Network/Makefile create mode 100644 src/SFML/Network/Packet.cpp create mode 100644 src/SFML/Network/SelectorBase.cpp create mode 100644 src/SFML/Network/SocketTCP.cpp create mode 100644 src/SFML/Network/SocketUDP.cpp create mode 100644 src/SFML/Network/Unix/SocketHelper.cpp create mode 100644 src/SFML/Network/Win32/SocketHelper.cpp create mode 100644 src/SFML/System/Clock.cpp create mode 100644 src/SFML/System/Lock.cpp create mode 100644 src/SFML/System/Makefile create mode 100644 src/SFML/System/Platform.hpp create mode 100644 src/SFML/System/Randomizer.cpp create mode 100644 src/SFML/System/Sleep.cpp create mode 100644 src/SFML/System/Unicode.cpp create mode 100644 src/SFML/System/Unix/Mutex.cpp create mode 100644 src/SFML/System/Unix/Platform.cpp create mode 100644 src/SFML/System/Unix/Platform.hpp create mode 100644 src/SFML/System/Unix/Thread.cpp create mode 100644 src/SFML/System/Win32/Mutex.cpp create mode 100644 src/SFML/System/Win32/Platform.cpp create mode 100644 src/SFML/System/Win32/Platform.hpp create mode 100644 src/SFML/System/Win32/Thread.cpp create mode 100644 src/SFML/Window/Cocoa/AppController.h create mode 100644 src/SFML/Window/Cocoa/AppController.mm create mode 100644 src/SFML/Window/Cocoa/Joystick.cpp create mode 100644 src/SFML/Window/Cocoa/Joystick.hpp create mode 100644 src/SFML/Window/Cocoa/VideoModeSupport.cpp create mode 100644 src/SFML/Window/Cocoa/VideoModeSupport.hpp create mode 100644 src/SFML/Window/Cocoa/WindowController.h create mode 100644 src/SFML/Window/Cocoa/WindowController.mm create mode 100644 src/SFML/Window/Cocoa/WindowImplCocoa.hpp create mode 100644 src/SFML/Window/Cocoa/WindowImplCocoa.mm create mode 100644 src/SFML/Window/Context.cpp create mode 100644 src/SFML/Window/Input.cpp create mode 100644 src/SFML/Window/Joystick.hpp create mode 100644 src/SFML/Window/Linux/Joystick.cpp create mode 100644 src/SFML/Window/Linux/Joystick.hpp create mode 100644 src/SFML/Window/Linux/VideoModeSupport.cpp create mode 100644 src/SFML/Window/Linux/VideoModeSupport.hpp create mode 100644 src/SFML/Window/Linux/WindowImplX11.cpp create mode 100644 src/SFML/Window/Linux/WindowImplX11.hpp create mode 100644 src/SFML/Window/Makefile create mode 100644 src/SFML/Window/Template for new ports/Joystick.cpp create mode 100644 src/SFML/Window/Template for new ports/Joystick.hpp create mode 100644 src/SFML/Window/Template for new ports/VideoModeSupport.cpp create mode 100644 src/SFML/Window/Template for new ports/VideoModeSupport.hpp create mode 100644 src/SFML/Window/Template for new ports/WindowImplXXX.cpp create mode 100644 src/SFML/Window/Template for new ports/WindowImplXXX.hpp create mode 100644 src/SFML/Window/VideoMode.cpp create mode 100644 src/SFML/Window/VideoModeSupport.hpp create mode 100644 src/SFML/Window/Win32/Joystick.cpp create mode 100644 src/SFML/Window/Win32/Joystick.hpp create mode 100644 src/SFML/Window/Win32/VideoModeSupport.cpp create mode 100644 src/SFML/Window/Win32/VideoModeSupport.hpp create mode 100644 src/SFML/Window/Win32/WindowImplWin32.cpp create mode 100644 src/SFML/Window/Win32/WindowImplWin32.hpp create mode 100644 src/SFML/Window/Window.cpp create mode 100644 src/SFML/Window/WindowImpl.cpp create mode 100644 src/SFML/Window/WindowImpl.hpp create mode 100644 src/SFML/Window/glext/glext.h create mode 100644 src/SFML/Window/glext/glxext.h create mode 100644 src/SFML/Window/glext/wglext.h diff --git a/CSFML/Doxyfile b/CSFML/Doxyfile new file mode 100644 index 00000000..ac24aaa9 --- /dev/null +++ b/CSFML/Doxyfile @@ -0,0 +1,239 @@ +# Doxyfile 1.5.2 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = SFML +PROJECT_NUMBER = +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = include/SFML/ \ + Doxygen.hpp +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.h \ + *.hpp +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = .svn +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = NO +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .htm +HTML_HEADER = ../header.htm +HTML_FOOTER = ../footer.htm +HTML_STYLESHEET = ../doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES +CHM_FILE = ../SFML.chm +HHC_LOCATION = "C:/Program Files/HTML Help Workshop/hhc.exe" +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 1 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = D:/Programmes/mscgen +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/CSFML/Doxygen.hpp b/CSFML/Doxygen.hpp new file mode 100644 index 00000000..58cf6750 --- /dev/null +++ b/CSFML/Doxygen.hpp @@ -0,0 +1,95 @@ +//////////////////////////////////////////////////////////// +/// \mainpage +/// +/// \section welcome Welcome +/// Welcome to the official SFML documentation for C. Here you will find a detailed +/// view of all the SFML functions, as well as source +/// files.
+/// If you are looking for tutorials, you can visit the official website +/// at www.sfml-dev.org. +/// +/// \section example Short example +/// Here is a short example, to show you how simple it is to use SFML in C : +/// +/// \code +/// +/// #include +/// #include +/// +/// int main() +/// { +/// sfWindowSettings Settings = {24, 8, 0}; +/// sfVideoMode Mode = {800, 600, 32}; +/// sfRenderWindow* App; +/// sfImage* Image; +/// sfSprite* Sprite; +/// sfFont* Font; +/// sfString* Text; +/// sfMusic* Music; +/// sfEvent Event; +/// +/// /* Create the main window */ +/// App = sfRenderWindow_Create(Mode, "SFML window", sfResize | sfClose, Settings); +/// if (!App) +/// return EXIT_FAILURE; +/// +/// /* Load a sprite to display */ +/// Image = sfImage_CreateFromFile("cute_image.jpg"); +/// if (!Image) +/// return EXIT_FAILURE; +/// Sprite = sfSprite_Create(); +/// sfSprite_SetImage(Sprite, Image); +/// +/// /* Create a graphical string to display */ +/// Font = sfFont_CreateFromFile("arial.ttf", 50, NULL); +/// if (!Font) +/// return EXIT_FAILURE; +/// Text = sfString_Create(); +/// sfString_SetText(Text, "Hello SFML"); +/// sfString_SetFont(Text, Font); +/// sfString_SetSize(Text, 50); +/// +/// /* Load a music to play */ +/// Music = sfMusic_CreateFromFile("nice_music.ogg"); +/// if (!Music) +/// return EXIT_FAILURE; +/// +/// /* Play the music */ +/// sfMusic_Play(Music); +/// +/// /* Start the game loop */ +/// while (sfRenderWindow_IsOpened(App)) +/// { +/// /* Process events */ +/// while (sfRenderWindow_GetEvent(App, &Event)) +/// { +/// /* Close window : exit */ +/// if (Event.Type == sfEvtClosed) +/// sfRenderWindow_Close(App); +/// } +/// +/// /* Clear the screen */ +/// sfRenderWindow_Clear(App, sfBlack); +/// +/// /* Draw the sprite */ +/// sfRenderWindow_DrawSprite(App, Sprite); +/// +/// /* Draw the string */ +/// sfRenderWindow_DrawString(App, Text); +/// +/// /* Update the window */ +/// sfRenderWindow_Display(App); +/// } +/// +/// /* Cleanup resources */ +/// sfMusic_Destroy(Music); +/// sfString_Destroy(Text); +/// sfFont_Destroy(Font); +/// sfSprite_Destroy(Sprite); +/// sfImage_Destroy(Image); +/// sfRenderWindow_Destroy(App); +/// +/// return EXIT_SUCCESS; +/// } +/// \endcode +//////////////////////////////////////////////////////////// diff --git a/CSFML/Makefile b/CSFML/Makefile new file mode 100644 index 00000000..96ddc42d --- /dev/null +++ b/CSFML/Makefile @@ -0,0 +1,14 @@ + +all: csfml + +csfml: + @(cd ./src/SFML && $(MAKE)) + +install: + @(cd ./src/SFML && $(MAKE) $@) + +clean: + @(cd ./src/SFML && $(MAKE) $@) + +mrproper: + @(cd ./src/SFML && $(MAKE) $@) diff --git a/CSFML/VC2005/CSFML.sln b/CSFML/VC2005/CSFML.sln new file mode 100644 index 00000000..541717f3 --- /dev/null +++ b/CSFML/VC2005/CSFML.sln @@ -0,0 +1,98 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-audio", "csfml-audio.vcproj", "{B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-graphics", "csfml-graphics.vcproj", "{FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}" + ProjectSection(ProjectDependencies) = postProject + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-network", "csfml-network.vcproj", "{823DDC98-42D5-4A38-88CF-9DC06C788AE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-system", "csfml-system.vcproj", "{C061A27D-7CA0-4179-9869-672FA04A86A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-window", "csfml-window.vcproj", "{0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug DLL|Win32 = Debug DLL|Win32 + Debug static|Win32 = Debug static|Win32 + Debug|Win32 = Debug|Win32 + Release DLL|Win32 = Release DLL|Win32 + Release static|Win32 = Release static|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.Build.0 = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.Build.0 = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.Build.0 = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.Build.0 = Release static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CSFML/VC2005/csfml-audio-d.def b/CSFML/VC2005/csfml-audio-d.def new file mode 100644 index 00000000..5e2d700e --- /dev/null +++ b/CSFML/VC2005/csfml-audio-d.def @@ -0,0 +1,96 @@ +LIBRARY csfml-audio-d +EXPORTS + sfListener_SetGlobalVolume + sfListener_GetGlobalVolume + sfListener_SetPosition + sfListener_GetPosition + sfListener_SetTarget + sfListener_GetTarget + sfMusic_CreateFromFile + sfMusic_CreateFromMemory + sfMusic_Destroy + sfMusic_SetLoop + sfMusic_GetLoop + sfMusic_GetDuration + sfMusic_Play + sfMusic_Pause + sfMusic_Stop + sfMusic_GetChannelsCount + sfMusic_GetSampleRate + sfMusic_GetStatus + sfMusic_SetPitch + sfMusic_SetVolume + sfMusic_SetPosition + sfMusic_SetMinDistance + sfMusic_SetAttenuation + sfMusic_GetPitch + sfMusic_GetVolume + sfMusic_GetPosition + sfMusic_GetMinDistance + sfMusic_GetAttenuation + sfMusic_GetPlayingOffset + sfSound_Create + sfSound_Destroy + sfSound_Play + sfSound_Pause + sfSound_Stop + sfSound_SetBuffer + sfSound_GetBuffer + sfSound_SetLoop + sfSound_GetLoop + sfSound_GetStatus + sfSound_SetPitch + sfSound_SetVolume + sfSound_SetPosition + sfSound_SetMinDistance + sfSound_SetAttenuation + sfSound_SetPlayingOffset + sfSound_GetPitch + sfSound_GetVolume + sfSound_GetPosition + sfSound_GetPlayingOffset + sfSound_GetMinDistance + sfSound_GetAttenuation + sfSoundBuffer_CreateFromFile + sfSoundBuffer_CreateFromMemory + sfSoundBuffer_CreateFromSamples + sfSoundBuffer_Destroy + sfSoundBuffer_SaveToFile + sfSoundBuffer_GetSamples + sfSoundBuffer_GetSamplesCount + sfSoundBuffer_GetSampleRate + sfSoundBuffer_GetChannelsCount + sfSoundBuffer_GetDuration + sfSoundBufferRecorder_Create + sfSoundBufferRecorder_Destroy + sfSoundBufferRecorder_Start + sfSoundBufferRecorder_Stop + sfSoundBufferRecorder_GetSampleRate + sfSoundBufferRecorder_GetBuffer + sfSoundRecorder_Create + sfSoundRecorder_Destroy + sfSoundRecorder_Start + sfSoundRecorder_Stop + sfSoundRecorder_GetSampleRate + sfSoundRecorder_CanCapture + sfSoundStream_Create + sfSoundStream_Destroy + sfSoundStream_Play + sfSoundStream_Pause + sfSoundStream_Stop + sfSoundStream_GetStatus + sfSoundStream_GetChannelsCount + sfSoundStream_GetSampleRate + sfSoundStream_SetPitch + sfSoundStream_SetVolume + sfSoundStream_SetPosition + sfSoundStream_SetMinDistance + sfSoundStream_SetAttenuation + sfSoundStream_SetLoop + sfSoundStream_GetPitch + sfSoundStream_GetVolume + sfSoundStream_GetPosition + sfSoundStream_GetMinDistance + sfSoundStream_GetAttenuation + sfSoundStream_GetLoop + sfSoundStream_GetPlayingOffset diff --git a/CSFML/VC2005/csfml-audio.def b/CSFML/VC2005/csfml-audio.def new file mode 100644 index 00000000..fb211e82 --- /dev/null +++ b/CSFML/VC2005/csfml-audio.def @@ -0,0 +1,96 @@ +LIBRARY csfml-audio +EXPORTS + sfListener_SetGlobalVolume + sfListener_GetGlobalVolume + sfListener_SetPosition + sfListener_GetPosition + sfListener_SetTarget + sfListener_GetTarget + sfMusic_CreateFromFile + sfMusic_CreateFromMemory + sfMusic_Destroy + sfMusic_SetLoop + sfMusic_GetLoop + sfMusic_GetDuration + sfMusic_Play + sfMusic_Pause + sfMusic_Stop + sfMusic_GetChannelsCount + sfMusic_GetSampleRate + sfMusic_GetStatus + sfMusic_SetPitch + sfMusic_SetVolume + sfMusic_SetPosition + sfMusic_SetMinDistance + sfMusic_SetAttenuation + sfMusic_GetPitch + sfMusic_GetVolume + sfMusic_GetPosition + sfMusic_GetMinDistance + sfMusic_GetAttenuation + sfMusic_GetPlayingOffset + sfSound_Create + sfSound_Destroy + sfSound_Play + sfSound_Pause + sfSound_Stop + sfSound_SetBuffer + sfSound_GetBuffer + sfSound_SetLoop + sfSound_GetLoop + sfSound_GetStatus + sfSound_SetPitch + sfSound_SetVolume + sfSound_SetPosition + sfSound_SetMinDistance + sfSound_SetAttenuation + sfSound_SetPlayingOffset + sfSound_GetPitch + sfSound_GetVolume + sfSound_GetPosition + sfSound_GetPlayingOffset + sfSound_GetMinDistance + sfSound_GetAttenuation + sfSoundBuffer_CreateFromFile + sfSoundBuffer_CreateFromMemory + sfSoundBuffer_CreateFromSamples + sfSoundBuffer_Destroy + sfSoundBuffer_SaveToFile + sfSoundBuffer_GetSamples + sfSoundBuffer_GetSamplesCount + sfSoundBuffer_GetSampleRate + sfSoundBuffer_GetChannelsCount + sfSoundBuffer_GetDuration + sfSoundBufferRecorder_Create + sfSoundBufferRecorder_Destroy + sfSoundBufferRecorder_Start + sfSoundBufferRecorder_Stop + sfSoundBufferRecorder_GetSampleRate + sfSoundBufferRecorder_GetBuffer + sfSoundRecorder_Create + sfSoundRecorder_Destroy + sfSoundRecorder_Start + sfSoundRecorder_Stop + sfSoundRecorder_GetSampleRate + sfSoundRecorder_CanCapture + sfSoundStream_Create + sfSoundStream_Destroy + sfSoundStream_Play + sfSoundStream_Pause + sfSoundStream_Stop + sfSoundStream_GetStatus + sfSoundStream_GetChannelsCount + sfSoundStream_GetSampleRate + sfSoundStream_SetPitch + sfSoundStream_SetVolume + sfSoundStream_SetPosition + sfSoundStream_SetMinDistance + sfSoundStream_SetAttenuation + sfSoundStream_SetLoop + sfSoundStream_GetPitch + sfSoundStream_GetVolume + sfSoundStream_GetPosition + sfSoundStream_GetMinDistance + sfSoundStream_GetAttenuation + sfSoundStream_GetLoop + sfSoundStream_GetPlayingOffset diff --git a/CSFML/VC2005/csfml-audio.vcproj b/CSFML/VC2005/csfml-audio.vcproj new file mode 100644 index 00000000..89b49d4d --- /dev/null +++ b/CSFML/VC2005/csfml-audio.vcproj @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2005/csfml-graphics-d.def b/CSFML/VC2005/csfml-graphics-d.def new file mode 100644 index 00000000..ba05c6a0 --- /dev/null +++ b/CSFML/VC2005/csfml-graphics-d.def @@ -0,0 +1,215 @@ +LIBRARY csfml-graphics-d +EXPORTS + sfBlack + sfWhite + sfRed + sfGreen + sfBlue + sfYellow + sfMagenta + sfCyan + sfColor_FromRGB + sfColor_FromRGBA + sfColor_Add + sfColor_Modulate + sfImage_Create + sfImage_CreateFromColor + sfImage_CreateFromPixels + sfImage_CreateFromFile + sfImage_CreateFromMemory + sfImage_Destroy + sfImage_SaveToFile + sfImage_CreateMaskFromColor + sfImage_Copy + sfImage_CopyScreen + sfImage_SetPixel + sfImage_GetPixel + sfImage_GetPixelsPtr + sfImage_Bind + sfImage_SetSmooth + sfImage_GetWidth + sfImage_GetHeight + sfImage_IsSmooth + sfFloatRect_Offset + sfFloatRect_Contains + sfFloatRect_Intersects + sfIntRect_Offset + sfIntRect_Contains + sfIntRect_Intersects + sfPostFX_CreateFromFile + sfPostFX_CreateFromMemory + sfPostFX_Destroy + sfPostFX_SetParameter1 + sfPostFX_SetParameter2 + sfPostFX_SetParameter3 + sfPostFX_SetParameter4 + sfPostFX_SetTexture + sfPostFX_CanUsePostFX + sfShape_Create + sfShape_CreateLine + sfShape_CreateRectangle + sfShape_CreateCircle + sfShape_Destroy + sfShape_SetX + sfShape_SetY + sfShape_SetPosition + sfShape_SetScaleX + sfShape_SetScaleY + sfShape_SetScale + sfShape_SetRotation + sfShape_SetCenter + sfShape_SetColor + sfShape_SetBlendMode + sfShape_GetX + sfShape_GetY + sfShape_GetScaleX + sfShape_GetScaleY + sfShape_GetRotation + sfShape_GetCenterX + sfShape_GetCenterY + sfShape_GetColor + sfShape_GetBlendMode + sfShape_Move + sfShape_Scale + sfShape_Rotate + sfShape_TransformToLocal + sfShape_TransformToGlobal + sfShape_AddPoint + sfShape_EnableFill + sfShape_EnableOutline + sfShape_SetOutlineWidth + sfShape_GetOutlineWidth + sfShape_GetNbPoints + sfShape_GetPointPosition + sfShape_GetPointColor + sfShape_GetPointOutlineColor + sfShape_SetPointPosition + sfShape_SetPointColor + sfShape_SetPointOutlineColor + sfSprite_Create + sfSprite_Destroy + sfSprite_SetX + sfSprite_SetY + sfSprite_SetPosition + sfSprite_SetScaleX + sfSprite_SetScaleY + sfSprite_SetScale + sfSprite_SetRotation + sfSprite_SetCenter + sfSprite_SetColor + sfSprite_SetBlendMode + sfSprite_GetX + sfSprite_GetY + sfSprite_GetScaleX + sfSprite_GetScaleY + sfSprite_GetRotation + sfSprite_GetCenterX + sfSprite_GetCenterY + sfSprite_GetColor + sfSprite_GetBlendMode + sfSprite_Move + sfSprite_Scale + sfSprite_Rotate + sfSprite_TransformToLocal + sfSprite_TransformToGlobal + sfSprite_SetImage + sfSprite_SetSubRect + sfSprite_Resize + sfSprite_FlipX + sfSprite_FlipY + sfSprite_GetImage + sfSprite_GetSubRect + sfSprite_GetWidth + sfSprite_GetHeight + sfSprite_GetPixel + sfFont_Create + sfFont_CreateFromFile + sfFont_CreateFromMemory + sfFont_Destroy + sfFont_GetCharacterSize + sfFont_GetDefaultFont + sfString_Create + sfString_Destroy + sfString_SetX + sfString_SetY + sfString_SetPosition + sfString_SetScaleX + sfString_SetScaleY + sfString_SetScale + sfString_SetRotation + sfString_SetCenter + sfString_SetColor + sfString_SetBlendMode + sfString_GetX + sfString_GetY + sfString_GetScaleX + sfString_GetScaleY + sfString_GetRotation + sfString_GetCenterX + sfString_GetCenterY + sfString_GetColor + sfString_GetBlendMode + sfString_Move + sfString_Scale + sfString_Rotate + sfString_TransformToLocal + sfString_TransformToGlobal + sfString_SetText + sfString_SetUnicodeText + sfString_SetFont + sfString_SetSize + sfString_SetStyle + sfString_GetUnicodeText + sfString_GetText + sfString_GetFont + sfString_GetSize + sfString_GetStyle + sfString_GetCharacterPos + sfString_GetRect + sfRenderWindow_Create + sfRenderWindow_CreateFromHandle + sfRenderWindow_Destroy + sfRenderWindow_Close + sfRenderWindow_IsOpened + sfRenderWindow_GetWidth + sfRenderWindow_GetHeight + sfRenderWindow_GetSettings + sfRenderWindow_GetEvent + sfRenderWindow_UseVerticalSync + sfRenderWindow_ShowMouseCursor + sfRenderWindow_SetCursorPosition + sfRenderWindow_SetPosition + sfRenderWindow_SetSize + sfRenderWindow_Show + sfRenderWindow_EnableKeyRepeat + sfRenderWindow_SetIcon + sfRenderWindow_SetActive + sfRenderWindow_Display + sfRenderWindow_GetInput + sfRenderWindow_SetFramerateLimit + sfRenderWindow_GetFrameTime + sfRenderWindow_SetJoystickThreshold + sfRenderWindow_DrawPostFX + sfRenderWindow_DrawSprite + sfRenderWindow_DrawString + sfRenderWindow_DrawShape + sfRenderWindow_Capture + sfRenderWindow_Clear + sfRenderWindow_SetView + sfRenderWindow_GetView + sfRenderWindow_GetDefaultView + sfRenderWindow_ConvertCoords + sfRenderWindow_PreserveOpenGLStates + sfView_Create + sfView_CreateFromRect + sfView_Destroy + sfView_SetCenter + sfView_SetHalfSize + sfView_SetFromRect + sfView_GetCenterX + sfView_GetCenterY + sfView_GetHalfSizeX + sfView_GetHalfSizeY + sfView_GetRect + sfView_Move + sfView_Zoom diff --git a/CSFML/VC2005/csfml-graphics.def b/CSFML/VC2005/csfml-graphics.def new file mode 100644 index 00000000..678c053c --- /dev/null +++ b/CSFML/VC2005/csfml-graphics.def @@ -0,0 +1,215 @@ +LIBRARY csfml-graphics +EXPORTS + sfBlack + sfWhite + sfRed + sfGreen + sfBlue + sfYellow + sfMagenta + sfCyan + sfColor_FromRGB + sfColor_FromRGBA + sfColor_Add + sfColor_Modulate + sfImage_Create + sfImage_CreateFromColor + sfImage_CreateFromPixels + sfImage_CreateFromFile + sfImage_CreateFromMemory + sfImage_Destroy + sfImage_SaveToFile + sfImage_CreateMaskFromColor + sfImage_Copy + sfImage_CopyScreen + sfImage_SetPixel + sfImage_GetPixel + sfImage_GetPixelsPtr + sfImage_Bind + sfImage_SetSmooth + sfImage_GetWidth + sfImage_GetHeight + sfImage_IsSmooth + sfFloatRect_Offset + sfFloatRect_Contains + sfFloatRect_Intersects + sfIntRect_Offset + sfIntRect_Contains + sfIntRect_Intersects + sfPostFX_CreateFromFile + sfPostFX_CreateFromMemory + sfPostFX_Destroy + sfPostFX_SetParameter1 + sfPostFX_SetParameter2 + sfPostFX_SetParameter3 + sfPostFX_SetParameter4 + sfPostFX_SetTexture + sfPostFX_CanUsePostFX + sfShape_Create + sfShape_CreateLine + sfShape_CreateRectangle + sfShape_CreateCircle + sfShape_Destroy + sfShape_SetX + sfShape_SetY + sfShape_SetPosition + sfShape_SetScaleX + sfShape_SetScaleY + sfShape_SetScale + sfShape_SetRotation + sfShape_SetCenter + sfShape_SetColor + sfShape_SetBlendMode + sfShape_GetX + sfShape_GetY + sfShape_GetScaleX + sfShape_GetScaleY + sfShape_GetRotation + sfShape_GetCenterX + sfShape_GetCenterY + sfShape_GetColor + sfShape_GetBlendMode + sfShape_Move + sfShape_Scale + sfShape_Rotate + sfShape_TransformToLocal + sfShape_TransformToGlobal + sfShape_AddPoint + sfShape_EnableFill + sfShape_EnableOutline + sfShape_SetOutlineWidth + sfShape_GetOutlineWidth + sfShape_GetNbPoints + sfShape_GetPointPosition + sfShape_GetPointColor + sfShape_GetPointOutlineColor + sfShape_SetPointPosition + sfShape_SetPointColor + sfShape_SetPointOutlineColor + sfSprite_Create + sfSprite_Destroy + sfSprite_SetX + sfSprite_SetY + sfSprite_SetPosition + sfSprite_SetScaleX + sfSprite_SetScaleY + sfSprite_SetScale + sfSprite_SetRotation + sfSprite_SetCenter + sfSprite_SetColor + sfSprite_SetBlendMode + sfSprite_GetX + sfSprite_GetY + sfSprite_GetScaleX + sfSprite_GetScaleY + sfSprite_GetRotation + sfSprite_GetCenterX + sfSprite_GetCenterY + sfSprite_GetColor + sfSprite_GetBlendMode + sfSprite_Move + sfSprite_Scale + sfSprite_Rotate + sfSprite_TransformToLocal + sfSprite_TransformToGlobal + sfSprite_SetImage + sfSprite_SetSubRect + sfSprite_Resize + sfSprite_FlipX + sfSprite_FlipY + sfSprite_GetImage + sfSprite_GetSubRect + sfSprite_GetWidth + sfSprite_GetHeight + sfSprite_GetPixel + sfFont_Create + sfFont_CreateFromFile + sfFont_CreateFromMemory + sfFont_Destroy + sfFont_GetCharacterSize + sfFont_GetDefaultFont + sfString_Create + sfString_Destroy + sfString_SetX + sfString_SetY + sfString_SetPosition + sfString_SetScaleX + sfString_SetScaleY + sfString_SetScale + sfString_SetRotation + sfString_SetCenter + sfString_SetColor + sfString_SetBlendMode + sfString_GetX + sfString_GetY + sfString_GetScaleX + sfString_GetScaleY + sfString_GetRotation + sfString_GetCenterX + sfString_GetCenterY + sfString_GetColor + sfString_GetBlendMode + sfString_Move + sfString_Scale + sfString_Rotate + sfString_TransformToLocal + sfString_TransformToGlobal + sfString_SetText + sfString_SetUnicodeText + sfString_SetFont + sfString_SetSize + sfString_SetStyle + sfString_GetUnicodeText + sfString_GetText + sfString_GetFont + sfString_GetSize + sfString_GetStyle + sfString_GetCharacterPos + sfString_GetRect + sfRenderWindow_Create + sfRenderWindow_CreateFromHandle + sfRenderWindow_Destroy + sfRenderWindow_Close + sfRenderWindow_IsOpened + sfRenderWindow_GetWidth + sfRenderWindow_GetHeight + sfRenderWindow_GetSettings + sfRenderWindow_GetEvent + sfRenderWindow_UseVerticalSync + sfRenderWindow_ShowMouseCursor + sfRenderWindow_SetCursorPosition + sfRenderWindow_SetPosition + sfRenderWindow_SetSize + sfRenderWindow_Show + sfRenderWindow_EnableKeyRepeat + sfRenderWindow_SetIcon + sfRenderWindow_SetActive + sfRenderWindow_Display + sfRenderWindow_GetInput + sfRenderWindow_SetFramerateLimit + sfRenderWindow_GetFrameTime + sfRenderWindow_SetJoystickThreshold + sfRenderWindow_DrawPostFX + sfRenderWindow_DrawSprite + sfRenderWindow_DrawString + sfRenderWindow_DrawShape + sfRenderWindow_Capture + sfRenderWindow_Clear + sfRenderWindow_SetView + sfRenderWindow_GetView + sfRenderWindow_GetDefaultView + sfRenderWindow_ConvertCoords + sfRenderWindow_PreserveOpenGLStates + sfView_Create + sfView_CreateFromRect + sfView_Destroy + sfView_SetCenter + sfView_SetHalfSize + sfView_SetFromRect + sfView_GetCenterX + sfView_GetCenterY + sfView_GetHalfSizeX + sfView_GetHalfSizeY + sfView_GetRect + sfView_Move + sfView_Zoom diff --git a/CSFML/VC2005/csfml-graphics.vcproj b/CSFML/VC2005/csfml-graphics.vcproj new file mode 100644 index 00000000..de49140e --- /dev/null +++ b/CSFML/VC2005/csfml-graphics.vcproj @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2005/csfml-network-d.def b/CSFML/VC2005/csfml-network-d.def new file mode 100644 index 00000000..3235bbf3 --- /dev/null +++ b/CSFML/VC2005/csfml-network-d.def @@ -0,0 +1,125 @@ +LIBRARY csfml-network-d +EXPORTS + sfFtpListingResponse_Destroy + sfFtpListingResponse_IsOk + sfFtpListingResponse_GetStatus + sfFtpListingResponse_GetMessage + sfFtpListingResponse_GetCount + sfFtpListingResponse_GetFilename + sfFtpDirectoryResponse_Destroy + sfFtpDirectoryResponse_IsOk + sfFtpDirectoryResponse_GetStatus + sfFtpDirectoryResponse_GetMessage + sfFtpDirectoryResponse_GetDirectory + sfFtpResponse_Destroy + sfFtpResponse_IsOk + sfFtpResponse_GetStatus + sfFtpResponse_GetMessage + sfFtp_Create + sfFtp_Destroy + sfFtp_Connect + sfFtp_LoginAnonymous + sfFtp_Login + sfFtp_Disconnect + sfFtp_KeepAlive + sfFtp_GetWorkingDirectory + sfFtp_GetDirectoryListing + sfFtp_ChangeDirectory + sfFtp_ParentDirectory + sfFtp_MakeDirectory + sfFtp_DeleteDirectory + sfFtp_RenameFile + sfFtp_DeleteFile + sfFtp_Download + sfFtp_Upload + sfHttpRequest_Create + sfHttpRequest_Destroy + sfHttpRequest_SetField + sfHttpRequest_SetMethod + sfHttpRequest_SetURI + sfHttpRequest_SetHttpVersion + sfHttpRequest_SetBody + sfHttpResponse_Destroy + sfHttpResponse_GetField + sfHttpResponse_GetStatus + sfHttpResponse_GetMajorVersion + sfHttpResponse_GetMinorVersion + sfHttpResponse_GetBody + sfHttp_Create + sfHttp_Destroy + sfHttp_SetHost + sfHttp_SendRequest + sfIPAddress_FromString + sfIPAddress_FromBytes + sfIPAddress_FromInteger + sfIPAddress_IsValid + sfIPAddress_ToString + sfIPAddress_ToInteger + sfIPAddress_GetLocalAddress + sfIPAddress_GetPublicAddress + sfIPAddress_LocalHost + sfSocketTCP_Create + sfSocketTCP_Destroy + sfSocketTCP_SetBlocking + sfSocketTCP_Connect + sfSocketTCP_Listen + sfSocketTCP_Accept + sfSocketTCP_Send + sfSocketTCP_Receive + sfSocketTCP_SendPacket + sfSocketTCP_ReceivePacket + sfSocketTCP_IsValid + sfSocketUDP_Create + sfSocketUDP_Destroy + sfSocketUDP_SetBlocking + sfSocketUDP_Bind + sfSocketUDP_Unbind + sfSocketUDP_Send + sfSocketUDP_Receive + sfSocketUDP_SendPacket + sfSocketUDP_ReceivePacket + sfSocketUDP_IsValid + sfPacket_Create + sfPacket_Destroy + sfPacket_Append + sfPacket_Clear + sfPacket_GetData + sfPacket_GetDataSize + sfPacket_EndOfPacket + sfPacket_CanRead + sfPacket_ReadBool + sfPacket_ReadInt8 + sfPacket_ReadUint8 + sfPacket_ReadInt16 + sfPacket_ReadUint16 + sfPacket_ReadInt32 + sfPacket_ReadUint32 + sfPacket_ReadFloat + sfPacket_ReadDouble + sfPacket_ReadString + sfPacket_ReadWideString + sfPacket_WriteBool + sfPacket_WriteInt8 + sfPacket_WriteUint8 + sfPacket_WriteInt16 + sfPacket_WriteUint16 + sfPacket_WriteInt32 + sfPacket_WriteUint32 + sfPacket_WriteFloat + sfPacket_WriteDouble + sfPacket_WriteString + sfPacket_WriteWideString + sfSelectorTCP_Create + sfSelectorTCP_Destroy + sfSelectorTCP_Add + sfSelectorTCP_Remove + sfSelectorTCP_Clear + sfSelectorTCP_Wait + sfSelectorTCP_GetSocketReady + sfSelectorUDP_Create + sfSelectorUDP_Destroy + sfSelectorUDP_Add + sfSelectorUDP_Remove + sfSelectorUDP_Clear + sfSelectorUDP_Wait + sfSelectorUDP_GetSocketReady diff --git a/CSFML/VC2005/csfml-network.def b/CSFML/VC2005/csfml-network.def new file mode 100644 index 00000000..cdd067d7 --- /dev/null +++ b/CSFML/VC2005/csfml-network.def @@ -0,0 +1,125 @@ +LIBRARY csfml-network +EXPORTS + sfFtpListingResponse_Destroy + sfFtpListingResponse_IsOk + sfFtpListingResponse_GetStatus + sfFtpListingResponse_GetMessage + sfFtpListingResponse_GetCount + sfFtpListingResponse_GetFilename + sfFtpDirectoryResponse_Destroy + sfFtpDirectoryResponse_IsOk + sfFtpDirectoryResponse_GetStatus + sfFtpDirectoryResponse_GetMessage + sfFtpDirectoryResponse_GetDirectory + sfFtpResponse_Destroy + sfFtpResponse_IsOk + sfFtpResponse_GetStatus + sfFtpResponse_GetMessage + sfFtp_Create + sfFtp_Destroy + sfFtp_Connect + sfFtp_LoginAnonymous + sfFtp_Login + sfFtp_Disconnect + sfFtp_KeepAlive + sfFtp_GetWorkingDirectory + sfFtp_GetDirectoryListing + sfFtp_ChangeDirectory + sfFtp_ParentDirectory + sfFtp_MakeDirectory + sfFtp_DeleteDirectory + sfFtp_RenameFile + sfFtp_DeleteFile + sfFtp_Download + sfFtp_Upload + sfHttpRequest_Create + sfHttpRequest_Destroy + sfHttpRequest_SetField + sfHttpRequest_SetMethod + sfHttpRequest_SetURI + sfHttpRequest_SetHttpVersion + sfHttpRequest_SetBody + sfHttpResponse_Destroy + sfHttpResponse_GetField + sfHttpResponse_GetStatus + sfHttpResponse_GetMajorVersion + sfHttpResponse_GetMinorVersion + sfHttpResponse_GetBody + sfHttp_Create + sfHttp_Destroy + sfHttp_SetHost + sfHttp_SendRequest + sfIPAddress_FromString + sfIPAddress_FromBytes + sfIPAddress_FromInteger + sfIPAddress_IsValid + sfIPAddress_ToString + sfIPAddress_ToInteger + sfIPAddress_GetLocalAddress + sfIPAddress_GetPublicAddress + sfIPAddress_LocalHost + sfSocketTCP_Create + sfSocketTCP_Destroy + sfSocketTCP_SetBlocking + sfSocketTCP_Connect + sfSocketTCP_Listen + sfSocketTCP_Accept + sfSocketTCP_Send + sfSocketTCP_Receive + sfSocketTCP_SendPacket + sfSocketTCP_ReceivePacket + sfSocketTCP_IsValid + sfSocketUDP_Create + sfSocketUDP_Destroy + sfSocketUDP_SetBlocking + sfSocketUDP_Bind + sfSocketUDP_Unbind + sfSocketUDP_Send + sfSocketUDP_Receive + sfSocketUDP_SendPacket + sfSocketUDP_ReceivePacket + sfSocketUDP_IsValid + sfPacket_Create + sfPacket_Destroy + sfPacket_Append + sfPacket_Clear + sfPacket_GetData + sfPacket_GetDataSize + sfPacket_EndOfPacket + sfPacket_CanRead + sfPacket_ReadBool + sfPacket_ReadInt8 + sfPacket_ReadUint8 + sfPacket_ReadInt16 + sfPacket_ReadUint16 + sfPacket_ReadInt32 + sfPacket_ReadUint32 + sfPacket_ReadFloat + sfPacket_ReadDouble + sfPacket_ReadString + sfPacket_ReadWideString + sfPacket_WriteBool + sfPacket_WriteInt8 + sfPacket_WriteUint8 + sfPacket_WriteInt16 + sfPacket_WriteUint16 + sfPacket_WriteInt32 + sfPacket_WriteUint32 + sfPacket_WriteFloat + sfPacket_WriteDouble + sfPacket_WriteString + sfPacket_WriteWideString + sfSelectorTCP_Create + sfSelectorTCP_Destroy + sfSelectorTCP_Add + sfSelectorTCP_Remove + sfSelectorTCP_Clear + sfSelectorTCP_Wait + sfSelectorTCP_GetSocketReady + sfSelectorUDP_Create + sfSelectorUDP_Destroy + sfSelectorUDP_Add + sfSelectorUDP_Remove + sfSelectorUDP_Clear + sfSelectorUDP_Wait + sfSelectorUDP_GetSocketReady diff --git a/CSFML/VC2005/csfml-network.vcproj b/CSFML/VC2005/csfml-network.vcproj new file mode 100644 index 00000000..19623f49 --- /dev/null +++ b/CSFML/VC2005/csfml-network.vcproj @@ -0,0 +1,403 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2005/csfml-system-d.def b/CSFML/VC2005/csfml-system-d.def new file mode 100644 index 00000000..122a804c --- /dev/null +++ b/CSFML/VC2005/csfml-system-d.def @@ -0,0 +1,20 @@ +LIBRARY csfml-system-d +EXPORTS + sfClock_Create + sfClock_Destroy + sfClock_GetTime + sfClock_Reset + sfMutex_Create + sfMutex_Destroy + sfMutex_Lock + sfMutex_Unlock + sfRandom_SetSeed + sfRandom_GetSeed + sfRandom_Float + sfRandom_Int + sfSleep + sfThread_Create + sfThread_Destroy + sfThread_Launch + sfThread_Wait + sfThread_Terminate diff --git a/CSFML/VC2005/csfml-system.def b/CSFML/VC2005/csfml-system.def new file mode 100644 index 00000000..da7c4247 --- /dev/null +++ b/CSFML/VC2005/csfml-system.def @@ -0,0 +1,20 @@ +LIBRARY csfml-system +EXPORTS + sfClock_Create + sfClock_Destroy + sfClock_GetTime + sfClock_Reset + sfMutex_Create + sfMutex_Destroy + sfMutex_Lock + sfMutex_Unlock + sfRandom_SetSeed + sfRandom_GetSeed + sfRandom_Float + sfRandom_Int + sfSleep + sfThread_Create + sfThread_Destroy + sfThread_Launch + sfThread_Wait + sfThread_Terminate diff --git a/CSFML/VC2005/csfml-system.vcproj b/CSFML/VC2005/csfml-system.vcproj new file mode 100644 index 00000000..d12b4266 --- /dev/null +++ b/CSFML/VC2005/csfml-system.vcproj @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2005/csfml-window-d.def b/CSFML/VC2005/csfml-window-d.def new file mode 100644 index 00000000..0003ae98 --- /dev/null +++ b/CSFML/VC2005/csfml-window-d.def @@ -0,0 +1,38 @@ +LIBRARY csfml-window-d +EXPORTS + sfInput_IsKeyDown + sfInput_IsMouseButtonDown + sfInput_IsJoystickButtonDown + sfInput_GetMouseX + sfInput_GetMouseY + sfInput_GetJoystickAxis + sfVideoMode_GetDesktopMode + sfVideoMode_GetMode + sfVideoMode_GetModesCount + sfVideoMode_IsValid + sfWindow_Create + sfWindow_CreateFromHandle + sfWindow_Close + sfWindow_IsOpened + sfWindow_Destroy + sfWindow_GetWidth + sfWindow_GetHeight + sfWindow_GetSettings + sfWindow_GetEvent + sfWindow_UseVerticalSync + sfWindow_ShowMouseCursor + sfWindow_SetCursorPosition + sfWindow_SetPosition + sfWindow_SetSize + sfWindow_Show + sfWindow_EnableKeyRepeat + sfWindow_SetIcon + sfWindow_SetActive + sfWindow_Display + sfWindow_GetInput + sfWindow_SetFramerateLimit + sfWindow_GetFrameTime + sfWindow_SetJoystickThreshold + sfContext_Create + sfContext_Destroy + sfContext_SetActive diff --git a/CSFML/VC2005/csfml-window.def b/CSFML/VC2005/csfml-window.def new file mode 100644 index 00000000..4e1c05c4 --- /dev/null +++ b/CSFML/VC2005/csfml-window.def @@ -0,0 +1,38 @@ +LIBRARY csfml-window +EXPORTS + sfInput_IsKeyDown + sfInput_IsMouseButtonDown + sfInput_IsJoystickButtonDown + sfInput_GetMouseX + sfInput_GetMouseY + sfInput_GetJoystickAxis + sfVideoMode_GetDesktopMode + sfVideoMode_GetMode + sfVideoMode_GetModesCount + sfVideoMode_IsValid + sfWindow_Create + sfWindow_CreateFromHandle + sfWindow_Close + sfWindow_IsOpened + sfWindow_Destroy + sfWindow_GetWidth + sfWindow_GetHeight + sfWindow_GetSettings + sfWindow_GetEvent + sfWindow_UseVerticalSync + sfWindow_ShowMouseCursor + sfWindow_SetCursorPosition + sfWindow_SetPosition + sfWindow_SetSize + sfWindow_Show + sfWindow_EnableKeyRepeat + sfWindow_SetIcon + sfWindow_SetActive + sfWindow_Display + sfWindow_GetInput + sfWindow_SetFramerateLimit + sfWindow_GetFrameTime + sfWindow_SetJoystickThreshold + sfContext_Create + sfContext_Destroy + sfContext_SetActive diff --git a/CSFML/VC2005/csfml-window.vcproj b/CSFML/VC2005/csfml-window.vcproj new file mode 100644 index 00000000..e6de9907 --- /dev/null +++ b/CSFML/VC2005/csfml-window.vcproj @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2008/CSFML.sln b/CSFML/VC2008/CSFML.sln new file mode 100644 index 00000000..6784834b --- /dev/null +++ b/CSFML/VC2008/CSFML.sln @@ -0,0 +1,98 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-audio", "csfml-audio.vcproj", "{B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-graphics", "csfml-graphics.vcproj", "{FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}" + ProjectSection(ProjectDependencies) = postProject + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-network", "csfml-network.vcproj", "{823DDC98-42D5-4A38-88CF-9DC06C788AE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-system", "csfml-system.vcproj", "{C061A27D-7CA0-4179-9869-672FA04A86A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csfml-window", "csfml-window.vcproj", "{0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug DLL|Win32 = Debug DLL|Win32 + Debug static|Win32 = Debug static|Win32 + Debug|Win32 = Debug|Win32 + Release DLL|Win32 = Release DLL|Win32 + Release static|Win32 = Release static|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.Build.0 = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.Build.0 = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.Build.0 = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.Build.0 = Release static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CSFML/VC2008/csfml-audio-d.def b/CSFML/VC2008/csfml-audio-d.def new file mode 100644 index 00000000..5e2d700e --- /dev/null +++ b/CSFML/VC2008/csfml-audio-d.def @@ -0,0 +1,96 @@ +LIBRARY csfml-audio-d +EXPORTS + sfListener_SetGlobalVolume + sfListener_GetGlobalVolume + sfListener_SetPosition + sfListener_GetPosition + sfListener_SetTarget + sfListener_GetTarget + sfMusic_CreateFromFile + sfMusic_CreateFromMemory + sfMusic_Destroy + sfMusic_SetLoop + sfMusic_GetLoop + sfMusic_GetDuration + sfMusic_Play + sfMusic_Pause + sfMusic_Stop + sfMusic_GetChannelsCount + sfMusic_GetSampleRate + sfMusic_GetStatus + sfMusic_SetPitch + sfMusic_SetVolume + sfMusic_SetPosition + sfMusic_SetMinDistance + sfMusic_SetAttenuation + sfMusic_GetPitch + sfMusic_GetVolume + sfMusic_GetPosition + sfMusic_GetMinDistance + sfMusic_GetAttenuation + sfMusic_GetPlayingOffset + sfSound_Create + sfSound_Destroy + sfSound_Play + sfSound_Pause + sfSound_Stop + sfSound_SetBuffer + sfSound_GetBuffer + sfSound_SetLoop + sfSound_GetLoop + sfSound_GetStatus + sfSound_SetPitch + sfSound_SetVolume + sfSound_SetPosition + sfSound_SetMinDistance + sfSound_SetAttenuation + sfSound_SetPlayingOffset + sfSound_GetPitch + sfSound_GetVolume + sfSound_GetPosition + sfSound_GetPlayingOffset + sfSound_GetMinDistance + sfSound_GetAttenuation + sfSoundBuffer_CreateFromFile + sfSoundBuffer_CreateFromMemory + sfSoundBuffer_CreateFromSamples + sfSoundBuffer_Destroy + sfSoundBuffer_SaveToFile + sfSoundBuffer_GetSamples + sfSoundBuffer_GetSamplesCount + sfSoundBuffer_GetSampleRate + sfSoundBuffer_GetChannelsCount + sfSoundBuffer_GetDuration + sfSoundBufferRecorder_Create + sfSoundBufferRecorder_Destroy + sfSoundBufferRecorder_Start + sfSoundBufferRecorder_Stop + sfSoundBufferRecorder_GetSampleRate + sfSoundBufferRecorder_GetBuffer + sfSoundRecorder_Create + sfSoundRecorder_Destroy + sfSoundRecorder_Start + sfSoundRecorder_Stop + sfSoundRecorder_GetSampleRate + sfSoundRecorder_CanCapture + sfSoundStream_Create + sfSoundStream_Destroy + sfSoundStream_Play + sfSoundStream_Pause + sfSoundStream_Stop + sfSoundStream_GetStatus + sfSoundStream_GetChannelsCount + sfSoundStream_GetSampleRate + sfSoundStream_SetPitch + sfSoundStream_SetVolume + sfSoundStream_SetPosition + sfSoundStream_SetMinDistance + sfSoundStream_SetAttenuation + sfSoundStream_SetLoop + sfSoundStream_GetPitch + sfSoundStream_GetVolume + sfSoundStream_GetPosition + sfSoundStream_GetMinDistance + sfSoundStream_GetAttenuation + sfSoundStream_GetLoop + sfSoundStream_GetPlayingOffset diff --git a/CSFML/VC2008/csfml-audio.def b/CSFML/VC2008/csfml-audio.def new file mode 100644 index 00000000..fb211e82 --- /dev/null +++ b/CSFML/VC2008/csfml-audio.def @@ -0,0 +1,96 @@ +LIBRARY csfml-audio +EXPORTS + sfListener_SetGlobalVolume + sfListener_GetGlobalVolume + sfListener_SetPosition + sfListener_GetPosition + sfListener_SetTarget + sfListener_GetTarget + sfMusic_CreateFromFile + sfMusic_CreateFromMemory + sfMusic_Destroy + sfMusic_SetLoop + sfMusic_GetLoop + sfMusic_GetDuration + sfMusic_Play + sfMusic_Pause + sfMusic_Stop + sfMusic_GetChannelsCount + sfMusic_GetSampleRate + sfMusic_GetStatus + sfMusic_SetPitch + sfMusic_SetVolume + sfMusic_SetPosition + sfMusic_SetMinDistance + sfMusic_SetAttenuation + sfMusic_GetPitch + sfMusic_GetVolume + sfMusic_GetPosition + sfMusic_GetMinDistance + sfMusic_GetAttenuation + sfMusic_GetPlayingOffset + sfSound_Create + sfSound_Destroy + sfSound_Play + sfSound_Pause + sfSound_Stop + sfSound_SetBuffer + sfSound_GetBuffer + sfSound_SetLoop + sfSound_GetLoop + sfSound_GetStatus + sfSound_SetPitch + sfSound_SetVolume + sfSound_SetPosition + sfSound_SetMinDistance + sfSound_SetAttenuation + sfSound_SetPlayingOffset + sfSound_GetPitch + sfSound_GetVolume + sfSound_GetPosition + sfSound_GetPlayingOffset + sfSound_GetMinDistance + sfSound_GetAttenuation + sfSoundBuffer_CreateFromFile + sfSoundBuffer_CreateFromMemory + sfSoundBuffer_CreateFromSamples + sfSoundBuffer_Destroy + sfSoundBuffer_SaveToFile + sfSoundBuffer_GetSamples + sfSoundBuffer_GetSamplesCount + sfSoundBuffer_GetSampleRate + sfSoundBuffer_GetChannelsCount + sfSoundBuffer_GetDuration + sfSoundBufferRecorder_Create + sfSoundBufferRecorder_Destroy + sfSoundBufferRecorder_Start + sfSoundBufferRecorder_Stop + sfSoundBufferRecorder_GetSampleRate + sfSoundBufferRecorder_GetBuffer + sfSoundRecorder_Create + sfSoundRecorder_Destroy + sfSoundRecorder_Start + sfSoundRecorder_Stop + sfSoundRecorder_GetSampleRate + sfSoundRecorder_CanCapture + sfSoundStream_Create + sfSoundStream_Destroy + sfSoundStream_Play + sfSoundStream_Pause + sfSoundStream_Stop + sfSoundStream_GetStatus + sfSoundStream_GetChannelsCount + sfSoundStream_GetSampleRate + sfSoundStream_SetPitch + sfSoundStream_SetVolume + sfSoundStream_SetPosition + sfSoundStream_SetMinDistance + sfSoundStream_SetAttenuation + sfSoundStream_SetLoop + sfSoundStream_GetPitch + sfSoundStream_GetVolume + sfSoundStream_GetPosition + sfSoundStream_GetMinDistance + sfSoundStream_GetAttenuation + sfSoundStream_GetLoop + sfSoundStream_GetPlayingOffset diff --git a/CSFML/VC2008/csfml-audio.vcproj b/CSFML/VC2008/csfml-audio.vcproj new file mode 100644 index 00000000..b9ea9607 --- /dev/null +++ b/CSFML/VC2008/csfml-audio.vcproj @@ -0,0 +1,406 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2008/csfml-graphics-d.def b/CSFML/VC2008/csfml-graphics-d.def new file mode 100644 index 00000000..ba05c6a0 --- /dev/null +++ b/CSFML/VC2008/csfml-graphics-d.def @@ -0,0 +1,215 @@ +LIBRARY csfml-graphics-d +EXPORTS + sfBlack + sfWhite + sfRed + sfGreen + sfBlue + sfYellow + sfMagenta + sfCyan + sfColor_FromRGB + sfColor_FromRGBA + sfColor_Add + sfColor_Modulate + sfImage_Create + sfImage_CreateFromColor + sfImage_CreateFromPixels + sfImage_CreateFromFile + sfImage_CreateFromMemory + sfImage_Destroy + sfImage_SaveToFile + sfImage_CreateMaskFromColor + sfImage_Copy + sfImage_CopyScreen + sfImage_SetPixel + sfImage_GetPixel + sfImage_GetPixelsPtr + sfImage_Bind + sfImage_SetSmooth + sfImage_GetWidth + sfImage_GetHeight + sfImage_IsSmooth + sfFloatRect_Offset + sfFloatRect_Contains + sfFloatRect_Intersects + sfIntRect_Offset + sfIntRect_Contains + sfIntRect_Intersects + sfPostFX_CreateFromFile + sfPostFX_CreateFromMemory + sfPostFX_Destroy + sfPostFX_SetParameter1 + sfPostFX_SetParameter2 + sfPostFX_SetParameter3 + sfPostFX_SetParameter4 + sfPostFX_SetTexture + sfPostFX_CanUsePostFX + sfShape_Create + sfShape_CreateLine + sfShape_CreateRectangle + sfShape_CreateCircle + sfShape_Destroy + sfShape_SetX + sfShape_SetY + sfShape_SetPosition + sfShape_SetScaleX + sfShape_SetScaleY + sfShape_SetScale + sfShape_SetRotation + sfShape_SetCenter + sfShape_SetColor + sfShape_SetBlendMode + sfShape_GetX + sfShape_GetY + sfShape_GetScaleX + sfShape_GetScaleY + sfShape_GetRotation + sfShape_GetCenterX + sfShape_GetCenterY + sfShape_GetColor + sfShape_GetBlendMode + sfShape_Move + sfShape_Scale + sfShape_Rotate + sfShape_TransformToLocal + sfShape_TransformToGlobal + sfShape_AddPoint + sfShape_EnableFill + sfShape_EnableOutline + sfShape_SetOutlineWidth + sfShape_GetOutlineWidth + sfShape_GetNbPoints + sfShape_GetPointPosition + sfShape_GetPointColor + sfShape_GetPointOutlineColor + sfShape_SetPointPosition + sfShape_SetPointColor + sfShape_SetPointOutlineColor + sfSprite_Create + sfSprite_Destroy + sfSprite_SetX + sfSprite_SetY + sfSprite_SetPosition + sfSprite_SetScaleX + sfSprite_SetScaleY + sfSprite_SetScale + sfSprite_SetRotation + sfSprite_SetCenter + sfSprite_SetColor + sfSprite_SetBlendMode + sfSprite_GetX + sfSprite_GetY + sfSprite_GetScaleX + sfSprite_GetScaleY + sfSprite_GetRotation + sfSprite_GetCenterX + sfSprite_GetCenterY + sfSprite_GetColor + sfSprite_GetBlendMode + sfSprite_Move + sfSprite_Scale + sfSprite_Rotate + sfSprite_TransformToLocal + sfSprite_TransformToGlobal + sfSprite_SetImage + sfSprite_SetSubRect + sfSprite_Resize + sfSprite_FlipX + sfSprite_FlipY + sfSprite_GetImage + sfSprite_GetSubRect + sfSprite_GetWidth + sfSprite_GetHeight + sfSprite_GetPixel + sfFont_Create + sfFont_CreateFromFile + sfFont_CreateFromMemory + sfFont_Destroy + sfFont_GetCharacterSize + sfFont_GetDefaultFont + sfString_Create + sfString_Destroy + sfString_SetX + sfString_SetY + sfString_SetPosition + sfString_SetScaleX + sfString_SetScaleY + sfString_SetScale + sfString_SetRotation + sfString_SetCenter + sfString_SetColor + sfString_SetBlendMode + sfString_GetX + sfString_GetY + sfString_GetScaleX + sfString_GetScaleY + sfString_GetRotation + sfString_GetCenterX + sfString_GetCenterY + sfString_GetColor + sfString_GetBlendMode + sfString_Move + sfString_Scale + sfString_Rotate + sfString_TransformToLocal + sfString_TransformToGlobal + sfString_SetText + sfString_SetUnicodeText + sfString_SetFont + sfString_SetSize + sfString_SetStyle + sfString_GetUnicodeText + sfString_GetText + sfString_GetFont + sfString_GetSize + sfString_GetStyle + sfString_GetCharacterPos + sfString_GetRect + sfRenderWindow_Create + sfRenderWindow_CreateFromHandle + sfRenderWindow_Destroy + sfRenderWindow_Close + sfRenderWindow_IsOpened + sfRenderWindow_GetWidth + sfRenderWindow_GetHeight + sfRenderWindow_GetSettings + sfRenderWindow_GetEvent + sfRenderWindow_UseVerticalSync + sfRenderWindow_ShowMouseCursor + sfRenderWindow_SetCursorPosition + sfRenderWindow_SetPosition + sfRenderWindow_SetSize + sfRenderWindow_Show + sfRenderWindow_EnableKeyRepeat + sfRenderWindow_SetIcon + sfRenderWindow_SetActive + sfRenderWindow_Display + sfRenderWindow_GetInput + sfRenderWindow_SetFramerateLimit + sfRenderWindow_GetFrameTime + sfRenderWindow_SetJoystickThreshold + sfRenderWindow_DrawPostFX + sfRenderWindow_DrawSprite + sfRenderWindow_DrawString + sfRenderWindow_DrawShape + sfRenderWindow_Capture + sfRenderWindow_Clear + sfRenderWindow_SetView + sfRenderWindow_GetView + sfRenderWindow_GetDefaultView + sfRenderWindow_ConvertCoords + sfRenderWindow_PreserveOpenGLStates + sfView_Create + sfView_CreateFromRect + sfView_Destroy + sfView_SetCenter + sfView_SetHalfSize + sfView_SetFromRect + sfView_GetCenterX + sfView_GetCenterY + sfView_GetHalfSizeX + sfView_GetHalfSizeY + sfView_GetRect + sfView_Move + sfView_Zoom diff --git a/CSFML/VC2008/csfml-graphics.def b/CSFML/VC2008/csfml-graphics.def new file mode 100644 index 00000000..678c053c --- /dev/null +++ b/CSFML/VC2008/csfml-graphics.def @@ -0,0 +1,215 @@ +LIBRARY csfml-graphics +EXPORTS + sfBlack + sfWhite + sfRed + sfGreen + sfBlue + sfYellow + sfMagenta + sfCyan + sfColor_FromRGB + sfColor_FromRGBA + sfColor_Add + sfColor_Modulate + sfImage_Create + sfImage_CreateFromColor + sfImage_CreateFromPixels + sfImage_CreateFromFile + sfImage_CreateFromMemory + sfImage_Destroy + sfImage_SaveToFile + sfImage_CreateMaskFromColor + sfImage_Copy + sfImage_CopyScreen + sfImage_SetPixel + sfImage_GetPixel + sfImage_GetPixelsPtr + sfImage_Bind + sfImage_SetSmooth + sfImage_GetWidth + sfImage_GetHeight + sfImage_IsSmooth + sfFloatRect_Offset + sfFloatRect_Contains + sfFloatRect_Intersects + sfIntRect_Offset + sfIntRect_Contains + sfIntRect_Intersects + sfPostFX_CreateFromFile + sfPostFX_CreateFromMemory + sfPostFX_Destroy + sfPostFX_SetParameter1 + sfPostFX_SetParameter2 + sfPostFX_SetParameter3 + sfPostFX_SetParameter4 + sfPostFX_SetTexture + sfPostFX_CanUsePostFX + sfShape_Create + sfShape_CreateLine + sfShape_CreateRectangle + sfShape_CreateCircle + sfShape_Destroy + sfShape_SetX + sfShape_SetY + sfShape_SetPosition + sfShape_SetScaleX + sfShape_SetScaleY + sfShape_SetScale + sfShape_SetRotation + sfShape_SetCenter + sfShape_SetColor + sfShape_SetBlendMode + sfShape_GetX + sfShape_GetY + sfShape_GetScaleX + sfShape_GetScaleY + sfShape_GetRotation + sfShape_GetCenterX + sfShape_GetCenterY + sfShape_GetColor + sfShape_GetBlendMode + sfShape_Move + sfShape_Scale + sfShape_Rotate + sfShape_TransformToLocal + sfShape_TransformToGlobal + sfShape_AddPoint + sfShape_EnableFill + sfShape_EnableOutline + sfShape_SetOutlineWidth + sfShape_GetOutlineWidth + sfShape_GetNbPoints + sfShape_GetPointPosition + sfShape_GetPointColor + sfShape_GetPointOutlineColor + sfShape_SetPointPosition + sfShape_SetPointColor + sfShape_SetPointOutlineColor + sfSprite_Create + sfSprite_Destroy + sfSprite_SetX + sfSprite_SetY + sfSprite_SetPosition + sfSprite_SetScaleX + sfSprite_SetScaleY + sfSprite_SetScale + sfSprite_SetRotation + sfSprite_SetCenter + sfSprite_SetColor + sfSprite_SetBlendMode + sfSprite_GetX + sfSprite_GetY + sfSprite_GetScaleX + sfSprite_GetScaleY + sfSprite_GetRotation + sfSprite_GetCenterX + sfSprite_GetCenterY + sfSprite_GetColor + sfSprite_GetBlendMode + sfSprite_Move + sfSprite_Scale + sfSprite_Rotate + sfSprite_TransformToLocal + sfSprite_TransformToGlobal + sfSprite_SetImage + sfSprite_SetSubRect + sfSprite_Resize + sfSprite_FlipX + sfSprite_FlipY + sfSprite_GetImage + sfSprite_GetSubRect + sfSprite_GetWidth + sfSprite_GetHeight + sfSprite_GetPixel + sfFont_Create + sfFont_CreateFromFile + sfFont_CreateFromMemory + sfFont_Destroy + sfFont_GetCharacterSize + sfFont_GetDefaultFont + sfString_Create + sfString_Destroy + sfString_SetX + sfString_SetY + sfString_SetPosition + sfString_SetScaleX + sfString_SetScaleY + sfString_SetScale + sfString_SetRotation + sfString_SetCenter + sfString_SetColor + sfString_SetBlendMode + sfString_GetX + sfString_GetY + sfString_GetScaleX + sfString_GetScaleY + sfString_GetRotation + sfString_GetCenterX + sfString_GetCenterY + sfString_GetColor + sfString_GetBlendMode + sfString_Move + sfString_Scale + sfString_Rotate + sfString_TransformToLocal + sfString_TransformToGlobal + sfString_SetText + sfString_SetUnicodeText + sfString_SetFont + sfString_SetSize + sfString_SetStyle + sfString_GetUnicodeText + sfString_GetText + sfString_GetFont + sfString_GetSize + sfString_GetStyle + sfString_GetCharacterPos + sfString_GetRect + sfRenderWindow_Create + sfRenderWindow_CreateFromHandle + sfRenderWindow_Destroy + sfRenderWindow_Close + sfRenderWindow_IsOpened + sfRenderWindow_GetWidth + sfRenderWindow_GetHeight + sfRenderWindow_GetSettings + sfRenderWindow_GetEvent + sfRenderWindow_UseVerticalSync + sfRenderWindow_ShowMouseCursor + sfRenderWindow_SetCursorPosition + sfRenderWindow_SetPosition + sfRenderWindow_SetSize + sfRenderWindow_Show + sfRenderWindow_EnableKeyRepeat + sfRenderWindow_SetIcon + sfRenderWindow_SetActive + sfRenderWindow_Display + sfRenderWindow_GetInput + sfRenderWindow_SetFramerateLimit + sfRenderWindow_GetFrameTime + sfRenderWindow_SetJoystickThreshold + sfRenderWindow_DrawPostFX + sfRenderWindow_DrawSprite + sfRenderWindow_DrawString + sfRenderWindow_DrawShape + sfRenderWindow_Capture + sfRenderWindow_Clear + sfRenderWindow_SetView + sfRenderWindow_GetView + sfRenderWindow_GetDefaultView + sfRenderWindow_ConvertCoords + sfRenderWindow_PreserveOpenGLStates + sfView_Create + sfView_CreateFromRect + sfView_Destroy + sfView_SetCenter + sfView_SetHalfSize + sfView_SetFromRect + sfView_GetCenterX + sfView_GetCenterY + sfView_GetHalfSizeX + sfView_GetHalfSizeY + sfView_GetRect + sfView_Move + sfView_Zoom diff --git a/CSFML/VC2008/csfml-graphics.vcproj b/CSFML/VC2008/csfml-graphics.vcproj new file mode 100644 index 00000000..891c51de --- /dev/null +++ b/CSFML/VC2008/csfml-graphics.vcproj @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2008/csfml-network-d.def b/CSFML/VC2008/csfml-network-d.def new file mode 100644 index 00000000..3235bbf3 --- /dev/null +++ b/CSFML/VC2008/csfml-network-d.def @@ -0,0 +1,125 @@ +LIBRARY csfml-network-d +EXPORTS + sfFtpListingResponse_Destroy + sfFtpListingResponse_IsOk + sfFtpListingResponse_GetStatus + sfFtpListingResponse_GetMessage + sfFtpListingResponse_GetCount + sfFtpListingResponse_GetFilename + sfFtpDirectoryResponse_Destroy + sfFtpDirectoryResponse_IsOk + sfFtpDirectoryResponse_GetStatus + sfFtpDirectoryResponse_GetMessage + sfFtpDirectoryResponse_GetDirectory + sfFtpResponse_Destroy + sfFtpResponse_IsOk + sfFtpResponse_GetStatus + sfFtpResponse_GetMessage + sfFtp_Create + sfFtp_Destroy + sfFtp_Connect + sfFtp_LoginAnonymous + sfFtp_Login + sfFtp_Disconnect + sfFtp_KeepAlive + sfFtp_GetWorkingDirectory + sfFtp_GetDirectoryListing + sfFtp_ChangeDirectory + sfFtp_ParentDirectory + sfFtp_MakeDirectory + sfFtp_DeleteDirectory + sfFtp_RenameFile + sfFtp_DeleteFile + sfFtp_Download + sfFtp_Upload + sfHttpRequest_Create + sfHttpRequest_Destroy + sfHttpRequest_SetField + sfHttpRequest_SetMethod + sfHttpRequest_SetURI + sfHttpRequest_SetHttpVersion + sfHttpRequest_SetBody + sfHttpResponse_Destroy + sfHttpResponse_GetField + sfHttpResponse_GetStatus + sfHttpResponse_GetMajorVersion + sfHttpResponse_GetMinorVersion + sfHttpResponse_GetBody + sfHttp_Create + sfHttp_Destroy + sfHttp_SetHost + sfHttp_SendRequest + sfIPAddress_FromString + sfIPAddress_FromBytes + sfIPAddress_FromInteger + sfIPAddress_IsValid + sfIPAddress_ToString + sfIPAddress_ToInteger + sfIPAddress_GetLocalAddress + sfIPAddress_GetPublicAddress + sfIPAddress_LocalHost + sfSocketTCP_Create + sfSocketTCP_Destroy + sfSocketTCP_SetBlocking + sfSocketTCP_Connect + sfSocketTCP_Listen + sfSocketTCP_Accept + sfSocketTCP_Send + sfSocketTCP_Receive + sfSocketTCP_SendPacket + sfSocketTCP_ReceivePacket + sfSocketTCP_IsValid + sfSocketUDP_Create + sfSocketUDP_Destroy + sfSocketUDP_SetBlocking + sfSocketUDP_Bind + sfSocketUDP_Unbind + sfSocketUDP_Send + sfSocketUDP_Receive + sfSocketUDP_SendPacket + sfSocketUDP_ReceivePacket + sfSocketUDP_IsValid + sfPacket_Create + sfPacket_Destroy + sfPacket_Append + sfPacket_Clear + sfPacket_GetData + sfPacket_GetDataSize + sfPacket_EndOfPacket + sfPacket_CanRead + sfPacket_ReadBool + sfPacket_ReadInt8 + sfPacket_ReadUint8 + sfPacket_ReadInt16 + sfPacket_ReadUint16 + sfPacket_ReadInt32 + sfPacket_ReadUint32 + sfPacket_ReadFloat + sfPacket_ReadDouble + sfPacket_ReadString + sfPacket_ReadWideString + sfPacket_WriteBool + sfPacket_WriteInt8 + sfPacket_WriteUint8 + sfPacket_WriteInt16 + sfPacket_WriteUint16 + sfPacket_WriteInt32 + sfPacket_WriteUint32 + sfPacket_WriteFloat + sfPacket_WriteDouble + sfPacket_WriteString + sfPacket_WriteWideString + sfSelectorTCP_Create + sfSelectorTCP_Destroy + sfSelectorTCP_Add + sfSelectorTCP_Remove + sfSelectorTCP_Clear + sfSelectorTCP_Wait + sfSelectorTCP_GetSocketReady + sfSelectorUDP_Create + sfSelectorUDP_Destroy + sfSelectorUDP_Add + sfSelectorUDP_Remove + sfSelectorUDP_Clear + sfSelectorUDP_Wait + sfSelectorUDP_GetSocketReady diff --git a/CSFML/VC2008/csfml-network.def b/CSFML/VC2008/csfml-network.def new file mode 100644 index 00000000..cdd067d7 --- /dev/null +++ b/CSFML/VC2008/csfml-network.def @@ -0,0 +1,125 @@ +LIBRARY csfml-network +EXPORTS + sfFtpListingResponse_Destroy + sfFtpListingResponse_IsOk + sfFtpListingResponse_GetStatus + sfFtpListingResponse_GetMessage + sfFtpListingResponse_GetCount + sfFtpListingResponse_GetFilename + sfFtpDirectoryResponse_Destroy + sfFtpDirectoryResponse_IsOk + sfFtpDirectoryResponse_GetStatus + sfFtpDirectoryResponse_GetMessage + sfFtpDirectoryResponse_GetDirectory + sfFtpResponse_Destroy + sfFtpResponse_IsOk + sfFtpResponse_GetStatus + sfFtpResponse_GetMessage + sfFtp_Create + sfFtp_Destroy + sfFtp_Connect + sfFtp_LoginAnonymous + sfFtp_Login + sfFtp_Disconnect + sfFtp_KeepAlive + sfFtp_GetWorkingDirectory + sfFtp_GetDirectoryListing + sfFtp_ChangeDirectory + sfFtp_ParentDirectory + sfFtp_MakeDirectory + sfFtp_DeleteDirectory + sfFtp_RenameFile + sfFtp_DeleteFile + sfFtp_Download + sfFtp_Upload + sfHttpRequest_Create + sfHttpRequest_Destroy + sfHttpRequest_SetField + sfHttpRequest_SetMethod + sfHttpRequest_SetURI + sfHttpRequest_SetHttpVersion + sfHttpRequest_SetBody + sfHttpResponse_Destroy + sfHttpResponse_GetField + sfHttpResponse_GetStatus + sfHttpResponse_GetMajorVersion + sfHttpResponse_GetMinorVersion + sfHttpResponse_GetBody + sfHttp_Create + sfHttp_Destroy + sfHttp_SetHost + sfHttp_SendRequest + sfIPAddress_FromString + sfIPAddress_FromBytes + sfIPAddress_FromInteger + sfIPAddress_IsValid + sfIPAddress_ToString + sfIPAddress_ToInteger + sfIPAddress_GetLocalAddress + sfIPAddress_GetPublicAddress + sfIPAddress_LocalHost + sfSocketTCP_Create + sfSocketTCP_Destroy + sfSocketTCP_SetBlocking + sfSocketTCP_Connect + sfSocketTCP_Listen + sfSocketTCP_Accept + sfSocketTCP_Send + sfSocketTCP_Receive + sfSocketTCP_SendPacket + sfSocketTCP_ReceivePacket + sfSocketTCP_IsValid + sfSocketUDP_Create + sfSocketUDP_Destroy + sfSocketUDP_SetBlocking + sfSocketUDP_Bind + sfSocketUDP_Unbind + sfSocketUDP_Send + sfSocketUDP_Receive + sfSocketUDP_SendPacket + sfSocketUDP_ReceivePacket + sfSocketUDP_IsValid + sfPacket_Create + sfPacket_Destroy + sfPacket_Append + sfPacket_Clear + sfPacket_GetData + sfPacket_GetDataSize + sfPacket_EndOfPacket + sfPacket_CanRead + sfPacket_ReadBool + sfPacket_ReadInt8 + sfPacket_ReadUint8 + sfPacket_ReadInt16 + sfPacket_ReadUint16 + sfPacket_ReadInt32 + sfPacket_ReadUint32 + sfPacket_ReadFloat + sfPacket_ReadDouble + sfPacket_ReadString + sfPacket_ReadWideString + sfPacket_WriteBool + sfPacket_WriteInt8 + sfPacket_WriteUint8 + sfPacket_WriteInt16 + sfPacket_WriteUint16 + sfPacket_WriteInt32 + sfPacket_WriteUint32 + sfPacket_WriteFloat + sfPacket_WriteDouble + sfPacket_WriteString + sfPacket_WriteWideString + sfSelectorTCP_Create + sfSelectorTCP_Destroy + sfSelectorTCP_Add + sfSelectorTCP_Remove + sfSelectorTCP_Clear + sfSelectorTCP_Wait + sfSelectorTCP_GetSocketReady + sfSelectorUDP_Create + sfSelectorUDP_Destroy + sfSelectorUDP_Add + sfSelectorUDP_Remove + sfSelectorUDP_Clear + sfSelectorUDP_Wait + sfSelectorUDP_GetSocketReady diff --git a/CSFML/VC2008/csfml-network.vcproj b/CSFML/VC2008/csfml-network.vcproj new file mode 100644 index 00000000..33de31d5 --- /dev/null +++ b/CSFML/VC2008/csfml-network.vcproj @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2008/csfml-system-d.def b/CSFML/VC2008/csfml-system-d.def new file mode 100644 index 00000000..122a804c --- /dev/null +++ b/CSFML/VC2008/csfml-system-d.def @@ -0,0 +1,20 @@ +LIBRARY csfml-system-d +EXPORTS + sfClock_Create + sfClock_Destroy + sfClock_GetTime + sfClock_Reset + sfMutex_Create + sfMutex_Destroy + sfMutex_Lock + sfMutex_Unlock + sfRandom_SetSeed + sfRandom_GetSeed + sfRandom_Float + sfRandom_Int + sfSleep + sfThread_Create + sfThread_Destroy + sfThread_Launch + sfThread_Wait + sfThread_Terminate diff --git a/CSFML/VC2008/csfml-system.def b/CSFML/VC2008/csfml-system.def new file mode 100644 index 00000000..da7c4247 --- /dev/null +++ b/CSFML/VC2008/csfml-system.def @@ -0,0 +1,20 @@ +LIBRARY csfml-system +EXPORTS + sfClock_Create + sfClock_Destroy + sfClock_GetTime + sfClock_Reset + sfMutex_Create + sfMutex_Destroy + sfMutex_Lock + sfMutex_Unlock + sfRandom_SetSeed + sfRandom_GetSeed + sfRandom_Float + sfRandom_Int + sfSleep + sfThread_Create + sfThread_Destroy + sfThread_Launch + sfThread_Wait + sfThread_Terminate diff --git a/CSFML/VC2008/csfml-system.vcproj b/CSFML/VC2008/csfml-system.vcproj new file mode 100644 index 00000000..ab2741fc --- /dev/null +++ b/CSFML/VC2008/csfml-system.vcproj @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/VC2008/csfml-window-d.def b/CSFML/VC2008/csfml-window-d.def new file mode 100644 index 00000000..0003ae98 --- /dev/null +++ b/CSFML/VC2008/csfml-window-d.def @@ -0,0 +1,38 @@ +LIBRARY csfml-window-d +EXPORTS + sfInput_IsKeyDown + sfInput_IsMouseButtonDown + sfInput_IsJoystickButtonDown + sfInput_GetMouseX + sfInput_GetMouseY + sfInput_GetJoystickAxis + sfVideoMode_GetDesktopMode + sfVideoMode_GetMode + sfVideoMode_GetModesCount + sfVideoMode_IsValid + sfWindow_Create + sfWindow_CreateFromHandle + sfWindow_Close + sfWindow_IsOpened + sfWindow_Destroy + sfWindow_GetWidth + sfWindow_GetHeight + sfWindow_GetSettings + sfWindow_GetEvent + sfWindow_UseVerticalSync + sfWindow_ShowMouseCursor + sfWindow_SetCursorPosition + sfWindow_SetPosition + sfWindow_SetSize + sfWindow_Show + sfWindow_EnableKeyRepeat + sfWindow_SetIcon + sfWindow_SetActive + sfWindow_Display + sfWindow_GetInput + sfWindow_SetFramerateLimit + sfWindow_GetFrameTime + sfWindow_SetJoystickThreshold + sfContext_Create + sfContext_Destroy + sfContext_SetActive diff --git a/CSFML/VC2008/csfml-window.def b/CSFML/VC2008/csfml-window.def new file mode 100644 index 00000000..4e1c05c4 --- /dev/null +++ b/CSFML/VC2008/csfml-window.def @@ -0,0 +1,38 @@ +LIBRARY csfml-window +EXPORTS + sfInput_IsKeyDown + sfInput_IsMouseButtonDown + sfInput_IsJoystickButtonDown + sfInput_GetMouseX + sfInput_GetMouseY + sfInput_GetJoystickAxis + sfVideoMode_GetDesktopMode + sfVideoMode_GetMode + sfVideoMode_GetModesCount + sfVideoMode_IsValid + sfWindow_Create + sfWindow_CreateFromHandle + sfWindow_Close + sfWindow_IsOpened + sfWindow_Destroy + sfWindow_GetWidth + sfWindow_GetHeight + sfWindow_GetSettings + sfWindow_GetEvent + sfWindow_UseVerticalSync + sfWindow_ShowMouseCursor + sfWindow_SetCursorPosition + sfWindow_SetPosition + sfWindow_SetSize + sfWindow_Show + sfWindow_EnableKeyRepeat + sfWindow_SetIcon + sfWindow_SetActive + sfWindow_Display + sfWindow_GetInput + sfWindow_SetFramerateLimit + sfWindow_GetFrameTime + sfWindow_SetJoystickThreshold + sfContext_Create + sfContext_Destroy + sfContext_SetActive diff --git a/CSFML/VC2008/csfml-window.vcproj b/CSFML/VC2008/csfml-window.vcproj new file mode 100644 index 00000000..68535ba3 --- /dev/null +++ b/CSFML/VC2008/csfml-window.vcproj @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSFML/codeblocks/CSFML.workspace b/CSFML/codeblocks/CSFML.workspace new file mode 100644 index 00000000..b3f47a2c --- /dev/null +++ b/CSFML/codeblocks/CSFML.workspace @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/CSFML/codeblocks/csfml-audio.cbp b/CSFML/codeblocks/csfml-audio.cbp new file mode 100644 index 00000000..2e5bcde2 --- /dev/null +++ b/CSFML/codeblocks/csfml-audio.cbp @@ -0,0 +1,137 @@ + + + + + + diff --git a/CSFML/codeblocks/csfml-graphics.cbp b/CSFML/codeblocks/csfml-graphics.cbp new file mode 100644 index 00000000..3f2e39ab --- /dev/null +++ b/CSFML/codeblocks/csfml-graphics.cbp @@ -0,0 +1,151 @@ + + + + + + diff --git a/CSFML/codeblocks/csfml-network.cbp b/CSFML/codeblocks/csfml-network.cbp new file mode 100644 index 00000000..c9a0f695 --- /dev/null +++ b/CSFML/codeblocks/csfml-network.cbp @@ -0,0 +1,128 @@ + + + + + + diff --git a/CSFML/codeblocks/csfml-system.cbp b/CSFML/codeblocks/csfml-system.cbp new file mode 100644 index 00000000..d25898c1 --- /dev/null +++ b/CSFML/codeblocks/csfml-system.cbp @@ -0,0 +1,116 @@ + + + + + + diff --git a/CSFML/codeblocks/csfml-window.cbp b/CSFML/codeblocks/csfml-window.cbp new file mode 100644 index 00000000..b6c8a389 --- /dev/null +++ b/CSFML/codeblocks/csfml-window.cbp @@ -0,0 +1,135 @@ + + + + + + diff --git a/CSFML/footer.htm b/CSFML/footer.htm new file mode 100644 index 00000000..a03c90eb --- /dev/null +++ b/CSFML/footer.htm @@ -0,0 +1,8 @@ + + + + + diff --git a/CSFML/header.htm b/CSFML/header.htm new file mode 100644 index 00000000..0ac39bc0 --- /dev/null +++ b/CSFML/header.htm @@ -0,0 +1,12 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + diff --git a/CSFML/include/SFML/Audio.h b/CSFML/include/SFML/Audio.h new file mode 100644 index 00000000..bfa70f4b --- /dev/null +++ b/CSFML/include/SFML/Audio.h @@ -0,0 +1,41 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_AUDIO_H +#define SFML_AUDIO_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include + + +#endif // SFML_AUDIO_H diff --git a/CSFML/include/SFML/Audio/Listener.h b/CSFML/include/SFML/Audio/Listener.h new file mode 100644 index 00000000..3389a2aa --- /dev/null +++ b/CSFML/include/SFML/Audio/Listener.h @@ -0,0 +1,93 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_LISTENER_H +#define SFML_LISTENER_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Change the global volume of all the sounds +/// +/// \param Volume : New global volume, in the range [0, 100] +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfListener_SetGlobalVolume(float Volume); + +//////////////////////////////////////////////////////////// +/// Get the current value of the global volume of all the sounds +/// +/// \return Current global volume, in the range [0, 100] +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfListener_GetGlobalVolume(); + +//////////////////////////////////////////////////////////// +/// Change the position of the listener +/// +/// \param PosX : X position of the listener in the world +/// \param PosY : Y position of the listener in the world +/// \param PosZ : Z position of the listener in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfListener_SetPosition(float PosX, float PosY, float PosZ); + +//////////////////////////////////////////////////////////// +/// Get the current position of the listener +/// +/// \param PosX : X position of the listener in the world +/// \param PosY : Y position of the listener in the world +/// \param PosZ : Z position of the listener in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfListener_GetPosition(float* PosX, float* PosY, float* PosZ); + +//////////////////////////////////////////////////////////// +/// Change the orientation of the listener (the point +/// he must look at) +/// +/// \param TargetX : X position of the point the listener must look at +/// \param TargetY : X position of the point the listener must look at +/// \param TargetZ : X position of the point the listener must look at +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfListener_SetTarget(float TargetX, float TargetY, float TargetZ); + +//////////////////////////////////////////////////////////// +/// Get the current orientation of the listener (the point +/// he's looking at) +/// +/// \param TargetX : X position of the point the listener is looking at +/// \param TargetY : X position of the point the listener is looking at +/// \param TargetZ : X position of the point the listener is looking at +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfListener_GetTarget(float* TargetX, float* TargetY, float* TargetZ); + + +#endif // SFML_LISTENER_H diff --git a/CSFML/include/SFML/Audio/Music.h b/CSFML/include/SFML/Audio/Music.h new file mode 100644 index 00000000..256cfaf8 --- /dev/null +++ b/CSFML/include/SFML/Audio/Music.h @@ -0,0 +1,267 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MUSIC_H +#define SFML_MUSIC_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfMusic defines a big sound played using streaming, +/// so usually what we call a music :) +//////////////////////////////////////////////////////////// +typedef struct sfMusic sfMusic; + + +//////////////////////////////////////////////////////////// +/// Create a new music and load it from a file +/// +/// \param Filename : Path of the music file to open +/// +/// \return A new sfMusic object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfMusic* sfMusic_CreateFromFile(const char* Filename); + +//////////////////////////////////////////////////////////// +/// Create a new music and load it from a file in memory +/// +/// \param Data : Pointer to the file data in memory +/// \param SizeInBytes : Size of the data to load, in bytes +/// +/// \return A new sfMusic object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfMusic* sfMusic_CreateFromMemory(const char* Data, size_t SizeInBytes); + +//////////////////////////////////////////////////////////// +/// Destroy an existing music +/// +/// \param Music : Music to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_Destroy(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Set a music loop state +/// +/// \param Music : Music to set the loop state +/// \param Loop : sfTrue to play in loop, sfFalse to play once +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_SetLoop(sfMusic* Music, sfBool Loop); + +//////////////////////////////////////////////////////////// +/// Tell whether or not a music is looping +/// +/// \param Music : Music to get the loop state from +/// +/// \return sfTrue if the music is looping, sfFalse otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfMusic_GetLoop(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get a music duration +/// +/// \param Music : Music to get the duration from +/// +/// \return Music duration, in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfMusic_GetDuration(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Start playing a music +/// +/// \param Music : Music to play +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_Play(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Pause a music +/// +/// \param Music : Music to pause +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_Pause(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Stop playing a music +/// +/// \param Music : Music to stop +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_Stop(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Return the number of channels of a music (1 = mono, 2 = stereo) +/// +/// \param Music : Music to get the channels count from +/// +/// \return Number of channels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfMusic_GetChannelsCount(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get the stream sample rate of a music +/// +/// \param Music : Music to get the sample rate from +/// +/// \return Stream frequency (number of samples per second) +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfMusic_GetSampleRate(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get the status of a music (stopped, paused, playing) +/// +/// \param Music : Music to get the status from +/// +/// \return Current status of the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundStatus sfMusic_GetStatus(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get the current playing position of a music +/// +/// \param Music : Music to get the position from +/// +/// \return Current playing position, expressed in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfMusic_GetPlayingOffset(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Set the pitch of a music +/// +/// \param Music : Music to modify +/// \param Pitch : New pitch +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_SetPitch(sfMusic* Music, float Pitch); + +//////////////////////////////////////////////////////////// +/// Set the volume of a music +/// +/// \param Music : Music to modify +/// \param Volume : Volume (in range [0, 100]) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_SetVolume(sfMusic* Music, float Volume); + +//////////////////////////////////////////////////////////// +/// Set the position of a music +/// +/// \param Music : Music to modify +/// \param X : X position of the sound in the world +/// \param Y : Y position of the sound in the world +/// \param Z : Z position of the sound in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_SetPosition(sfMusic* Music, float X, float Y, float Z); + +//////////////////////////////////////////////////////////// +/// Set the minimum distance - closer than this distance, +/// the listener will hear the music at its maximum volume. +/// The default minimum distance is 1.0 +/// +/// \param Music : Music to modify +/// \param MinDistance : New minimum distance for the music +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_SetMinDistance(sfMusic* Music, float MinDistance); + +//////////////////////////////////////////////////////////// +/// Set the attenuation factor - the higher the attenuation, the +/// more the sound will be attenuated with distance from listener. +/// The default attenuation factor 1.0 +/// +/// \param Sound : Sound to modify +/// \param Attenuation : New attenuation factor for the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_SetAttenuation(sfMusic* Music, float Attenuation); + +//////////////////////////////////////////////////////////// +/// Get the pitch of a music +/// +/// \param Music : Music to get the pitch from +/// +/// \return Pitch value +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfMusic_GetPitch(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get the volume of a music +/// +/// \param Music : Music to get the volume from +/// +/// \return Volume value (in range [1, 100]) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfMusic_GetVolume(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get the position of a music +/// +/// \param Music : Music to get the position from +/// \param X : X position of the sound in the world +/// \param Y : Y position of the sound in the world +/// \param Z : Z position of the sound in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMusic_GetPosition(sfMusic* Music, float* X, float* Y, float* Z); + +//////////////////////////////////////////////////////////// +/// Get the minimum distance of a music +/// +/// \param Music : Music to get the minimum distance from +/// +/// \return Minimum distance for the music +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfMusic_GetMinDistance(sfMusic* Music); + +//////////////////////////////////////////////////////////// +/// Get the attenuation factor of a music +/// +/// \param Music : Music to get the attenuation factor from +/// +/// \return Attenuation factor for the a music +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfMusic_GetAttenuation(sfMusic* Music); + + +#endif // SFML_MUSIC_H diff --git a/CSFML/include/SFML/Audio/Sound.h b/CSFML/include/SFML/Audio/Sound.h new file mode 100644 index 00000000..c749b59a --- /dev/null +++ b/CSFML/include/SFML/Audio/Sound.h @@ -0,0 +1,253 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUND_H +#define SFML_SOUND_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfSound defines the properties of the sound such as position, +/// volume, pitch, etc. +//////////////////////////////////////////////////////////// +typedef struct sfSound sfSound; + + +//////////////////////////////////////////////////////////// +/// Construct a new sound +/// +/// \return A new sfSound object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSound* sfSound_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound +/// +/// \param Sound : Sound to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_Destroy(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Start playing a sound +/// +/// \param Sound : Sound to play +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_Play(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Pause a sound +/// +/// \param Sound : Sound to pause +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_Pause(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Stop playing a sound +/// +/// \param Sound : Sound to stop +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_Stop(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Bind a sound buffer to a sound +/// +/// \param Sound : Sound to set the loop state +/// \param Buffer : Buffer to bind +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetBuffer(sfSound* Sound, sfSoundBuffer* Buffer); + +//////////////////////////////////////////////////////////// +/// Get the sound buffer bound to a sound +/// +/// \param Sound : Sound to get the buffer from +/// +/// \return Pointer to the sound's buffer +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundBuffer* sfSound_GetBuffer(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Set a sound loop state +/// +/// \param Sound : Sound to set the loop state +/// \param Loop : sfTrue to play in loop, sfFalse to play once +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetLoop(sfSound* Sound, sfBool Loop); + +//////////////////////////////////////////////////////////// +/// Tell whether or not a sound is looping +/// +/// \param Sound : Sound to get the loop state from +/// +/// \return sfTrue if the sound is looping, sfFalse otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSound_GetLoop(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Get the status of a sound (stopped, paused, playing) +/// +/// \param Sound : Sound to get the status from +/// +/// \return Current status of the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundStatus sfSound_GetStatus(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Set the pitch of a sound +/// +/// \param Sound : Sound to modify +/// \param Pitch : New pitch +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetPitch(sfSound* Sound, float Pitch); + +//////////////////////////////////////////////////////////// +/// Set the volume of a sound +/// +/// \param Sound : Sound to modify +/// \param Volume : Volume (in range [0, 100]) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetVolume(sfSound* Sound, float Volume); + +//////////////////////////////////////////////////////////// +/// Set the position of a sound +/// +/// \param Sound : Sound to modify +/// \param X : X position of the sound in the world +/// \param Y : Y position of the sound in the world +/// \param Z : Z position of the sound in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetPosition(sfSound* Sound, float X, float Y, float Z); + +//////////////////////////////////////////////////////////// +/// Set the minimum distance - closer than this distance, +/// the listener will hear the sound at its maximum volume. +/// The default minimum distance is 1.0 +/// +/// \param Sound : Sound to modify +/// \param MinDistance : New minimum distance for the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetMinDistance(sfSound* Sound, float MinDistance); + +//////////////////////////////////////////////////////////// +/// Set the attenuation factor - the higher the attenuation, the +/// more the sound will be attenuated with distance from listener. +/// The default attenuation factor is 1.0 +/// +/// \param Sound : Sound to modify +/// \param Attenuation : New attenuation factor for the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetAttenuation(sfSound* Sound, float Attenuation); + +//////////////////////////////////////////////////////////// +/// Set the current playing position of a sound +/// +/// \param Sound : Sound to modify +/// \param TimeOffset : New playing position, expressed in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_SetPlayingOffset(sfSound* Sound, float TimeOffset); + +//////////////////////////////////////////////////////////// +/// Get the pitch of a sound +/// +/// \param Sound : Sound to get the pitch from +/// +/// \return Pitch value +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSound_GetPitch(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Get the volume of a sound +/// +/// \param Sound : Sound to get the volume from +/// +/// \return Volume value (in range [1, 100]) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSound_GetVolume(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Get the position of a sound +/// +/// \param Sound : Sound to get the position from +/// \param X : X position of the sound in the world +/// \param Y : Y position of the sound in the world +/// \param Z : Z position of the sound in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSound_GetPosition(sfSound* Sound, float* X, float* Y, float* Z); + +//////////////////////////////////////////////////////////// +/// Get the minimum distance of a sound +/// +/// \param Sound : Sound to get the minimum distance from +/// +/// \return Minimum distance for the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSound_GetMinDistance(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Get the attenuation factor of a sound +/// +/// \param Sound : Sound to get the attenuation factor from +/// +/// \return Attenuation factor for the sound +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSound_GetAttenuation(sfSound* Sound); + +//////////////////////////////////////////////////////////// +/// Get the current playing position of a sound +/// +/// \param Sound : Sound to get the position from +/// +/// \return Current playing position, expressed in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSound_GetPlayingOffset(sfSound* Sound); + + +#endif // SFML_SOUND_H diff --git a/CSFML/include/SFML/Audio/SoundBuffer.h b/CSFML/include/SFML/Audio/SoundBuffer.h new file mode 100644 index 00000000..5c6c1685 --- /dev/null +++ b/CSFML/include/SFML/Audio/SoundBuffer.h @@ -0,0 +1,147 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDBUFFER_H +#define SFML_SOUNDBUFFER_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfSoundBuffer is the low-level for loading and manipulating +/// sound buffers +//////////////////////////////////////////////////////////// +typedef struct sfSoundBuffer sfSoundBuffer; + + +//////////////////////////////////////////////////////////// +/// Create a new sound buffer and load it from a file +/// +/// \param Filename : Path of the music file to open +/// +/// \return A new sfSoundBuffer object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundBuffer* sfSoundBuffer_CreateFromFile(const char* Filename); + +//////////////////////////////////////////////////////////// +/// Create a new sound buffer and load it from a file in memory +/// +/// \param Data : Pointer to the file data in memory +/// \param SizeInBytes : Size of the data to load, in bytes +/// +/// \return A new sfSoundBuffer object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundBuffer* sfSoundBuffer_CreateFromMemory(const char* Data, size_t SizeInBytes); + +//////////////////////////////////////////////////////////// +/// Create a new sound buffer and load it from an array of +/// samples in memory - assumed format for samples is +/// 16 bits signed integer +/// +/// \param Samples : Pointer to the samples in memory +/// \param SamplesCount : Number of samples pointed by Samples +/// \param ChannelsCount : Number of channels (1 = mono, 2 = stereo, ...) +/// \param SampleRate : Frequency (number of samples to play per second) +/// +/// \return A new sfSoundBuffer object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundBuffer* sfSoundBuffer_CreateFromSamples(const sfInt16* Samples, size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate); + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound buffer +/// +/// \param SoundBuffer : Sound buffer to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundBuffer_Destroy(sfSoundBuffer* SoundBuffer); + +//////////////////////////////////////////////////////////// +/// Save a sound buffer to a file +/// +/// \param SoundBuffer : Sound buffer to save +/// \param Filename : Path of the sound file to write +/// +/// \return sfTrue if saving has been successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSoundBuffer_SaveToFile(sfSoundBuffer* SoundBuffer, const char* Filename); + +//////////////////////////////////////////////////////////// +/// Return the samples contained in a sound buffer +/// +/// \param SoundBuffer : Sound buffer to get samples from +/// +/// \return Pointer to the array of sound samples, in 16 bits signed integer format +/// +//////////////////////////////////////////////////////////// +CSFML_API const sfInt16* sfSoundBuffer_GetSamples(sfSoundBuffer* SoundBuffer); + +//////////////////////////////////////////////////////////// +/// Return the number of samples contained in a sound buffer +/// +/// \param SoundBuffer : Sound buffer to get samples count from +/// +/// \return Number of samples +/// +//////////////////////////////////////////////////////////// +CSFML_API size_t sfSoundBuffer_GetSamplesCount(sfSoundBuffer* SoundBuffer); + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound buffer +/// +/// \param SoundBuffer : Sound buffer to get sample rate from +/// +/// \return Sound frequency (number of samples per second) +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSoundBuffer_GetSampleRate(sfSoundBuffer* SoundBuffer); + +//////////////////////////////////////////////////////////// +/// Return the number of channels of a sound buffer (1 = mono, 2 = stereo, ...) +/// +/// \param SoundBuffer : Sound buffer to get channels count from +/// +/// \return Number of channels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSoundBuffer_GetChannelsCount(sfSoundBuffer* SoundBuffer); + +//////////////////////////////////////////////////////////// +/// Get the duration of a sound buffer +/// +/// \param SoundBuffer : Sound buffer to get duration from +/// +/// \return Sound duration, in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSoundBuffer_GetDuration(sfSoundBuffer* SoundBuffer); + + +#endif // SFML_SOUNDBUFFER_H diff --git a/CSFML/include/SFML/Audio/SoundBufferRecorder.h b/CSFML/include/SFML/Audio/SoundBufferRecorder.h new file mode 100644 index 00000000..ee94e041 --- /dev/null +++ b/CSFML/include/SFML/Audio/SoundBufferRecorder.h @@ -0,0 +1,98 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDBUFFERRECORDER_H +#define SFML_SOUNDBUFFERRECORDER_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// Specialized sfSoundRecorder which saves the captured +/// audio data into a sound buffer +//////////////////////////////////////////////////////////// +typedef struct sfSoundBufferRecorder sfSoundBufferRecorder; + + +//////////////////////////////////////////////////////////// +/// Construct a new sound buffer recorder +/// +/// \return A new sfSoundBufferRecorder object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundBufferRecorder* sfSoundBufferRecorder_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound buffer recorder +/// +/// \param SoundBufferRecorder : Sound buffer recorder to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundBufferRecorder_Destroy(sfSoundBufferRecorder* SoundBufferRecorder); + +//////////////////////////////////////////////////////////// +/// Start the capture. +/// Warning : only one capture can happen at the same time +/// +/// \param SoundBufferRecorder : Sound bufferrecorder to start +/// \param SampleRate : Sound frequency (the more samples, the higher the quality) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundBufferRecorder_Start(sfSoundBufferRecorder* SoundBufferRecorder, unsigned int SampleRate); + +//////////////////////////////////////////////////////////// +/// Stop the capture +/// +/// \param SoundBufferRecorder : Sound buffer recorder to stop +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundBufferRecorder_Stop(sfSoundBufferRecorder* SoundBufferRecorder); + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound buffer recorder +/// +/// \param SoundBufferRecorder : Sound buffer recorder to get sample rate from +/// +/// \return Frequency, in samples per second +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSoundBufferRecorder_GetSampleRate(sfSoundBufferRecorder* SoundBufferRecorder); + +//////////////////////////////////////////////////////////// +/// Get the sound buffer containing the captured audio data +/// of a sound buffer recorder +/// +/// \param SoundBufferRecorder : Sound buffer recorder to get the sound buffer from +/// +/// \return Pointer to the sound buffer (you don't need to destroy it after use) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundBuffer* sfSoundBufferRecorder_GetBuffer(sfSoundBufferRecorder* SoundBufferRecorder); + + +#endif // SFML_SOUNDBUFFERRECORDER_H diff --git a/CSFML/include/SFML/Audio/SoundRecorder.h b/CSFML/include/SFML/Audio/SoundRecorder.h new file mode 100644 index 00000000..2e62c31e --- /dev/null +++ b/CSFML/include/SFML/Audio/SoundRecorder.h @@ -0,0 +1,108 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDRECORDER_H +#define SFML_SOUNDRECORDER_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfSoundRecorder is an interface for capturing sound data +//////////////////////////////////////////////////////////// +typedef struct sfSoundRecorder sfSoundRecorder; + +typedef sfBool (*sfSoundRecorderStartCallback)(void*); ///< Type of the callback used when starting a capture +typedef sfBool (*sfSoundRecorderProcessCallback)(const sfInt16*, size_t, void*); ///< Type of the callback used to process audio data +typedef void (*sfSoundRecorderStopCallback)(void*); ///< Type of the callback used when stopping a capture + + +//////////////////////////////////////////////////////////// +/// Construct a new sound recorder with callback functions +/// for processing captured samples +/// +/// \param OnStart : Callback function which will be called when a new capture starts (can be NULL) +/// \param OnProcess : Callback function which will be called each time there's audio data to process +/// \param OnStop : Callback function which will be called when the current capture stops (can be NULL) +/// \param UserData : Data to pass to the callback function (can be NULL) +/// +/// \return A new sfSoundRecorder object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundRecorder* sfSoundRecorder_Create(sfSoundRecorderStartCallback OnStart, + sfSoundRecorderProcessCallback OnProcess, + sfSoundRecorderStopCallback OnStop, + void* UserData); + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound recorder +/// +/// \param SoundRecorder : Sound recorder to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundRecorder_Destroy(sfSoundRecorder* SoundRecorder); + +//////////////////////////////////////////////////////////// +/// Start the capture. +/// Warning : only one capture can happen at the same time +/// +/// \param SoundRecorder : Sound recorder to start +/// \param SampleRate : Sound frequency (the more samples, the higher the quality) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundRecorder_Start(sfSoundRecorder* SoundRecorder, unsigned int SampleRate); + +//////////////////////////////////////////////////////////// +/// Stop the capture +/// +/// \param SoundRecorder : Sound recorder to stop +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundRecorder_Stop(sfSoundRecorder* SoundRecorder); + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound recorder +/// +/// \param SoundRecorder : Sound recorder to get sample rate from +/// +/// \return Frequency, in samples per second +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSoundRecorder_GetSampleRate(sfSoundRecorder* SoundRecorder); + +//////////////////////////////////////////////////////////// +/// Tell if the system supports sound capture. +/// If not, this class won't be usable +/// +/// \return sfTrue if audio capture is supported +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSoundRecorder_CanCapture(); + + +#endif // SFML_SOUNDRECORDER_H diff --git a/CSFML/include/SFML/Audio/SoundStatus.h b/CSFML/include/SFML/Audio/SoundStatus.h new file mode 100644 index 00000000..0bfca191 --- /dev/null +++ b/CSFML/include/SFML/Audio/SoundStatus.h @@ -0,0 +1,42 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDSTATUS_H +#define SFML_SOUNDSTATUS_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +typedef enum +{ + sfStopped, ///< Sound / music is not playing + sfPaused, ///< Sound / music is paused + sfPlaying ///< Sound / music is playing +} sfSoundStatus; + + +#endif // SFML_SOUNDSTATUS_H diff --git a/CSFML/include/SFML/Audio/SoundStream.h b/CSFML/include/SFML/Audio/SoundStream.h new file mode 100644 index 00000000..fa3b6163 --- /dev/null +++ b/CSFML/include/SFML/Audio/SoundStream.h @@ -0,0 +1,270 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDSTREAM_H +#define SFML_SOUNDSTREAM_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfSoundStream is a streamed sound, ie samples are acquired +/// while the sound is playing. Use it for big sound that would +/// require hundreds of MB in memory (see sfMusic), +/// or for streaming sound from the network +//////////////////////////////////////////////////////////// +typedef struct sfSoundStream sfSoundStream; + +//////////////////////////////////////////////////////////// +/// sfSoundStreamChunk defines the data to fill by the +/// OnGetData callback +//////////////////////////////////////////////////////////// +typedef struct +{ + sfInt16* Samples; ///< Pointer to the audio samples + unsigned int NbSamples; ///< Number of samples pointed by Samples +} sfSoundStreamChunk; + +typedef sfBool (*sfSoundStreamStartCallback)(void*); ///< Type of the callback used to start a sound stream +typedef sfBool (*sfSoundStreamGetDataCallback)(sfSoundStreamChunk*, void*); ///< Type of the callback used to get a sound stream data + + +//////////////////////////////////////////////////////////// +/// Construct a new sound stream +/// +/// \param OnStart : Function called when the stream starts (can be NULL) +/// \param OnGetData : Function called when the stream needs more data (can't be NULL) +/// \param ChannelsCount : Number of channels to use (1 = mono, 2 = stereo) +/// \param SampleRate : Sample rate of the sound (44100 = CD quality) +/// \param UserData : Data to pass to the callback functions +/// +/// \return A new sfSoundStream object (NULL if failed) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundStream* sfSoundStream_Create(sfSoundStreamStartCallback OnStart, + sfSoundStreamGetDataCallback OnGetData, + unsigned int ChannelsCount, + unsigned int SampleRate, + void* UserData); + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound stream +/// +/// \param SoundStream : Sound stream to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_Destroy(sfSoundStream* SoundStreamStream); + +//////////////////////////////////////////////////////////// +/// Start playing a sound stream +/// +/// \param SoundStream : Sound stream to play +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_Play(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Pause a sound stream +/// +/// \param SoundStream : Sound stream to pause +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_Pause(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Stop playing a sound stream +/// +/// \param SoundStream : Sound stream to stop +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_Stop(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Get the status of a sound stream (stopped, paused, playing) +/// +/// \param SoundStream : Sound stream to get the status from +/// +/// \return Current status of the sound stream +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSoundStatus sfSoundStream_GetStatus(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Return the number of channels of a sound stream +/// (1 = mono, 2 = stereo) +/// +/// \param SoundStream : Sound stream to get the channels count from +/// +/// \return Number of channels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSoundStream_GetChannelsCount(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound stream +/// +/// \param SoundStream : Sound stream to get the sample rate from +/// +/// \return Stream frequency (number of samples per second) +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSoundStream_GetSampleRate(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Set the pitch of a sound stream +/// +/// \param SoundStream : Sound stream to modify +/// \param Pitch : New pitch +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_SetPitch(sfSoundStream* SoundStream, float Pitch); + +//////////////////////////////////////////////////////////// +/// Set the volume of a sound stream +/// +/// \param SoundStream : Sound stream to modify +/// \param Volume : Volume (in range [0, 100]) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_SetVolume(sfSoundStream* SoundStream, float Volume); + +//////////////////////////////////////////////////////////// +/// Set the position of a sound stream +/// +/// \param SoundStream : Sound stream to modify +/// \param X : X position of the sound stream in the world +/// \param Y : Y position of the sound stream in the world +/// \param Z : Z position of the sound stream in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_SetPosition(sfSoundStream* SoundStream, float X, float Y, float Z); + +//////////////////////////////////////////////////////////// +/// Set the minimum distance - closer than this distance, +/// the listener will hear the sound stream at its maximum volume. +/// The default minimum distance is 1.0 +/// +/// \param SoundStream : Sound stream to modify +/// \param MinDistance : New minimum distance for the sound stream +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_SetMinDistance(sfSoundStream* SoundStream, float MinDistance); + +//////////////////////////////////////////////////////////// +/// Set the attenuation factor - the higher the attenuation, the +/// more the sound stream will be attenuated with distance from listener. +/// The default attenuation factor 1.0 +/// +/// \param SoundStream : Sound stream to modify +/// \param Attenuation : New attenuation factor for the sound stream +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_SetAttenuation(sfSoundStream* SoundStream, float Attenuation); + +//////////////////////////////////////////////////////////// +/// Set a stream loop state +/// +/// \param SoundStream : Stream to set the loop state +/// \param Loop : sfTrue to play in loop, sfFalse to play once +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_SetLoop(sfSoundStream* SoundStream, sfBool Loop); + +//////////////////////////////////////////////////////////// +/// Get the pitch of a sound stream +/// +/// \param SoundStream : Sound stream to get the pitch from +/// +/// \return Pitch value +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSoundStream_GetPitch(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Get the volume of a sound stream +/// +/// \param SoundStream : Sound stream to get the volume from +/// +/// \return Volume value (in range [1, 100]) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSoundStream_GetVolume(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Get the position of a sound stream +/// +/// \param SoundStream : Sound stream to get the position from +/// \param X : X position of the sound stream in the world +/// \param Y : Y position of the sound stream in the world +/// \param Z : Z position of the sound stream in the world +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSoundStream_GetPosition(sfSoundStream* SoundStream, float* X, float* Y, float* Z); + +//////////////////////////////////////////////////////////// +/// Get the minimum distance of a sound stream +/// +/// \param SoundStream : Sound stream to get the minimum distance from +/// +/// \return Minimum distance for the sound stream +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSoundStream_GetMinDistance(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Get the attenuation factor of a sound stream +/// +/// \param SoundStream : Sound stream to get the attenuation factor from +/// +/// \return Attenuation factor for the sound stream +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSoundStream_GetAttenuation(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Tell whether or not a stream is looping +/// +/// \param SoundStream : Soundstream to get the loop state from +/// +/// \return sfTrue if the stream is looping, sfFalse otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSoundStream_GetLoop(sfSoundStream* SoundStream); + +//////////////////////////////////////////////////////////// +/// Get the current playing position of a sound stream +/// +/// \param SoundStream : Sound stream to get the position from +/// +/// \return Current playing position, expressed in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSoundStream_GetPlayingOffset(sfSoundStream* SoundStream); + + +#endif // SFML_SOUNDSTREAM_H diff --git a/CSFML/include/SFML/Config.h b/CSFML/include/SFML/Config.h new file mode 100644 index 00000000..8869d74b --- /dev/null +++ b/CSFML/include/SFML/Config.h @@ -0,0 +1,120 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONFIG_H +#define SFML_CONFIG_H + + +//////////////////////////////////////////////////////////// +// Identify the operating system +//////////////////////////////////////////////////////////// +#if defined(_WIN32) || defined(__WIN32__) + + // Windows + #define CSFML_SYSTEM_WINDOWS + +#elif defined(linux) || defined(__linux) + + // Linux + #define CSFML_SYSTEM_LINUX + +#elif defined(__APPLE__) || defined(MACOSX) || defined(macintosh) || defined(Macintosh) + + // MacOS + #define CSFML_SYSTEM_MACOS + +#else + + // Unsupported system + #error This operating system is not supported by SFML library + +#endif + + +//////////////////////////////////////////////////////////// +// Define portable import / export macros +//////////////////////////////////////////////////////////// +#ifdef CSFML_EXPORTS + + #define CSFML_API extern "C" + +#else + + #define CSFML_API extern + +#endif + + +//////////////////////////////////////////////////////////// +// Define a portable boolean type +//////////////////////////////////////////////////////////// +typedef int sfBool; +#define sfFalse 0 +#define sfTrue 1 + + +//////////////////////////////////////////////////////////// +// Define portable types +//////////////////////////////////////////////////////////// +#include +#include + +// 8 bits integer types +#if UCHAR_MAX == 0xFF + typedef signed char sfInt8; + typedef unsigned char sfUint8; +#else + #error No 8 bits integer type for this platform +#endif + +// 16 bits integer types +#if USHRT_MAX == 0xFFFF + typedef signed short sfInt16; + typedef unsigned short sfUint16; +#elif UINT_MAX == 0xFFFF + typedef signed int sfInt16; + typedef unsigned int sfUint16; +#elif ULONG_MAX == 0xFFFF + typedef signed long sfInt16; + typedef unsigned long sfUint16; +#else + #error No 16 bits integer type for this platform +#endif + +// 32 bits integer types +#if USHRT_MAX == 0xFFFFFFFF + typedef signed short sfInt32; + typedef unsigned short sfUint32; +#elif UINT_MAX == 0xFFFFFFFF + typedef signed int sfInt32; + typedef unsigned int sfUint32; +#elif ULONG_MAX == 0xFFFFFFFF + typedef signed long sfInt32; + typedef unsigned long sfUint32; +#else + #error No 32 bits integer type for this platform +#endif + + +#endif // SFML_CONFIG_H diff --git a/CSFML/include/SFML/Graphics.h b/CSFML/include/SFML/Graphics.h new file mode 100644 index 00000000..63afc6f4 --- /dev/null +++ b/CSFML/include/SFML/Graphics.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_GRAPHICS_H +#define SFML_GRAPHICS_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // SFML_GRAPHICS_H diff --git a/CSFML/include/SFML/Graphics/BlendMode.h b/CSFML/include/SFML/Graphics/BlendMode.h new file mode 100644 index 00000000..0e6a6590 --- /dev/null +++ b/CSFML/include/SFML/Graphics/BlendMode.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_BLENDMODE_H +#define SFML_BLENDMODE_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Enumerate the blending modes for drawable objects +//////////////////////////////////////////////////////////// +typedef enum +{ + sfBlendAlpha, ///< Pixel = Src * a + Dest * (1 - a) + sfBlendAdd, ///< Pixel = Src + Dest + sfBlendMultiply, ///< Pixel = Src * Dest + sfBlendNone ///< No blending +} sfBlendMode; + + +#endif // SFML_BLENDMODE_H diff --git a/CSFML/include/SFML/Graphics/Color.h b/CSFML/include/SFML/Graphics/Color.h new file mode 100644 index 00000000..2f7535fc --- /dev/null +++ b/CSFML/include/SFML/Graphics/Color.h @@ -0,0 +1,107 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_COLOR_H +#define SFML_COLOR_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfColor is an utility class for manipulating colors +//////////////////////////////////////////////////////////// +typedef struct +{ + sfUint8 r; + sfUint8 g; + sfUint8 b; + sfUint8 a; +} sfColor; + + +//////////////////////////////////////////////////////////// +/// Define some common colors +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfBlack; +CSFML_API sfColor sfWhite; +CSFML_API sfColor sfRed; +CSFML_API sfColor sfGreen; +CSFML_API sfColor sfBlue; +CSFML_API sfColor sfYellow; +CSFML_API sfColor sfMagenta; +CSFML_API sfColor sfCyan; + + +//////////////////////////////////////////////////////////// +/// Construct a color from its 3 RGB components +/// +/// \param R : Red component (0 .. 255) +/// \param G : Green component (0 .. 255) +/// \param B : Blue component (0 .. 255) +/// +/// \return sfColor constructed from the components +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfColor_FromRGB(sfUint8 R, sfUint8 G, sfUint8 B); + +//////////////////////////////////////////////////////////// +/// Construct a color from its 4 RGBA components +/// +/// \param R : Red component (0 .. 255) +/// \param G : Green component (0 .. 255) +/// \param B : Blue component (0 .. 255) +/// \param A : Alpha component (0 .. 255) +/// +/// \return sfColor constructed from the components +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfColor_FromRGBA(sfUint8 R, sfUint8 G, sfUint8 B, sfUint8 A); + +//////////////////////////////////////////////////////////// +/// Add two colors +/// +/// \param Color1 : First color +/// \param Color2 : Second color +/// +/// \return Component-wise saturated addition of the two colors +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfColor_Add(sfColor Color1, sfColor Color2); + +//////////////////////////////////////////////////////////// +/// Modulate two colors +/// +/// \param Color1 : First color +/// \param Color2 : Second color +/// +/// \return Component-wise multiplication of the two colors +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfColor_Modulate(sfColor Color1, sfColor Color2); + + +#endif // SFML_COLOR_H diff --git a/CSFML/include/SFML/Graphics/Font.h b/CSFML/include/SFML/Graphics/Font.h new file mode 100644 index 00000000..9235af18 --- /dev/null +++ b/CSFML/include/SFML/Graphics/Font.h @@ -0,0 +1,102 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_FONT_H +#define SFML_FONT_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfFont is the low-level class for loading and +/// manipulating character fonts (see sfString) +//////////////////////////////////////////////////////////// +typedef struct sfFont sfFont; + + +//////////////////////////////////////////////////////////// +/// Create a new empty font +/// +/// \return A new sfFont object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFont* sfFont_Create(); + +//////////////////////////////////////////////////////////// +/// Create a new font from a file +/// +/// \param Filename : Path of the font file to load +/// \param CharSize : Size of characters in bitmap - the bigger, the higher quality +/// \param Charset : Characters set to generate (just pass NULL to get the default charset) +/// +/// \return A new sfFont object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFont* sfFont_CreateFromFile(const char* Filename, unsigned int CharSize, const sfUint32* Charset); + +//////////////////////////////////////////////////////////// +/// Create a new image font a file in memory +/// +/// \param Data : Pointer to the file data in memory +/// \param SizeInBytes : Size of the data to load, in bytes +/// \param CharSize : Size of characters in bitmap - the bigger, the higher quality +/// \param Charset : Characters set to generate (just pass NULL to get the default charset) +/// +/// \return A new sfFont object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFont* sfFont_CreateFromMemory(const char* Data, size_t SizeInBytes, unsigned int CharSize, const sfUint32* Charset); + +//////////////////////////////////////////////////////////// +/// Destroy an existing font +/// +/// \param Font : Font to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfFont_Destroy(sfFont* Font); + +//////////////////////////////////////////////////////////// +/// Get the base size of characters in a font; +/// All glyphs dimensions are based on this value +/// +/// \param Font : Font object +/// +/// \return Base size of characters +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfFont_GetCharacterSize(sfFont* Font); + +//////////////////////////////////////////////////////////// +/// Get the built-in default font (Arial) +/// +/// \return Pointer to the default font +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFont* sfFont_GetDefaultFont(); + + +#endif // SFML_IMAGE_H diff --git a/CSFML/include/SFML/Graphics/Glyph.h b/CSFML/include/SFML/Graphics/Glyph.h new file mode 100644 index 00000000..f79dee97 --- /dev/null +++ b/CSFML/include/SFML/Graphics/Glyph.h @@ -0,0 +1,45 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_GLYPH_H +#define SFML_GLYPH_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfGlyph describes a glyph (a visual character) +//////////////////////////////////////////////////////////// +typedef struct +{ + int Advance; ///< Offset to move horizontically to the next character + sfIntRect Rectangle; ///< Bounding rectangle of the glyph, in relative coordinates + sfFloatRect TexCoords; ///< Texture coordinates of the glyph inside the bitmap font +} sfGlyph; + + +#endif // SFML_GLYPH_H diff --git a/CSFML/include/SFML/Graphics/Image.h b/CSFML/include/SFML/Graphics/Image.h new file mode 100644 index 00000000..5c96c740 --- /dev/null +++ b/CSFML/include/SFML/Graphics/Image.h @@ -0,0 +1,239 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_IMAGE_H +#define SFML_IMAGE_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +typedef struct sfRenderWindow sfRenderWindow; + + +//////////////////////////////////////////////////////////// +/// sfImage is the low-level class for loading and +/// manipulating images +//////////////////////////////////////////////////////////// +typedef struct sfImage sfImage; + + +//////////////////////////////////////////////////////////// +/// Create a new empty image +/// +/// \return A new sfImage object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfImage_Create(); + +//////////////////////////////////////////////////////////// +/// Create a new image filled with a color +/// +/// \param Width : Image width +/// \param Height : Image height +/// \param Col : Image color +/// +/// \return A new sfImage object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfImage_CreateFromColor(unsigned int Width, unsigned int Height, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Create a new image from an array of pixels in memory +/// +/// \param Width : Image width +/// \param Height : Image height +/// \param Data : Pointer to the pixels in memory (assumed format is RGBA) +/// +/// \return A new sfImage object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfImage_CreateFromPixels(unsigned int Width, unsigned int Height, const sfUint8* Data); + +//////////////////////////////////////////////////////////// +/// Create a new image from a file +/// +/// \param Filename : Path of the image file to load +/// +/// \return A new sfImage object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfImage_CreateFromFile(const char* Filename); + +//////////////////////////////////////////////////////////// +/// Create a new image from a file in memory +/// +/// \param Data : Pointer to the file data in memory +/// \param SizeInBytes : Size of the data to load, in bytes +/// +/// \return A new sfImage object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfImage_CreateFromMemory(const char* Data, size_t SizeInBytes); + +//////////////////////////////////////////////////////////// +/// Destroy an existing image +/// +/// \param Image : Image to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfImage_Destroy(sfImage* Image); + +//////////////////////////////////////////////////////////// +/// Save the content of an image to a file +/// +/// \param Image : Image to save +/// \param Filename : Path of the file to save (overwritten if already exist) +/// +/// \return sfTrue if saving was successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfImage_SaveToFile(sfImage* Image, const char* Filename); + +//////////////////////////////////////////////////////////// +/// Create a transparency mask for an image from a specified colorkey +/// +/// \param Image : Image to modify +/// \param ColorKey : Color to become transparent +/// \param Alpha : Alpha value to use for transparent pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfImage_CreateMaskFromColor(sfImage* Image, sfColor ColorKey, sfUint8 Alpha); + +//////////////////////////////////////////////////////////// +/// Copy pixels from another image onto this one. +/// This function does a slow pixel copy and should only +/// be used at initialization time +/// +/// \param Image : Destination image +/// \param Source : Source image to copy +/// \param DestX : X coordinate of the destination position +/// \param DestY : Y coordinate of the destination position +/// \param SourceRect : Sub-rectangle of the source image to copy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfImage_Copy(sfImage* Image, sfImage* Source, unsigned int DestX, unsigned int DestY, sfIntRect SourceRect); + +//////////////////////////////////////////////////////////// +/// Create the image from the current contents of the +/// given window +/// +/// \param Image : Destination image +/// \param Window : Window to capture +/// \param SourceRect : Sub-rectangle of the screen to copy (empty by default - entire image) +/// +/// \return True if creation was successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfImage_CopyScreen(sfImage* Image, sfRenderWindow* Window, sfIntRect SourceRect); + +//////////////////////////////////////////////////////////// +/// Change the color of a pixel of an image +/// Don't forget to call Update when you end modifying pixels +/// +/// \param Image : Image to modify +/// \param X : X coordinate of pixel in the image +/// \param Y : Y coordinate of pixel in the image +/// \param Col : New color for pixel (X, Y) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfImage_SetPixel(sfImage* Image, unsigned int X, unsigned int Y, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Get a pixel from an image +/// +/// \param Image : Image to read +/// \param X : X coordinate of pixel in the image +/// \param Y : Y coordinate of pixel in the image +/// +/// \return Color of pixel (x, y) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfImage_GetPixel(sfImage* Image, unsigned int X, unsigned int Y); + +//////////////////////////////////////////////////////////// +/// Get a read-only pointer to the array of pixels of an image (8 bits integers RGBA) +/// Array size is sfImage_GetWidth() x sfImage_GetHeight() x 4 +/// This pointer becomes invalid if you reload or resize the image +/// +/// \param Image : Image to read +/// +/// \return Pointer to the array of pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API const sfUint8* sfImage_GetPixelsPtr(sfImage* Image); + +//////////////////////////////////////////////////////////// +/// Bind the image for rendering +/// +/// \param Image : Image to bind +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfImage_Bind(sfImage* Image); + +//////////////////////////////////////////////////////////// +/// Enable or disable image smooth filter +/// +/// \param Image : Image to modify +/// \param Smooth : sfTrue to enable smoothing filter, false to disable it +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfImage_SetSmooth(sfImage* Image, sfBool Smooth); + +//////////////////////////////////////////////////////////// +/// Return the width of the image +/// +/// \param Image : Image to read +/// +/// \return Width in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfImage_GetWidth(sfImage* Image); + +//////////////////////////////////////////////////////////// +/// Return the height of the image +/// +/// \param Image : Image to read +/// +/// \return Height in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfImage_GetHeight(sfImage* Image); + +//////////////////////////////////////////////////////////// +/// Tells whether the smoothing filter is enabled or not on an image +/// +/// \param Image : Image to read +/// +/// \return sfTrue if the smoothing filter is enabled +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfImage_IsSmooth(sfImage* Image); + + +#endif // SFML_IMAGE_H diff --git a/CSFML/include/SFML/Graphics/PostFX.h b/CSFML/include/SFML/Graphics/PostFX.h new file mode 100644 index 00000000..53b7d558 --- /dev/null +++ b/CSFML/include/SFML/Graphics/PostFX.h @@ -0,0 +1,128 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_POSTFX_H +#define SFML_POSTFX_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// PostFX is used to apply a post effect to a window +//////////////////////////////////////////////////////////// +typedef struct sfPostFX sfPostFX; + + +//////////////////////////////////////////////////////////// +/// Create a new post-fx from a file +/// +/// \param Filename : File to load +/// +/// \return A new sfPostFX object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfPostFX* sfPostFX_CreateFromFile(const char* Filename); + +//////////////////////////////////////////////////////////// +/// Create a new post-fx from an effect source code +/// +/// \param Effect : Source code of the effect +/// +/// \return A new sfPostFX object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfPostFX* sfPostFX_CreateFromMemory(const char* Effect); + +//////////////////////////////////////////////////////////// +/// Destroy an existing post-fx +/// +/// \param PostFX : PostFX to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPostFX_Destroy(sfPostFX* PostFX); + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (1 float) +/// +/// \param PostFX : Post-effect to modify +/// \param Name : Parameter name in the effect +/// \param X : Value to assign +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPostFX_SetParameter1(sfPostFX* PostFX, const char* Name, float X); + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (2 floats) +/// +/// \param PostFX : Post-effect to modify +/// \param Name : Parameter name in the effect +/// \param X, Y : Values to assign +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPostFX_SetParameter2(sfPostFX* PostFX, const char* Name, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (3 floats) +/// +/// \param PostFX : Post-effect to modify +/// \param Name : Parameter name in the effect +/// \param X, Y, Z : Values to assign +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPostFX_SetParameter3(sfPostFX* PostFX, const char* Name, float X, float Y, float Z); + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (4 floats) +/// +/// \param PostFX : Post-effect to modify +/// \param Name : Parameter name in the effect +/// \param X, Y, Z, W : Values to assign +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPostFX_SetParameter4(sfPostFX* PostFX, const char* Name, float X, float Y, float Z, float W); + +//////////////////////////////////////////////////////////// +/// Set a texture parameter in a post-fx +/// +/// \param PostFX : Post-effect to modify +/// \param Name : Texture name in the effect +/// \param Texture : Image to set (pass NULL to use content of current framebuffer) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPostFX_SetTexture(sfPostFX* PostFX, const char* Name, sfImage* Texture); + +//////////////////////////////////////////////////////////// +/// Tell whether or not the system supports post-effects +/// +/// \return sfTrue if the system can use post-effects +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfPostFX_CanUsePostFX(); + + +#endif // SFML_POSTFX_H diff --git a/CSFML/include/SFML/Graphics/Rect.h b/CSFML/include/SFML/Graphics/Rect.h new file mode 100644 index 00000000..48416a89 --- /dev/null +++ b/CSFML/include/SFML/Graphics/Rect.h @@ -0,0 +1,93 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RECT_H +#define SFML_RECT_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfFloatRect and sfIntRect are utility classes for +/// manipulating rectangles. +//////////////////////////////////////////////////////////// +typedef struct +{ + float Left; + float Top; + float Right; + float Bottom; +} sfFloatRect; + +typedef struct +{ + int Left; + int Top; + int Right; + int Bottom; +} sfIntRect; + + +//////////////////////////////////////////////////////////// +/// Move a rectangle by the given offset +/// +/// \param Rect : Rectangle to move +/// \param OffsetX : Horizontal offset +/// \param OffsetY : Vertical offset +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfFloatRect_Offset(sfFloatRect* Rect, float OffsetX, float OffsetY); +CSFML_API void sfIntRect_Offset(sfIntRect* Rect, int OffsetX, int OffsetY); + +//////////////////////////////////////////////////////////// +/// Check if a point is inside a rectangle's area +/// +/// \param Rect : Rectangle to test +/// \param X : X coordinate of the point to test +/// \param Y : Y coordinate of the point to test +/// +/// \return sfTrue if the point is inside +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfFloatRect_Contains(sfFloatRect* Rect, float X, float Y); +CSFML_API sfBool sfIntRect_Contains(sfIntRect* Rect, int X, int Y); + +//////////////////////////////////////////////////////////// +/// Check intersection between two rectangles +/// +/// \param Rect1 : First rectangle to test +/// \param Rect2 : Second rectangle to test +/// \param OverlappingRect : Rectangle to be filled with overlapping rect (can be NULL) +/// +/// \return sfTrue if rectangles overlap +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfFloatRect_Intersects(sfFloatRect* Rect1, sfFloatRect* Rect2, sfFloatRect* OverlappingRect); +CSFML_API sfBool sfIntRect_Intersects(sfIntRect* Rect1, sfIntRect* Rect2, sfIntRect* OverlappingRect); + + +#endif // SFML_RECT_H diff --git a/CSFML/include/SFML/Graphics/RenderWindow.h b/CSFML/include/SFML/Graphics/RenderWindow.h new file mode 100644 index 00000000..2f97f57f --- /dev/null +++ b/CSFML/include/SFML/Graphics/RenderWindow.h @@ -0,0 +1,365 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RENDERWINDOW_H +#define SFML_RENDERWINDOW_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfRenderWindow is a simple wrapper for sfWindow that +/// allows easy 2D rendering +//////////////////////////////////////////////////////////// +typedef struct sfRenderWindow sfRenderWindow; + + +//////////////////////////////////////////////////////////// +/// Construct a new renderwindow +/// +/// \param Mode : Video mode to use +/// \param Title : Title of the window +/// \param Style : Window style +/// \param Params : Creation settings +/// +//////////////////////////////////////////////////////////// +CSFML_API sfRenderWindow* sfRenderWindow_Create(sfVideoMode Mode, const char* Title, unsigned long Style, sfWindowSettings Params); + +//////////////////////////////////////////////////////////// +/// Construct a renderwindow from an existing control +/// +/// \param Handle : Platform-specific handle of the control +/// \param Params : Creation settings +/// +//////////////////////////////////////////////////////////// +CSFML_API sfRenderWindow* sfRenderWindow_CreateFromHandle(sfWindowHandle Handle, sfWindowSettings Params); + +//////////////////////////////////////////////////////////// +/// Destroy an existing renderwindow +/// +/// \param RenderWindow : Renderwindow to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_Destroy(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Close a renderwindow (but doesn't destroy the internal data) +/// +/// \param RenderWindow : Renderwindow to close +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_Close(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Tell whether or not a renderwindow is opened +/// +/// \param RenderWindow : Renderwindow object +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfRenderWindow_IsOpened(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Get the width of the rendering region of a window +/// +/// \param RenderWindow : Renderwindow object +/// +/// \return Width in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfRenderWindow_GetWidth(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Get the height of the rendering region of a window +/// +/// \param RenderWindow : Renderwindow object +/// +/// \return Height in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfRenderWindow_GetHeight(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Get the creation settings of a window +/// +/// \param RenderWindow : Renderwindow object +/// +/// \return Settings used to create the window +/// +//////////////////////////////////////////////////////////// +CSFML_API sfWindowSettings sfRenderWindow_GetSettings(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Get the event on top of events stack of a window, if any, and pop it +/// +/// \param RenderWindow : Renderwindow object +/// \param Event : Event to fill, if any +/// +/// \return sfTrue if an event was returned, sfFalse if events stack was empty +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfRenderWindow_GetEvent(sfRenderWindow* RenderWindow, sfEvent* Event); + +//////////////////////////////////////////////////////////// +/// Enable / disable vertical synchronization on a window +/// +/// \param RenderWindow : Renderwindow object +/// \param Enabled : sfTrue to enable v-sync, sfFalse to deactivate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_UseVerticalSync(sfRenderWindow* RenderWindow, sfBool Enabled); + +//////////////////////////////////////////////////////////// +/// Show or hide the mouse cursor on a window +/// +/// \param RenderWindow : RenderWindow object +/// \param Show : sfTrue to show, sfFalse to hide +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_ShowMouseCursor(sfRenderWindow* RenderWindow, sfBool Show); + +//////////////////////////////////////////////////////////// +/// Change the position of the mouse cursor on a window +/// +/// \param RenderWindow : Renderwindow object +/// \param Left : Left coordinate of the cursor, relative to the window +/// \param Top : Top coordinate of the cursor, relative to the window +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetCursorPosition(sfRenderWindow* RenderWindow, unsigned int Left, unsigned int Top); + +//////////////////////////////////////////////////////////// +/// Change the position of a window on screen. +/// Only works for top-level windows +/// +/// \param RenderWindow : Renderwindow object +/// \param Left : Left position +/// \param Top : Top position +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetPosition(sfRenderWindow* RenderWindow, int Left, int Top); + +//////////////////////////////////////////////////////////// +/// Change the size of the rendering region of a window +/// +/// \param RenderWindow : Renderwindow object +/// \param Width : New Width +/// \param Height : New Height +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetSize(sfRenderWindow* RenderWindow, unsigned int Width, unsigned int Height); + +//////////////////////////////////////////////////////////// +/// Show or hide a window +/// +/// \param RenderWindow : Renderwindow object +/// \param State : sfTrue to show, sfFalse to hide +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_Show(sfRenderWindow* RenderWindow, sfBool State); + +//////////////////////////////////////////////////////////// +/// Enable or disable automatic key-repeat for keydown events. +/// Automatic key-repeat is enabled by default +/// +/// \param RenderWindow : Renderwindow object +/// \param Enabled : sfTrue to enable, sfFalse to disable +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_EnableKeyRepeat(sfRenderWindow* RenderWindow, sfBool Enabled); + +//////////////////////////////////////////////////////////// +/// Change the window's icon +/// +/// \param RenderWindow : Renderwindow object +/// \param Width : Icon's width, in pixels +/// \param Height : Icon's height, in pixels +/// \param Pixels : Pointer to the pixels in memory, format must be RGBA 32 bits +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetIcon(sfRenderWindow* RenderWindow, unsigned int Width, unsigned int Height, sfUint8* Pixels); + +//////////////////////////////////////////////////////////// +/// Activate or deactivate a window as the current target for rendering +/// +/// \param RenderWindow : Renderwindow object +/// \param Active : sfTrue to activate, sfFalse to deactivate +/// +/// \return True if operation was successful, false otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfRenderWindow_SetActive(sfRenderWindow* RenderWindow, sfBool Active); + +//////////////////////////////////////////////////////////// +/// Display a window on screen +/// +/// \param RenderWindow : Renderwindow object +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_Display(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Get the input manager of a window +/// +/// \param RenderWindow : Renderwindow object +/// +/// \return Reference to the input +/// +//////////////////////////////////////////////////////////// +CSFML_API sfInput* sfRenderWindow_GetInput(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Limit the framerate to a maximum fixed frequency for a window +/// +/// \param RenderWindow : Renderwindow object +/// +/// \param Limit : Framerate limit, in frames per seconds (use 0 to disable limit) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetFramerateLimit(sfRenderWindow* RenderWindow, unsigned int Limit); + +//////////////////////////////////////////////////////////// +/// Get time elapsed since last frame of a window +/// +/// \param RenderWindow : Renderwindow object +/// +/// \return Time elapsed, in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfRenderWindow_GetFrameTime(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Change the joystick threshold, ie. the value below which +/// no move event will be generated +/// +/// \param RenderWindow : Renderwindow object +/// \param Threshold : New threshold, in range [0, 100] +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetJoystickThreshold(sfRenderWindow* RenderWindow, float Threshold); + +//////////////////////////////////////////////////////////// +/// Draw something on a renderwindow +/// +/// \param RenderWindow : Renderwindow to draw in +/// \param PostFX / Sprite / String / shape : Object to draw +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_DrawPostFX(sfRenderWindow* RenderWindow, sfPostFX* PostFX); +CSFML_API void sfRenderWindow_DrawSprite(sfRenderWindow* RenderWindow, sfSprite* Sprite); +CSFML_API void sfRenderWindow_DrawShape (sfRenderWindow* RenderWindow, sfShape* Shape); +CSFML_API void sfRenderWindow_DrawString(sfRenderWindow* RenderWindow, sfString* String); + +//////////////////////////////////////////////////////////// +/// Save the content of a renderwindow to an image +/// +/// \param RenderWindow : Renderwindow to capture +/// +/// \return Image instance containing the contents of the screen +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfRenderWindow_Capture(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Clear the screen with the given color +/// +/// \param RenderWindow : Renderwindow to modify +/// \param Color : Fill color +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_Clear(sfRenderWindow* RenderWindow, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Change the current active view of a renderwindow +/// +/// \param RenderWindow : Renderwindow to modify +/// \param NewView : Pointer to the new view +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_SetView(sfRenderWindow* RenderWindow, sfView* View); + +//////////////////////////////////////////////////////////// +/// Get the current active view of a renderwindow +/// +/// \param RenderWindow : Renderwindow +/// +/// \return Current active view +/// +//////////////////////////////////////////////////////////// +CSFML_API const sfView* sfRenderWindow_GetView(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Get the default view of a renderwindow +/// +/// \param RenderWindow : Renderwindow +/// +/// \return Default view of the render window +/// +//////////////////////////////////////////////////////////// +CSFML_API sfView* sfRenderWindow_GetDefaultView(sfRenderWindow* RenderWindow); + +//////////////////////////////////////////////////////////// +/// Convert a point in window coordinates into view coordinates +/// +/// \param RenderWindow : Target Renderwindow +/// \param WindowX : X coordinate of the point to convert, relative to the window +/// \param WindowY : Y coordinate of the point to convert, relative to the window +/// \param ViewX : Pointer to fill with the X coordinate of the converted point +/// \param ViewY : Pointer to fill with the Y coordinate of the converted point +/// \param TargetView : Target view to convert the point to (pass NULL to use the current view) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_ConvertCoords(sfRenderWindow* RenderWindow, unsigned int WindowX, unsigned int WindowY, float* ViewX, float* ViewY, sfView* TargetView); + +//////////////////////////////////////////////////////////// +/// Tell SFML to preserve external OpenGL states, at the expense of +/// more CPU charge. Use this function if you don't want SFML +/// to mess up your own OpenGL states (if any). +/// Don't enable state preservation if not needed, as it will allow +/// SFML to do internal optimizations and improve performances. +/// This parameter is false by default +/// +/// \param RenderWindow : Target Renderwindow +/// \param Preserve : True to preserve OpenGL states, false to let SFML optimize +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRenderWindow_PreserveOpenGLStates(sfRenderWindow* RenderWindow, sfBool Preserve); + + +#endif // SFML_RENDERWINDOW_H diff --git a/CSFML/include/SFML/Graphics/Shape.h b/CSFML/include/SFML/Graphics/Shape.h new file mode 100644 index 00000000..a71d6852 --- /dev/null +++ b/CSFML/include/SFML/Graphics/Shape.h @@ -0,0 +1,460 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_Shape_H +#define SFML_Shape_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfShape defines a drawable convex Shape ; it also defines +/// helper functions to draw simple Shapes like +/// lines, rectangles, circles, etc. +//////////////////////////////////////////////////////////// +typedef struct sfShape sfShape; + + +//////////////////////////////////////////////////////////// +/// Create a new shape +/// +/// \return A new sfShape object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfShape* sfShape_Create(); + +//////////////////////////////////////////////////////////// +/// Create a new shape made of a single line +/// +/// \param P1X, P1Y : Position of the first point +/// \param P2X, P2Y : Position second point +/// \param Thickness : Line thickness +/// \param Col : Color used to draw the line +/// \param Outline : Outline width +/// \param OutlineCol : Color used to draw the outline +/// +//////////////////////////////////////////////////////////// +CSFML_API sfShape* sfShape_CreateLine(float P1X, float P1Y, float P2X, float P2Y, float Thickness, sfColor Col, float Outline, sfColor OutlineCol); + +//////////////////////////////////////////////////////////// +/// Create a new shape made of a single rectangle +/// +/// \param P1X, P1Y : Position of the first point +/// \param P2X, P2Y : Position second point +/// \param Col : Color used to fill the rectangle +/// \param Outline : Outline width +/// \param OutlineCol : Color used to draw the outline +/// +//////////////////////////////////////////////////////////// +CSFML_API sfShape* sfShape_CreateRectangle(float P1X, float P1Y, float P2X, float P2Y, sfColor Col, float Outline, sfColor OutlineCol); + +//////////////////////////////////////////////////////////// +/// Create a new shape made of a single circle +/// +/// \param X, Y : Position of the center +/// \param Radius : Radius +/// \param Col : Color used to fill the circle +/// \param Outline : Outline width +/// \param OutlineCol : Color used to draw the outline +/// +//////////////////////////////////////////////////////////// +CSFML_API sfShape* sfShape_CreateCircle(float X, float Y, float Radius, sfColor Col, float Outline, sfColor OutlineCol); + +//////////////////////////////////////////////////////////// +/// Destroy an existing Shape +/// +/// \param Shape : Shape to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_Destroy(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Set the X position of a shape +/// +/// \param Shape : Shape to modify +/// \param X : New X coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetX(sfShape* Shape, float X); + +//////////////////////////////////////////////////////////// +/// Set the Y position of a shape +/// +/// \param Shape : Shape to modify +/// \param Y : New Y coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetY(sfShape* Shape, float Y); + +//////////////////////////////////////////////////////////// +/// Set the position of a shape +/// +/// \param Shape : Shape to modify +/// \param X : New X coordinate +/// \param Y : New Y coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetPosition(sfShape* Shape, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Set the horizontal scale of a shape +/// +/// \param Shape : Shape to modify +/// \param Scale : New scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetScaleX(sfShape* Shape, float Scale); + +//////////////////////////////////////////////////////////// +/// Set the vertical scale of a shape +/// +/// \param Shape : Shape to modify +/// \param Scale : New scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetScaleY(sfShape* Shape, float Scale); + +//////////////////////////////////////////////////////////// +/// Set the scale of a shape +/// +/// \param Shape : Shape to modify +/// \param ScaleX : New horizontal scale (must be strictly positive) +/// \param ScaleY : New vertical scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetScale(sfShape* Shape, float ScaleX, float ScaleY); + +//////////////////////////////////////////////////////////// +/// Set the orientation of a shape +/// +/// \param Shape : Shape to modify +/// \param Rotation : Angle of rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetRotation(sfShape* Shape, float Rotation); + +//////////////////////////////////////////////////////////// +/// Set the center of a shape, in coordinates relative to +/// its left-top corner +/// +/// \param Shape : Shape to modify +/// \param X : X coordinate of the center +/// \param Y : Y coordinate of the center +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetCenter(sfShape* Shape, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Set the color of a shape +/// +/// \param Shape : Shape to modify +/// \param Color : New color +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetColor(sfShape* Shape, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Set the blending mode for a shape +/// +/// \param Shape : Shape to modify +/// \param Mode : New blending mode +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetBlendMode(sfShape* Shape, sfBlendMode Mode); + +//////////////////////////////////////////////////////////// +/// Get the X position of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current X position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetX(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the Y position of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current Y position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetY(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the horizontal scale of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current X scale factor (always positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetScaleX(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the vertical scale of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current Y scale factor (always positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetScaleY(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the orientation of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetRotation(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the X position of the center a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current X center +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetCenterX(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the Y position of the center a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current Y center +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetCenterY(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the color of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current color +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfShape_GetColor(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the current blending mode of a shape +/// +/// \param Shape : Shape to read +/// +/// \return Current blending mode +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBlendMode sfShape_GetBlendMode(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Move a shape +/// +/// \param Shape : Shape to modify +/// \param OffsetX : Offset on the X axis +/// \param OffsetY : Offset on the Y axis +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_Move(sfShape* Shape, float OffsetX, float OffsetY); + +//////////////////////////////////////////////////////////// +/// Scale a shape +/// +/// \param Shape : Shape to modify +/// \param FactorX : Horizontal scaling factor (must be strictly positive) +/// \param FactorY : Vertical scaling factor (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_Scale(sfShape* Shape, float FactorX, float FactorY); + +//////////////////////////////////////////////////////////// +/// Rotate a shape +/// +/// \param Shape : Shape to modify +/// \param Angle : Angle of rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_Rotate(sfShape* Shape, float Angle); + +//////////////////////////////////////////////////////////// +/// Transform a point from global coordinates into the shape's local coordinates +/// (ie it applies the inverse of object's center, translation, rotation and scale to the point) +/// +/// \param Shape : Shape object +/// \param PointX : X coordinate of the point to transform +/// \param PointY : Y coordinate of the point to transform +/// \param X : Value to fill with the X coordinate of the converted point +/// \param Y : Value to fill with the y coordinate of the converted point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_TransformToLocal(sfShape* Shape, float PointX, float PointY, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Transform a point from the shape's local coordinates into global coordinates +/// (ie it applies the object's center, translation, rotation and scale to the point) +/// +/// \param Shape : Shape object +/// \param PointX : X coordinate of the point to transform +/// \param PointY : Y coordinate of the point to transform +/// \param X : Value to fill with the X coordinate of the converted point +/// \param Y : Value to fill with the y coordinate of the converted point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_TransformToGlobal(sfShape* Shape, float PointX, float PointY, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Add a point to a shape +/// +/// \param Shape : Shape to modify +/// \param X, Y : Position of the point +/// \param Col : Color of the point +/// \param OutlineCol : Outline color of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_AddPoint(sfShape* Shape, float X, float Y, sfColor Col, sfColor OutlineCol); + +//////////////////////////////////////////////////////////// +/// Enable or disable filling a shape. +/// Fill is enabled by default +/// +/// \param Enable : True to enable, false to disable +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_EnableFill(sfShape* Shape, sfBool Enable); + +//////////////////////////////////////////////////////////// +/// Enable or disable drawing a shape outline. +/// Outline is enabled by default +/// +/// \param Shape : Shape to modify +/// \param Enable : True to enable, false to disable +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_EnableOutline(sfShape* Shape, sfBool Enable); + +//////////////////////////////////////////////////////////// +/// Change the width of a shape outline +/// +/// \param Shape : Shape to modify +/// \param Width : New width +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetOutlineWidth(sfShape* Shape, float Width); + +//////////////////////////////////////////////////////////// +/// Get the width of a shape outline +/// +/// \param Shape : Shape to read +/// +/// \param return Current outline width +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfShape_GetOutlineWidth(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get the number of points composing a shape +/// +/// \param Shape : Shape to read +/// +/// \return Total number of points +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfShape_GetNbPoints(sfShape* Shape); + +//////////////////////////////////////////////////////////// +/// Get a the position of a shape's point +/// +/// \param Shape : Shape to read +/// \param Index : Index of the point to get +/// \param X : Variable to fill with the X coordinate of the point +/// \param Y : Variable to fill with the Y coordinate of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_GetPointPosition(sfShape* Shape, unsigned int Index, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Get a the color of a shape's point +/// +/// \param Shape : Shape to read +/// \param Index : Index of the point to get +/// +/// \return Color of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfShape_GetPointColor(sfShape* Shape, unsigned int Index); + +//////////////////////////////////////////////////////////// +/// Get a the outline color of a shape's point +/// +/// \param Shape : Shape to read +/// \param Index : Index of the point to get +/// +/// \return Outline color of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfShape_GetPointOutlineColor(sfShape* Shape, unsigned int Index); + +//////////////////////////////////////////////////////////// +/// Set a the position of a shape's point +/// +/// \param Shape : Shape to read +/// \param Index : Index of the point to get +/// \param X : X coordinate of the point +/// \param Y : Y coordinate of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetPointPosition(sfShape* Shape, unsigned int Index, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Set a the color of a shape's point +/// +/// \param Shape : Shape to read +/// \param Index : Index of the point to get +/// \param Color : Color of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetPointColor(sfShape* Shape, unsigned int Index, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Set a the outline color of a shape's point +/// +/// \param Shape : Shape to read +/// \param Index : Index of the point to get +/// \param Color : Outline color of the point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfShape_SetPointOutlineColor(sfShape* Shape, unsigned int Index, sfColor Color); + + +#endif // SFML_Shape_H diff --git a/CSFML/include/SFML/Graphics/Sprite.h b/CSFML/include/SFML/Graphics/Sprite.h new file mode 100644 index 00000000..ae0bbfa7 --- /dev/null +++ b/CSFML/include/SFML/Graphics/Sprite.h @@ -0,0 +1,399 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SPRITE_H +#define SFML_SPRITE_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfSprite defines a sprite : texture, transformations, +/// color, and draw on screen +//////////////////////////////////////////////////////////// +typedef struct sfSprite sfSprite; + + +//////////////////////////////////////////////////////////// +/// Create a new sprite +/// +/// \return A new sfSprite object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSprite* sfSprite_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing sprite +/// +/// \param Sprite : Sprite to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_Destroy(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Set the X position of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param X : New X coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetX(sfSprite* Sprite, float X); + +//////////////////////////////////////////////////////////// +/// Set the T position of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Y : New Y coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetY(sfSprite* Sprite, float Y); + +//////////////////////////////////////////////////////////// +/// Set the position of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param X : New X coordinate +/// \param Y : New Y coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetPosition(sfSprite* Sprite, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Set the horizontal scale of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Scale : New scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetScaleX(sfSprite* Sprite, float Scale); + +//////////////////////////////////////////////////////////// +/// Set the vertical scale of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Scale : New scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetScaleY(sfSprite* Sprite, float Scale); + +//////////////////////////////////////////////////////////// +/// Set the scale of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param ScaleX : New horizontal scale (must be strictly positive) +/// \param ScaleY : New vertical scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetScale(sfSprite* Sprite, float ScaleX, float ScaleY); + +//////////////////////////////////////////////////////////// +/// Set the orientation of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Rotation : Angle of rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetRotation(sfSprite* Sprite, float Rotation); + +//////////////////////////////////////////////////////////// +/// Set the center of a sprite, in coordinates relative to +/// its left-top corner +/// +/// \param Sprite : Sprite to modify +/// \param X : X coordinate of the center +/// \param Y : Y coordinate of the center +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetCenter(sfSprite* Sprite, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Set the color of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Color : New color +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetColor(sfSprite* Sprite, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Set the blending mode for a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Mode : New blending mode +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetBlendMode(sfSprite* Sprite, sfBlendMode Mode); + +//////////////////////////////////////////////////////////// +/// Get the X position of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current X position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetX(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the Y position of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current Y position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetY(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the horizontal scale of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current X scale factor (always positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetScaleX(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the vertical scale of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current Y scale factor (always positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetScaleY(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the orientation of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetRotation(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the X position of the center a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current X center +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetCenterX(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the Y position of the center a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current Y center +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetCenterY(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the color of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current color +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfSprite_GetColor(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the current blending mode of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Current blending mode +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBlendMode sfSprite_GetBlendMode(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Move a sprite +/// +/// \param Sprite : Sprite to modify +/// \param OffsetX : Offset on the X axis +/// \param OffsetY : Offset on the Y axis +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_Move(sfSprite* Sprite, float OffsetX, float OffsetY); + +//////////////////////////////////////////////////////////// +/// Scale a sprite +/// +/// \param Sprite : Sprite to modify +/// \param FactorX : Horizontal scaling factor (must be strictly positive) +/// \param FactorY : Vertical scaling factor (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_Scale(sfSprite* Sprite, float FactorX, float FactorY); + +//////////////////////////////////////////////////////////// +/// Rotate a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Angle : Angle of rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_Rotate(sfSprite* Sprite, float Angle); + +//////////////////////////////////////////////////////////// +/// Transform a point from global coordinates into the sprite's local coordinates +/// (ie it applies the inverse of object's center, translation, rotation and scale to the point) +/// +/// \param Sprite : Sprite object +/// \param PointX : X coordinate of the point to transform +/// \param PointY : Y coordinate of the point to transform +/// \param X : Value to fill with the X coordinate of the converted point +/// \param Y : Value to fill with the y coordinate of the converted point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_TransformToLocal(sfSprite* Sprite, float PointX, float PointY, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Transform a point from the sprite's local coordinates into global coordinates +/// (ie it applies the object's center, translation, rotation and scale to the point) +/// +/// \param Sprite : Sprite object +/// \param PointX : X coordinate of the point to transform +/// \param PointY : Y coordinate of the point to transform +/// \param X : Value to fill with the X coordinate of the converted point +/// \param Y : Value to fill with the y coordinate of the converted point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_TransformToGlobal(sfSprite* Sprite, float PointX, float PointY, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Change the image of a sprite +/// +/// \param Sprite : Sprite to modify +/// \param Image : New image +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetImage(sfSprite* Sprite, sfImage* Image); + +//////////////////////////////////////////////////////////// +/// Set the sub-rectangle of a sprite inside the source image +/// +/// \param Sprite : Sprite to modify +/// \param SubRect : New sub-rectangle +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_SetSubRect(sfSprite* Sprite, sfIntRect SubRect); + +//////////////////////////////////////////////////////////// +/// Resize a sprite (by changing its scale factors) +/// +/// \param Sprite : Sprite to modify +/// \param Width : New width (must be strictly positive) +/// \param Height : New height (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_Resize(sfSprite* Sprite, float Width, float Height); + +//////////////////////////////////////////////////////////// +/// Flip a sprite horizontally +/// +/// \param Sprite : Sprite to modify +/// \param Flipped : sfTrue to flip the sprite +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_FlipX(sfSprite* Sprite, sfBool Flipped); + +//////////////////////////////////////////////////////////// +/// Flip a sprite vertically +/// +/// \param Sprite : Sprite to modify +/// \param Flipped : sfTrue to flip the sprite +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSprite_FlipY(sfSprite* Sprite, sfBool Flipped); + +//////////////////////////////////////////////////////////// +/// Get the source image of a sprite +/// +/// \param Sprite : Sprite to read +/// +/// \return Pointer to the image (can be NULL) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfImage* sfSprite_GetImage(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the sub-rectangle of a sprite inside the source image +/// +/// \param Sprite : Sprite to read +/// +/// \return Sub-rectangle +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIntRect sfSprite_GetSubRect(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get a sprite width +/// +/// \param Sprite : Sprite to read +/// +/// \return Width of the sprite +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetWidth(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get a sprite height +/// +/// \param Sprite : Sprite to read +/// +/// \return Height of the sprite +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfSprite_GetHeight(sfSprite* Sprite); + +//////////////////////////////////////////////////////////// +/// Get the color of a given pixel in a sprite +/// +/// \param Sprite : Sprite to read +/// \param X : X coordinate of the pixel to get +/// \param Y : Y coordinate of the pixel to get +/// +/// \return Color of pixel (X, Y) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfSprite_GetPixel(sfSprite* Sprite, unsigned int X, unsigned int Y); + + +#endif // SFML_SPRITE_H diff --git a/CSFML/include/SFML/Graphics/String.h b/CSFML/include/SFML/Graphics/String.h new file mode 100644 index 00000000..41e5a115 --- /dev/null +++ b/CSFML/include/SFML/Graphics/String.h @@ -0,0 +1,430 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_STRING_H +#define SFML_STRING_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfString defines a graphical 2D text, that can be drawn on screen +//////////////////////////////////////////////////////////// +typedef struct sfString sfString; + + +//////////////////////////////////////////////////////////// +/// sfString styles +//////////////////////////////////////////////////////////// +typedef enum +{ + sfStringRegular = 0, ///< Regular characters, no style + sfStringBold = 1 << 0, ///< Characters are bold + sfStringItalic = 1 << 1, ///< Characters are in italic + sfStringUnderlined = 1 << 2 ///< Characters are underlined +} sfStringStyle; + + +//////////////////////////////////////////////////////////// +/// Create a new string +/// +/// \return A new sfString object, or NULL if it failed +/// +//////////////////////////////////////////////////////////// +CSFML_API sfString* sfString_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing string +/// +/// \param String : String to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_Destroy(sfString* String); + +//////////////////////////////////////////////////////////// +/// Set the X position of a string +/// +/// \param String : String to modify +/// \param X : New X coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetX(sfString* String, float X); + +//////////////////////////////////////////////////////////// +/// Set the Y position of a string +/// +/// \param String : String to modify +/// \param Y : New Y coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetY(sfString* String, float Y); + +//////////////////////////////////////////////////////////// +/// Set the position of a string +/// +/// \param String : String to modify +/// \param Left : New left coordinate +/// \param Top : New top coordinate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetPosition(sfString* String, float Left, float Top); + +//////////////////////////////////////////////////////////// +/// Set the horizontal scale of a string +/// +/// \param String : String to modify +/// \param Scale : New scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetScaleX(sfString* String, float Scale); + +//////////////////////////////////////////////////////////// +/// Set the vertical scale of a string +/// +/// \param String : String to modify +/// \param Scale : New scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetScaleY(sfString* String, float Scale); + +//////////////////////////////////////////////////////////// +/// Set the scale of a string +/// +/// \param String : String to modify +/// \param ScaleX : New horizontal scale (must be strictly positive) +/// \param ScaleY : New vertical scale (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetScale(sfString* String, float ScaleX, float ScaleY); + +//////////////////////////////////////////////////////////// +/// Set the orientation of a string +/// +/// \param String : String to modify +/// \param Rotation : Angle of rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetRotation(sfString* String, float Rotation); + +//////////////////////////////////////////////////////////// +/// Set the center of a string, in coordinates +/// relative to its left-top corner +/// +/// \param String : String to modify +/// \param X : X coordinate of the center +/// \param Y : Y coordinate of the center +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetCenter(sfString* String, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Set the color of a string +/// +/// \param String : String to modify +/// \param Color : New color +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetColor(sfString* String, sfColor Color); + +//////////////////////////////////////////////////////////// +/// Set the blending mode for a string +/// +/// \param String : String to modify +/// \param Mode : New blending mode +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetBlendMode(sfString* String, sfBlendMode Mode); + +//////////////////////////////////////////////////////////// +/// Get the X position of a string +/// +/// \param String : String to read +/// +/// \return Current X position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetX(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the top Y of a string +/// +/// \param String : String to read +/// +/// \return Current Y position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetY(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the horizontal scale of a string +/// +/// \param String : String to read +/// +/// \return Current X scale factor (always positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetScaleX(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the vertical scale of a string +/// +/// \param String : String to read +/// +/// \return Current Y scale factor (always positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetScaleY(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the orientation of a string +/// +/// \param String : String to read +/// +/// \return Current rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetRotation(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the X position of the center a string +/// +/// \param String : String to read +/// +/// \return Current X center position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetCenterX(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the top Y of the center of a string +/// +/// \param String : String to read +/// +/// \return Current Y center position +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetCenterY(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the color of a string +/// +/// \param String : String to read +/// +/// \return Current color +/// +//////////////////////////////////////////////////////////// +CSFML_API sfColor sfString_GetColor(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the current blending mode of a string +/// +/// \param String : String to read +/// +/// \return Current blending mode +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBlendMode sfString_GetBlendMode(sfString* String); + +//////////////////////////////////////////////////////////// +/// Move a string +/// +/// \param String : String to modify +/// \param OffsetX : Offset on the X axis +/// \param OffsetY : Offset on the Y axis +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_Move(sfString* String, float OffsetX, float OffsetY); + +//////////////////////////////////////////////////////////// +/// Scale a string +/// +/// \param String : String to modify +/// \param FactorX : Horizontal scaling factor (must be strictly positive) +/// \param FactorY : Vertical scaling factor (must be strictly positive) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_Scale(sfString* String, float FactorX, float FactorY); + +//////////////////////////////////////////////////////////// +/// Rotate a string +/// +/// \param String : String to modify +/// \param Angle : Angle of rotation, in degrees +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_Rotate(sfString* String, float Angle); + +//////////////////////////////////////////////////////////// +/// Transform a point from global coordinates into the string's local coordinates +/// (ie it applies the inverse of object's center, translation, rotation and scale to the point) +/// +/// \param String : String object +/// \param PointX : X coordinate of the point to transform +/// \param PointY : Y coordinate of the point to transform +/// \param X : Value to fill with the X coordinate of the converted point +/// \param Y : Value to fill with the y coordinate of the converted point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_TransformToLocal(sfString* String, float PointX, float PointY, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Transform a point from the string's local coordinates into global coordinates +/// (ie it applies the object's center, translation, rotation and scale to the point) +/// +/// \param String : String object +/// \param PointX : X coordinate of the point to transform +/// \param PointY : Y coordinate of the point to transform +/// \param X : Value to fill with the X coordinate of the converted point +/// \param Y : Value to fill with the y coordinate of the converted point +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_TransformToGlobal(sfString* String, float PointX, float PointY, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Set the text of a string (from a multibyte string) +/// +/// \param String : String to modify +/// \param Text : New text +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetText(sfString* String, const char* Text); + +//////////////////////////////////////////////////////////// +/// Set the text of a string (from a unicode string) +/// +/// \param String : String to modify +/// \param Text : New text +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetUnicodeText(sfString* String, const sfUint32* Text); + +//////////////////////////////////////////////////////////// +/// Set the font of a string +/// +/// \param String : String to modify +/// \param Font : Font to use +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetFont(sfString* String, sfFont* Font); + +//////////////////////////////////////////////////////////// +/// Set the size of a string +/// +/// \param String : String to modify +/// \param Size : New size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetSize(sfString* String, float Size); + +//////////////////////////////////////////////////////////// +/// Set the style of a string +/// +/// \param String : String to modify +/// \param Size : New style (see sfStringStyle enum) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_SetStyle(sfString* String, unsigned long Style); + +//////////////////////////////////////////////////////////// +/// Get the text of a string (returns a unicode string) +/// +/// \param String : String to read +/// +/// \return Text as UTF-32 +/// +//////////////////////////////////////////////////////////// +CSFML_API const sfUint32* sfString_GetUnicodeText(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the text of a string (returns an ANSI string) +/// +/// \param String : String to read +/// +/// \return Text an a locale-dependant ANSI string +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfString_GetText(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the font used by a string +/// +/// \param String : String to read +/// +/// \return Pointer to the font +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFont* sfString_GetFont(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the size of the characters of a string +/// +/// \param String : String to read +/// +/// \return Size of the characters +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfString_GetSize(sfString* String); + +//////////////////////////////////////////////////////////// +/// Get the style of a string +/// +/// \param String : String to read +/// +/// \return Current string style (see sfStringStyle enum) +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned long sfString_GetStyle(sfString* String); + +//////////////////////////////////////////////////////////// +/// Return the visual position of the Index-th character of the string, +/// in coordinates relative to the string +/// (note : translation, center, rotation and scale are not applied) +/// +/// \param String : String to read +/// \param Index : Index of the character +/// \param X : Value to fill with the X coordinate of the position +/// \param Y : Value to fill with the y coordinate of the position +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfString_GetCharacterPos(sfString* String, size_t Index, float* X, float* Y); + +//////////////////////////////////////////////////////////// +/// Get the bounding rectangle of a string on screen +/// +/// \param String : String to read +/// +/// \return Rectangle contaning the string in screen coordinates +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFloatRect sfString_GetRect(sfString* String); + + +#endif // SFML_STRING_H diff --git a/CSFML/include/SFML/Graphics/View.h b/CSFML/include/SFML/Graphics/View.h new file mode 100644 index 00000000..d648929d --- /dev/null +++ b/CSFML/include/SFML/Graphics/View.h @@ -0,0 +1,163 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VIEW_H +#define SFML_VIEW_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// This class defines a view (position, size, etc.) ; +/// you can consider it as a 2D camera +//////////////////////////////////////////////////////////// +typedef struct sfView sfView; + + +//////////////////////////////////////////////////////////// +/// Construct a default view (1000x1000) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfView* sfView_Create(); + +//////////////////////////////////////////////////////////// +/// Construct a view from a rectangle +/// +/// \param Rect : Rectangle defining the bounds of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API sfView* sfView_CreateFromRect(sfFloatRect Rect); + +//////////////////////////////////////////////////////////// +/// Destroy an existing view +/// +/// \param View : View to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfView_Destroy(sfView* View); + +//////////////////////////////////////////////////////////// +/// Change the center of a view +/// +/// \param View : View to modify +/// \param X : X coordinate of the new center +/// \param Y : Y coordinate of the new center +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfView_SetCenter(sfView* View, float X, float Y); + +//////////////////////////////////////////////////////////// +/// Change the half-size of a view +/// +/// \param View : View to modify +/// \param HalfWidth : New half-width +/// \param HalfHeight : New half-height +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfView_SetHalfSize(sfView* View, float HalfWidth, float HalfHeight); + +//////////////////////////////////////////////////////////// +/// Rebuild a view from a rectangle +/// +/// \param View : View to modify +/// \param ViewRect : Rectangle defining the position and size of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfView_SetFromRect(sfView* View, sfFloatRect ViewRect); + +//////////////////////////////////////////////////////////// +/// Get the X coordinate of the center of a view +/// +/// \param View : View to read +/// +/// \return X coordinate of the center of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfView_GetCenterX(sfView* View); + +//////////////////////////////////////////////////////////// +/// Get the Y coordinate of the center of a view +/// +/// \param View : View to read +/// +/// \return Y coordinate of the center of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfView_GetCenterY(sfView* View); + +//////////////////////////////////////////////////////////// +/// Get the half-width of the view +/// +/// \param View : View to read +/// +/// \return Half-width of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfView_GetHalfSizeX(sfView* View); + +//////////////////////////////////////////////////////////// +/// Get the half-height of the view +/// +/// \param View : View to read +/// +/// \return Half-height of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfView_GetHalfSizeY(sfView* View); + +//////////////////////////////////////////////////////////// +/// Get the bounding rectangle of a view +/// +/// \param View : View to read +/// +/// \return Bounding rectangle of the view +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFloatRect sfView_GetRect(sfView* View); + +//////////////////////////////////////////////////////////// +/// Move a view +/// +/// \param View : View to move +/// \param OffsetX : Offset to move the view, on X axis +/// \param OffsetY : Offset to move the view, on Y axis +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfView_Move(sfView* View, float OffsetX, float OffsetY); + +//////////////////////////////////////////////////////////// +/// Resize a view rectangle to simulate a zoom / unzoom effect +/// +/// \param View : View to zoom +/// \param Factor : Zoom factor to apply, relative to the current zoom +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfView_Zoom(sfView* View, float Factor); + + +#endif // SFML_VIEW_H diff --git a/CSFML/include/SFML/Network.h b/CSFML/include/SFML/Network.h new file mode 100644 index 00000000..4a238822 --- /dev/null +++ b/CSFML/include/SFML/Network.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_NETWORK_H +#define SFML_NETWORK_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include + + +#endif // SFML_NETWORK_H diff --git a/CSFML/include/SFML/Network/Ftp.h b/CSFML/include/SFML/Network/Ftp.h new file mode 100644 index 00000000..1122e1cb --- /dev/null +++ b/CSFML/include/SFML/Network/Ftp.h @@ -0,0 +1,486 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_FTP_H +#define SFML_FTP_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// Enumerate all the FTP file transfer modes +//////////////////////////////////////////////////////////// +enum sfFtpTransferMode +{ + sfFtpBinary, ///< Binary mode (file is transfered as a sequence of bytes) + sfFtpAscii, ///< Text mode using ASCII encoding + sfFtpEbcdic ///< Text mode using EBCDIC encoding +}; + + +//////////////////////////////////////////////////////////// +/// Enumerate all the valid status codes returned in +/// a FTP response +//////////////////////////////////////////////////////////// +enum sfFtpStatus +{ + // 1xx: the requested action is being initiated, + // expect another reply before proceeding with a new command + sfFtpRestartMarkerReply = 110, ///< Restart marker reply + sfFtpServiceReadySoon = 120, ///< Service ready in N minutes + sfFtpDataConnectionAlreadyOpened = 125, ///< Data connection already opened, transfer starting + sfFtpOpeningDataConnection = 150, ///< File status ok, about to open data connection + + // 2xx: the requested action has been successfully completed + sfFtpOk = 200, ///< Command ok + sfFtpPointlessCommand = 202, ///< Command not implemented + sfFtpSystemStatus = 211, ///< System status, or system help reply + sfFtpDirectoryStatus = 212, ///< Directory status + sfFtpFileStatus = 213, ///< File status + sfFtpHelpMessage = 214, ///< Help message + sfFtpSystemType = 215, ///< NAME system type, where NAME is an official system name from the list in the Assigned Numbers document + sfFtpServiceReady = 220, ///< Service ready for new user + sfFtpClosingConnection = 221, ///< Service closing control connection + sfFtpDataConnectionOpened = 225, ///< Data connection open, no transfer in progress + sfFtpClosingDataConnection = 226, ///< Closing data connection, requested file action successful + sfFtpEnteringPassiveMode = 227, ///< Entering passive mode + sfFtpLoggedIn = 230, ///< User logged in, proceed. Logged out if appropriate + sfFtpFileActionOk = 250, ///< Requested file action ok + sfFtpDirectoryOk = 257, ///< PATHNAME created + + // 3xx: the command has been accepted, but the requested action + // is dormant, pending receipt of further information + sfFtpNeedPassword = 331, ///< User name ok, need password + sfFtpNeedAccountToLogIn = 332, ///< Need account for login + sfFtpNeedInformation = 350, ///< Requested file action pending further information + + // 4xx: the command was not accepted and the requested action did not take place, + // but the error condition is temporary and the action may be requested again + sfFtpServiceUnavailable = 421, ///< Service not available, closing control connection + sfFtpDataConnectionUnavailable = 425, ///< Can't open data connection + sfFtpTransferAborted = 426, ///< Connection closed, transfer aborted + sfFtpFileActionAborted = 450, ///< Requested file action not taken + sfFtpLocalError = 451, ///< Requested action aborted, local error in processing + sfFtpInsufficientStorageSpace = 452, ///< Requested action not taken; insufficient storage space in system, file unavailable + + // 5xx: the command was not accepted and + // the requested action did not take place + sfFtpCommandUnknown = 500, ///< Syntax error, command unrecognized + sfFtpParametersUnknown = 501, ///< Syntax error in parameters or arguments + sfFtpCommandNotImplemented = 502, ///< Command not implemented + sfFtpBadCommandSequence = 503, ///< Bad sequence of commands + sfFtpParameterNotImplemented = 504, ///< Command not implemented for that parameter + sfFtpNotLoggedIn = 530, ///< Not logged in + sfFtpNeedAccountToStore = 532, ///< Need account for storing files + sfFtpFileUnavailable = 550, ///< Requested action not taken, file unavailable + sfFtpPageTypeUnknown = 551, ///< Requested action aborted, page type unknown + sfFtpNotEnoughMemory = 552, ///< Requested file action aborted, exceeded storage allocation + sfFtpFilenameNotAllowed = 553, ///< Requested action not taken, file name not allowed + + // 10xx: SFML custom codes + sfFtpInvalidResponse = 1000, ///< Response is not a valid FTP one + sfFtpConnectionFailed = 1001, ///< Connection with server failed + sfFtpConnectionClosed = 1002, ///< Connection with server closed + sfFtpInvalidFile = 1003 ///< Invalid file to upload / download +}; + + +//////////////////////////////////////////////////////////// +/// sfFtpListingResponse wraps a FTP directory listing response, +/// which is basically : +/// - a status code +/// - a message +/// - a list of directory and files +//////////////////////////////////////////////////////////// +typedef struct sfFtpListingResponse sfFtpListingResponse; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp listing response +/// +/// \param FtpResponse : Ftp listing response to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfFtpListingResponse_Destroy(sfFtpListingResponse* FtpListingResponse); + +//////////////////////////////////////////////////////////// +/// Convenience function to check if the response status code +/// means a success +/// +/// \param FtpListingResponse : Ftp listing response +/// +/// \return sfTrue if status is success (code < 400) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfFtpListingResponse_IsOk(sfFtpListingResponse* FtpListingResponse); + +//////////////////////////////////////////////////////////// +/// Get the response status code +/// +/// \param FtpListingResponse : Ftp listing response +/// +/// \return Status code +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpStatus sfFtpListingResponse_GetStatus(sfFtpListingResponse* FtpListingResponse); + +//////////////////////////////////////////////////////////// +/// Get the full message contained in the response +/// +/// \param FtpListingResponse : Ftp listing response +/// +/// \return The response message +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfFtpListingResponse_GetMessage(sfFtpListingResponse* FtpListingResponse); + +//////////////////////////////////////////////////////////// +/// Get the number of filenames in the listing +/// +/// \param FtpListingResponse : Ftp listing response +/// +/// \return Total number of filenames +/// +//////////////////////////////////////////////////////////// +CSFML_API size_t sfFtpListingResponse_GetCount(sfFtpListingResponse* FtpListingResponse); + +//////////////////////////////////////////////////////////// +/// Get the Index-th filename in the directory +/// +/// \param FtpListingResponse : Ftp listing response +/// \param Index : Index of the filename to get +/// +/// \return Index-th filename +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfFtpListingResponse_GetFilename(sfFtpListingResponse* FtpListingResponse, size_t Index); + + +//////////////////////////////////////////////////////////// +/// sfFtpDirectoryResponse wraps a FTP directory response, which is basically : +/// - a status code +/// - a message +/// - a directory name +//////////////////////////////////////////////////////////// +typedef struct sfFtpDirectoryResponse sfFtpDirectoryResponse; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp directory response +/// +/// \param FtpDirectoryResponse : Ftp directory response to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfFtpDirectoryResponse_Destroy(sfFtpDirectoryResponse* FtpDirectoryResponse); + +//////////////////////////////////////////////////////////// +/// Convenience function to check if the response status code +/// means a success +/// +/// \param FtpDirectoryResponse : Ftp directory response +/// +/// \return sfTrue if status is success (code < 400) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfFtpDirectoryResponse_IsOk(sfFtpDirectoryResponse* FtpDirectoryResponse); + +//////////////////////////////////////////////////////////// +/// Get the response status code +/// +/// \param FtpDirectoryResponse : Ftp directory response +/// +/// \return Status code +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpStatus sfFtpDirectoryResponse_GetStatus(sfFtpDirectoryResponse* FtpDirectoryResponse); + +//////////////////////////////////////////////////////////// +/// Get the full message contained in the response +/// +/// \param FtpDirectoryResponse : Ftp directory response +/// +/// \return The response message +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfFtpDirectoryResponse_GetMessage(sfFtpDirectoryResponse* FtpDirectoryResponse); + +//////////////////////////////////////////////////////////// +/// Get the directory returned in the response +/// +/// \param FtpDirectoryResponse : Ftp directory response +/// +/// \return Directory name +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfFtpDirectoryResponse_GetDirectory(sfFtpDirectoryResponse* FtpDirectoryResponse); + + +//////////////////////////////////////////////////////////// +/// sfFtpResponse wraps a FTP response, which is basically : +/// - a status code +/// - a message +//////////////////////////////////////////////////////////// +typedef struct sfFtpResponse sfFtpResponse; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp response +/// +/// \param FtpResponse : Ftp response to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfFtpResponse_Destroy(sfFtpResponse* FtpResponse); + +//////////////////////////////////////////////////////////// +/// Convenience function to check if the response status code +/// means a success +/// +/// \param FtpResponse : Ftp response +/// +/// \return sfTrue if status is success (code < 400) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfFtpResponse_IsOk(sfFtpResponse* FtpResponse); + +//////////////////////////////////////////////////////////// +/// Get the response status code +/// +/// \param FtpResponse : Ftp response +/// +/// \return Status code +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpStatus sfFtpResponse_GetStatus(sfFtpResponse* FtpResponse); + +//////////////////////////////////////////////////////////// +/// Get the full message contained in the response +/// +/// \param FtpResponse : Ftp response +/// +/// \return The response message +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfFtpResponse_GetMessage(sfFtpResponse* FtpResponse); + + +//////////////////////////////////////////////////////////// +/// sfFtp provides methods for manipulating the FTP +/// protocol (described in RFC 959). +/// It provides easy access and transfers to remote +/// directories and files on a FTP server +//////////////////////////////////////////////////////////// +typedef struct sfFtp sfFtp; + + +//////////////////////////////////////////////////////////// +/// Construct a new Ftp +/// +/// \return Pointer to the new Ftp +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtp* sfFtp_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp +/// +/// \param Ftp : Ftp to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfFtp_Destroy(sfFtp* Ftp); + +//////////////////////////////////////////////////////////// +/// Connect to the specified FTP server +/// +/// \param Ftp : Ftp instance +/// \param Server : FTP server to connect to +/// \param Port : Port used for connection (21 by default, standard FTP port) +/// \param Timeout : Maximum time to wait (0 to use no timeout) +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_Connect(sfFtp* Ftp, sfIPAddress Server, unsigned short Port, float Timeout); + +//////////////////////////////////////////////////////////// +/// Log in using anonymous account +/// +/// \param Ftp : Ftp instance +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_LoginAnonymous(sfFtp* Ftp); + +//////////////////////////////////////////////////////////// +/// Log in using a username and a password +/// +/// \param Ftp : Ftp instance +/// \param UserName : User name +/// \param Password : Password +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_Login(sfFtp* Ftp, const char* UserName, const char* Password); + +//////////////////////////////////////////////////////////// +/// Close the connection with FTP server +/// +/// \param Ftp : Ftp instance +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_Disconnect(sfFtp* Ftp); + +//////////////////////////////////////////////////////////// +/// Send a null command just to prevent from being disconnected +/// +/// \param Ftp : Ftp instance +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_KeepAlive(sfFtp* Ftp); + +//////////////////////////////////////////////////////////// +/// Get the current working directory +/// +/// \param Ftp : Ftp instance +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpDirectoryResponse* sfFtp_GetWorkingDirectory(sfFtp* Ftp); + +//////////////////////////////////////////////////////////// +/// Get the contents of the given directory +/// (subdirectories and files) +/// +/// \param Ftp : Ftp instance +/// \param Directory : Directory to list ("" by default, the current one) +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpListingResponse* sfFtp_GetDirectoryListing(sfFtp* Ftp, const char* Directory); + +//////////////////////////////////////////////////////////// +/// Change the current working directory +/// +/// \param Ftp : Ftp instance +/// \param Directory : New directory, relative to the current one +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_ChangeDirectory(sfFtp* Ftp, const char* Directory); + +//////////////////////////////////////////////////////////// +/// Go to the parent directory of the current one +/// +/// \param Ftp : Ftp instance +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_ParentDirectory(sfFtp* Ftp); + +//////////////////////////////////////////////////////////// +/// Create a new directory +/// +/// \param Ftp : Ftp instance +/// \param Name : Name of the directory to create +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_MakeDirectory(sfFtp* Ftp, const char* Name); + +//////////////////////////////////////////////////////////// +/// Remove an existing directory +/// +/// \param Ftp : Ftp instance +/// \param Name : Name of the directory to remove +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_DeleteDirectory(sfFtp* Ftp, const char* Name); + +//////////////////////////////////////////////////////////// +/// Rename a file +/// +/// \param Ftp : Ftp instance +/// \param File : File to rename +/// \param NewName : New name +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_RenameFile(sfFtp* Ftp, const char* File, const char* NewName); + +//////////////////////////////////////////////////////////// +/// Remove an existing file +/// +/// \param Ftp : Ftp instance +/// \param Name : File to remove +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_DeleteFile(sfFtp* Ftp, const char* Name); + +//////////////////////////////////////////////////////////// +/// Download a file from the server +/// +/// \param Ftp : Ftp instance +/// \param DistantFile : Path of the distant file to download +/// \param DestPath : Where to put to file on the local computer +/// \param Mode : Transfer mode (binary by default) +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_Download(sfFtp* Ftp, const char* DistantFile, const char* DestPath, sfFtpTransferMode Mode); + +//////////////////////////////////////////////////////////// +/// Upload a file to the server +/// +/// \param Ftp : Ftp instance +/// \param LocalFile : Path of the local file to upload +/// \param DestPath : Where to put to file on the server +/// \param Mode : Transfer mode (binary by default) +/// +/// \return Server response to the request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfFtpResponse* sfFtp_Upload(sfFtp* Ftp, const char* LocalFile, const char* DestPath, sfFtpTransferMode Mode); + + +#endif // SFML_FTP_H diff --git a/CSFML/include/SFML/Network/Http.h b/CSFML/include/SFML/Network/Http.h new file mode 100644 index 00000000..261b876d --- /dev/null +++ b/CSFML/include/SFML/Network/Http.h @@ -0,0 +1,282 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_HTTP_H +#define SFML_HTTP_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Enumerate the available HTTP methods for a request +//////////////////////////////////////////////////////////// +enum sfHttpMethod +{ + sfHttpGet, ///< Request in get mode, standard method to retrieve a page + sfHttpPost, ///< Request in post mode, usually to send data to a page + sfHttpHead ///< Request a page's header only +}; + + +//////////////////////////////////////////////////////////// +/// Enumerate all the valid status codes returned in +/// a HTTP response +//////////////////////////////////////////////////////////// +enum sfHttpStatus +{ + // 2xx: success + sfHttpOk = 200, ///< Most common code returned when operation was successful + sfHttpCreated = 201, ///< The resource has successfully been created + sfHttpAccepted = 202, ///< The request has been accepted, but will be processed later by the server + sfHttpNoContent = 204, ///< Sent when the server didn't send any data in return + + // 3xx: redirection + sfHttpMultipleChoices = 300, ///< The requested page can be accessed from several locations + sfHttpMovedPermanently = 301, ///< The requested page has permanently moved to a new location + sfHttpMovedTemporarily = 302, ///< The requested page has temporarily moved to a new location + sfHttpNotModified = 304, ///< For conditionnal requests, means the requested page hasn't changed and doesn't need to be refreshed + + // 4xx: client error + sfHttpBadRequest = 400, ///< The server couldn't understand the request (syntax error) + sfHttpUnauthorized = 401, ///< The requested page needs an authentification to be accessed + sfHttpForbidden = 403, ///< The requested page cannot be accessed at all, even with authentification + sfHttpNotFound = 404, ///< The requested page doesn't exist + + // 5xx: server error + sfHttpInternalServerError = 500, ///< The server encountered an unexpected error + sfHttpNotImplemented = 501, ///< The server doesn't implement a requested feature + sfHttpBadGateway = 502, ///< The gateway server has received an error from the source server + sfHttpServiceNotAvailable = 503, ///< The server is temporarily unavailable (overloaded, in maintenance, ...) + + // 10xx: SFML custom codes + sfHttpInvalidResponse = 1000, ///< Response is not a valid HTTP one + sfHttpConnectionFailed = 1001 ///< Connection with server failed +}; + + +//////////////////////////////////////////////////////////// +/// sfHttpRequest wraps an HTTP request, which is basically : +/// - a header with a method, a target URI, and a set of field/value pairs +/// - an optional body (for POST requests) +//////////////////////////////////////////////////////////// +typedef struct sfHttpRequest sfHttpRequest; + + +//////////////////////////////////////////////////////////// +/// Construct a new Http request +/// +/// \return Pointer to the new Http request +/// +//////////////////////////////////////////////////////////// +CSFML_API sfHttpRequest* sfHttpRequest_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing Http request +/// +/// \param HttpRequest : Http request to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpRequest_Destroy(sfHttpRequest* HttpRequest); + +//////////////////////////////////////////////////////////// +/// Set the value of a field; the field is added if it doesn't exist +/// +/// \param HttpRequest : Http request to modify +/// \param Field : Name of the field to set (case-insensitive) +/// \param Value : Value of the field +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpRequest_SetField(sfHttpRequest* HttpRequest, const char* Field, const char* Value); + +//////////////////////////////////////////////////////////// +/// Set the request method. +/// This parameter is sfHttpGet by default +/// +/// \param HttpRequest : Http request to modify +/// \param RequestMethod : Method to use for the request +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpRequest_SetMethod(sfHttpRequest* HttpRequest, sfHttpMethod Method); + +//////////////////////////////////////////////////////////// +/// Set the target URI of the request. +/// This parameter is "/" by default +/// +/// \param HttpRequest : Http request to modify +/// \param URI : URI to request, local to the host +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpRequest_SetURI(sfHttpRequest* HttpRequest, const char* URI); + +//////////////////////////////////////////////////////////// +/// Set the HTTP version of the request. +/// This parameter is 1.0 by default +/// +/// \param HttpRequest : Http request to modify +/// \param Major : Major version number +/// \param Minor : Minor version number +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpRequest_SetHttpVersion(sfHttpRequest* HttpRequest, unsigned int Major, unsigned int Minor); + +//////////////////////////////////////////////////////////// +/// Set the body of the request. This parameter is optional and +/// makes sense only for POST requests. +/// This parameter is empty by default +/// +/// \param HttpRequest : Http request to modify +/// \param Body : Content of the request body +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpRequest_SetBody(sfHttpRequest* HttpRequest, const char* Body); + + +//////////////////////////////////////////////////////////// +/// sfHttpResponse wraps an HTTP response, which is basically : +/// - a header with a status code and a set of field/value pairs +/// - a body (the content of the requested resource) +//////////////////////////////////////////////////////////// +typedef struct sfHttpResponse sfHttpResponse; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Http response +/// +/// \param HttpResponse : Http response to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttpResponse_Destroy(sfHttpResponse* HttpResponse); + +//////////////////////////////////////////////////////////// +/// Get the value of a field; returns NULL if the field doesn't exist +/// +/// \param HttpResponse : Http response +/// \param Field : Field to get +/// +/// \return Value of the field (NULL if it doesn't exist) +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfHttpResponse_GetField(sfHttpResponse* HttpResponse, const char* Field); + +//////////////////////////////////////////////////////////// +/// Get the status of a response +/// +/// \param HttpResponse : Http response +/// +/// \return Status of the response +/// +//////////////////////////////////////////////////////////// +CSFML_API sfHttpStatus sfHttpResponse_GetStatus(sfHttpResponse* HttpResponse); + +//////////////////////////////////////////////////////////// +/// Get the major HTTP version of a response +/// +/// \param HttpResponse : Http response +/// +/// \return HTTP major version of the response +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfHttpResponse_GetMajorVersion(sfHttpResponse* HttpResponse); + +//////////////////////////////////////////////////////////// +/// Get the minor HTTP version of a response +/// +/// \param HttpResponse : Http response +/// +/// \return HTTP minor version of the response +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfHttpResponse_GetMinorVersion(sfHttpResponse* HttpResponse); + +//////////////////////////////////////////////////////////// +/// Get the body of the response. The body can contain : +/// - the requested page (for GET requests) +/// - a response from the server (for POST requests) +/// - nothing (for HEAD requests) +/// - an error message (in case of an error) +/// +/// \param HttpResponse : Http response +/// +/// \return Body of the response (empty string if no body) +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfHttpResponse_GetBody(sfHttpResponse* HttpResponse); + + +//////////////////////////////////////////////////////////// +/// sfHttp provides methods for manipulating the HTTP +/// protocol (described in RFC 1945). +/// It can connect to a website, get its files, send requests, etc. +//////////////////////////////////////////////////////////// +typedef struct sfHttp sfHttp; + + +//////////////////////////////////////////////////////////// +/// Construct a new Http object +/// +/// \return Pointer to the new Http +/// +//////////////////////////////////////////////////////////// +CSFML_API sfHttp* sfHttp_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing Http object +/// +/// \param Http : Http to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttp_Destroy(sfHttp* Http); + +//////////////////////////////////////////////////////////// +/// Set the target host of a Http server +/// +/// \param Http : Http object +/// \param Host : Web server to connect to +/// \param Port : Port to use for connection (0 to use the standard port of the protocol used) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfHttp_SetHost(sfHttp* Http, const char* Host, unsigned short Port); + +//////////////////////////////////////////////////////////// +/// Send a HTTP request and return the server's response. +/// You must be connected to a host before sending requests. +/// Any missing mandatory header field will be added with an appropriate value. +/// Warning : this function waits for the server's response and may +/// not return instantly; use a thread if you don't want to block your +/// application. +/// +/// \param Http : Http object +/// \param Request : Request to send +/// \param Timeout : Maximum time to wait (0 to use no timeout) +/// +/// \return Server's response, or NULL if request is invalid +/// +//////////////////////////////////////////////////////////// +CSFML_API sfHttpResponse* sfHttp_SendRequest(sfHttp* Http, sfHttpRequest* Request, float Timeout); + + +#endif // SFML_HTTP_H diff --git a/CSFML/include/SFML/Network/IPAddress.h b/CSFML/include/SFML/Network/IPAddress.h new file mode 100644 index 00000000..1d9fcca3 --- /dev/null +++ b/CSFML/include/SFML/Network/IPAddress.h @@ -0,0 +1,133 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_IPADDRESS_H +#define SFML_IPADDRESS_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfIPAddress provides easy manipulation of IP v4 addresses +//////////////////////////////////////////////////////////// +typedef struct +{ + char Address[16]; +} sfIPAddress; + + +//////////////////////////////////////////////////////////// +/// Construct an address from a string +/// +/// \param String : IP address ("xxx.xxx.xxx.xxx") or network name +/// +/// \return Resulting address +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIPAddress sfIPAddress_FromString(const char* String); + +//////////////////////////////////////////////////////////// +/// Construct an address from 4 bytes +/// +/// \param Byte0 : First byte of the address +/// \param Byte1 : Second byte of the address +/// \param Byte2 : Third byte of the address +/// \param Byte3 : Fourth byte of the address +/// +/// \return Resulting address +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIPAddress sfIPAddress_FromBytes(sfUint8 Byte0, sfUint8 Byte1, sfUint8 Byte2, sfUint8 Byte3); + +//////////////////////////////////////////////////////////// +/// Construct the address from a 32-bits integer +/// +/// \param Address : 4 bytes of the address packed into a 32-bits integer +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIPAddress sfIPAddress_FromInteger(sfUint32 Address); + +//////////////////////////////////////////////////////////// +/// Tell if an address is a valid one +/// +/// \param Address : Address to check +/// +/// \return sfTrue if address has a valid syntax +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfIPAddress_IsValid(sfIPAddress Address); + +//////////////////////////////////////////////////////////// +/// Get a string representation of an address +/// +/// \param Address : Address to convert +/// \param String : Char array to fill (size must be >= 16) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfIPAddress_ToString(sfIPAddress Address, char* String); + +//////////////////////////////////////////////////////////// +/// Get an integer representation of the address +/// +/// \param Address : Address to convert +/// +/// \return 32-bits integer containing the 4 bytes of the address, in system endianness +/// +//////////////////////////////////////////////////////////// +CSFML_API sfUint32 sfIPAddress_ToInteger(sfIPAddress Address); + +//////////////////////////////////////////////////////////// +/// Get the computer's local IP address (from the LAN point of view) +/// +/// \return Local IP address +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIPAddress sfIPAddress_GetLocalAddress(); + +//////////////////////////////////////////////////////////// +/// Get the computer's public IP address (from the web point of view). +/// The only way to get a public address is to ask it to a +/// distant website ; as a consequence, this function may be +/// very slow -- use it as few as possible ! +/// +/// \param Timeout : Maximum time to wait, in seconds (use 0 for no timeout) +/// +/// \return Public IP address +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIPAddress sfIPAddress_GetPublicAddress(float Timeout); + +//////////////////////////////////////////////////////////// +/// Get the computer's loopback address +/// +/// \return Local host IP address (127.0.0.1, or "localhost") +/// +//////////////////////////////////////////////////////////// +CSFML_API sfIPAddress sfIPAddress_LocalHost(); + + +#endif // SFML_IPADDRESS_H diff --git a/CSFML/include/SFML/Network/Packet.h b/CSFML/include/SFML/Network/Packet.h new file mode 100644 index 00000000..6d2a9bbd --- /dev/null +++ b/CSFML/include/SFML/Network/Packet.h @@ -0,0 +1,153 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_PACKET_H +#define SFML_PACKET_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfPacket wraps data to send / to receive through the network +//////////////////////////////////////////////////////////// +typedef struct sfPacket sfPacket; + + +//////////////////////////////////////////////////////////// +/// Create a new empty packet +/// +/// \return A new sfPacket object +/// +//////////////////////////////////////////////////////////// +CSFML_API sfPacket* sfPacket_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing packet +/// +/// \param Packet : Packet to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPacket_Destroy(sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Append data to the end of a packet +/// +/// \param Packet : Packet to fill +/// \param Data : Pointer to the bytes to append +/// \param SizeInBytes : Number of bytes to append +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPacket_Append(sfPacket* Packet, void* Data, size_t SizeInBytes); + +//////////////////////////////////////////////////////////// +/// Clear all the data of a packet +/// +/// \param Packet : Packet to clear +/// +/////////////////////////////////////////////////////////// +CSFML_API void sfPacket_Clear(sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Get a pointer to the data contained in a packet +/// Warning : the returned pointer may be invalid after you +/// append data to the packet +/// +/// \param Packet : Packet to get data from +/// +/// \return Pointer to the data +/// +//////////////////////////////////////////////////////////// +CSFML_API const char* sfPacket_GetData(sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Get the size of the data contained in a packet +/// +/// \param Packet : Packet to get data size from +/// +/// \return Data size, in bytes +/// +//////////////////////////////////////////////////////////// +CSFML_API size_t sfPacket_GetDataSize(sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Tell if the reading position has reached the end of the packet +/// +/// \param Packet : Packet to check +/// +/// \return sfTrue if all data have been read into the packet +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfPacket_EndOfPacket(sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Return the validity of packet +/// +/// \param Packet : Packet to check +/// +/// \return sfTrue if last data extraction from packet was successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfPacket_CanRead(sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Functions to extract data from a packet +/// +/// \param Packet : Packet to read +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfPacket_ReadBool(sfPacket* Packet); +CSFML_API sfInt8 sfPacket_ReadInt8(sfPacket* Packet); +CSFML_API sfUint8 sfPacket_ReadUint8(sfPacket* Packet); +CSFML_API sfInt16 sfPacket_ReadInt16(sfPacket* Packet); +CSFML_API sfUint16 sfPacket_ReadUint16(sfPacket* Packet); +CSFML_API sfInt32 sfPacket_ReadInt32(sfPacket* Packet); +CSFML_API sfUint32 sfPacket_ReadUint32(sfPacket* Packet); +CSFML_API float sfPacket_ReadFloat(sfPacket* Packet); +CSFML_API double sfPacket_ReadDouble(sfPacket* Packet); +CSFML_API void sfPacket_ReadString(sfPacket* Packet, char* String); +CSFML_API void sfPacket_ReadWideString(sfPacket* Packet, wchar_t* String); + +//////////////////////////////////////////////////////////// +/// Functions to insert data into a packet +/// +/// \param Packet : Packet to write +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfPacket_WriteBool(sfPacket* Packet, sfBool); +CSFML_API void sfPacket_WriteInt8(sfPacket* Packet, sfInt8); +CSFML_API void sfPacket_WriteUint8(sfPacket* Packet, sfUint8); +CSFML_API void sfPacket_WriteInt16(sfPacket* Packet, sfInt16); +CSFML_API void sfPacket_WriteUint16(sfPacket* Packet, sfUint16); +CSFML_API void sfPacket_WriteInt32(sfPacket* Packet, sfInt32); +CSFML_API void sfPacket_WriteUint32(sfPacket* Packet, sfUint32); +CSFML_API void sfPacket_WriteFloat(sfPacket* Packet, float); +CSFML_API void sfPacket_WriteDouble(sfPacket* Packet, double); +CSFML_API void sfPacket_WriteString(sfPacket* Packet, const char* String); +CSFML_API void sfPacket_WriteWideString(sfPacket* Packet, const wchar_t* String); + + +#endif // SFML_PACKET_H diff --git a/CSFML/include/SFML/Network/Selector.h b/CSFML/include/SFML/Network/Selector.h new file mode 100644 index 00000000..7c74e543 --- /dev/null +++ b/CSFML/include/SFML/Network/Selector.h @@ -0,0 +1,120 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SELECTOR_H +#define SFML_SELECTOR_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfSelectorTCP and sfSelectorUDP allow reading from multiple sockets +/// without blocking. It's a kind of multiplexer +//////////////////////////////////////////////////////////// +typedef struct sfSelectorTCP sfSelectorTCP; +typedef struct sfSelectorUDP sfSelectorUDP; + + +//////////////////////////////////////////////////////////// +/// Create a new selector +/// +/// \return A new sfSelector object +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSelectorTCP* sfSelectorTCP_Create(); +CSFML_API sfSelectorUDP* sfSelectorUDP_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing selector +/// +/// \param Selector : Selector to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSelectorTCP_Destroy(sfSelectorTCP* Selector); +CSFML_API void sfSelectorUDP_Destroy(sfSelectorUDP* Selector); + +//////////////////////////////////////////////////////////// +/// Add a socket to watch to a selector +/// +/// \param Selector : Selector to add the socket to +/// \param Socket : Socket to add +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSelectorTCP_Add(sfSelectorTCP* Selector, sfSocketTCP* Socket); +CSFML_API void sfSelectorUDP_Add(sfSelectorUDP* Selector, sfSocketUDP* Socket); + +//////////////////////////////////////////////////////////// +/// Remove a socket from a selector +/// +/// \param Selector : Selector to remove the socket from +/// \param Socket : Socket to remove +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSelectorTCP_Remove(sfSelectorTCP* Selector, sfSocketTCP* Socket); +CSFML_API void sfSelectorUDP_Remove(sfSelectorUDP* Selector, sfSocketUDP* Socket); + +//////////////////////////////////////////////////////////// +/// Remove all sockets from a selector +/// +/// \param Selector : Selector to remove the socket from +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSelectorTCP_Clear(sfSelectorTCP* Selector); +CSFML_API void sfSelectorUDP_Clear(sfSelectorUDP* Selector); + +//////////////////////////////////////////////////////////// +/// Wait and collect sockets which are ready for reading. +/// This functions will return either when at least one socket +/// is ready, or when the given time is out +/// +/// \param Selector : Selector to check +/// \param Timeout : Maximum time to wait, in seconds (0 to disable timeout) +/// +/// \return Number of sockets ready +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfSelectorTCP_Wait(sfSelectorTCP* Selector, float Timeout); +CSFML_API unsigned int sfSelectorUDP_Wait(sfSelectorUDP* Selector, float Timeout); + +//////////////////////////////////////////////////////////// +/// After a call to Wait(), get the Index-th socket which is +/// ready for reading. The total number of sockets ready +/// is the integer returned by the previous call to Wait() +/// +/// \param Selector : Selector to check +/// \param Index : Index of the socket to get +/// +/// \return The Index-th socket +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketTCP* sfSelectorTCP_GetSocketReady(sfSelectorTCP* Selector, unsigned int Index); +CSFML_API sfSocketUDP* sfSelectorUDP_GetSocketReady(sfSelectorUDP* Selector, unsigned int Index); + + +#endif // SFML_SELECTOR_H diff --git a/CSFML/include/SFML/Network/SocketStatus.h b/CSFML/include/SFML/Network/SocketStatus.h new file mode 100644 index 00000000..8ca7a690 --- /dev/null +++ b/CSFML/include/SFML/Network/SocketStatus.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOCKETSTATUS_H +#define SFML_SOCKETSTATUS_H + + +//////////////////////////////////////////////////////////// +/// Define the status that can be returned by the socket +/// functions +//////////////////////////////////////////////////////////// +typedef enum +{ + sfSocketDone, + sfSocketNotReady, + sfSocketDisconnected, + sfSocketError + +} sfSocketStatus; + + +#endif // SFML_SOCKETSTATUS_H diff --git a/CSFML/include/SFML/Network/SocketTCP.h b/CSFML/include/SFML/Network/SocketTCP.h new file mode 100644 index 00000000..a0912383 --- /dev/null +++ b/CSFML/include/SFML/Network/SocketTCP.h @@ -0,0 +1,167 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOCKETTCP_H +#define SFML_SOCKETTCP_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// SocketTCP wraps a socket using TCP protocol to +/// send data safely (but a bit slower) +//////////////////////////////////////////////////////////// +typedef struct sfSocketTCP sfSocketTCP; + + +//////////////////////////////////////////////////////////// +/// Construct a new TCP socket +/// +/// \return Pointer to the new socket +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketTCP* sfSocketTCP_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing TCP socket +/// +/// \param Socket : Socket to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSocketTCP_Destroy(sfSocketTCP* Socket); + +//////////////////////////////////////////////////////////// +/// Change the blocking state of a TCP socket. +/// The default behaviour of a socket is blocking +/// +/// \param Socket : Socket to modify +/// \param Blocking : Pass sfTrue to set the socket as blocking, or false for non-blocking +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSocketTCP_SetBlocking(sfSocketTCP* Socket, sfBool Blocking); + +//////////////////////////////////////////////////////////// +/// Connect a TCP socket to another computer on a specified port +/// +/// \param Socket : Socket to use for connecting +/// \param Port : Port to use for transfers (warning : ports < 1024 are reserved) +/// \param HostAddress : IP Address of the host to connect to +/// \param Timeout : Maximum time to wait (0 to use no timeout) +/// +/// \return sfTrue if operation has been successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketTCP_Connect(sfSocketTCP* Socket, unsigned short Port, sfIPAddress HostAddress, float Timeout); + +//////////////////////////////////////////////////////////// +/// Listen to a specified port for incoming data or connections +/// +/// \param Socket : Socket to use for listening +/// \param Port : Port to listen to +/// +/// \return sfTrue if operation has been successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSocketTCP_Listen(sfSocketTCP* Socket, unsigned short Port); + +//////////////////////////////////////////////////////////// +/// Wait for a connection (must be listening to a port). +/// This function is blocking, ie. it won't return before +/// a connection has been accepted +/// +/// \param Socket : Socket to use for accepting +/// \param Connected : Pointer to a socket pointer that will be filled with the connected client +/// \param Address : Pointer to an address to fill with client infos +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketTCP_Accept(sfSocketTCP* Socket, sfSocketTCP** Connected, sfIPAddress* Address); + +//////////////////////////////////////////////////////////// +/// Send an array of bytes to the host (must be connected first) +/// +/// \param Socket : Socket to use for sending +/// \param Data : Pointer to the bytes to send +/// \param Size : Number of bytes to send +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketTCP_Send(sfSocketTCP* Socket, const char* Data, size_t Size); + +//////////////////////////////////////////////////////////// +/// Receive an array of bytes from the host (must be connected first) +/// +/// \param Socket : Socket to use for receiving +/// \param Data : Pointer to a byte array to fill (make sure it is big enough) +/// \param MaxSize : Maximum number of bytes to read +/// \param SizeReceived : Number of bytes received +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketTCP_Receive(sfSocketTCP* Socket, char* Data, size_t MaxSize, size_t* SizeReceived); + +//////////////////////////////////////////////////////////// +/// Send a packet of data to the host (must be connected first) +/// +/// \param Socket : Socket to use for sending +/// \param Packet : Packet to send +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketTCP_SendPacket(sfSocketTCP* Socket, sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Receive a packet from the host (must be connected first) +/// +/// \param Socket : Socket to use for receiving +/// \param Packet : Packet to fill with received data +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketTCP_ReceivePacket(sfSocketTCP* Socket, sfPacket* Packet); + +//////////////////////////////////////////////////////////// +/// Check if a socket is in a valid state ; this function +/// can be called any time to check if the socket is OK +/// +/// \param Socket : Socket to check +/// +/// \return True if the socket is valid +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSocketTCP_IsValid(sfSocketTCP* Socket); + + +#endif // SFML_SOCKETTCP_H diff --git a/CSFML/include/SFML/Network/SocketUDP.h b/CSFML/include/SFML/Network/SocketUDP.h new file mode 100644 index 00000000..a43f87fd --- /dev/null +++ b/CSFML/include/SFML/Network/SocketUDP.h @@ -0,0 +1,162 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOCKETUDP_H +#define SFML_SOCKETUDP_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfSocketUDP wraps a socket using UDP protocol to +/// send data fastly (but with less safety) +//////////////////////////////////////////////////////////// +typedef struct sfSocketUDP sfSocketUDP; + + +//////////////////////////////////////////////////////////// +/// Construct a new UDP socket +/// +/// \return Pointer to the new socket +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketUDP* sfSocketUDP_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing UDP socket +/// +/// \param Socket : Socket to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSocketUDP_Destroy(sfSocketUDP* Socket); + +//////////////////////////////////////////////////////////// +/// Change the blocking state of a UDP socket. +/// The default behaviour of a socket is blocking +/// +/// \param Socket : Socket to modify +/// \param Blocking : Pass sfTrue to set the socket as blocking, or false for non-blocking +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSocketUDP_SetBlocking(sfSocketUDP* Socket, sfBool Blocking); + +//////////////////////////////////////////////////////////// +/// Bind a socket to a specific port +/// +/// \param Socket : Socket to bind +/// \param Port : Port to bind the socket to +/// +/// \return True if operation has been successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSocketUDP_Bind(sfSocketUDP* Socket, unsigned short Port); + +//////////////////////////////////////////////////////////// +/// Unbind a socket from its previous port, if any +/// +/// \param Socket : Socket to unbind +/// +/// \return sfTrue if operation has been successful +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSocketUDP_Unbind(sfSocketUDP* Socket); + +//////////////////////////////////////////////////////////// +/// Send an array of bytes +/// +/// \param Socket : Socket to use for sending +/// \param Data : Pointer to the bytes to send +/// \param Size : Number of bytes to send +/// \param Address : Address of the computer to send the packet to +/// \param Port : Port to use for communication +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketUDP_Send(sfSocketUDP* Socket, const char* Data, size_t Size, sfIPAddress Address, unsigned short Port); + +//////////////////////////////////////////////////////////// +/// Receive an array of bytes. +/// This function is blocking, ie. it won't return before some +/// bytes have been received +/// +/// \param Socket : Socket to use for receiving +/// \param Data : Pointer to a byte array to fill (make sure it is big enough) +/// \param MaxSize : Maximum number of bytes to read +/// \param SizeReceived : Number of bytes received +/// \param Address : Address of the computer which sent the data +/// \param Port : Port on which the remote computer sent the data +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketUDP_Receive(sfSocketUDP* Socket, char* Data, size_t MaxSize, size_t* SizeReceived, sfIPAddress* Address, unsigned short* Port); + +//////////////////////////////////////////////////////////// +/// Send a packet of data +/// +/// \param Socket : Socket to use for sending +/// \param Packet : Packet to send +/// \param Address : Address of the computer to send the packet to +/// \param Port : Port to use for communication +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketUDP_SendPacket(sfSocketUDP* Socket, sfPacket* Packet, sfIPAddress Address, unsigned short Port); + +//////////////////////////////////////////////////////////// +/// Receive a packet. +/// This function is blocking, ie. it won't return before a +/// packet is received +/// +/// \param Socket : Socket to use for receiving +/// \param Packet : Packet to fill with received data +/// \param Address : Address of the computer which sent the packet +/// \param Port : Port on which the remote computer sent the data +/// +/// \return Socket status +/// +//////////////////////////////////////////////////////////// +CSFML_API sfSocketStatus sfSocketUDP_ReceivePacket(sfSocketUDP* Socket, sfPacket* Packet, sfIPAddress* Address, unsigned short* Port); + +//////////////////////////////////////////////////////////// +/// Check if a socket is in a valid state ; this function +/// can be called any time to check if the socket is OK +/// +/// \param Socket : Socket to check +/// +/// \return sfTrue if the socket is valid +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfSocketUDP_IsValid(sfSocketUDP* Socket); + + +#endif // SFML_SOCKETUDP_H diff --git a/CSFML/include/SFML/System.h b/CSFML/include/SFML/System.h new file mode 100644 index 00000000..dcc87a01 --- /dev/null +++ b/CSFML/include/SFML/System.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SYSTEM_H +#define SFML_SYSTEM_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include + + +#endif // SFML_SYSTEM_H diff --git a/CSFML/include/SFML/System/Clock.h b/CSFML/include/SFML/System/Clock.h new file mode 100644 index 00000000..dee4f06f --- /dev/null +++ b/CSFML/include/SFML/System/Clock.h @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CLOCK_H +#define SFML_CLOCK_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfClock is an utility structure for manipulating time +//////////////////////////////////////////////////////////// +typedef struct sfClock sfClock; + +//////////////////////////////////////////////////////////// +/// Create a new clock and start it +/// +/// \return A new sfClock object +/// +//////////////////////////////////////////////////////////// +CSFML_API sfClock* sfClock_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing clock +/// +/// \param Clock : Clock to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfClock_Destroy(sfClock* Clock); + +//////////////////////////////////////////////////////////// +/// Get the time elapsed for a clock +/// +/// \param Clock : Clock to get time from +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfClock_GetTime(sfClock* Clock); + +//////////////////////////////////////////////////////////// +/// Restart a clock +/// +/// \param Clock : Clock to restart +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfClock_Reset(sfClock* Clock); + + +#endif // SFML_CLOCK_H diff --git a/CSFML/include/SFML/System/Mutex.h b/CSFML/include/SFML/System/Mutex.h new file mode 100644 index 00000000..9aaddb6c --- /dev/null +++ b/CSFML/include/SFML/System/Mutex.h @@ -0,0 +1,74 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MUTEX_H +#define SFML_MUTEX_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfMutex defines a mutex (MUTual EXclusion) object, +/// that allows a thread to lock critical instructions +/// to avoid simultaneous access with other threads. +//////////////////////////////////////////////////////////// +typedef struct sfMutex sfMutex; + +//////////////////////////////////////////////////////////// +/// Create a new mutex +/// +/// \return A new sfMutex object +/// +//////////////////////////////////////////////////////////// +CSFML_API sfMutex* sfMutex_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing mutex +/// +/// \param Mutex : Mutex to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMutex_Destroy(sfMutex* Mutex); + +//////////////////////////////////////////////////////////// +/// Lock a mutex +/// +/// \param Mutex : Mutex to lock +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMutex_Lock(sfMutex* Mutex); + +//////////////////////////////////////////////////////////// +/// Unlock a mutex +/// +/// \param Mutex : Mutex to unlock +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfMutex_Unlock(sfMutex* Mutex); + + +#endif // SFML_MUTEX_H diff --git a/CSFML/include/SFML/System/Randomizer.h b/CSFML/include/SFML/System/Randomizer.h new file mode 100644 index 00000000..652b8245 --- /dev/null +++ b/CSFML/include/SFML/System/Randomizer.h @@ -0,0 +1,74 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RANDOMIZER_H +#define SFML_RANDOMIZER_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Set the seed for the random numbers generator. Using a known seed +/// allows you to reproduce the same sequence of random numbers +/// +/// \param Seed : Number to use as the seed +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfRandom_SetSeed(unsigned int Seed); + +//////////////////////////////////////////////////////////// +/// Get the seed used to generate random numbers the generator +/// +/// \return Current seed +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfRandom_GetSeed(); + +//////////////////////////////////////////////////////////// +/// Get a random float number in a given range +/// +/// \return Start : Start of the range +/// \return End : End of the range +/// +/// \return Random number in [Begin, End] +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfRandom_Float(float Begin, float End); + +//////////////////////////////////////////////////////////// +/// Get a random integer number in a given range +/// +/// \return Start : Start of the range +/// \return End : End of the range +/// +/// \return Random number in [Begin, End] +/// +//////////////////////////////////////////////////////////// +CSFML_API int sfRandom_Int(int Begin, int End); + + +#endif // SFML_RANDOMIZER_H diff --git a/CSFML/include/SFML/System/Sleep.h b/CSFML/include/SFML/System/Sleep.h new file mode 100644 index 00000000..d106c432 --- /dev/null +++ b/CSFML/include/SFML/System/Sleep.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SLEEP_H +#define SFML_SLEEP_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Make the current thread sleep for a given time +/// +/// \param Duration : Time to sleep, in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfSleep(float Duration); + + +#endif // SFML_SLEEP_H diff --git a/CSFML/include/SFML/System/Thread.h b/CSFML/include/SFML/System/Thread.h new file mode 100644 index 00000000..ee765686 --- /dev/null +++ b/CSFML/include/SFML/System/Thread.h @@ -0,0 +1,85 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_THREAD_H +#define SFML_THREAD_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfThread defines an easy way to manipulate a thread +//////////////////////////////////////////////////////////// +typedef struct sfThread sfThread; + + +//////////////////////////////////////////////////////////// +/// Construct a new thread from a function pointer +/// +/// \param Function : Entry point of the thread +/// \param UserData : Data to pass to the thread function +/// +//////////////////////////////////////////////////////////// +CSFML_API sfThread* sfThread_Create(void (*Function)(void*), void* UserData); + +//////////////////////////////////////////////////////////// +/// Destroy an existing thread +/// +/// \param Thread : Thread to delete +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfThread_Destroy(sfThread* Thread); + +//////////////////////////////////////////////////////////// +/// Run a thread +/// +/// \param Thread : Thread to launch +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfThread_Launch(sfThread* Thread); + +//////////////////////////////////////////////////////////// +/// Wait until a thread finishes +/// +/// \param Thread : Thread to wait for +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfThread_Wait(sfThread* Thread); + +//////////////////////////////////////////////////////////// +/// Terminate a thread +/// Terminating a thread with this function is not safe, +/// you should rather try to make the thread function +/// terminate by itself +/// +/// \param Thread : Thread to terminate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfThread_Terminate(sfThread* Thread); + + +#endif // SFML_THREAD_H diff --git a/CSFML/include/SFML/Window.h b/CSFML/include/SFML/Window.h new file mode 100644 index 00000000..d989cddf --- /dev/null +++ b/CSFML/include/SFML/Window.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SFML_WINDOW_H +#define SFML_SFML_WINDOW_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include + + +#endif // SFML_SFML_WINDOW_H diff --git a/CSFML/include/SFML/Window/Context.h b/CSFML/include/SFML/Window/Context.h new file mode 100644 index 00000000..52f22889 --- /dev/null +++ b/CSFML/include/SFML/Window/Context.h @@ -0,0 +1,68 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONTEXT_H +#define SFML_CONTEXT_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Class wrapping an OpenGL context with no window. +/// This class is for internal use mainly, it is required +/// to solve tricky problems involving multi-threading +//////////////////////////////////////////////////////////// +typedef struct sfContext sfContext; + + +//////////////////////////////////////////////////////////// +/// Construct a new context +/// +/// \return New context +/// +//////////////////////////////////////////////////////////// +CSFML_API sfContext* sfContext_Create(); + +//////////////////////////////////////////////////////////// +/// Destroy an existing context +/// +/// \param Context : Context to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfContext_Destroy(sfContext* Context); + +//////////////////////////////////////////////////////////// +/// Activate or deactivate a context +/// +/// \param Context : Context to activate or deactivate +/// \param Active : sfTrue to activate, sfFalse to deactivate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfContext_SetActive(sfContext* Context, sfBool Active); + + +#endif // SFML_CONTEXT_H diff --git a/CSFML/include/SFML/Window/Event.h b/CSFML/include/SFML/Window/Event.h new file mode 100644 index 00000000..222e650f --- /dev/null +++ b/CSFML/include/SFML/Window/Event.h @@ -0,0 +1,300 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_EVENT_H +#define SFML_EVENT_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Definition of key codes for keyboard events +//////////////////////////////////////////////////////////// +typedef enum +{ + sfKeyA = 'a', + sfKeyB = 'b', + sfKeyC = 'c', + sfKeyD = 'd', + sfKeyE = 'e', + sfKeyF = 'f', + sfKeyG = 'g', + sfKeyH = 'h', + sfKeyI = 'i', + sfKeyJ = 'j', + sfKeyK = 'k', + sfKeyL = 'l', + sfKeyM = 'm', + sfKeyN = 'n', + sfKeyO = 'o', + sfKeyP = 'p', + sfKeyQ = 'q', + sfKeyR = 'r', + sfKeyS = 's', + sfKeyT = 't', + sfKeyU = 'u', + sfKeyV = 'v', + sfKeyW = 'w', + sfKeyX = 'x', + sfKeyY = 'y', + sfKeyZ = 'z', + sfKeyNum0 = '0', + sfKeyNum1 = '1', + sfKeyNum2 = '2', + sfKeyNum3 = '3', + sfKeyNum4 = '4', + sfKeyNum5 = '5', + sfKeyNum6 = '6', + sfKeyNum7 = '7', + sfKeyNum8 = '8', + sfKeyNum9 = '9', + sfKeyEscape = 256, + sfKeyLControl, + sfKeyLShift, + sfKeyLAlt, + sfKeyLSystem, ///< OS specific key (left side) : windows (Win and Linux), apple (MacOS), ... + sfKeyRControl, + sfKeyRShift, + sfKeyRAlt, + sfKeyRSystem, ///< OS specific key (right side) : windows (Win and Linux), apple (MacOS), ... + sfKeyMenu, + sfKeyLBracket, ///< [ + sfKeyRBracket, ///< ] + sfKeySemiColon, ///< ; + sfKeyComma, ///< , + sfKeyPeriod, ///< . + sfKeyQuote, ///< ' + sfKeySlash, ///< / + sfKeyBackSlash, + sfKeyTilde, ///< ~ + sfKeyEqual, ///< = + sfKeyDash, ///< - + sfKeySpace, + sfKeyReturn, + sfKeyBack, + sfKeyTab, + sfKeyPageUp, + sfKeyPageDown, + sfKeyEnd, + sfKeyHome, + sfKeyInsert, + sfKeyDelete, + sfKeyAdd, ///< + + sfKeySubtract, ///< - + sfKeyMultiply, ///< * + sfKeyDivide, ///< / + sfKeyLeft, ///< Left arrow + sfKeyRight, ///< Right arrow + sfKeyUp, ///< Up arrow + sfKeyDown, ///< Down arrow + sfKeyNumpad0, + sfKeyNumpad1, + sfKeyNumpad2, + sfKeyNumpad3, + sfKeyNumpad4, + sfKeyNumpad5, + sfKeyNumpad6, + sfKeyNumpad7, + sfKeyNumpad8, + sfKeyNumpad9, + sfKeyF1, + sfKeyF2, + sfKeyF3, + sfKeyF4, + sfKeyF5, + sfKeyF6, + sfKeyF7, + sfKeyF8, + sfKeyF9, + sfKeyF10, + sfKeyF11, + sfKeyF12, + sfKeyF13, + sfKeyF14, + sfKeyF15, + sfKeyPause, + + sfKeyCount // For internal use +} sfKeyCode; + + +//////////////////////////////////////////////////////////// +/// Definition of button codes for mouse events +//////////////////////////////////////////////////////////// +typedef enum +{ + sfButtonLeft, + sfButtonRight, + sfButtonMiddle, + sfButtonX1, + sfButtonX2 +} sfMouseButton; + + +//////////////////////////////////////////////////////////// +/// Definition of joystick axis for joystick events +//////////////////////////////////////////////////////////// +typedef enum +{ + sfJoyAxisX, + sfJoyAxisY, + sfJoyAxisZ, + sfJoyAxisR, + sfJoyAxisU, + sfJoyAxisV, + sfJoyAxisPOV +} sfJoyAxis; + + +//////////////////////////////////////////////////////////// +/// Definition of all the event types +//////////////////////////////////////////////////////////// +typedef enum +{ + sfEvtClosed, + sfEvtResized, + sfEvtLostFocus, + sfEvtGainedFocus, + sfEvtTextEntered, + sfEvtKeyPressed, + sfEvtKeyReleased, + sfEvtMouseWheelMoved, + sfEvtMouseButtonPressed, + sfEvtMouseButtonReleased, + sfEvtMouseMoved, + sfEvtMouseEntered, + sfEvtMouseLeft, + sfEvtJoyButtonPressed, + sfEvtJoyButtonReleased, + sfEvtJoyMoved +} sfEventType; + + +//////////////////////////////////////////////////////////// +/// Keyboard event parameters +//////////////////////////////////////////////////////////// +struct sfKeyEvent +{ + sfEventType Type; + sfKeyCode Code; + sfBool Alt; + sfBool Control; + sfBool Shift; +}; + +//////////////////////////////////////////////////////////// +/// Text event parameters +//////////////////////////////////////////////////////////// +struct sfTextEvent +{ + sfEventType Type; + sfUint32 Unicode; +}; + +//////////////////////////////////////////////////////////// +/// Mouse move event parameters +//////////////////////////////////////////////////////////// +struct sfMouseMoveEvent +{ + sfEventType Type; + int X; + int Y; +}; + +//////////////////////////////////////////////////////////// +/// Mouse buttons events parameters +//////////////////////////////////////////////////////////// +struct sfMouseButtonEvent +{ + sfEventType Type; + sfMouseButton Button; + int X; + int Y; +}; + +//////////////////////////////////////////////////////////// +/// Mouse wheel events parameters +//////////////////////////////////////////////////////////// +struct sfMouseWheelEvent +{ + sfEventType Type; + int Delta; +}; + +//////////////////////////////////////////////////////////// +/// Joystick axis move event parameters +//////////////////////////////////////////////////////////// +struct sfJoyMoveEvent +{ + sfEventType Type; + unsigned int JoystickId; + sfJoyAxis Axis; + float Position; +}; + +//////////////////////////////////////////////////////////// +/// Joystick buttons events parameters +//////////////////////////////////////////////////////////// +struct sfJoyButtonEvent +{ + sfEventType Type; + unsigned int JoystickId; + unsigned int Button; +}; + +//////////////////////////////////////////////////////////// +/// Size events parameters +//////////////////////////////////////////////////////////// +struct sfSizeEvent +{ + sfEventType Type; + unsigned int Width; + unsigned int Height; +}; + + +//////////////////////////////////////////////////////////// +/// sfEvent defines a system event and its parameters +//////////////////////////////////////////////////////////// +typedef union +{ + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + sfEventType Type; ///< Type of the event + struct sfKeyEvent Key; + struct sfTextEvent Text; + struct sfMouseMoveEvent MouseMove; + struct sfMouseButtonEvent MouseButton; + struct sfMouseWheelEvent MouseWheel; + struct sfJoyMoveEvent JoyMove; + struct sfJoyButtonEvent JoyButton; + struct sfSizeEvent Size; +} sfEvent; + + +#endif // SFML_EVENT_H diff --git a/CSFML/include/SFML/Window/Input.h b/CSFML/include/SFML/Window/Input.h new file mode 100644 index 00000000..b57753ed --- /dev/null +++ b/CSFML/include/SFML/Window/Input.h @@ -0,0 +1,110 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_INPUT_H +#define SFML_INPUT_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfInput handles real-time input from keyboard and mouse. +/// Use it instead of events to handle continuous moves and more +/// game-friendly inputs +//////////////////////////////////////////////////////////// +typedef struct sfInput sfInput; + + +//////////////////////////////////////////////////////////// +/// Get the state of a key +/// +/// \param Input : Input object +/// \param KeyCode : Key to check +/// +/// \return sfTrue if key is down, sfFalse if key is up +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfInput_IsKeyDown(sfInput* Input, sfKeyCode KeyCode); + +//////////////////////////////////////////////////////////// +/// Get the state of a mouse button +/// +/// \param Input : Input object +/// \param Button : Button to check +/// +/// \return sfTrue if button is down, sfFalse if button is up +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfInput_IsMouseButtonDown(sfInput* Input, sfMouseButton Button); + +//////////////////////////////////////////////////////////// +/// Get the state of a joystick button +/// +/// \param Input : Input object +/// \param JoyId : Identifier of the joystick to check (0 or 1) +/// \param Button : Button to check +/// +/// \return sfTrue if button is down, sfFalse if button is up +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfInput_IsJoystickButtonDown(sfInput* Input, unsigned int JoyId, unsigned int Button); + +//////////////////////////////////////////////////////////// +/// Get the mouse X position +/// +/// \param Input : Input object +/// +/// \return Current mouse left position, relative to owner window +/// +//////////////////////////////////////////////////////////// +CSFML_API int sfInput_GetMouseX(sfInput* Input); + +//////////////////////////////////////////////////////////// +/// Get the mouse Y position +/// +/// \param Input : Input object +/// +/// \return Current mouse top position, relative to owner window +/// +//////////////////////////////////////////////////////////// +CSFML_API int sfInput_GetMouseY(sfInput* Input); + +//////////////////////////////////////////////////////////// +/// Get the joystick position on a given axis +/// +/// \param Input : Input object +/// \param JoyId : Identifier of the joystick to check (0 or 1) +/// \param Axis : Identifier of the axis to read +/// +/// \return Current joystick position, in the range [-100, 100] +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfInput_GetJoystickAxis(sfInput* Input, unsigned int JoyId, sfJoyAxis Axis); + + +#endif // SFML_INPUT_H diff --git a/CSFML/include/SFML/Window/VideoMode.h b/CSFML/include/SFML/Window/VideoMode.h new file mode 100644 index 00000000..270c108a --- /dev/null +++ b/CSFML/include/SFML/Window/VideoMode.h @@ -0,0 +1,87 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VIDEOMODE_H +#define SFML_VIDEOMODE_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// sfVideoMode defines a video mode (width, height, bpp, frequency) +/// and provides functions for getting modes supported +/// by the display device +//////////////////////////////////////////////////////////// +typedef struct +{ + unsigned int Width; ///< Video mode width, in pixels + unsigned int Height; ///< Video mode height, in pixels + unsigned int BitsPerPixel; ///< Video mode pixel depth, in bits per pixels +} sfVideoMode; + + +//////////////////////////////////////////////////////////// +/// Get the current desktop video mode +/// +/// \return Current desktop video mode +/// +//////////////////////////////////////////////////////////// +CSFML_API sfVideoMode sfVideoMode_GetDesktopMode(); + +//////////////////////////////////////////////////////////// +/// Get a valid video mode +/// Index must be in range [0, GetModesCount()[ +/// Modes are sorted from best to worst +/// +/// \param Index : Index of video mode to get +/// +/// \return Corresponding video mode (invalid mode if index is out of range) +/// +//////////////////////////////////////////////////////////// +CSFML_API sfVideoMode sfVideoMode_GetMode(size_t Index); + +//////////////////////////////////////////////////////////// +/// Get valid video modes count +/// +/// \return Number of valid video modes available +/// +//////////////////////////////////////////////////////////// +CSFML_API size_t sfVideoMode_GetModesCount(); + +//////////////////////////////////////////////////////////// +/// Tell whether or not a video mode is supported +/// +/// \param Mode : Video mode to check +/// +/// +/// \return True if video mode is supported, false otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfVideoMode_IsValid(sfVideoMode Mode); + + +#endif // SFML_VIDEOMODE_H diff --git a/CSFML/include/SFML/Window/Window.h b/CSFML/include/SFML/Window/Window.h new file mode 100644 index 00000000..a8cc22f8 --- /dev/null +++ b/CSFML/include/SFML/Window/Window.h @@ -0,0 +1,294 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_WINDOW_H +#define SFML_WINDOW_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// sfWindow is a rendering window ; it can create a new window +/// or connect to an existing one +//////////////////////////////////////////////////////////// +typedef struct sfWindow sfWindow; + + +//////////////////////////////////////////////////////////// +/// Enumeration of window creation styles +/// +//////////////////////////////////////////////////////////// +enum +{ + sfNone = 0, ///< No border / title bar (this flag and all others are mutually exclusive) + sfTitlebar = 1 << 0, ///< Title bar + fixed border + sfResize = 1 << 1, ///< Titlebar + resizable border + maximize button + sfClose = 1 << 2, ///< Titlebar + close button + sfFullscreen = 1 << 3 ///< Fullscreen mode (this flag and all others are mutually exclusive) +}; + + +//////////////////////////////////////////////////////////// +/// Structure defining the window's creation settings +//////////////////////////////////////////////////////////// +typedef struct +{ + unsigned int DepthBits; ///< Bits of the depth buffer + unsigned int StencilBits; ///< Bits of the stencil buffer + unsigned int AntialiasingLevel; ///< Level of antialiasing +} sfWindowSettings; + + +//////////////////////////////////////////////////////////// +/// Construct a new window +/// +/// \param Mode : Video mode to use +/// \param Title : Title of the window +/// \param Style : Window style +/// \param Params : Creation settings +/// +//////////////////////////////////////////////////////////// +CSFML_API sfWindow* sfWindow_Create(sfVideoMode Mode, const char* Title, unsigned long Style, sfWindowSettings Params); + +//////////////////////////////////////////////////////////// +/// Construct a window from an existing control +/// +/// \param Handle : Platform-specific handle of the control +/// \param Params : Creation settings +/// +//////////////////////////////////////////////////////////// +CSFML_API sfWindow* sfWindow_CreateFromHandle(sfWindowHandle Handle, sfWindowSettings Params); + +//////////////////////////////////////////////////////////// +/// Destroy an existing window +/// +/// \param Window : Window to destroy +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_Destroy(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Close a window (but doesn't destroy the internal data) +/// +/// \param Window : Window to close +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_Close(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Tell whether or not a window is opened +/// +/// \param Window : Window object +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfWindow_IsOpened(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Get the width of the rendering region of a window +/// +/// \param Window : Window object +/// +/// \return Width in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfWindow_GetWidth(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Get the height of the rendering region of a window +/// +/// \param Window : Window object +/// +/// \return Height in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_API unsigned int sfWindow_GetHeight(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Get the creation settings of a window +/// +/// \param Window : Window object +/// +/// \return Settings used to create the window +/// +//////////////////////////////////////////////////////////// +CSFML_API sfWindowSettings sfWindow_GetSettings(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Get the event on top of events stack of a window, if any, and pop it +/// +/// \param Window : Window object +/// \param Event : Event to fill, if any +/// +/// \return sfTrue if an event was returned, sfFalse if events stack was empty +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfWindow_GetEvent(sfWindow* Window, sfEvent* Event); + +//////////////////////////////////////////////////////////// +/// Enable / disable vertical synchronization on a window +/// +/// \param Window : Window object +/// \param Enabled : sfTrue to enable v-sync, sfFalse to deactivate +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_UseVerticalSync(sfWindow* Window, sfBool Enabled); + +//////////////////////////////////////////////////////////// +/// Show or hide the mouse cursor on a window +/// +/// \param Window : Window object +/// \param Show : sfTrue to show, sfFalse to hide +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_ShowMouseCursor(sfWindow* Window, sfBool Show); + +//////////////////////////////////////////////////////////// +/// Change the position of the mouse cursor on a window +/// +/// \param Window : Window object +/// \param Left : Left coordinate of the cursor, relative to the window +/// \param Top : Top coordinate of the cursor, relative to the window +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_SetCursorPosition(sfWindow* Window, unsigned int Left, unsigned int Top); + +//////////////////////////////////////////////////////////// +/// Change the position of a window on screen. +/// Only works for top-level windows +/// +/// \param Window : Window object +/// \param Left : Left position +/// \param Top : Top position +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_SetPosition(sfWindow* Window, int Left, int Top); + +//////////////////////////////////////////////////////////// +/// Change the size of the rendering region of a window +/// +/// \param Window : Window object +/// \param Width : New Width +/// \param Height : New Height +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_SetSize(sfWindow* Window, unsigned int Width, unsigned int Height); + +//////////////////////////////////////////////////////////// +/// Show or hide a window +/// +/// \param Window : Window object +/// \param State : sfTrue to show, sfFalse to hide +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_Show(sfWindow* Window, sfBool State); + +//////////////////////////////////////////////////////////// +/// Enable or disable automatic key-repeat for keydown events. +/// Automatic key-repeat is enabled by default +/// +/// \param Window : Window object +/// \param Enabled : sfTrue to enable, sfFalse to disable +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_EnableKeyRepeat(sfWindow* Window, sfBool Enabled); + +//////////////////////////////////////////////////////////// +/// Change the window's icon +/// +/// \param Window : Window object +/// \param Width : Icon's width, in pixels +/// \param Height : Icon's height, in pixels +/// \param Pixels : Pointer to the pixels in memory, format must be RGBA 32 bits +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_SetIcon(sfWindow* Window, unsigned int Width, unsigned int Height, sfUint8* Pixels); + +//////////////////////////////////////////////////////////// +/// Activate or deactivate a window as the current target for rendering +/// +/// \param Window : Window object +/// \param Active : sfTrue to activate, sfFalse to deactivate +/// +/// \return True if operation was successful, false otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfWindow_SetActive(sfWindow* Window, sfBool Active); + +//////////////////////////////////////////////////////////// +/// Display a window on screen +/// +/// \param Window : Window object +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_Display(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Get the input manager of a window +/// +/// \param Window : Window object +/// +/// \return Reference to the input +/// +//////////////////////////////////////////////////////////// +CSFML_API sfInput* sfWindow_GetInput(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Limit the framerate to a maximum fixed frequency for a window +/// +/// \param Window : Window object +/// +/// \param Limit : Framerate limit, in frames per seconds (use 0 to disable limit) +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_SetFramerateLimit(sfWindow* Window, unsigned int Limit); + +//////////////////////////////////////////////////////////// +/// Get time elapsed since last frame of a window +/// +/// \param Window : Window object +/// +/// \return Time elapsed, in seconds +/// +//////////////////////////////////////////////////////////// +CSFML_API float sfWindow_GetFrameTime(sfWindow* Window); + +//////////////////////////////////////////////////////////// +/// Change the joystick threshold, ie. the value below which +/// no move event will be generated +/// +/// \param Window : Window object +/// \param Threshold : New threshold, in range [0, 100] +/// +//////////////////////////////////////////////////////////// +CSFML_API void sfWindow_SetJoystickThreshold(sfWindow* Window, float Threshold); + + +#endif // SFML_WINDOW_H diff --git a/CSFML/include/SFML/Window/WindowHandle.h b/CSFML/include/SFML/Window/WindowHandle.h new file mode 100644 index 00000000..4851d0a9 --- /dev/null +++ b/CSFML/include/SFML/Window/WindowHandle.h @@ -0,0 +1,56 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_WINDOWHANDLE_H +#define SFML_WINDOWHANDLE_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Define a low-level window handle type, specific to +/// each platform +//////////////////////////////////////////////////////////// +#if defined(CSFML_SYSTEM_WINDOWS) + + // Windows defines a void* handle (HWND) + typedef void* sfWindowHandle; + +#elif defined(CSFML_SYSTEM_LINUX) + + // Unix - X11 defines an unsigned integer handle (Window) + typedef unsigned long sfWindowHandle; + +#elif defined(CSFML_SYSTEM_MACOS) + + // Mac OS X defines a void* handle (NSWindow) + typedef void * sfWindowHandle; + +#endif + + +#endif // SFML_WINDOWHANDLE_H diff --git a/CSFML/src/SFML/Audio/Listener.cpp b/CSFML/src/SFML/Audio/Listener.cpp new file mode 100644 index 00000000..1d32d019 --- /dev/null +++ b/CSFML/src/SFML/Audio/Listener.cpp @@ -0,0 +1,98 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + + +//////////////////////////////////////////////////////////// +/// Change the global volume of all the sounds +//////////////////////////////////////////////////////////// +void sfListener_SetGlobalVolume(float Volume) +{ + sf::Listener::SetGlobalVolume(Volume); +} + + +//////////////////////////////////////////////////////////// +/// Get the current value of the global volume of all the sounds +//////////////////////////////////////////////////////////// +float sfListener_GetGlobalVolume() +{ + return sf::Listener::GetGlobalVolume(); +} + + +//////////////////////////////////////////////////////////// +/// Change the position of the listener +//////////////////////////////////////////////////////////// +void sfListener_SetPosition(float PosX, float PosY, float PosZ) +{ + sf::Listener::SetPosition(sf::Vector3f(PosX, PosY, PosZ)); +} + + +//////////////////////////////////////////////////////////// +/// Get the current position of the listener +//////////////////////////////////////////////////////////// +void sfListener_GetPosition(float* PosX, float* PosY, float* PosZ) +{ + if (PosX && PosY && PosZ) + { + sf::Vector3f Position = sf::Listener::GetPosition(); + *PosX = Position.x; + *PosY = Position.y; + *PosZ = Position.z; + } +} + + +//////////////////////////////////////////////////////////// +/// Change the orientation of the listener (the point +/// he must look at) +//////////////////////////////////////////////////////////// +void sfListener_SetTarget(float TargetX, float TargetY, float TargetZ) +{ + sf::Listener::SetTarget(sf::Vector3f(TargetX, TargetY, TargetZ)); +} + + +//////////////////////////////////////////////////////////// +/// Get the current orientation of the listener (the point +/// he's looking at) +//////////////////////////////////////////////////////////// +void sfListener_GetTarget(float* TargetX, float* TargetY, float* TargetZ) +{ + if (TargetX && TargetY && TargetZ) + { + sf::Vector3f Target = sf::Listener::GetTarget(); + *TargetX = Target.x; + *TargetY = Target.y; + *TargetZ = Target.z; + } +} diff --git a/CSFML/src/SFML/Audio/Makefile b/CSFML/src/SFML/Audio/Makefile new file mode 100644 index 00000000..08bfbce9 --- /dev/null +++ b/CSFML/src/SFML/Audio/Makefile @@ -0,0 +1,23 @@ +LIB = libcsfml-audio.so +SRC = $(wildcard *.cpp) +OBJ = $(SRC:.cpp=.o) +LIBNAME = $(LIBPATH)/$(LIB).$(VERSION) + +all: $(LIB) + +libcsfml-audio.so: $(OBJ) + $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lsfml-audio + +$(OBJ): %.o: %.cpp + $(CPP) -o $@ -c $< $(CFLAGS) + +.PHONY: clean mrproper + +clean: + @rm -rf $(OBJ) + +mrproper: clean + @rm -rf $(LIBNAME) + +install: + @($(CP) $(LIBNAME) $(DESTLIBDIR) && $(LN) $(LNFLAGS) $(DESTLIBDIR)/$(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)) diff --git a/CSFML/src/SFML/Audio/Music.cpp b/CSFML/src/SFML/Audio/Music.cpp new file mode 100644 index 00000000..647e82ff --- /dev/null +++ b/CSFML/src/SFML/Audio/Music.cpp @@ -0,0 +1,273 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfMusic +{ + sf::Music This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new music and load it from a file +//////////////////////////////////////////////////////////// +sfMusic* sfMusic_CreateFromFile(const char* Filename) +{ + sfMusic* Music = new sfMusic; + + if (!Music->This.OpenFromFile(Filename)) + { + delete Music; + Music = NULL; + } + + return Music; +} + + +//////////////////////////////////////////////////////////// +/// Create a new music and load it from a file in memory +//////////////////////////////////////////////////////////// +sfMusic* sfMusic_CreateFromMemory(const char* Data, size_t SizeInBytes) +{ + sfMusic* Music = new sfMusic; + + if (!Music->This.OpenFromMemory(Data, SizeInBytes)) + { + delete Music; + Music = NULL; + } + + return Music; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing music +//////////////////////////////////////////////////////////// +void sfMusic_Destroy(sfMusic* Music) +{ + delete Music; +} + + +//////////////////////////////////////////////////////////// +/// Set a music loop state +//////////////////////////////////////////////////////////// +void sfMusic_SetLoop(sfMusic* Music, sfBool Loop) +{ + CSFML_CALL(Music, SetLoop(Loop != 0)); +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not a music is looping +//////////////////////////////////////////////////////////// +sfBool sfMusic_GetLoop(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetLoop(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get a music duration +//////////////////////////////////////////////////////////// +float sfMusic_GetDuration(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetDuration(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Start playing a music +//////////////////////////////////////////////////////////// +void sfMusic_Play(sfMusic* Music) +{ + CSFML_CALL(Music, Play()); +} + + +//////////////////////////////////////////////////////////// +/// Pause a music +//////////////////////////////////////////////////////////// +void sfMusic_Pause(sfMusic* Music) +{ + CSFML_CALL(Music, Pause()); +} + + +//////////////////////////////////////////////////////////// +/// Stop playing a music +//////////////////////////////////////////////////////////// +void sfMusic_Stop(sfMusic* Music) +{ + CSFML_CALL(Music, Stop()); +} + + +//////////////////////////////////////////////////////////// +/// Return the number of channels of a music (1 = mono, 2 = stereo) +//////////////////////////////////////////////////////////// +unsigned int sfMusic_GetChannelsCount(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetChannelsCount(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the stream sample rate of a music +//////////////////////////////////////////////////////////// +unsigned int sfMusic_GetSampleRate(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetSampleRate(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the status of a music (stopped, paused, playing) +//////////////////////////////////////////////////////////// +sfSoundStatus sfMusic_GetStatus(sfMusic* Music) +{ + CSFML_CHECK_RETURN(Music, sfStopped); + + return static_cast(Music->This.GetStatus()); +} + + +//////////////////////////////////////////////////////////// +/// Get the current playing position of a music +//////////////////////////////////////////////////////////// +float sfMusic_GetPlayingOffset(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetPlayingOffset(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Set the pitch of a music +//////////////////////////////////////////////////////////// +void sfMusic_SetPitch(sfMusic* Music, float Pitch) +{ + CSFML_CALL(Music, SetPitch(Pitch)); +} + + +//////////////////////////////////////////////////////////// +/// Set the volume of a music +//////////////////////////////////////////////////////////// +void sfMusic_SetVolume(sfMusic* Music, float Volume) +{ + CSFML_CALL(Music, SetVolume(Volume)); +} + + +//////////////////////////////////////////////////////////// +/// Set the position of a music +//////////////////////////////////////////////////////////// +void sfMusic_SetPosition(sfMusic* Music, float X, float Y, float Z) +{ + CSFML_CALL(Music, SetPosition(sf::Vector3f(X, Y, Z))); +} + + +//////////////////////////////////////////////////////////// +/// Set the minimum distance - closer than this distance, +/// the listener will hear the music at its maximum volume. +/// The default minimum distance is 1.0 +//////////////////////////////////////////////////////////// +void sfMusic_SetMinDistance(sfMusic* Music, float MinDistance) +{ + CSFML_CALL(Music, SetMinDistance(MinDistance)); +} + + +//////////////////////////////////////////////////////////// +/// Set the attenuation factor - the higher the attenuation, the +/// more the sound will be attenuated with distance from listener. +/// The default attenuation factor 1.0 +//////////////////////////////////////////////////////////// +void sfMusic_SetAttenuation(sfMusic* Music, float Attenuation) +{ + CSFML_CALL(Music, SetAttenuation(Attenuation)); +} + + +//////////////////////////////////////////////////////////// +/// Get the pitch of a music +//////////////////////////////////////////////////////////// +float sfMusic_GetPitch(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetPitch(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the volume of a music +//////////////////////////////////////////////////////////// +float sfMusic_GetVolume(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetVolume(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the position of a music +//////////////////////////////////////////////////////////// +void sfMusic_GetPosition(sfMusic* Music, float* X, float* Y, float* Z) +{ + CSFML_CHECK(Music); + + if (X && Y && Z) + { + sf::Vector3f Position = Music->This.GetPosition(); + *X = Position.x; + *Y = Position.y; + *Z = Position.z; + } +} + + +//////////////////////////////////////////////////////////// +/// Get the minimum distance of a music +//////////////////////////////////////////////////////////// +float sfMusic_GetMinDistance(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetMinDistance(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the attenuation factor of a a +//////////////////////////////////////////////////////////// +float sfMusic_GetAttenuation(sfMusic* Music) +{ + CSFML_CALL_RETURN(Music, GetAttenuation(), 0.f); +} diff --git a/CSFML/src/SFML/Audio/Sound.cpp b/CSFML/src/SFML/Audio/Sound.cpp new file mode 100644 index 00000000..2b6f22b6 --- /dev/null +++ b/CSFML/src/SFML/Audio/Sound.cpp @@ -0,0 +1,258 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Audio/SoundBuffer.h +struct sfSoundBuffer +{ + sf::SoundBuffer This; +}; +struct sfSound +{ + sf::Sound This; + sfSoundBuffer* Buffer; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new sound +//////////////////////////////////////////////////////////// +sfSound* sfSound_Create() +{ + return new sfSound; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound +//////////////////////////////////////////////////////////// +void sfSound_Destroy(sfSound* Sound) +{ + delete Sound; +} + + +//////////////////////////////////////////////////////////// +/// Start playing a sound +//////////////////////////////////////////////////////////// +void sfSound_Play(sfSound* Sound) +{ + CSFML_CALL(Sound, Play()) +} + + +//////////////////////////////////////////////////////////// +/// Pause a sound +//////////////////////////////////////////////////////////// +void sfSound_Pause(sfSound* Sound) +{ + CSFML_CALL(Sound, Pause()) +} + + +//////////////////////////////////////////////////////////// +/// Stop playing a sound +//////////////////////////////////////////////////////////// +void sfSound_Stop(sfSound* Sound) +{ + CSFML_CALL(Sound, Stop()) +} + + +//////////////////////////////////////////////////////////// +/// Bind a sound buffer to a sound +//////////////////////////////////////////////////////////// +void sfSound_SetBuffer(sfSound* Sound, sfSoundBuffer* Buffer) +{ + if (Buffer) + { + CSFML_CALL(Sound, SetBuffer(Buffer->This)) + Sound->Buffer = Buffer; + } +} + + +//////////////////////////////////////////////////////////// +/// Get the sound buffer bound to a sound +//////////////////////////////////////////////////////////// +sfSoundBuffer* sfSound_GetBuffer(sfSound* Sound) +{ + CSFML_CHECK_RETURN(Sound, NULL) + + return Sound->Buffer; +} + + +//////////////////////////////////////////////////////////// +/// Set a sound loop state +//////////////////////////////////////////////////////////// +void sfSound_SetLoop(sfSound* Sound, sfBool Loop) +{ + CSFML_CALL(Sound, SetLoop(Loop == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not a sound is looping +//////////////////////////////////////////////////////////// +sfBool sfSound_GetLoop(sfSound* Sound) +{ + CSFML_CALL_RETURN(Sound, GetLoop(), sfFalse) +} + + +//////////////////////////////////////////////////////////// +/// Get the status of a sound (stopped, paused, playing) +//////////////////////////////////////////////////////////// +sfSoundStatus sfSound_GetStatus(sfSound* Sound) +{ + CSFML_CHECK_RETURN(Sound, sfStopped); + + return static_cast(Sound->This.GetStatus()); +} + + +//////////////////////////////////////////////////////////// +/// Set the pitch of a sound +//////////////////////////////////////////////////////////// +void sfSound_SetPitch(sfSound* Sound, float Pitch) +{ + CSFML_CALL(Sound, SetPitch(Pitch)) +} + + +//////////////////////////////////////////////////////////// +/// Set the volume of a sound +//////////////////////////////////////////////////////////// +void sfSound_SetVolume(sfSound* Sound, float Volume) +{ + CSFML_CALL(Sound, SetVolume(Volume)) +} + + +//////////////////////////////////////////////////////////// +/// Set the position of a sound +//////////////////////////////////////////////////////////// +void sfSound_SetPosition(sfSound* Sound, float X, float Y, float Z) +{ + CSFML_CALL(Sound, SetPosition(sf::Vector3f(X, Y, Z))) +} + + +//////////////////////////////////////////////////////////// +/// Set the minimum distance - closer than this distance, +/// the listener will hear the sound at its maximum volume. +/// The default minimum distance is 1.0 +//////////////////////////////////////////////////////////// +void sfSound_SetMinDistance(sfSound* Sound, float MinDistance) +{ + CSFML_CALL(Sound, SetMinDistance(MinDistance)); +} + + +//////////////////////////////////////////////////////////// +/// Set the attenuation factor - the higher the attenuation, the +/// more the sound will be attenuated with distance from listener. +/// The default attenuation factor is 1.0 +//////////////////////////////////////////////////////////// +void sfSound_SetAttenuation(sfSound* Sound, float Attenuation) +{ + CSFML_CALL(Sound, SetAttenuation(Attenuation)); +} + + +//////////////////////////////////////////////////////////// +/// Set the current playing position of a sound +//////////////////////////////////////////////////////////// +void sfSound_SetPlayingOffset(sfSound* Sound, float TimeOffset) +{ + CSFML_CALL(Sound, SetPlayingOffset(TimeOffset)); +} + + +//////////////////////////////////////////////////////////// +/// Get the pitch of a sound +//////////////////////////////////////////////////////////// +float sfSound_GetPitch(sfSound* Sound) +{ + CSFML_CALL_RETURN(Sound, GetPitch(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the volume of a sound +//////////////////////////////////////////////////////////// +float sfSound_GetVolume(sfSound* Sound) +{ + CSFML_CALL_RETURN(Sound, GetVolume(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the position of a sound +//////////////////////////////////////////////////////////// +void sfSound_GetPosition(sfSound* Sound, float* X, float* Y, float* Z) +{ + CSFML_CHECK(Sound); + + sf::Vector3f Position = Sound->This.GetPosition(); + if (X) *X = Position.x; + if (Y) *Y = Position.y; + if (Z) *Z = Position.z; +} + + +//////////////////////////////////////////////////////////// +/// Get the minimum distance of a sound +//////////////////////////////////////////////////////////// +float sfSound_GetMinDistance(sfSound* Sound) +{ + CSFML_CALL_RETURN(Sound, GetMinDistance(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the attenuation factor of a sound +//////////////////////////////////////////////////////////// +float sfSound_GetAttenuation(sfSound* Sound) +{ + CSFML_CALL_RETURN(Sound, GetAttenuation(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the current playing position of a sound +//////////////////////////////////////////////////////////// +float sfSound_GetPlayingOffset(sfSound* Sound) +{ + CSFML_CALL_RETURN(Sound, GetPlayingOffset(), 0.f) +} diff --git a/CSFML/src/SFML/Audio/SoundBuffer.cpp b/CSFML/src/SFML/Audio/SoundBuffer.cpp new file mode 100644 index 00000000..c78b40d1 --- /dev/null +++ b/CSFML/src/SFML/Audio/SoundBuffer.cpp @@ -0,0 +1,152 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfSoundBuffer +{ + sf::SoundBuffer This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new sound buffer and load it from a file +//////////////////////////////////////////////////////////// +sfSoundBuffer* sfSoundBuffer_CreateFromFile(const char* Filename) +{ + sfSoundBuffer* Buffer = new sfSoundBuffer; + + if (!Buffer->This.LoadFromFile(Filename)) + { + delete Buffer; + Buffer = NULL; + } + + return Buffer; +} + + +//////////////////////////////////////////////////////////// +/// Create a new sound buffer and load it from a file in memory +//////////////////////////////////////////////////////////// +sfSoundBuffer* sfSoundBuffer_CreateFromMemory(const char* Data, size_t SizeInBytes) +{ + sfSoundBuffer* Buffer = new sfSoundBuffer; + + if (!Buffer->This.LoadFromMemory(Data, SizeInBytes)) + { + delete Buffer; + Buffer = NULL; + } + + return Buffer; +} + + +//////////////////////////////////////////////////////////// +/// Create a new sound buffer and load it from an array of +/// samples in memory - assumed format for samples is +/// 16 bits signed integer +//////////////////////////////////////////////////////////// +sfSoundBuffer* sfSoundBuffer_CreateFromSamples(const sfInt16* Samples, size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate) +{ + sfSoundBuffer* Buffer = new sfSoundBuffer; + + if (!Buffer->This.LoadFromSamples(Samples, SamplesCount, ChannelsCount, SampleRate)) + { + delete Buffer; + Buffer = NULL; + } + + return Buffer; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound buffer +//////////////////////////////////////////////////////////// +void sfSoundBuffer_Destroy(sfSoundBuffer* SoundBuffer) +{ + delete SoundBuffer; +} + + +//////////////////////////////////////////////////////////// +/// Save a sound buffer to a file +//////////////////////////////////////////////////////////// +sfBool sfSoundBuffer_SaveToFile(sfSoundBuffer* SoundBuffer, const char* Filename) +{ + CSFML_CALL_RETURN(SoundBuffer, SaveToFile(Filename), sfFalse) +} + + +//////////////////////////////////////////////////////////// +/// Return the samples contained in a sound buffer +//////////////////////////////////////////////////////////// +const sfInt16* sfSoundBuffer_GetSamples(sfSoundBuffer* SoundBuffer) +{ + CSFML_CALL_RETURN(SoundBuffer, GetSamples(), NULL) +} + + +//////////////////////////////////////////////////////////// +/// Return the number of samples contained in a sound buffer +//////////////////////////////////////////////////////////// +size_t sfSoundBuffer_GetSamplesCount(sfSoundBuffer* SoundBuffer) +{ + CSFML_CALL_RETURN(SoundBuffer, GetSamplesCount(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound buffer +//////////////////////////////////////////////////////////// +unsigned int sfSoundBuffer_GetSampleRate(sfSoundBuffer* SoundBuffer) +{ + CSFML_CALL_RETURN(SoundBuffer, GetSampleRate(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Return the number of channels of a sound buffer (1 = mono, 2 = stereo, ...) +//////////////////////////////////////////////////////////// +unsigned int sfSoundBuffer_GetChannelsCount(sfSoundBuffer* SoundBuffer) +{ + CSFML_CALL_RETURN(SoundBuffer, GetChannelsCount(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Get the duration of a sound buffer +//////////////////////////////////////////////////////////// +float sfSoundBuffer_GetDuration(sfSoundBuffer* SoundBuffer) +{ + CSFML_CALL_RETURN(SoundBuffer, GetDuration(), 0.f) +} diff --git a/CSFML/src/SFML/Audio/SoundBufferRecorder.cpp b/CSFML/src/SFML/Audio/SoundBufferRecorder.cpp new file mode 100644 index 00000000..7ad2ef90 --- /dev/null +++ b/CSFML/src/SFML/Audio/SoundBufferRecorder.cpp @@ -0,0 +1,104 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Audio/SoundBuffer.h +struct sfSoundBuffer +{ + sf::SoundBuffer This; +}; + +struct sfSoundBufferRecorder +{ + sf::SoundBufferRecorder This; + sfSoundBuffer SoundBuffer; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new sound buffer recorder +//////////////////////////////////////////////////////////// +sfSoundBufferRecorder* sfSoundBufferRecorder_Create() +{ + return new sfSoundBufferRecorder; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound buffer recorder +//////////////////////////////////////////////////////////// +void sfSoundBufferRecorder_Destroy(sfSoundBufferRecorder* SoundBufferRecorder) +{ + delete SoundBufferRecorder; +} + + +//////////////////////////////////////////////////////////// +/// Start the capture. +/// Warning : only one capture can happen at the same time +//////////////////////////////////////////////////////////// +void sfSoundBufferRecorder_Start(sfSoundBufferRecorder* SoundBufferRecorder, unsigned int SampleRate) +{ + CSFML_CALL(SoundBufferRecorder, Start(SampleRate)); +} + + +//////////////////////////////////////////////////////////// +/// Stop the capture +//////////////////////////////////////////////////////////// +void sfSoundBufferRecorder_Stop(sfSoundBufferRecorder* SoundBufferRecorder) +{ + CSFML_CALL(SoundBufferRecorder, Stop()); +} + + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound buffer recorder +//////////////////////////////////////////////////////////// +unsigned int sfSoundBufferRecorder_GetSampleRate(sfSoundBufferRecorder* SoundBufferRecorder) +{ + CSFML_CALL_RETURN(SoundBufferRecorder, GetSampleRate(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the sound buffer containing the captured audio data +/// of a sound buffer recorder +//////////////////////////////////////////////////////////// +sfSoundBuffer* sfSoundBufferRecorder_GetBuffer(sfSoundBufferRecorder* SoundBufferRecorder) +{ + CSFML_CHECK_RETURN(SoundBufferRecorder, NULL); + + SoundBufferRecorder->SoundBuffer.This = SoundBufferRecorder->This.GetBuffer(); + + return &SoundBufferRecorder->SoundBuffer; +} diff --git a/CSFML/src/SFML/Audio/SoundRecorder.cpp b/CSFML/src/SFML/Audio/SoundRecorder.cpp new file mode 100644 index 00000000..860c0ae8 --- /dev/null +++ b/CSFML/src/SFML/Audio/SoundRecorder.cpp @@ -0,0 +1,150 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +class sfSoundRecorderImpl : public sf::SoundRecorder +{ +public : + + sfSoundRecorderImpl(sfSoundRecorderStartCallback OnStart, + sfSoundRecorderProcessCallback OnProcess, + sfSoundRecorderStopCallback OnStop, + void* UserData) : + myStartCallback (OnStart), + myProcessCallback(OnProcess), + myStopCallback (OnStop), + myUserData (UserData) + { + } + +private : + + virtual bool OnStart() + { + if (myStartCallback) + return myStartCallback(myUserData) == sfTrue; + else + return true; + } + + virtual bool OnProcessSamples(const sf::Int16* Samples, std::size_t SamplesCount) + { + if (myProcessCallback) + return myProcessCallback(Samples, SamplesCount, myUserData) == sfTrue; + else + return true; + } + + virtual void OnStop() + { + if (myStopCallback) + myStopCallback(myUserData); + } + + sfSoundRecorderStartCallback myStartCallback; + sfSoundRecorderProcessCallback myProcessCallback; + sfSoundRecorderStopCallback myStopCallback; + void* myUserData; +}; + + +struct sfSoundRecorder +{ + sfSoundRecorder(sfSoundRecorderStartCallback OnStart, + sfSoundRecorderProcessCallback OnProcess, + sfSoundRecorderStopCallback OnStop, + void* UserData) : + This(OnStart, OnProcess, OnStop, UserData) + { + } + + sfSoundRecorderImpl This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new sound recorder with callback functions +/// for processing captured samples +//////////////////////////////////////////////////////////// +sfSoundRecorder* sfSoundRecorder_Create(sfSoundRecorderStartCallback OnStart, + sfSoundRecorderProcessCallback OnProcess, + sfSoundRecorderStopCallback OnStop, + void* UserData) +{ + return new sfSoundRecorder(OnStart, OnProcess, OnStop, UserData); +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound recorder +//////////////////////////////////////////////////////////// +void sfSoundRecorder_Destroy(sfSoundRecorder* SoundRecorder) +{ + delete SoundRecorder; +} + + +//////////////////////////////////////////////////////////// +/// Start the capture. +/// Warning : only one capture can happen at the same time +//////////////////////////////////////////////////////////// +void sfSoundRecorder_Start(sfSoundRecorder* SoundRecorder, unsigned int SampleRate) +{ + CSFML_CALL(SoundRecorder, Start(SampleRate)); +} + + +//////////////////////////////////////////////////////////// +/// Stop the capture +//////////////////////////////////////////////////////////// +void sfSoundRecorder_Stop(sfSoundRecorder* SoundRecorder) +{ + CSFML_CALL(SoundRecorder, Stop()); +} + + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound recorder +//////////////////////////////////////////////////////////// +unsigned int sfSoundRecorder_GetSampleRate(sfSoundRecorder* SoundRecorder) +{ + CSFML_CALL_RETURN(SoundRecorder, GetSampleRate(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Tell if the system supports sound capture. +/// If not, this class won't be usable +//////////////////////////////////////////////////////////// +sfBool sfSoundRecorder_CanCapture() +{ + return sf::SoundRecorder::CanCapture() ? sfTrue : sfFalse; +} diff --git a/CSFML/src/SFML/Audio/SoundStream.cpp b/CSFML/src/SFML/Audio/SoundStream.cpp new file mode 100644 index 00000000..d8919629 --- /dev/null +++ b/CSFML/src/SFML/Audio/SoundStream.cpp @@ -0,0 +1,294 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +class sfSoundStreamImpl : public sf::SoundStream +{ +public : + + sfSoundStreamImpl(sfSoundStreamStartCallback OnStart, + sfSoundStreamGetDataCallback OnGetData, + unsigned int ChannelsCount, + unsigned int SampleRate, + void* UserData) : + myStartCallback (OnStart), + myGetDataCallback(OnGetData), + myUserData (UserData) + { + Initialize(ChannelsCount, SampleRate); + } + +private : + + virtual bool OnStart() + { + if (myStartCallback) + return myStartCallback(myUserData) == sfTrue; + else + return true; + } + + virtual bool OnGetData(Chunk& Data) + { + sfSoundStreamChunk Chunk = {NULL, 0}; + bool Continue = (myGetDataCallback(&Chunk, myUserData) == sfTrue); + + Data.Samples = Chunk.Samples; + Data.NbSamples = Chunk.NbSamples; + + return Continue; + } + + sfSoundStreamStartCallback myStartCallback; + sfSoundStreamGetDataCallback myGetDataCallback; + void* myUserData; +}; + + +struct sfSoundStream +{ + + sfSoundStream(sfSoundStreamStartCallback OnStart, + sfSoundStreamGetDataCallback OnGetData, + unsigned int ChannelsCount, + unsigned int SampleRate, + void* UserData) : + This(OnStart, OnGetData, ChannelsCount, SampleRate, UserData) + { + } + + sfSoundStreamImpl This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new sound stream +//////////////////////////////////////////////////////////// +sfSoundStream* sfSoundStream_Create(sfSoundStreamStartCallback OnStart, + sfSoundStreamGetDataCallback OnGetData, + unsigned int ChannelsCount, + unsigned int SampleRate, + void* UserData) +{ + return new sfSoundStream(OnStart, OnGetData, ChannelsCount, SampleRate, UserData); +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_Destroy(sfSoundStream* SoundStream) +{ + delete SoundStream; +} + + +//////////////////////////////////////////////////////////// +/// Start playing a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_Play(sfSoundStream* SoundStream) +{ + CSFML_CALL(SoundStream, Play()); +} + + +//////////////////////////////////////////////////////////// +/// Pause a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_Pause(sfSoundStream* SoundStream) +{ + CSFML_CALL(SoundStream, Pause()); +} + + +//////////////////////////////////////////////////////////// +/// Stop playing a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_Stop(sfSoundStream* SoundStream) +{ + CSFML_CALL(SoundStream, Stop()); +} + + +//////////////////////////////////////////////////////////// +/// Get the status of a sound stream (stopped, paused, playing) +//////////////////////////////////////////////////////////// +sfSoundStatus sfSoundStream_GetStatus(sfSoundStream* SoundStream) +{ + CSFML_CHECK_RETURN(SoundStream, sfStopped); + + return static_cast(SoundStream->This.GetStatus()); +} + + +//////////////////////////////////////////////////////////// +/// Return the number of channels of a sound stream +/// (1 = mono, 2 = stereo) +//////////////////////////////////////////////////////////// +unsigned int sfSoundStream_GetChannelsCount(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetChannelsCount(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the sample rate of a sound stream +//////////////////////////////////////////////////////////// +unsigned int sfSoundStream_GetSampleRate(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetSampleRate(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Set the pitch of a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_SetPitch(sfSoundStream* SoundStream, float Pitch) +{ + CSFML_CALL(SoundStream, SetPitch(Pitch)); +} + + +//////////////////////////////////////////////////////////// +/// Set the volume of a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_SetVolume(sfSoundStream* SoundStream, float Volume) +{ + CSFML_CALL(SoundStream, SetVolume(Volume)); +} + + +//////////////////////////////////////////////////////////// +/// Set the position of a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_SetPosition(sfSoundStream* SoundStream, float X, float Y, float Z) +{ + CSFML_CALL(SoundStream, SetPosition(X, Y, Z)); +} + + +//////////////////////////////////////////////////////////// +/// Set the minimum distance - closer than this distance, +/// the listener will hear the sound stream at its maximum volume. +/// The default minimum distance is 1.0 +//////////////////////////////////////////////////////////// +void sfSoundStream_SetMinDistance(sfSoundStream* SoundStream, float MinDistance) +{ + CSFML_CALL(SoundStream, SetMinDistance(MinDistance)); +} + + +//////////////////////////////////////////////////////////// +/// Set the attenuation factor - the higher the attenuation, the +/// more the sound stream will be attenuated with distance from listener. +/// The default attenuation factor 1.0 +//////////////////////////////////////////////////////////// +void sfSoundStream_SetAttenuation(sfSoundStream* SoundStream, float Attenuation) +{ + CSFML_CALL(SoundStream, SetAttenuation(Attenuation)); +} + + +//////////////////////////////////////////////////////////// +/// Set a stream loop state +//////////////////////////////////////////////////////////// +void sfSoundStream_SetLoop(sfSoundStream* SoundStream, sfBool Loop) +{ + CSFML_CALL(SoundStream, SetLoop(Loop == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Get the pitch of a sound stream +//////////////////////////////////////////////////////////// +float sfSoundStream_GetPitch(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetPitch(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the volume of a sound stream +//////////////////////////////////////////////////////////// +float sfSoundStream_GetVolume(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetVolume(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the position of a sound stream +//////////////////////////////////////////////////////////// +void sfSoundStream_GetPosition(sfSoundStream* SoundStream, float* X, float* Y, float* Z) +{ + CSFML_CHECK(SoundStream); + + sf::Vector3f Position = SoundStream->This.GetPosition(); + if (X) *X = Position.x; + if (Y) *Y = Position.y; + if (Z) *Z = Position.z; +} + + +//////////////////////////////////////////////////////////// +/// Get the minimum distance of a sound stream +//////////////////////////////////////////////////////////// +float sfSoundStream_GetMinDistance(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetMinDistance(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Get the attenuation factor of a sound stream +//////////////////////////////////////////////////////////// +float sfSoundStream_GetAttenuation(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetAttenuation(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not a stream is looping +//////////////////////////////////////////////////////////// +sfBool sfSoundStream_GetLoop(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetLoop(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the current playing position of a sound stream +//////////////////////////////////////////////////////////// +float sfSoundStream_GetPlayingOffset(sfSoundStream* SoundStream) +{ + CSFML_CALL_RETURN(SoundStream, GetPlayingOffset(), 0.f); +} diff --git a/CSFML/src/SFML/Graphics/Color.cpp b/CSFML/src/SFML/Graphics/Color.cpp new file mode 100644 index 00000000..3c716bac --- /dev/null +++ b/CSFML/src/SFML/Graphics/Color.cpp @@ -0,0 +1,96 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// Define some common colors +//////////////////////////////////////////////////////////// +sfColor sfBlack = { 0, 0, 0, 255}; +sfColor sfWhite = {255, 255, 255, 255}; +sfColor sfRed = {255, 0, 0, 255}; +sfColor sfGreen = { 0, 255, 0, 255}; +sfColor sfBlue = { 0, 0, 255, 255}; +sfColor sfYellow = {255, 255, 0, 255}; +sfColor sfMagenta = {255, 0, 255, 255}; +sfColor sfCyan = { 0, 255, 255, 255}; + + +//////////////////////////////////////////////////////////// +/// Construct a color from its 3 RGB components +//////////////////////////////////////////////////////////// +sfColor sfColor_FromRGB(sfUint8 R, sfUint8 G, sfUint8 B) +{ + return sfColor_FromRGBA(R, G, B, 255); +} + + +//////////////////////////////////////////////////////////// +/// Construct a color from its 4 RGBA components +//////////////////////////////////////////////////////////// +sfColor sfColor_FromRGBA(sfUint8 R, sfUint8 G, sfUint8 B, sfUint8 A) +{ + sfColor Color; + + Color.r = R; + Color.g = G; + Color.b = B; + Color.a = A; + + return Color; +} + + +//////////////////////////////////////////////////////////// +/// Add two colors +//////////////////////////////////////////////////////////// +sfColor sfColor_Add(sfColor Color1, sfColor Color2) +{ + int R = std::min(Color1.r + Color2.r, 255); + int G = std::min(Color1.g + Color2.g, 255); + int B = std::min(Color1.b + Color2.b, 255); + int A = std::min(Color1.a + Color2.a, 255); + + return sfColor_FromRGBA(static_cast(R), static_cast(G), static_cast(B), static_cast(A)); +} + + +//////////////////////////////////////////////////////////// +/// Modulate two colors +//////////////////////////////////////////////////////////// +sfColor sfColor_Modulate(sfColor Color1, sfColor Color2) +{ + int R = Color1.r * Color2.r / 255; + int G = Color1.g * Color2.g / 255; + int B = Color1.b * Color2.b / 255; + int A = Color1.a * Color2.a / 255; + + return sfColor_FromRGBA(static_cast(R), static_cast(G), static_cast(B), static_cast(A)); +} diff --git a/CSFML/src/SFML/Graphics/Font.cpp b/CSFML/src/SFML/Graphics/Font.cpp new file mode 100644 index 00000000..1eee46e8 --- /dev/null +++ b/CSFML/src/SFML/Graphics/Font.cpp @@ -0,0 +1,121 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfFont +{ + sf::Font This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new empty font +//////////////////////////////////////////////////////////// +sfFont* sfFont_Create() +{ + return new sfFont; +} + + +//////////////////////////////////////////////////////////// +/// Create a new font from a file +//////////////////////////////////////////////////////////// +sfFont* sfFont_CreateFromFile(const char* Filename, unsigned int CharSize, const sfUint32* Charset) +{ + sfFont* Font = new sfFont; + + bool bSucceeded = false; + if (Charset) + bSucceeded = Font->This.LoadFromFile(Filename, CharSize, Charset); + else + bSucceeded = Font->This.LoadFromFile(Filename, CharSize); + + if (!bSucceeded) + { + delete Font; + Font = NULL; + } + + return Font; +} + + +//////////////////////////////////////////////////////////// +/// Create a new font from a file in memory +//////////////////////////////////////////////////////////// +sfFont* sfFont_CreateFromMemory(const char* Data, size_t SizeInBytes, unsigned int CharSize, const sfUint32* Charset) +{ + sfFont* Font = new sfFont; + + bool bSucceeded = false; + if (Charset) + bSucceeded = Font->This.LoadFromMemory(Data, SizeInBytes, CharSize, Charset); + else + bSucceeded = Font->This.LoadFromMemory(Data, SizeInBytes, CharSize); + + if (!bSucceeded) + { + delete Font; + Font = NULL; + } + + return Font; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing font +//////////////////////////////////////////////////////////// +void sfFont_Destroy(sfFont* Font) +{ + delete Font; +} + + +//////////////////////////////////////////////////////////// +/// Get the base size of characters in a font; +/// All glyphs dimensions are based on this value +//////////////////////////////////////////////////////////// +unsigned int sfFont_GetCharacterSize(sfFont* Font) +{ + CSFML_CALL_RETURN(Font, GetCharacterSize(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the built-in default font (Arial) +//////////////////////////////////////////////////////////// +sfFont* sfFont_GetDefaultFont() +{ + static sfFont DefaultFont = {sf::Font::GetDefaultFont()}; + + return &DefaultFont; +} diff --git a/CSFML/src/SFML/Graphics/Image.cpp b/CSFML/src/SFML/Graphics/Image.cpp new file mode 100644 index 00000000..06af943b --- /dev/null +++ b/CSFML/src/SFML/Graphics/Image.cpp @@ -0,0 +1,268 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Window/Input.h +struct sfInput +{ + const sf::Input* This; +}; +// WARNING : this structure must always be the SAME as in Graphics/View.h +struct sfView +{ + sf::View* This; +}; +// WARNING : this structure must always be the SAME as in Graphics/RenderWindow.h +struct sfRenderWindow +{ + sf::RenderWindow This; + sfInput Input; + sfView DefaultView; + sfView* CurrentView; +}; + +struct sfImage +{ + sf::Image This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new empty image +//////////////////////////////////////////////////////////// +sfImage* sfImage_Create() +{ + return new sfImage; +} + + +//////////////////////////////////////////////////////////// +/// Create a new image filled with a color +//////////////////////////////////////////////////////////// +sfImage* sfImage_CreateFromColor(unsigned int Width, unsigned int Height, sfColor Color) +{ + sfImage* Image = new sfImage; + + if (!Image->This.Create(Width, Height, sf::Color(Color.r, Color.g, Color.b, Color.a))) + { + delete Image; + Image = NULL; + } + + return Image; +} + + +//////////////////////////////////////////////////////////// +/// Create a new image from an array of pixels in memory +//////////////////////////////////////////////////////////// +sfImage* sfImage_CreateFromPixels(unsigned int Width, unsigned int Height, const sfUint8* Data) +{ + sfImage* Image = new sfImage; + + if (!Image->This.LoadFromPixels(Width, Height, Data)) + { + delete Image; + Image = NULL; + } + + return Image; +} + + +//////////////////////////////////////////////////////////// +/// Create a new image from a file +//////////////////////////////////////////////////////////// +sfImage* sfImage_CreateFromFile(const char* Filename) +{ + sfImage* Image = new sfImage; + + if (!Image->This.LoadFromFile(Filename)) + { + delete Image; + Image = NULL; + } + + return Image; +} + + +//////////////////////////////////////////////////////////// +/// Create a new image from a file in memory +//////////////////////////////////////////////////////////// +sfImage* sfImage_CreateFromMemory(const char* Data, size_t SizeInBytes) +{ + sfImage* Image = new sfImage; + + if (!Image->This.LoadFromMemory(Data, SizeInBytes)) + { + delete Image; + Image = NULL; + } + + return Image; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing image +//////////////////////////////////////////////////////////// +void sfImage_Destroy(sfImage* Image) +{ + delete Image; +} + + +//////////////////////////////////////////////////////////// +/// Save the content of an image to a file +//////////////////////////////////////////////////////////// +sfBool sfImage_SaveToFile(sfImage* Image, const char* Filename) +{ + CSFML_CALL_RETURN(Image, SaveToFile(Filename), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Create a transparency mask for an image from a specified colorkey +//////////////////////////////////////////////////////////// +void sfImage_CreateMaskFromColor(sfImage* Image, sfColor ColorKey, sfUint8 Alpha) +{ + sf::Color SFMLColor(ColorKey.r, ColorKey.g, ColorKey.b, ColorKey.a); + CSFML_CALL(Image, CreateMaskFromColor(SFMLColor, Alpha)); +} + + +//////////////////////////////////////////////////////////// +/// Copy pixels from another image onto this one. +/// This function does a slow pixel copy and should only +/// be used at initialization time +//////////////////////////////////////////////////////////// +void sfImage_Copy(sfImage* Image, sfImage* Source, unsigned int DestX, unsigned int DestY, sfIntRect SourceRect) +{ + CSFML_CHECK(Source); + sf::IntRect SFMLRect(SourceRect.Left, SourceRect.Top, SourceRect.Right, SourceRect.Bottom); + CSFML_CALL(Image, Copy(Source->This, DestX, DestY, SFMLRect)); +} + + +//////////////////////////////////////////////////////////// +/// Create the image from the current contents of the +/// given window +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfImage_CopyScreen(sfImage* Image, sfRenderWindow* Window, sfIntRect SourceRect) +{ + CSFML_CHECK_RETURN(Window, sfFalse); + sf::IntRect SFMLRect(SourceRect.Left, SourceRect.Top, SourceRect.Right, SourceRect.Bottom); + CSFML_CALL_RETURN(Image, CopyScreen(Window->This, SFMLRect), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Change the color of a pixel of an image +/// Don't forget to call Update when you end modifying pixels +//////////////////////////////////////////////////////////// +void sfImage_SetPixel(sfImage* Image, unsigned int X, unsigned int Y, sfColor Color) +{ + sf::Color SFMLColor(Color.r, Color.g, Color.b, Color.a); + CSFML_CALL(Image, SetPixel(X, Y, SFMLColor)); +} + + +//////////////////////////////////////////////////////////// +/// Get a pixel from an image +//////////////////////////////////////////////////////////// +sfColor sfImage_GetPixel(sfImage* Image, unsigned int X, unsigned int Y) +{ + sfColor Color = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(Image, Color); + + sf::Color SFMLColor = Image->This.GetPixel(X, Y); + + return sfColor_FromRGBA(SFMLColor.r, SFMLColor.g, SFMLColor.b, SFMLColor.a); +} + + +//////////////////////////////////////////////////////////// +/// Get a read-only pointer to the array of pixels of an image (8 bits integers RGBA) +/// Array size is sfImage_GetWidth() x sfImage_GetHeight() x 4 +/// This pointer becomes invalid if you reload or resize the image +//////////////////////////////////////////////////////////// +const sfUint8* sfImage_GetPixelsPtr(sfImage* Image) +{ + CSFML_CALL_RETURN(Image, GetPixelsPtr(), NULL); +} + + +//////////////////////////////////////////////////////////// +/// Bind the image for rendering +//////////////////////////////////////////////////////////// +void sfImage_Bind(sfImage* Image) +{ + CSFML_CALL(Image, Bind()); +} + + +//////////////////////////////////////////////////////////// +/// Enable or disable image smooth filter +//////////////////////////////////////////////////////////// +void sfImage_SetSmooth(sfImage* Image, sfBool Smooth) +{ + CSFML_CALL(Image, SetSmooth(Smooth == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Return the width of the image +//////////////////////////////////////////////////////////// +unsigned int sfImage_GetWidth(sfImage* Image) +{ + CSFML_CALL_RETURN(Image, GetWidth(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Return the height of the image +//////////////////////////////////////////////////////////// +unsigned int sfImage_GetHeight(sfImage* Image) +{ + CSFML_CALL_RETURN(Image, GetHeight(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Tells whether the smoothing filter is enabled or not on an image +//////////////////////////////////////////////////////////// +sfBool sfImage_IsSmooth(sfImage* Image) +{ + CSFML_CALL_RETURN(Image, IsSmooth(), sfFalse); +} diff --git a/CSFML/src/SFML/Graphics/Makefile b/CSFML/src/SFML/Graphics/Makefile new file mode 100644 index 00000000..d5e1c83d --- /dev/null +++ b/CSFML/src/SFML/Graphics/Makefile @@ -0,0 +1,23 @@ +LIB = libcsfml-graphics.so +SRC = $(wildcard *.cpp) +OBJ = $(SRC:.cpp=.o) +LIBNAME = $(LIBPATH)/$(LIB).$(VERSION) + +all: $(LIB) + +libcsfml-graphics.so: $(OBJ) + $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lsfml-graphics -lsfml-window -lsfml-system + +$(OBJ): %.o: %.cpp + $(CPP) -o $@ -c $< $(CFLAGS) + +.PHONY: clean mrproper + +clean: + @rm -rf $(OBJ) + +mrproper: clean + @rm -rf $(LIBNAME) + +install: + @($(CP) $(LIBNAME) $(DESTLIBDIR) && $(LN) $(LNFLAGS) $(DESTLIBDIR)/$(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)) diff --git a/CSFML/src/SFML/Graphics/PostFX.cpp b/CSFML/src/SFML/Graphics/PostFX.cpp new file mode 100644 index 00000000..b5bdf6bb --- /dev/null +++ b/CSFML/src/SFML/Graphics/PostFX.cpp @@ -0,0 +1,138 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Graphics/Image.h +struct sfImage +{ + sf::Image This; +}; +struct sfPostFX +{ + sf::PostFX This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new post-fx from a file +//////////////////////////////////////////////////////////// +sfPostFX* sfPostFX_CreateFromFile(const char* Filename) +{ + sfPostFX* PostFX = new sfPostFX; + + if (!PostFX->This.LoadFromFile(Filename)) + { + delete PostFX; + PostFX = NULL; + } + + return PostFX; +} + + +//////////////////////////////////////////////////////////// +/// Create a new post-fx from an effect source code +//////////////////////////////////////////////////////////// +sfPostFX* sfPostFX_CreateFromMemory(const char* Effect) +{ + sfPostFX* PostFX = new sfPostFX; + + if (!PostFX->This.LoadFromMemory(Effect)) + { + delete PostFX; + PostFX = NULL; + } + + return PostFX; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing post-fx +//////////////////////////////////////////////////////////// +void sfPostFX_Destroy(sfPostFX* PostFX) +{ + delete PostFX; +} + + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (1 float) +//////////////////////////////////////////////////////////// +void sfPostFX_SetParameter1(sfPostFX* PostFX, const char* Name, float X) +{ + CSFML_CALL(PostFX, SetParameter(Name, X)) +} + + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (2 floats) +//////////////////////////////////////////////////////////// +void sfPostFX_SetParameter2(sfPostFX* PostFX, const char* Name, float X, float Y) +{ + CSFML_CALL(PostFX, SetParameter(Name, X, Y)) +} + + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (3 floats) +//////////////////////////////////////////////////////////// +void sfPostFX_SetParameter3(sfPostFX* PostFX, const char* Name, float X, float Y, float Z) +{ + CSFML_CALL(PostFX, SetParameter(Name, X, Y, Z)) +} + + +//////////////////////////////////////////////////////////// +/// Change a parameter of a post-fx (4 floats) +//////////////////////////////////////////////////////////// +void sfPostFX_SetParameter4(sfPostFX* PostFX, const char* Name, float X, float Y, float Z, float W) +{ + CSFML_CALL(PostFX, SetParameter(Name, X, Y, Z, W)) +} + + +//////////////////////////////////////////////////////////// +/// Set a texture parameter in a post-fx +//////////////////////////////////////////////////////////// +void sfPostFX_SetTexture(sfPostFX* PostFX, const char* Name, sfImage* Texture) +{ + CSFML_CALL(PostFX, SetTexture(Name, Texture ? &Texture->This : NULL)) +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not the system supports post-effects +//////////////////////////////////////////////////////////// +sfBool sfPostFX_CanUsePostFX() +{ + return sf::PostFX::CanUsePostFX() ? sfTrue : sfFalse; +} diff --git a/CSFML/src/SFML/Graphics/Rect.cpp b/CSFML/src/SFML/Graphics/Rect.cpp new file mode 100644 index 00000000..d1f364e8 --- /dev/null +++ b/CSFML/src/SFML/Graphics/Rect.cpp @@ -0,0 +1,121 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// Move a rectangle by the given offset +//////////////////////////////////////////////////////////// +void sfFloatRect_Offset(sfFloatRect* Rect, float OffsetX, float OffsetY) +{ + CSFML_CHECK(Rect) + Rect->Left += OffsetX; + Rect->Right += OffsetX; + Rect->Top += OffsetY; + Rect->Bottom += OffsetY; +} +void sfIntRect_Offset(sfIntRect* Rect, int OffsetX, int OffsetY) +{ + CSFML_CHECK(Rect) + Rect->Left += OffsetX; + Rect->Right += OffsetX; + Rect->Top += OffsetY; + Rect->Bottom += OffsetY; +} + + +//////////////////////////////////////////////////////////// +/// Check if a point is inside a rectangle's area +//////////////////////////////////////////////////////////// +sfBool sfFloatRect_Contains(sfFloatRect* Rect, float X, float Y) +{ + CSFML_CHECK_RETURN(Rect, sfFalse) + return sf::FloatRect(Rect->Left, Rect->Top, Rect->Right, Rect->Bottom).Contains(X, Y); +} +sfBool sfIntRect_Contains(sfIntRect* Rect, int X, int Y) +{ + CSFML_CHECK_RETURN(Rect, sfFalse) + return sf::IntRect(Rect->Left, Rect->Top, Rect->Right, Rect->Bottom).Contains(X, Y); +} + + +//////////////////////////////////////////////////////////// +/// Check intersection between two rectangles +//////////////////////////////////////////////////////////// +sfBool sfFloatRect_Intersects(sfFloatRect* Rect1, sfFloatRect* Rect2, sfFloatRect* OverlappingRect) +{ + CSFML_CHECK_RETURN(Rect1, sfFalse) + CSFML_CHECK_RETURN(Rect2, sfFalse) + + sf::FloatRect SFMLRect1(Rect1->Left, Rect1->Top, Rect1->Right, Rect1->Bottom); + sf::FloatRect SFMLRect2(Rect2->Left, Rect2->Top, Rect2->Right, Rect2->Bottom); + + if (OverlappingRect) + { + sf::FloatRect Overlap; + bool Intersect = SFMLRect1.Intersects(SFMLRect2, &Overlap); + + OverlappingRect->Left = Overlap.Left; + OverlappingRect->Top = Overlap.Top; + OverlappingRect->Right = Overlap.Right; + OverlappingRect->Bottom = Overlap.Bottom; + + return Intersect; + } + else + { + return SFMLRect1.Intersects(SFMLRect2); + } +} +sfBool sfIntRect_Intersects(sfIntRect* Rect1, sfIntRect* Rect2, sfIntRect* OverlappingRect) +{ + CSFML_CHECK_RETURN(Rect1, sfFalse) + CSFML_CHECK_RETURN(Rect2, sfFalse) + + sf::IntRect SFMLRect1(Rect1->Left, Rect1->Top, Rect1->Right, Rect1->Bottom); + sf::IntRect SFMLRect2(Rect2->Left, Rect2->Top, Rect2->Right, Rect2->Bottom); + + if (OverlappingRect) + { + sf::IntRect Overlap; + bool Intersect = SFMLRect1.Intersects(SFMLRect2, &Overlap); + + OverlappingRect->Left = Overlap.Left; + OverlappingRect->Top = Overlap.Top; + OverlappingRect->Right = Overlap.Right; + OverlappingRect->Bottom = Overlap.Bottom; + + return Intersect; + } + else + { + return SFMLRect1.Intersects(SFMLRect2); + } +} diff --git a/CSFML/src/SFML/Graphics/RenderWindow.cpp b/CSFML/src/SFML/Graphics/RenderWindow.cpp new file mode 100644 index 00000000..73cdf1d5 --- /dev/null +++ b/CSFML/src/SFML/Graphics/RenderWindow.cpp @@ -0,0 +1,497 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Graphics/PostFX.h +struct sfPostFX +{ + sf::PostFX This; +}; +// WARNING : this structure must always be the SAME as in Graphics/Shape.h +struct sfShape +{ + sf::Shape This; +}; +// WARNING : this structure must always be the SAME as in Graphics/Sprite.h +struct sfSprite +{ + sf::Sprite This; + sfImage* Image; + sfIntRect SubRect; +}; +// WARNING : this structure must always be the SAME as in Graphics/String.h +struct sfString +{ + sf::String This; + std::string Text; +}; +// WARNING : this structure must always be the SAME as in Graphics/Image.h +struct sfImage +{ + sf::Image This; +}; +// WARNING : this structure must always be the SAME as in Window/Input.h +struct sfInput +{ + const sf::Input* This; +}; +// WARNING : this structure must always be the SAME as in Graphics/View.h +struct sfView +{ + sf::View* This; +}; +struct sfRenderWindow +{ + sf::RenderWindow This; + sfInput Input; + sfView DefaultView; + sfView* CurrentView; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new renderwindow +//////////////////////////////////////////////////////////// +sfRenderWindow* sfRenderWindow_Create(sfVideoMode Mode, const char* Title, unsigned long Style, sfWindowSettings Params) +{ + // Convert video mode + sf::VideoMode VideoMode(Mode.Width, Mode.Height, Mode.BitsPerPixel); + + // Create the window + sfRenderWindow* RenderWindow = new sfRenderWindow; + sf::WindowSettings Settings(Params.DepthBits, Params.StencilBits, Params.AntialiasingLevel); + RenderWindow->This.Create(VideoMode, Title, Style, Settings); + RenderWindow->Input.This = &RenderWindow->This.GetInput(); + RenderWindow->DefaultView.This = &RenderWindow->This.GetDefaultView(); + RenderWindow->CurrentView = &RenderWindow->DefaultView; + + return RenderWindow; +} + + +//////////////////////////////////////////////////////////// +/// Construct a renderwindow from an existing control +//////////////////////////////////////////////////////////// +sfRenderWindow* sfRenderWindow_CreateFromHandle(sfWindowHandle Handle, sfWindowSettings Params) +{ + sfRenderWindow* RenderWindow = new sfRenderWindow; + sf::WindowSettings Settings(Params.DepthBits, Params.StencilBits, Params.AntialiasingLevel); + RenderWindow->This.Create(Handle, Settings); + RenderWindow->Input.This = &RenderWindow->This.GetInput(); + RenderWindow->DefaultView.This = &RenderWindow->This.GetDefaultView(); + RenderWindow->CurrentView = &RenderWindow->DefaultView; + + return RenderWindow; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing renderwindow +//////////////////////////////////////////////////////////// +void sfRenderWindow_Destroy(sfRenderWindow* RenderWindow) +{ + delete RenderWindow; +} + +//////////////////////////////////////////////////////////// +/// Close a renderwindow (but doesn't destroy the internal data) +//////////////////////////////////////////////////////////// +void sfRenderWindow_Close(sfRenderWindow* RenderWindow) +{ + CSFML_CALL(RenderWindow, Close()); +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not a renderwindow is opened +//////////////////////////////////////////////////////////// +sfBool sfRenderWindow_IsOpened(sfRenderWindow* RenderWindow) +{ + CSFML_CALL_RETURN(RenderWindow, IsOpened(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the width of the rendering region of a window +//////////////////////////////////////////////////////////// +unsigned int sfRenderWindow_GetWidth(sfRenderWindow* RenderWindow) +{ + CSFML_CALL_RETURN(RenderWindow, GetWidth(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the height of the rendering region of a window +//////////////////////////////////////////////////////////// +unsigned int sfRenderWindow_GetHeight(sfRenderWindow* RenderWindow) +{ + CSFML_CALL_RETURN(RenderWindow, GetHeight(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the creation settings of a window +//////////////////////////////////////////////////////////// +sfWindowSettings sfRenderWindow_GetSettings(sfRenderWindow* RenderWindow) +{ + sfWindowSettings Settings = {0, 0, 0}; + CSFML_CHECK_RETURN(RenderWindow, Settings); + + const sf::WindowSettings& Params = RenderWindow->This.GetSettings(); + Settings.DepthBits = Params.DepthBits; + Settings.StencilBits = Params.StencilBits; + Settings.AntialiasingLevel = Params.AntialiasingLevel; + + return Settings; +} + + + +//////////////////////////////////////////////////////////// +/// Get the event on top of events stack of a window, if any, and pop it +//////////////////////////////////////////////////////////// +sfBool sfRenderWindow_GetEvent(sfRenderWindow* RenderWindow, sfEvent* Event) +{ + CSFML_CHECK_RETURN(RenderWindow, sfFalse); + CSFML_CHECK_RETURN(Event, sfFalse); + + // Get the event + sf::Event SFMLEvent; + sfBool Ret = RenderWindow->This.GetEvent(SFMLEvent); + + // No event, return + if (!Ret) + return sfFalse; + + // Convert its type + Event->Type = static_cast(SFMLEvent.Type); + + // Fill its fields + switch (Event->Type) + { + case sfEvtResized : + Event->Size.Width = SFMLEvent.Size.Width; + Event->Size.Height = SFMLEvent.Size.Height; + break; + + case sfEvtTextEntered : + Event->Text.Unicode = SFMLEvent.Text.Unicode; + break; + + case sfEvtKeyReleased : + case sfEvtKeyPressed : + Event->Key.Code = static_cast(SFMLEvent.Key.Code); + Event->Key.Alt = SFMLEvent.Key.Alt ? sfTrue : sfFalse; + Event->Key.Control = SFMLEvent.Key.Control ? sfTrue : sfFalse; + Event->Key.Shift = SFMLEvent.Key.Shift ? sfTrue : sfFalse; + break; + + case sfEvtMouseWheelMoved : + Event->MouseWheel.Delta = SFMLEvent.MouseWheel.Delta; + break; + + case sfEvtMouseButtonPressed : + case sfEvtMouseButtonReleased : + Event->MouseButton.Button = static_cast(SFMLEvent.MouseButton.Button); + Event->MouseButton.X = SFMLEvent.MouseButton.X; + Event->MouseButton.Y = SFMLEvent.MouseButton.Y; + break; + + case sfEvtMouseMoved : + Event->MouseMove.X = SFMLEvent.MouseMove.X; + Event->MouseMove.Y = SFMLEvent.MouseMove.Y; + break; + + case sfEvtJoyButtonPressed : + case sfEvtJoyButtonReleased : + Event->JoyButton.JoystickId = SFMLEvent.JoyButton.JoystickId; + Event->JoyButton.Button = SFMLEvent.JoyButton.Button; + break; + + case sfEvtJoyMoved : + Event->JoyMove.JoystickId = SFMLEvent.JoyMove.JoystickId; + Event->JoyMove.Axis = static_cast(SFMLEvent.JoyMove.Axis); + Event->JoyMove.Position = SFMLEvent.JoyMove.Position; + break; + + default : + break; + } + + return sfTrue; +} + + +//////////////////////////////////////////////////////////// +/// Enable / disable vertical synchronization on a window +//////////////////////////////////////////////////////////// +void sfRenderWindow_UseVerticalSync(sfRenderWindow* RenderWindow, sfBool Enabled) +{ + CSFML_CALL(RenderWindow, UseVerticalSync(Enabled == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Show or hide the mouse cursor on a window +//////////////////////////////////////////////////////////// +void sfRenderWindow_ShowMouseCursor(sfRenderWindow* RenderWindow, sfBool Show) +{ + CSFML_CALL(RenderWindow, ShowMouseCursor(Show == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Change the position of the mouse cursor on a window +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetCursorPosition(sfRenderWindow* RenderWindow, unsigned int Left, unsigned int Top) +{ + CSFML_CALL(RenderWindow, SetCursorPosition(Left, Top)); +} + + +//////////////////////////////////////////////////////////// +/// Change the position of a window on screen. +/// Only works for top-level windows +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetPosition(sfRenderWindow* RenderWindow, int Left, int Top) +{ + CSFML_CALL(RenderWindow, SetPosition(Left, Top)); +} + + +//////////////////////////////////////////////////////////// +/// Change the size of the rendering region of a window +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetSize(sfRenderWindow* RenderWindow, unsigned int Width, unsigned int Height) +{ + CSFML_CALL(RenderWindow, SetSize(Width, Height)) +} + + +//////////////////////////////////////////////////////////// +/// Show or hide a window +//////////////////////////////////////////////////////////// +void sfRenderWindow_Show(sfRenderWindow* RenderWindow, sfBool State) +{ + CSFML_CALL(RenderWindow, Show(State == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Enable or disable automatic key-repeat for keydown events. +/// Automatic key-repeat is enabled by default +//////////////////////////////////////////////////////////// +void sfRenderWindow_EnableKeyRepeat(sfRenderWindow* RenderWindow, sfBool Enabled) +{ + CSFML_CALL(RenderWindow, EnableKeyRepeat(Enabled == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Change the window's icon +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetIcon(sfRenderWindow* RenderWindow, unsigned int Width, unsigned int Height, sfUint8* Pixels) +{ + CSFML_CALL(RenderWindow, SetIcon(Width, Height, Pixels)) +} + + +//////////////////////////////////////////////////////////// +/// Set a window as the current target for rendering +//////////////////////////////////////////////////////////// +sfBool sfRenderWindow_SetActive(sfRenderWindow* RenderWindow, sfBool Active) +{ + CSFML_CALL_RETURN(RenderWindow, SetActive(Active == sfTrue), sfFalse) +} + + +//////////////////////////////////////////////////////////// +/// Display a window on screen +//////////////////////////////////////////////////////////// +void sfRenderWindow_Display(sfRenderWindow* RenderWindow) +{ + CSFML_CALL(RenderWindow, Display()); +} + + +//////////////////////////////////////////////////////////// +/// Get the input manager of a window +//////////////////////////////////////////////////////////// +sfInput* sfRenderWindow_GetInput(sfRenderWindow* RenderWindow) +{ + CSFML_CHECK_RETURN(RenderWindow, NULL); + + return &RenderWindow->Input; +} + + +//////////////////////////////////////////////////////////// +/// Limit the framerate to a maximum fixed frequency for a window +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetFramerateLimit(sfRenderWindow* RenderWindow, unsigned int Limit) +{ + CSFML_CALL(RenderWindow, SetFramerateLimit(Limit)); +} + + +//////////////////////////////////////////////////////////// +/// Get time elapsed since last frame of a window +//////////////////////////////////////////////////////////// +float sfRenderWindow_GetFrameTime(sfRenderWindow* RenderWindow) +{ + CSFML_CALL_RETURN(RenderWindow, GetFrameTime(), 0.f); +} + + +//////////////////////////////////////////////////////////// +/// Change the joystick threshold, ie. the value below which +/// no move event will be generated +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetJoystickThreshold(sfRenderWindow* RenderWindow, float Threshold) +{ + CSFML_CALL(RenderWindow, SetJoystickThreshold(Threshold)); +} + + +//////////////////////////////////////////////////////////// +/// Draw something on a renderwindow +//////////////////////////////////////////////////////////// +void sfRenderWindow_DrawPostFX(sfRenderWindow* RenderWindow, sfPostFX* PostFX) +{ + CSFML_CHECK(PostFX); + CSFML_CALL(RenderWindow, Draw(PostFX->This)); +} +void sfRenderWindow_DrawShape(sfRenderWindow* RenderWindow, sfShape* Shape) +{ + CSFML_CHECK(Shape); + CSFML_CALL(RenderWindow, Draw(Shape->This)); +} +void sfRenderWindow_DrawSprite(sfRenderWindow* RenderWindow, sfSprite* Sprite) +{ + CSFML_CHECK(Sprite); + CSFML_CALL(RenderWindow, Draw(Sprite->This)); +} +void sfRenderWindow_DrawString(sfRenderWindow* RenderWindow, sfString* String) +{ + CSFML_CHECK(String); + CSFML_CALL(RenderWindow, Draw(String->This)); +} + + +//////////////////////////////////////////////////////////// +/// Save the content of a renderwindow to an image +//////////////////////////////////////////////////////////// +sfImage* sfRenderWindow_Capture(sfRenderWindow* RenderWindow) +{ + CSFML_CHECK_RETURN(RenderWindow, NULL); + + sfImage* Image = new sfImage; + Image->This = RenderWindow->This.Capture(); + + return Image; +} + +//////////////////////////////////////////////////////////// +/// Clear the screen with the given color +//////////////////////////////////////////////////////////// +void sfRenderWindow_Clear(sfRenderWindow* RenderWindow, sfColor Color) +{ + sf::Color SFMLColor(Color.r, Color.g, Color.b, Color.a); + + CSFML_CALL(RenderWindow, Clear(SFMLColor)); +} + + +//////////////////////////////////////////////////////////// +/// Change the current active view of a renderwindow +//////////////////////////////////////////////////////////// +void sfRenderWindow_SetView(sfRenderWindow* RenderWindow, sfView* View) +{ + CSFML_CHECK(View); + CSFML_CALL(RenderWindow, SetView(*View->This)); + RenderWindow->CurrentView = View; +} + + +//////////////////////////////////////////////////////////// +/// Get the current active view of a renderwindow +//////////////////////////////////////////////////////////// +const sfView* sfRenderWindow_GetView(sfRenderWindow* RenderWindow) +{ + CSFML_CHECK_RETURN(RenderWindow, NULL); + + return RenderWindow->CurrentView; +} + + +//////////////////////////////////////////////////////////// +/// Get the default view of a renderwindow +//////////////////////////////////////////////////////////// +sfView* sfRenderWindow_GetDefaultView(sfRenderWindow* RenderWindow) +{ + CSFML_CHECK_RETURN(RenderWindow, NULL); + + return &RenderWindow->DefaultView; +} + + +//////////////////////////////////////////////////////////// +/// Convert a point in window coordinates into view coordinates +//////////////////////////////////////////////////////////// +void sfRenderWindow_ConvertCoords(sfRenderWindow* RenderWindow, unsigned int WindowX, unsigned int WindowY, float* ViewX, float* ViewY, sfView* TargetView) +{ + CSFML_CHECK(RenderWindow); + + sf::Vector2f Point = RenderWindow->This.ConvertCoords(WindowX, WindowY, TargetView ? TargetView->This : NULL); + + if (ViewX) *ViewX = Point.x; + if (ViewY) *ViewY = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Tell SFML to preserve external OpenGL states, at the expense of +/// more CPU charge. Use this function if you don't want SFML +/// to mess up your own OpenGL states (if any). +/// Don't enable state preservation if not needed, as it will allow +/// SFML to do internal optimizations and improve performances. +/// This parameter is false by default +//////////////////////////////////////////////////////////// +void sfRenderWindow_PreserveOpenGLStates(sfRenderWindow* RenderWindow, sfBool Preserve) +{ + CSFML_CALL(RenderWindow, PreserveOpenGLStates(Preserve == sfTrue)); +} diff --git a/CSFML/src/SFML/Graphics/Shape.cpp b/CSFML/src/SFML/Graphics/Shape.cpp new file mode 100644 index 00000000..1aafe41b --- /dev/null +++ b/CSFML/src/SFML/Graphics/Shape.cpp @@ -0,0 +1,464 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +struct sfShape +{ + sf::Shape This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new shape +//////////////////////////////////////////////////////////// +sfShape* sfShape_Create() +{ + return new sfShape; +} + +//////////////////////////////////////////////////////////// +/// Create a new shape made of a single line +//////////////////////////////////////////////////////////// +sfShape* sfShape_CreateLine(float P1X, float P1Y, float P2X, float P2Y, float Thickness, sfColor Col, float Outline, sfColor OutlineCol) +{ + sf::Color Color(Col.r, Col.g, Col.b, Col.a); + sf::Color OutlineColor(OutlineCol.r, OutlineCol.g, OutlineCol.b, OutlineCol.a); + + sfShape* Shape = new sfShape; + Shape->This = sf::Shape::Line(P1X, P1Y, P2X, P2Y, Thickness, Color, Outline, OutlineColor); + return Shape; +} + + +//////////////////////////////////////////////////////////// +/// Create a new shape made of a single rectangle +//////////////////////////////////////////////////////////// +sfShape* sfShape_CreateRectangle(float P1X, float P1Y, float P2X, float P2Y, sfColor Col, float Outline, sfColor OutlineCol) +{ + sf::Color Color(Col.r, Col.g, Col.b, Col.a); + sf::Color OutlineColor(OutlineCol.r, OutlineCol.g, OutlineCol.b, OutlineCol.a); + + sfShape* Shape = new sfShape; + Shape->This = sf::Shape::Rectangle(P1X, P1Y, P2X, P2Y, Color, Outline, OutlineColor); + return Shape; +} + + +//////////////////////////////////////////////////////////// +/// Create a new shape made of a single circle +//////////////////////////////////////////////////////////// +sfShape* sfShape_CreateCircle(float X, float Y, float Radius, sfColor Col, float Outline, sfColor OutlineCol) +{ + sf::Color Color(Col.r, Col.g, Col.b, Col.a); + sf::Color OutlineColor(OutlineCol.r, OutlineCol.g, OutlineCol.b, OutlineCol.a); + + sfShape* Shape = new sfShape; + Shape->This = sf::Shape::Circle(X, Y, Radius, Color, Outline, OutlineColor); + return Shape; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing shape +//////////////////////////////////////////////////////////// +void sfShape_Destroy(sfShape* Shape) +{ + delete Shape; +} + + +//////////////////////////////////////////////////////////// +/// Set the X position of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetX(sfShape* Shape, float X) +{ + CSFML_CALL(Shape, SetX(X)) +} + + +//////////////////////////////////////////////////////////// +/// Set the Y position of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetY(sfShape* Shape, float Y) +{ + CSFML_CALL(Shape, SetY(Y)) +} + + +//////////////////////////////////////////////////////////// +/// Set the position of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetPosition(sfShape* Shape, float X, float Y) +{ + CSFML_CALL(Shape, SetPosition(sf::Vector2f(X, Y))) +} + + +//////////////////////////////////////////////////////////// +/// Set the horizontal scale of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetScaleX(sfShape* Shape, float Scale) +{ + CSFML_CALL(Shape, SetScaleX(Scale)) +} + + +//////////////////////////////////////////////////////////// +/// Set the vertical scale of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetScaleY(sfShape* Shape, float Scale) +{ + CSFML_CALL(Shape, SetScaleY(Scale)) +} + + +//////////////////////////////////////////////////////////// +/// Set the scale of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetScale(sfShape* Shape, float ScaleX, float ScaleY) +{ + CSFML_CALL(Shape, SetScale(sf::Vector2f(ScaleX, ScaleY))) +} + + +//////////////////////////////////////////////////////////// +/// Set the orientation of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetRotation(sfShape* Shape, float Rotation) +{ + CSFML_CALL(Shape, SetRotation(Rotation)) +} + + +//////////////////////////////////////////////////////////// +/// Set the center of a shape, in coordinates +/// relative to its left-top corner +//////////////////////////////////////////////////////////// +void sfShape_SetCenter(sfShape* Shape, float X, float Y) +{ + CSFML_CALL(Shape, SetCenter(sf::Vector2f(X, Y))) +} + + +//////////////////////////////////////////////////////////// +/// Set the color of a shape +//////////////////////////////////////////////////////////// +void sfShape_SetColor(sfShape* Shape, sfColor Color) +{ + CSFML_CALL(Shape, SetColor(sf::Color(Color.r, Color.g, Color.b, Color.a))) +} + + +//////////////////////////////////////////////////////////// +/// Set the blending mode for a shape +//////////////////////////////////////////////////////////// +void sfShape_SetBlendMode(sfShape* Shape, sfBlendMode Mode) +{ + CSFML_CALL(Shape, SetBlendMode(static_cast(Mode))) +} + + +//////////////////////////////////////////////////////////// +/// Get the X position of a shape +//////////////////////////////////////////////////////////// +float sfShape_GetX(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetPosition().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the Y position of a shape +//////////////////////////////////////////////////////////// +float sfShape_GetY(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetPosition().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the horizontal scale of a shape +//////////////////////////////////////////////////////////// +float sfShape_GetScaleX(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetScale().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the vertical scale of a shape +//////////////////////////////////////////////////////////// +float sfShape_GetScaleY(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetScale().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the orientation of a shape +//////////////////////////////////////////////////////////// +float sfShape_GetRotation(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetRotation(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the X position of the center a shape +//////////////////////////////////////////////////////////// +float sfShape_GetCenterX(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetCenter().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the Y position of the center a shape +//////////////////////////////////////////////////////////// +float sfShape_GetCenterY(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetCenter().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the color of a shape +//////////////////////////////////////////////////////////// +sfColor sfShape_GetColor(sfShape* Shape) +{ + sfColor Color = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(Shape, Color) + + sf::Color SFMLColor = Shape->This.GetColor(); + return sfColor_FromRGBA(SFMLColor.r, SFMLColor.g, SFMLColor.b, SFMLColor.a); +} + + +//////////////////////////////////////////////////////////// +/// Get the current blending mode of a shape +//////////////////////////////////////////////////////////// +sfBlendMode sfShape_GetBlendMode(sfShape* Shape) +{ + CSFML_CHECK_RETURN(Shape, sfBlendNone) + + return static_cast(Shape->This.GetBlendMode()); +} + + +//////////////////////////////////////////////////////////// +/// Move a shape +//////////////////////////////////////////////////////////// +void sfShape_Move(sfShape* Shape, float OffsetX, float OffsetY) +{ + CSFML_CALL(Shape, Move(sf::Vector2f(OffsetX, OffsetY))) +} + + +//////////////////////////////////////////////////////////// +/// Scale a shape +//////////////////////////////////////////////////////////// +void sfShape_Scale(sfShape* Shape, float FactorX, float FactorY) +{ + CSFML_CALL(Shape, Scale(sf::Vector2f(FactorX, FactorY))) +} + + +//////////////////////////////////////////////////////////// +/// Rotate a shape +//////////////////////////////////////////////////////////// +void sfShape_Rotate(sfShape* Shape, float Angle) +{ + CSFML_CALL(Shape, Rotate(Angle)) +} + + +//////////////////////////////////////////////////////////// +/// Transform a point from global coordinates into the shape's local coordinates +/// (ie it applies the inverse of object's center, translation, rotation and scale to the point) +//////////////////////////////////////////////////////////// +void sfShape_TransformToLocal(sfShape* Shape, float PointX, float PointY, float* X, float* Y) +{ + CSFML_CHECK(Shape) + + sf::Vector2f Point = Shape->This.TransformToLocal(sf::Vector2f(PointX, PointY)); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Transform a point from the shape's local coordinates into global coordinates +/// (ie it applies the object's center, translation, rotation and scale to the point) +//////////////////////////////////////////////////////////// +void sfShape_TransformToGlobal(sfShape* Shape, float PointX, float PointY, float* X, float* Y) +{ + CSFML_CHECK(Shape) + + sf::Vector2f Point = Shape->This.TransformToGlobal(sf::Vector2f(PointX, PointY)); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Add a point to a shape +//////////////////////////////////////////////////////////// +void sfShape_AddPoint(sfShape* Shape, float X, float Y, sfColor Col, sfColor OutlineCol) +{ + sf::Color Color(Col.r, Col.g, Col.b, Col.a); + sf::Color OutlineColor(OutlineCol.r, OutlineCol.g, OutlineCol.b, OutlineCol.a); + + CSFML_CALL(Shape, AddPoint(X, Y, Color, OutlineColor)) +} + + +//////////////////////////////////////////////////////////// +/// Enable or disable filling a shape. +/// Fill is enabled by default +//////////////////////////////////////////////////////////// +void sfShape_EnableFill(sfShape* Shape, sfBool Enable) +{ + CSFML_CALL(Shape, EnableFill(Enable == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Enable or disable drawing a shape outline. +/// Outline is enabled by default +//////////////////////////////////////////////////////////// +void sfShape_EnableOutline(sfShape* Shape, sfBool Enable) +{ + CSFML_CALL(Shape, EnableOutline(Enable == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Change the width of a shape outline +//////////////////////////////////////////////////////////// +void sfShape_SetOutlineWidth(sfShape* Shape, float Width) +{ + CSFML_CALL(Shape, SetOutlineWidth(Width)) +} + + +//////////////////////////////////////////////////////////// +/// Get the width of a shape outline +//////////////////////////////////////////////////////////// +float sfShape_GetOutlineWidth(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetOutlineWidth(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the number of points composing a shape +//////////////////////////////////////////////////////////// +unsigned int sfShape_GetNbPoints(sfShape* Shape) +{ + CSFML_CALL_RETURN(Shape, GetNbPoints(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Get a point of a shape +//////////////////////////////////////////////////////////// +void sfShape_GetPointPosition(sfShape* Shape, unsigned int Index, float* X, float* Y) +{ + CSFML_CHECK(Shape) + + sf::Vector2f Point = Shape->This.GetPointPosition(Index); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Get a the color of a shape's point +//////////////////////////////////////////////////////////// +sfColor sfShape_GetPointColor(sfShape* Shape, unsigned int Index) +{ + sfColor Color = {255, 255, 255, 255}; + CSFML_CHECK_RETURN(Shape, Color) + + const sf::Color& SFMLColor = Shape->This.GetPointColor(Index); + Color.r = SFMLColor.r; + Color.g = SFMLColor.g; + Color.b = SFMLColor.b; + Color.a = SFMLColor.a; + + return Color; +} + + +//////////////////////////////////////////////////////////// +/// Get a the outline color of a shape's point +//////////////////////////////////////////////////////////// +sfColor sfShape_GetPointOutlineColor(sfShape* Shape, unsigned int Index) +{ + sfColor Color = {255, 255, 255, 255}; + CSFML_CHECK_RETURN(Shape, Color) + + const sf::Color& SFMLColor = Shape->This.GetPointOutlineColor(Index); + Color.r = SFMLColor.r; + Color.g = SFMLColor.g; + Color.b = SFMLColor.b; + Color.a = SFMLColor.a; + + return Color; +} + +//////////////////////////////////////////////////////////// +/// Set a the position of a shape's point +//////////////////////////////////////////////////////////// +void sfShape_SetPointPosition(sfShape* Shape, unsigned int Index, float X, float Y) +{ + CSFML_CALL(Shape, SetPointPosition(Index, X, Y)); +} + + +//////////////////////////////////////////////////////////// +/// Set a the color of a shape's point +//////////////////////////////////////////////////////////// +void sfShape_SetPointColor(sfShape* Shape, unsigned int Index, sfColor Color) +{ + CSFML_CALL(Shape, SetPointColor(Index, sf::Color(Color.r, Color.g, Color.b, Color.a))); +} + + +//////////////////////////////////////////////////////////// +/// Set a the outline color of a shape's point +//////////////////////////////////////////////////////////// +void sfShape_SetPointOutlineColor(sfShape* Shape, unsigned int Index, sfColor Color) +{ + CSFML_CALL(Shape, SetPointOutlineColor(Index, sf::Color(Color.r, Color.g, Color.b, Color.a))); +} diff --git a/CSFML/src/SFML/Graphics/Sprite.cpp b/CSFML/src/SFML/Graphics/Sprite.cpp new file mode 100644 index 00000000..d53edbd8 --- /dev/null +++ b/CSFML/src/SFML/Graphics/Sprite.cpp @@ -0,0 +1,407 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Graphics/Image.h +struct sfImage +{ + sf::Image This; +}; +struct sfSprite +{ + sf::Sprite This; + sfImage* Image; + sfIntRect SubRect; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new sprite +//////////////////////////////////////////////////////////// +sfSprite* sfSprite_Create() +{ + sfSprite* Sprite = new sfSprite; + Sprite->Image = NULL; + Sprite->SubRect.Left = Sprite->This.GetSubRect().Left; + Sprite->SubRect.Top = Sprite->This.GetSubRect().Top; + Sprite->SubRect.Right = Sprite->This.GetSubRect().Right; + Sprite->SubRect.Bottom = Sprite->This.GetSubRect().Bottom; + + return Sprite; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing sprite +//////////////////////////////////////////////////////////// +void sfSprite_Destroy(sfSprite* Sprite) +{ + delete Sprite; +} + + +//////////////////////////////////////////////////////////// +/// Set the X position of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetX(sfSprite* Sprite, float X) +{ + CSFML_CALL(Sprite, SetX(X)) +} + + +//////////////////////////////////////////////////////////// +/// Set the Y position of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetY(sfSprite* Sprite, float Y) +{ + CSFML_CALL(Sprite, SetY(Y)) +} + + +//////////////////////////////////////////////////////////// +/// Set the position of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetPosition(sfSprite* Sprite, float X, float Y) +{ + CSFML_CALL(Sprite, SetPosition(sf::Vector2f(X, Y))) +} + + +//////////////////////////////////////////////////////////// +/// Set the horizontal scale of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetScaleX(sfSprite* Sprite, float Scale) +{ + CSFML_CALL(Sprite, SetScaleX(Scale)) +} + + +//////////////////////////////////////////////////////////// +/// Set the vertical scale of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetScaleY(sfSprite* Sprite, float Scale) +{ + CSFML_CALL(Sprite, SetScaleY(Scale)) +} + + +//////////////////////////////////////////////////////////// +/// Set the scale of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetScale(sfSprite* Sprite, float ScaleX, float ScaleY) +{ + CSFML_CALL(Sprite, SetScale(sf::Vector2f(ScaleX, ScaleY))) +} + + +//////////////////////////////////////////////////////////// +/// Set the orientation of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetRotation(sfSprite* Sprite, float Rotation) +{ + CSFML_CALL(Sprite, SetRotation(Rotation)) +} + + +//////////////////////////////////////////////////////////// +/// Set the center of a sprite, in coordinates +/// relative to its left-top corner +//////////////////////////////////////////////////////////// +void sfSprite_SetCenter(sfSprite* Sprite, float X, float Y) +{ + CSFML_CALL(Sprite, SetCenter(sf::Vector2f(X, Y))) +} + + +//////////////////////////////////////////////////////////// +/// Set the color of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetColor(sfSprite* Sprite, sfColor Color) +{ + CSFML_CALL(Sprite, SetColor(sf::Color(Color.r, Color.g, Color.b, Color.a))) +} + + +//////////////////////////////////////////////////////////// +/// Set the blending mode for a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetBlendMode(sfSprite* Sprite, sfBlendMode Mode) +{ + CSFML_CALL(Sprite, SetBlendMode(static_cast(Mode))) +} + + +//////////////////////////////////////////////////////////// +/// Get the X position of a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetX(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetPosition().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the Y position of a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetY(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetPosition().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the horizontal scale of a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetScaleX(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetScale().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the vertical scale of a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetScaleY(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetScale().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the orientation of a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetRotation(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetRotation(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the X position of the center a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetCenterX(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetCenter().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the Y position of the center a sprite +//////////////////////////////////////////////////////////// +float sfSprite_GetCenterY(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetCenter().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the color of a sprite +//////////////////////////////////////////////////////////// +sfColor sfSprite_GetColor(sfSprite* Sprite) +{ + sfColor Color = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(Sprite, Color) + + sf::Color SFMLColor = Sprite->This.GetColor(); + return sfColor_FromRGBA(SFMLColor.r, SFMLColor.g, SFMLColor.b, SFMLColor.a); +} + + +//////////////////////////////////////////////////////////// +/// Get the current blending mode of a sprite +//////////////////////////////////////////////////////////// +sfBlendMode sfSprite_GetBlendMode(sfSprite* Sprite) +{ + CSFML_CHECK_RETURN(Sprite, sfBlendNone) + + return static_cast(Sprite->This.GetBlendMode()); +} + + +//////////////////////////////////////////////////////////// +/// Move a sprite +//////////////////////////////////////////////////////////// +void sfSprite_Move(sfSprite* Sprite, float OffsetX, float OffsetY) +{ + CSFML_CALL(Sprite, Move(sf::Vector2f(OffsetX, OffsetY))) +} + + +//////////////////////////////////////////////////////////// +/// Scale a sprite +//////////////////////////////////////////////////////////// +void sfSprite_Scale(sfSprite* Sprite, float FactorX, float FactorY) +{ + CSFML_CALL(Sprite, Scale(sf::Vector2f(FactorX, FactorY))) +} + + +//////////////////////////////////////////////////////////// +/// Rotate a sprite +//////////////////////////////////////////////////////////// +void sfSprite_Rotate(sfSprite* Sprite, float Angle) +{ + CSFML_CALL(Sprite, Rotate(Angle)) +} + + +//////////////////////////////////////////////////////////// +/// Transform a point from global coordinates into the sprite's local coordinates +/// (ie it applies the inverse of object's center, translation, rotation and scale to the point) +//////////////////////////////////////////////////////////// +void sfSprite_TransformToLocal(sfSprite* Sprite, float PointX, float PointY, float* X, float* Y) +{ + CSFML_CHECK(Sprite) + + sf::Vector2f Point = Sprite->This.TransformToLocal(sf::Vector2f(PointX, PointY)); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Transform a point from the sprite's local coordinates into global coordinates +/// (ie it applies the object's center, translation, rotation and scale to the point) +//////////////////////////////////////////////////////////// +void sfSprite_TransformToGlobal(sfSprite* Sprite, float PointX, float PointY, float* X, float* Y) +{ + CSFML_CHECK(Sprite) + + sf::Vector2f Point = Sprite->This.TransformToGlobal(sf::Vector2f(PointX, PointY)); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Change the image of a sprite +//////////////////////////////////////////////////////////// +void sfSprite_SetImage(sfSprite* Sprite, sfImage* Image) +{ + if (Image) + { + CSFML_CALL(Sprite, SetImage(Image->This)) + Sprite->Image = Image; + } +} + + +//////////////////////////////////////////////////////////// +/// Set the sub-rectangle of a sprite inside the source image +//////////////////////////////////////////////////////////// +void sfSprite_SetSubRect(sfSprite* Sprite, sfIntRect SubRect) +{ + CSFML_CALL(Sprite, SetSubRect(sf::IntRect(SubRect.Left, SubRect.Top, SubRect.Right, SubRect.Bottom))) + Sprite->SubRect = SubRect; +} + + +//////////////////////////////////////////////////////////// +/// Resize a sprite (by changing its scale factors) +//////////////////////////////////////////////////////////// +void sfSprite_Resize(sfSprite* Sprite, float Width, float Height) +{ + CSFML_CALL(Sprite, Resize(sf::Vector2f(Width, Height))) +} + + +//////////////////////////////////////////////////////////// +/// Flip a sprite horizontally +//////////////////////////////////////////////////////////// +void sfSprite_FlipX(sfSprite* Sprite, sfBool Flipped) +{ + CSFML_CALL(Sprite, FlipX(Flipped == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Flip a sprite vertically +//////////////////////////////////////////////////////////// +void sfSprite_FlipY(sfSprite* Sprite, sfBool Flipped) +{ + CSFML_CALL(Sprite, FlipY(Flipped == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Get the source image of a sprite +//////////////////////////////////////////////////////////// +sfImage* sfSprite_GetImage(sfSprite* Sprite) +{ + CSFML_CHECK_RETURN(Sprite, NULL) + + return Sprite->Image; +} + + +//////////////////////////////////////////////////////////// +/// Get the sub-rectangle of a sprite inside the source image +//////////////////////////////////////////////////////////// +sfIntRect sfSprite_GetSubRect(sfSprite* Sprite) +{ + sfIntRect Rect = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(Sprite, Rect) + + return Sprite->SubRect; +} + + +//////////////////////////////////////////////////////////// +/// Get a sprite width +//////////////////////////////////////////////////////////// +float sfSprite_GetWidth(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetSize().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get a sprite height +//////////////////////////////////////////////////////////// +float sfSprite_GetHeight(sfSprite* Sprite) +{ + CSFML_CALL_RETURN(Sprite, GetSize().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the color of a given pixel in a sprite +//////////////////////////////////////////////////////////// +sfColor sfSprite_GetPixel(sfSprite* Sprite, unsigned int X, unsigned int Y) +{ + sfColor Color = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(Sprite, Color) + + sf::Color SFMLColor = Sprite->This.GetPixel(X, Y); + return sfColor_FromRGBA(SFMLColor.r, SFMLColor.g, SFMLColor.b, SFMLColor.a); +} diff --git a/CSFML/src/SFML/Graphics/String.cpp b/CSFML/src/SFML/Graphics/String.cpp new file mode 100644 index 00000000..a9f3db47 --- /dev/null +++ b/CSFML/src/SFML/Graphics/String.cpp @@ -0,0 +1,436 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Graphics/Font.h +struct sfFont +{ + sf::Font This; +}; + +struct sfString +{ + sf::String This; + std::string Text; + sfFont* Font; + sfFloatRect Rect; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new string +//////////////////////////////////////////////////////////// +sfString* sfString_Create() +{ + sfString* String = new sfString; + String->Font = sfFont_GetDefaultFont(); + + return String; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing string +//////////////////////////////////////////////////////////// +void sfString_Destroy(sfString* String) +{ + delete String; +} + + +//////////////////////////////////////////////////////////// +/// Set the X position of a string +//////////////////////////////////////////////////////////// +void sfString_SetX(sfString* String, float X) +{ + CSFML_CALL(String, SetX(X)) +} + + +//////////////////////////////////////////////////////////// +/// Set the Y position of a string +//////////////////////////////////////////////////////////// +void sfString_SetY(sfString* String, float Y) +{ + CSFML_CALL(String, SetY(Y)) +} + + +//////////////////////////////////////////////////////////// +/// Set the position of a string +//////////////////////////////////////////////////////////// +void sfString_SetPosition(sfString* String, float X, float Y) +{ + CSFML_CALL(String, SetPosition(sf::Vector2f(X, Y))) +} + + +//////////////////////////////////////////////////////////// +/// Set the horizontal scale of a string +//////////////////////////////////////////////////////////// +void sfString_SetScaleX(sfString* String, float Scale) +{ + CSFML_CALL(String, SetScaleX(Scale)) +} + + +//////////////////////////////////////////////////////////// +/// Set the vertical scale of a string +//////////////////////////////////////////////////////////// +void sfString_SetScaleY(sfString* String, float Scale) +{ + CSFML_CALL(String, SetScaleY(Scale)) +} + + +//////////////////////////////////////////////////////////// +/// Set the scale of a string +//////////////////////////////////////////////////////////// +void sfString_SetScale(sfString* String, float ScaleX, float ScaleY) +{ + CSFML_CALL(String, SetScale(sf::Vector2f(ScaleX, ScaleY))) +} + + +//////////////////////////////////////////////////////////// +/// Set the orientation of a string +//////////////////////////////////////////////////////////// +void sfString_SetRotation(sfString* String, float Rotation) +{ + CSFML_CALL(String, SetRotation(Rotation)) +} + + +//////////////////////////////////////////////////////////// +/// Set the center of a string, in coordinates +/// relative to its left-top corner +//////////////////////////////////////////////////////////// +void sfString_SetCenter(sfString* String, float X, float Y) +{ + CSFML_CALL(String, SetCenter(sf::Vector2f(X, Y))) +} + + +//////////////////////////////////////////////////////////// +/// Set the color of a string +//////////////////////////////////////////////////////////// +void sfString_SetColor(sfString* String, sfColor Color) +{ + CSFML_CALL(String, SetColor(sf::Color(Color.r, Color.g, Color.b, Color.a))) +} + + +//////////////////////////////////////////////////////////// +/// Set the blending mode for a string +//////////////////////////////////////////////////////////// +void sfString_SetBlendMode(sfString* String, sfBlendMode Mode) +{ + CSFML_CALL(String, SetBlendMode(static_cast(Mode))) +} + + +//////////////////////////////////////////////////////////// +/// Get the X position of a string +//////////////////////////////////////////////////////////// +float sfString_GetX(sfString* String) +{ + CSFML_CALL_RETURN(String, GetPosition().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the Y position of a string +//////////////////////////////////////////////////////////// +float sfString_GetY(sfString* String) +{ + CSFML_CALL_RETURN(String, GetPosition().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the horizontal scale of a string +//////////////////////////////////////////////////////////// +float sfString_GetScaleX(sfString* String) +{ + CSFML_CALL_RETURN(String, GetScale().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the vertical scale of a string +//////////////////////////////////////////////////////////// +float sfString_GetScaleY(sfString* String) +{ + CSFML_CALL_RETURN(String, GetScale().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the orientation of a string +//////////////////////////////////////////////////////////// +float sfString_GetRotation(sfString* String) +{ + CSFML_CALL_RETURN(String, GetRotation(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the X position of the center a string +//////////////////////////////////////////////////////////// +float sfString_GetCenterX(sfString* String) +{ + CSFML_CALL_RETURN(String, GetCenter().x, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the top Y of the center of a string +//////////////////////////////////////////////////////////// +float sfString_GetCenterY(sfString* String) +{ + CSFML_CALL_RETURN(String, GetCenter().y, 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the color of a string +//////////////////////////////////////////////////////////// +sfColor sfString_GetColor(sfString* String) +{ + sfColor Color = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(String, Color) + + sf::Color SFMLColor = String->This.GetColor(); + return sfColor_FromRGBA(SFMLColor.r, SFMLColor.g, SFMLColor.b, SFMLColor.a); +} + + +//////////////////////////////////////////////////////////// +/// Get the current blending mode of a string +//////////////////////////////////////////////////////////// +sfBlendMode sfString_GetBlendMode(sfString* String) +{ + CSFML_CHECK_RETURN(String, sfBlendNone) + + return static_cast(String->This.GetBlendMode()); +} + + +//////////////////////////////////////////////////////////// +/// Move a string +//////////////////////////////////////////////////////////// +void sfString_Move(sfString* String, float OffsetX, float OffsetY) +{ + CSFML_CALL(String, Move(sf::Vector2f(OffsetX, OffsetY))) +} + + +//////////////////////////////////////////////////////////// +/// Scale a string +//////////////////////////////////////////////////////////// +void sfString_Scale(sfString* String, float FactorX, float FactorY) +{ + CSFML_CALL(String, Scale(sf::Vector2f(FactorX, FactorY))) +} + + +//////////////////////////////////////////////////////////// +/// Rotate a string +//////////////////////////////////////////////////////////// +void sfString_Rotate(sfString* String, float Angle) +{ + CSFML_CALL(String, Rotate(Angle)) +} + + +//////////////////////////////////////////////////////////// +/// Transform a point from global coordinates into the string's local coordinates +/// (ie it applies the inverse of object's center, translation, rotation and scale to the point) +//////////////////////////////////////////////////////////// +void sfString_TransformToLocal(sfString* String, float PointX, float PointY, float* X, float* Y) +{ + CSFML_CHECK(String) + + sf::Vector2f Point = String->This.TransformToLocal(sf::Vector2f(PointX, PointY)); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Transform a point from the string's local coordinates into global coordinates +/// (ie it applies the object's center, translation, rotation and scale to the point) +//////////////////////////////////////////////////////////// +void sfString_TransformToGlobal(sfString* String, float PointX, float PointY, float* X, float* Y) +{ + CSFML_CHECK(String) + + sf::Vector2f Point = String->This.TransformToGlobal(sf::Vector2f(PointX, PointY)); + if (X) *X = Point.x; + if (Y) *Y = Point.y; +} + + +//////////////////////////////////////////////////////////// +/// Set the text of a string (from a multibyte string) +//////////////////////////////////////////////////////////// +void sfString_SetText(sfString* String, const char* Text) +{ + CSFML_CALL(String, SetText(Text)) +} + + +//////////////////////////////////////////////////////////// +/// Set the text of a string (from a unicode string) +//////////////////////////////////////////////////////////// +void sfString_SetUnicodeText(sfString* String, const sfUint32* Text) +{ + sf::Unicode::UTF32String UTF32Text = Text; + CSFML_CALL(String, SetText(UTF32Text)) +} + + +//////////////////////////////////////////////////////////// +/// Set the font of a string +//////////////////////////////////////////////////////////// +void sfString_SetFont(sfString* String, sfFont* Font) +{ + CSFML_CHECK(Font); + + CSFML_CALL(String, SetFont(Font->This)) + String->Font = Font; +} + + +//////////////////////////////////////////////////////////// +/// Set the size of a string +//////////////////////////////////////////////////////////// +void sfString_SetSize(sfString* String, float Size) +{ + CSFML_CALL(String, SetSize(Size)) +} + + +//////////////////////////////////////////////////////////// +/// Set the style of a string +//////////////////////////////////////////////////////////// +void sfString_SetStyle(sfString* String, unsigned long Style) +{ + CSFML_CALL(String, SetStyle(Style)) +} + + +//////////////////////////////////////////////////////////// +/// Get the text of a string (returns a unicode string) +//////////////////////////////////////////////////////////// +const sfUint32* sfString_GetUnicodeText(sfString* String) +{ + CSFML_CHECK_RETURN(String, NULL) + + return static_cast(String->This.GetText()).c_str(); +} + + +//////////////////////////////////////////////////////////// +/// Get the text of a string (returns an ANSI string) +//////////////////////////////////////////////////////////// +const char* sfString_GetText(sfString* String) +{ + CSFML_CHECK_RETURN(String, NULL) + + String->Text = String->This.GetText(); + + return String->Text.c_str(); +} + + +//////////////////////////////////////////////////////////// +/// Get the font used by a string +//////////////////////////////////////////////////////////// +sfFont* sfString_GetFont(sfString* String) +{ + CSFML_CHECK_RETURN(String, NULL) + + return String->Font; +} + + +//////////////////////////////////////////////////////////// +/// Get the size of the characters of a string +//////////////////////////////////////////////////////////// +float sfString_GetSize(sfString* String) +{ + CSFML_CALL_RETURN(String, GetSize(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Get the style of a string +//////////////////////////////////////////////////////////// +unsigned long sfString_GetStyle(sfString* String) +{ + CSFML_CALL_RETURN(String, GetStyle(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Return the visual position of the Index-th character of the string, +/// in coordinates relative to the string +/// (note : translation, center, rotation and scale are not applied) +//////////////////////////////////////////////////////////// +void sfString_GetCharacterPos(sfString* String, size_t Index, float* X, float* Y) +{ + CSFML_CHECK(String); + + sf::Vector2f Pos = String->This.GetCharacterPos(Index); + if (X) *X = Pos.x; + if (Y) *Y = Pos.y; +} + + +//////////////////////////////////////////////////////////// +/// Get the bounding rectangle of a string on screen +//////////////////////////////////////////////////////////// +sfFloatRect sfString_GetRect(sfString* String) +{ + sfFloatRect Rect = {0.f, 0.f, 0.f, 0.f}; + CSFML_CHECK_RETURN(String, Rect) + + sf::FloatRect SFMLRect = String->This.GetRect(); + String->Rect.Left = SFMLRect.Left; + String->Rect.Top = SFMLRect.Top; + String->Rect.Right = SFMLRect.Right; + String->Rect.Bottom = SFMLRect.Bottom; + + return String->Rect; +} diff --git a/CSFML/src/SFML/Graphics/View.cpp b/CSFML/src/SFML/Graphics/View.cpp new file mode 100644 index 00000000..40af230e --- /dev/null +++ b/CSFML/src/SFML/Graphics/View.cpp @@ -0,0 +1,175 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +struct sfView +{ + sfView() : This(new sf::View) {} + sfView(sfFloatRect Rect) : This(new sf::View(sf::FloatRect(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom))) {} + ~sfView() {delete This;} + + sf::View* This; // pointer needed for RenderView +}; + + +//////////////////////////////////////////////////////////// +/// Construct a default view (1000x1000) +//////////////////////////////////////////////////////////// +sfView* sfView_Create() +{ + return new sfView; +} + + +//////////////////////////////////////////////////////////// +/// Construct a view from a rectangle +//////////////////////////////////////////////////////////// +sfView* sfView_CreateFromRect(sfFloatRect Rect) +{ + return new sfView(Rect); +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing view +//////////////////////////////////////////////////////////// +void sfView_Destroy(sfView* View) +{ + delete View; +} + + +//////////////////////////////////////////////////////////// +/// Change the center of a view +//////////////////////////////////////////////////////////// +void sfView_SetCenter(sfView* View, float X, float Y) +{ + CSFML_CALL_PTR(View, SetCenter(X, Y)); +} + + +//////////////////////////////////////////////////////////// +/// Change the half-size of a view +//////////////////////////////////////////////////////////// +void sfView_SetHalfSize(sfView* View, float HalfWidth, float HalfHeight) +{ + CSFML_CALL_PTR(View, SetHalfSize(HalfWidth, HalfHeight)); +} + + +//////////////////////////////////////////////////////////// +/// Rebuild a view from a rectangle +//////////////////////////////////////////////////////////// +void sfView_SetFromRect(sfView* View, sfFloatRect ViewRect) +{ + CSFML_CALL_PTR(View, SetFromRect(sf::FloatRect(ViewRect.Left, ViewRect.Top, ViewRect.Right, ViewRect.Bottom))); +} + + +//////////////////////////////////////////////////////////// +/// Get the X coordinate of the center of a view +//////////////////////////////////////////////////////////// +float sfView_GetCenterX(sfView* View) +{ + CSFML_CHECK_RETURN(View, 0.f); + + return View->This->GetCenter().x; +} + + +//////////////////////////////////////////////////////////// +/// Get the Y coordinate of the center of a view +//////////////////////////////////////////////////////////// +float sfView_GetCenterY(sfView* View) +{ + CSFML_CHECK_RETURN(View, 0.f); + + return View->This->GetCenter().y; +} + + +//////////////////////////////////////////////////////////// +/// Get the half-width of the view +//////////////////////////////////////////////////////////// +float sfView_GetHalfSizeY(sfView* View) +{ + CSFML_CHECK_RETURN(View, 0.f); + + return View->This->GetHalfSize().x; +} + + +//////////////////////////////////////////////////////////// +/// Get the half-height of the view +//////////////////////////////////////////////////////////// +float sfView_GetHalfSizeX(sfView* View) +{ + CSFML_CHECK_RETURN(View, 0.f); + + return View->This->GetHalfSize().y; +} + + +//////////////////////////////////////////////////////////// +/// Get the bounding rectangle of a view +//////////////////////////////////////////////////////////// +sfFloatRect sfView_GetRect(sfView* View) +{ + sfFloatRect Rect = {0, 0, 0, 0}; + CSFML_CHECK_RETURN(View, Rect); + + sf::FloatRect SFMLRect = View->This->GetRect(); + Rect.Left = SFMLRect.Left; + Rect.Top = SFMLRect.Top; + Rect.Right = SFMLRect.Right; + Rect.Bottom = SFMLRect.Bottom; + + return Rect; +} + + +//////////////////////////////////////////////////////////// +/// Move a view +//////////////////////////////////////////////////////////// +void sfView_Move(sfView* View, float OffsetX, float OffsetY) +{ + CSFML_CALL_PTR(View, Move(OffsetX, OffsetY)); +} + + +//////////////////////////////////////////////////////////// +/// Resize a view rectangle to simulate a zoom / unzoom effect +//////////////////////////////////////////////////////////// +void sfView_Zoom(sfView* View, float Factor) +{ + CSFML_CALL_PTR(View, Zoom(Factor)); +} diff --git a/CSFML/src/SFML/Internal.h b/CSFML/src/SFML/Internal.h new file mode 100644 index 00000000..e7c96631 --- /dev/null +++ b/CSFML/src/SFML/Internal.h @@ -0,0 +1,104 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +// Define macros to check the validity of CSFML objects +// in debug run +//////////////////////////////////////////////////////////// +#include + +#ifndef NDEBUG + + #define CSFML_CHECK(Object) \ + if (Object == NULL) \ + { \ + fprintf(stderr, "SFML warning : trying to use a null " #Object " object\n"); \ + return; \ + } + + #define CSFML_CALL(Object, Function) \ + if (Object) \ + { \ + (Object->This.Function); \ + } \ + else \ + { \ + fprintf(stderr, "SFML warning : trying to use a null " #Object " object\n"); \ + } \ + + #define CSFML_CALL_PTR(Object, Function) \ + if (Object) \ + { \ + (Object->This->Function); \ + } \ + else \ + { \ + fprintf(stderr, "SFML warning : trying to use a null " #Object " object\n"); \ + } \ + + #define CSFML_CHECK_RETURN(Object, Default) \ + if (Object == NULL) \ + { \ + fprintf(stderr, "SFML warning : trying to use a null " #Object " object\n"); \ + return Default; \ + } + + #define CSFML_CALL_RETURN(Object, Function, Default) \ + if (Object) \ + { \ + return (Object->This.Function); \ + } \ + else \ + { \ + fprintf(stderr, "SFML warning : trying to use a null " #Object " object\n"); \ + return Default; \ + } \ + + #define CSFML_CALL_PTR_RETURN(Object, Function, Default) \ + if (Object) \ + { \ + return (Object->This->Function); \ + } \ + else \ + { \ + fprintf(stderr, "SFML warning : trying to use a null " #Object " object\n"); \ + return Default; \ + } \ + +#else + + #define CSFML_CHECK(Object) + + #define CSFML_CALL(Object, Function) (Object->This.Function); + + #define CSFML_CALL_PTR(Object, Function) (Object->This->Function); + + #define CSFML_CHECK_RETURN(Object, Default) + + #define CSFML_CALL_RETURN(Object, Function, Default) return (Object->This.Function); + + #define CSFML_CALL_PTR_RETURN(Object, Function, Default) return (Object->This->Function); + +#endif diff --git a/CSFML/src/SFML/Makefile b/CSFML/src/SFML/Makefile new file mode 100644 index 00000000..cd2f22e4 --- /dev/null +++ b/CSFML/src/SFML/Makefile @@ -0,0 +1,42 @@ +export CC = gcc +export CPP = g++ +export CFLAGS = -W -Wall -pedantic -fPIC -Wno-unused -I../.. -I../../../include -DNDEBUG -DCSFML_EXPORTS -O2 +export LDFLAGS = -shared +export LIBPATH = ../../../lib +export VERSION = 1.4 +export CP = cp +export LN = ln +export LNFLAGS = -s -f +export DESTDIR = /usr +export DESTLIBDIR = $(DESTDIR)/lib +export DESTINCDIR = $(DESTDIR)/include + +all: csfml-system csfml-window csfml-network csfml-graphics csfml-audio + +csfml-system: + @(cd ./System && $(MAKE)) + +csfml-window: + @(cd ./Window && $(MAKE)) + +csfml-network: + @(cd ./Network && $(MAKE)) + +csfml-graphics: + @(cd ./Graphics && $(MAKE)) + +csfml-audio: + @(cd ./Audio && $(MAKE)) + +.PHONY: clean mrproper + +clean: + @(cd ./System && $(MAKE) $@ && cd ../Window && $(MAKE) $@ && cd ../Network && $(MAKE) $@ && cd ../Graphics && $(MAKE) $@ && cd ../Audio && $(MAKE) $@) + +mrproper: clean + @(cd ./System && $(MAKE) $@ && cd ../Window && $(MAKE) $@ && cd ../Network && $(MAKE) $@ && cd ../Graphics && $(MAKE) $@ && cd ../Audio && $(MAKE) $@) + +install: + @(mkdir -p $(DESTLIBDIR)) + @(mkdir -p $(DESTINCDIR)) + @(cd ./System && $(MAKE) $@ && cd ../Window && $(MAKE) $@ && cd ../Network && $(MAKE) $@ && cd ../Graphics && $(MAKE) $@ && cd ../Audio && $(MAKE) $@ && $(CP) -r ../../../include/SFML/ $(DESTINCDIR)) diff --git a/CSFML/src/SFML/Network/Ftp.cpp b/CSFML/src/SFML/Network/Ftp.cpp new file mode 100644 index 00000000..53e15bf1 --- /dev/null +++ b/CSFML/src/SFML/Network/Ftp.cpp @@ -0,0 +1,396 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +struct sfFtpListingResponse +{ + sfFtpListingResponse(const sf::Ftp::ListingResponse& Response) : This(Response) {} + + sf::Ftp::ListingResponse This; +}; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp directory response +//////////////////////////////////////////////////////////// +void sfFtpListingResponse_Destroy(sfFtpListingResponse* FtpListingResponse) +{ + delete FtpListingResponse; +} + +//////////////////////////////////////////////////////////// +/// Convenience function to check if the response status code +/// means a success +//////////////////////////////////////////////////////////// +sfBool sfFtpListingResponse_IsOk(sfFtpListingResponse* FtpListingResponse) +{ + CSFML_CALL_RETURN(FtpListingResponse, IsOk(), sfFalse); +} + +//////////////////////////////////////////////////////////// +/// Get the response status code +//////////////////////////////////////////////////////////// +sfFtpStatus sfFtpListingResponse_GetStatus(sfFtpListingResponse* FtpListingResponse) +{ + CSFML_CHECK_RETURN(FtpListingResponse, sfFtpInvalidResponse); + + return static_cast(FtpListingResponse->This.GetStatus()); +} + +//////////////////////////////////////////////////////////// +/// Get the full message contained in the response +//////////////////////////////////////////////////////////// +const char* sfFtpListingResponse_GetMessage(sfFtpListingResponse* FtpListingResponse) +{ + CSFML_CHECK_RETURN(FtpListingResponse, NULL); + + return FtpListingResponse->This.GetMessage().c_str(); +} + +//////////////////////////////////////////////////////////// +/// Get the number of filenames in the listing +//////////////////////////////////////////////////////////// +size_t sfFtpListingResponse_GetCount(sfFtpListingResponse* FtpListingResponse) +{ + CSFML_CALL_RETURN(FtpListingResponse, GetCount(), 0); +} + +//////////////////////////////////////////////////////////// +/// Get the Index-th filename in the directory +//////////////////////////////////////////////////////////// +const char* sfFtpListingResponse_GetFilename(sfFtpListingResponse* FtpListingResponse, size_t Index) +{ + CSFML_CHECK_RETURN(FtpListingResponse, NULL); + + return FtpListingResponse->This.GetFilename(Index).c_str(); +} + + +struct sfFtpDirectoryResponse +{ + sfFtpDirectoryResponse(const sf::Ftp::DirectoryResponse& Response) : This(Response) {} + + sf::Ftp::DirectoryResponse This; +}; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp directory response +//////////////////////////////////////////////////////////// +void sfFtpDirectoryResponse_Destroy(sfFtpDirectoryResponse* FtpDirectoryResponse) +{ + delete FtpDirectoryResponse; +} + +//////////////////////////////////////////////////////////// +/// Convenience function to check if the response status code +/// means a success +//////////////////////////////////////////////////////////// +sfBool sfFtpDirectoryResponse_IsOk(sfFtpDirectoryResponse* FtpDirectoryResponse) +{ + CSFML_CALL_RETURN(FtpDirectoryResponse, IsOk(), sfFalse); +} + +//////////////////////////////////////////////////////////// +/// Get the response status code +//////////////////////////////////////////////////////////// +sfFtpStatus sfFtpDirectoryResponse_GetStatus(sfFtpDirectoryResponse* FtpDirectoryResponse) +{ + CSFML_CHECK_RETURN(FtpDirectoryResponse, sfFtpInvalidResponse); + + return static_cast(FtpDirectoryResponse->This.GetStatus()); +} + +//////////////////////////////////////////////////////////// +/// Get the full message contained in the response +//////////////////////////////////////////////////////////// +const char* sfFtpDirectoryResponse_GetMessage(sfFtpDirectoryResponse* FtpDirectoryResponse) +{ + CSFML_CHECK_RETURN(FtpDirectoryResponse, NULL); + + return FtpDirectoryResponse->This.GetMessage().c_str(); +} + +//////////////////////////////////////////////////////////// +/// Get the directory returned in the response +//////////////////////////////////////////////////////////// +const char* sfFtpDirectoryResponse_GetDirectory(sfFtpDirectoryResponse* FtpDirectoryResponse) +{ + CSFML_CHECK_RETURN(FtpDirectoryResponse, NULL); + + return FtpDirectoryResponse->This.GetDirectory().c_str(); +} + + +struct sfFtpResponse +{ + sfFtpResponse(const sf::Ftp::Response& Response) : This(Response) {} + + sf::Ftp::Response This; +}; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp response +//////////////////////////////////////////////////////////// +void sfFtpResponse_Destroy(sfFtpResponse* FtpResponse) +{ + delete FtpResponse; +} + + +//////////////////////////////////////////////////////////// +/// Convenience function to check if the response status code +/// means a success +//////////////////////////////////////////////////////////// +sfBool sfFtpResponse_IsOk(sfFtpResponse* FtpResponse) +{ + CSFML_CALL_RETURN(FtpResponse, IsOk(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the response status code +//////////////////////////////////////////////////////////// +sfFtpStatus sfFtpResponse_GetStatus(sfFtpResponse* FtpResponse) +{ + CSFML_CHECK_RETURN(FtpResponse, sfFtpInvalidResponse); + + return static_cast(FtpResponse->This.GetStatus()); +} + + +//////////////////////////////////////////////////////////// +/// Get the full message contained in the response +//////////////////////////////////////////////////////////// +const char* sfFtpResponse_GetMessage(sfFtpResponse* FtpResponse) +{ + CSFML_CHECK_RETURN(FtpResponse, NULL); + + return FtpResponse->This.GetMessage().c_str(); +} + + +struct sfFtp +{ + sf::Ftp This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new Ftp +//////////////////////////////////////////////////////////// +sfFtp* sfFtp_Create() +{ + return new sfFtp; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Ftp +//////////////////////////////////////////////////////////// +void sfFtp_Destroy(sfFtp* Ftp) +{ + delete Ftp; +} + + +//////////////////////////////////////////////////////////// +/// Connect to the specified FTP server +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_Connect(sfFtp* Ftp, sfIPAddress Server, unsigned short Port, float Timeout) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + sf::IPAddress SFMLServer(Server.Address); + + return new sfFtpResponse(Ftp->This.Connect(SFMLServer, Port, Timeout)); +} + + +//////////////////////////////////////////////////////////// +/// Log in using anonymous account +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_LoginAnonymous(sfFtp* Ftp) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.Login()); +} + + +//////////////////////////////////////////////////////////// +/// Log in using a username and a password +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_Login(sfFtp* Ftp, const char* UserName, const char* Password) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.Login(UserName ? UserName : "", Password ? Password : "")); +} + + +//////////////////////////////////////////////////////////// +/// Close the connection with FTP server +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_Disconnect(sfFtp* Ftp) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.Disconnect()); +} + + +//////////////////////////////////////////////////////////// +/// Send a null command just to prevent from being disconnected +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_KeepAlive(sfFtp* Ftp) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.KeepAlive()); +} + + +//////////////////////////////////////////////////////////// +/// Get the current working directory +//////////////////////////////////////////////////////////// +sfFtpDirectoryResponse* sfFtp_GetWorkingDirectory(sfFtp* Ftp) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpDirectoryResponse(Ftp->This.GetWorkingDirectory()); +} + + +//////////////////////////////////////////////////////////// +/// Get the contents of the given directory +/// (subdirectories and files) +//////////////////////////////////////////////////////////// +sfFtpListingResponse* sfFtp_GetDirectoryListing(sfFtp* Ftp, const char* Directory) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpListingResponse(Ftp->This.GetDirectoryListing(Directory ? Directory : "")); +} + + +//////////////////////////////////////////////////////////// +/// Change the current working directory +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_ChangeDirectory(sfFtp* Ftp, const char* Directory) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.ChangeDirectory(Directory ? Directory : "")); +} + + +//////////////////////////////////////////////////////////// +/// Go to the parent directory of the current one +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_ParentDirectory(sfFtp* Ftp) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.ParentDirectory()); +} + + +//////////////////////////////////////////////////////////// +/// Create a new directory +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_MakeDirectory(sfFtp* Ftp, const char* Name) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.MakeDirectory(Name ? Name : "")); +} + + +//////////////////////////////////////////////////////////// +/// Remove an existing directory +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_DeleteDirectory(sfFtp* Ftp, const char* Name) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.DeleteDirectory(Name ? Name : "")); +} + + +//////////////////////////////////////////////////////////// +/// Rename a file +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_RenameFile(sfFtp* Ftp, const char* File, const char* NewName) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.RenameFile(File ? File : "", NewName ? NewName : "")); +} + + +//////////////////////////////////////////////////////////// +/// Remove an existing file +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_DeleteFile(sfFtp* Ftp, const char* Name) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.DeleteFile(Name ? Name : "")); +} + + +//////////////////////////////////////////////////////////// +/// Download a file from the server +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_Download(sfFtp* Ftp, const char* DistantFile, const char* DestPath, sfFtpTransferMode Mode) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.Download(DistantFile ? DistantFile : "", + DestPath ? DestPath : "", + static_cast(Mode))); +} + + +//////////////////////////////////////////////////////////// +/// Upload a file to the server +//////////////////////////////////////////////////////////// +sfFtpResponse* sfFtp_Upload(sfFtp* Ftp, const char* LocalFile, const char* DestPath, sfFtpTransferMode Mode) +{ + CSFML_CHECK_RETURN(Ftp, NULL); + + return new sfFtpResponse(Ftp->This.Upload(LocalFile ? LocalFile : "", + DestPath ? DestPath : "", + static_cast(Mode))); +} diff --git a/CSFML/src/SFML/Network/Http.cpp b/CSFML/src/SFML/Network/Http.cpp new file mode 100644 index 00000000..1b8fe9ed --- /dev/null +++ b/CSFML/src/SFML/Network/Http.cpp @@ -0,0 +1,231 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfHttpRequest +{ + sf::Http::Request This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new Http request +//////////////////////////////////////////////////////////// +sfHttpRequest* sfHttpRequest_Create() +{ + return new sfHttpRequest; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Http request +//////////////////////////////////////////////////////////// +void sfHttpRequest_Destroy(sfHttpRequest* HttpRequest) +{ + delete HttpRequest; +} + + +//////////////////////////////////////////////////////////// +/// Set the value of a field; the field is added if it doesn't exist +//////////////////////////////////////////////////////////// +void sfHttpRequest_SetField(sfHttpRequest* HttpRequest, const char* Field, const char* Value) +{ + CSFML_CHECK(HttpRequest); + if (Field) + HttpRequest->This.SetField(Field, Value); +} + + +//////////////////////////////////////////////////////////// +/// Set the request method. +/// This parameter is sfHttpGet by default +//////////////////////////////////////////////////////////// +void sfHttpRequest_SetMethod(sfHttpRequest* HttpRequest, sfHttpMethod Method) +{ + CSFML_CALL(HttpRequest, SetMethod(static_cast(Method))); +} + + +//////////////////////////////////////////////////////////// +/// Set the target URI of the request. +/// This parameter is "/" by default +//////////////////////////////////////////////////////////// +void sfHttpRequest_SetURI(sfHttpRequest* HttpRequest, const char* URI) +{ + CSFML_CALL(HttpRequest, SetURI(URI ? URI : "")); +} + + +//////////////////////////////////////////////////////////// +/// Set the HTTP version of the request. +/// This parameter is 1.0 by default +//////////////////////////////////////////////////////////// +void sfHttpRequest_SetHttpVersion(sfHttpRequest* HttpRequest, unsigned int Major, unsigned int Minor) +{ + CSFML_CALL(HttpRequest, SetHttpVersion(Major, Minor)); +} + + +//////////////////////////////////////////////////////////// +/// Set the body of the request. This parameter is optional and +/// makes sense only for POST requests. +/// This parameter is empty by default +//////////////////////////////////////////////////////////// +void sfHttpRequest_SetBody(sfHttpRequest* HttpRequest, const char* Body) +{ + CSFML_CALL(HttpRequest, SetBody(Body ? Body : "")); +} + + +struct sfHttpResponse +{ + sf::Http::Response This; +}; + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Http response +//////////////////////////////////////////////////////////// +void sfHttpResponse_Destroy(sfHttpResponse* HttpResponse) +{ + delete HttpResponse; +} + + +//////////////////////////////////////////////////////////// +/// Get the value of a field; returns NULL if the field doesn't exist +//////////////////////////////////////////////////////////// +const char* sfHttpResponse_GetField(sfHttpResponse* HttpResponse, const char* Field) +{ + CSFML_CHECK_RETURN(HttpResponse, NULL); + if (!Field) + return NULL; + + return HttpResponse->This.GetField(Field).c_str(); +} + + +//////////////////////////////////////////////////////////// +/// Get the status of a response +//////////////////////////////////////////////////////////// +sfHttpStatus sfHttpResponse_GetStatus(sfHttpResponse* HttpResponse) +{ + CSFML_CHECK_RETURN(HttpResponse, sfHttpInvalidResponse); + + return static_cast(HttpResponse->This.GetStatus()); +} + + +//////////////////////////////////////////////////////////// +/// Get the major HTTP version of a response +//////////////////////////////////////////////////////////// +unsigned int sfHttpResponse_GetMajorVersion(sfHttpResponse* HttpResponse) +{ + CSFML_CALL_RETURN(HttpResponse, GetMajorHttpVersion(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the minor HTTP version of a response +//////////////////////////////////////////////////////////// +unsigned int sfHttpResponse_GetMinorVersion(sfHttpResponse* HttpResponse) +{ + CSFML_CALL_RETURN(HttpResponse, GetMinorHttpVersion(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the body of the response. The body can contain : +/// - the requested page (for GET requests) +/// - a response from the server (for POST requests) +/// - nothing (for HEAD requests) +/// - an error message (in case of an error) +//////////////////////////////////////////////////////////// +const char* sfHttpResponse_GetBody(sfHttpResponse* HttpResponse) +{ + CSFML_CHECK_RETURN(HttpResponse, NULL); + + return HttpResponse->This.GetBody().c_str(); +} + + +struct sfHttp +{ + sf::Http This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new Http object +//////////////////////////////////////////////////////////// +sfHttp* sfHttp_Create() +{ + return new sfHttp; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing Http object +//////////////////////////////////////////////////////////// +void sfHttp_Destroy(sfHttp* Http) +{ + delete Http; +} + + +//////////////////////////////////////////////////////////// +/// Set the target host of a Http server +//////////////////////////////////////////////////////////// +void sfHttp_SetHost(sfHttp* Http, const char* Host, unsigned short Port) +{ + CSFML_CALL(Http, SetHost(Host ? Host : "", Port)); +} + + +//////////////////////////////////////////////////////////// +/// Send a HTTP request and return the server's response. +/// You must be connected to a host before sending requests. +/// Any missing mandatory header field will be added with an appropriate value. +/// Warning : this function waits for the server's response and may +/// not return instantly; use a thread if you don't want to block your +/// application. +//////////////////////////////////////////////////////////// +sfHttpResponse* sfHttp_SendRequest(sfHttp* Http, sfHttpRequest* Request, float Timeout) +{ + CSFML_CHECK_RETURN(Http, NULL); + CSFML_CHECK_RETURN(Request, NULL); + + sfHttpResponse* Response = new sfHttpResponse; + Response->This = Http->This.SendRequest(Request->This, Timeout); + + return Response; +} diff --git a/CSFML/src/SFML/Network/IPAddress.cpp b/CSFML/src/SFML/Network/IPAddress.cpp new file mode 100644 index 00000000..75be0391 --- /dev/null +++ b/CSFML/src/SFML/Network/IPAddress.cpp @@ -0,0 +1,138 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace +{ + //////////////////////////////////////////////////////////// + /// Helper function for converting a SFML address to a CSFML one + //////////////////////////////////////////////////////////// + sfIPAddress FromSFMLAddress(sf::IPAddress Address) + { + sfIPAddress Result; + strncpy(Result.Address, Address.ToString().c_str(), 16); + + return Result; + } + + //////////////////////////////////////////////////////////// + /// Helper function for converting a CSFML address to a SFML one + //////////////////////////////////////////////////////////// + sf::IPAddress ToSFMLAddress(sfIPAddress Address) + { + return sf::IPAddress(Address.Address); + } +} + + +//////////////////////////////////////////////////////////// +/// Construct an address from a string +//////////////////////////////////////////////////////////// +sfIPAddress sfIPAddress_FromString(const char* String) +{ + return FromSFMLAddress(sf::IPAddress(String)); +} + + +//////////////////////////////////////////////////////////// +/// Construct an address from 4 bytes +//////////////////////////////////////////////////////////// +sfIPAddress sfIPAddress_FromBytes(sfUint8 Byte0, sfUint8 Byte1, sfUint8 Byte2, sfUint8 Byte3) +{ + return FromSFMLAddress(sf::IPAddress(Byte0, Byte1, Byte2, Byte3)); +} + + +//////////////////////////////////////////////////////////// +/// Construct the address from a 32-bits integer +//////////////////////////////////////////////////////////// +sfIPAddress sfIPAddress_FromInteger(sfUint32 Address) +{ + return FromSFMLAddress(sf::IPAddress(Address)); +} + + +//////////////////////////////////////////////////////////// +/// Tell if an address is a valid one +//////////////////////////////////////////////////////////// +sfBool sfIPAddress_IsValid(sfIPAddress Address) +{ + return ToSFMLAddress(Address).IsValid() ? sfTrue : sfFalse; +} + + +//////////////////////////////////////////////////////////// +/// Get a string representation of an address +//////////////////////////////////////////////////////////// +void sfIPAddress_ToString(sfIPAddress Address, char* String) +{ + if (String) + strcpy(String, Address.Address); +} + + +//////////////////////////////////////////////////////////// +/// Get an integer representation of the address +//////////////////////////////////////////////////////////// +sfUint32 sfIPAddress_ToInteger(sfIPAddress Address) +{ + return ToSFMLAddress(Address).ToInteger(); +} + + +//////////////////////////////////////////////////////////// +/// Get the computer's local IP address (from the LAN point of view) +//////////////////////////////////////////////////////////// +sfIPAddress sfIPAddress_GetLocalAddress() +{ + return FromSFMLAddress(sf::IPAddress::GetLocalAddress()); +} + + +//////////////////////////////////////////////////////////// +/// Get the computer's public IP address (from the web point of view). +/// The only way to get a public address is to ask it to a +/// distant website ; as a consequence, this function may be +/// very slow -- use it as few as possible ! +//////////////////////////////////////////////////////////// +sfIPAddress sfIPAddress_GetPublicAddress(float Timeout) +{ + return FromSFMLAddress(sf::IPAddress::GetPublicAddress(Timeout)); +} + + +//////////////////////////////////////////////////////////// +/// Get the computer's loopback address +//////////////////////////////////////////////////////////// +sfIPAddress sfIPAddress_LocalHost() +{ + return FromSFMLAddress(sf::IPAddress::LocalHost); +} diff --git a/CSFML/src/SFML/Network/Makefile b/CSFML/src/SFML/Network/Makefile new file mode 100644 index 00000000..924907e0 --- /dev/null +++ b/CSFML/src/SFML/Network/Makefile @@ -0,0 +1,23 @@ +LIB = libcsfml-network.so +SRC = $(wildcard *.cpp) +OBJ = $(SRC:.cpp=.o) +LIBNAME = $(LIBPATH)/$(LIB).$(VERSION) + +all: $(LIB) + +libcsfml-network.so: $(OBJ) + $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lsfml-network + +$(OBJ): %.o: %.cpp + $(CPP) -o $@ -c $< $(CFLAGS) + +.PHONY: clean mrproper + +clean: + @rm -rf $(OBJ) + +mrproper: clean + @rm -rf $(LIBNAME) + +install: + @($(CP) $(LIBNAME) $(DESTLIBDIR) && $(LN) $(LNFLAGS) $(DESTLIBDIR)/$(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)) diff --git a/CSFML/src/SFML/Network/Packet.cpp b/CSFML/src/SFML/Network/Packet.cpp new file mode 100644 index 00000000..7c92d78f --- /dev/null +++ b/CSFML/src/SFML/Network/Packet.cpp @@ -0,0 +1,204 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfPacket +{ + sf::Packet This; +}; + + +namespace +{ + //////////////////////////////////////////////////////////// + /// Helper function to read a variable from a packet + //////////////////////////////////////////////////////////// + template + T PacketRead(sfPacket* Packet, T Default = 0) + { + CSFML_CHECK_RETURN(Packet, Default); + + T Value; + Packet->This >> Value; + return Value; + } + + //////////////////////////////////////////////////////////// + /// Helper function to write a variable to a packet + //////////////////////////////////////////////////////////// + template + void PacketWrite(sfPacket* Packet, T Value) + { + CSFML_CHECK(Packet); + + Packet->This << Value; + } +} + + +//////////////////////////////////////////////////////////// +/// Create a new empty packet +//////////////////////////////////////////////////////////// +sfPacket* sfPacket_Create() +{ + return new sfPacket; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing packet +//////////////////////////////////////////////////////////// +void sfPacket_Destroy(sfPacket* Packet) +{ + delete Packet; +} + + +//////////////////////////////////////////////////////////// +/// Append data to the end of a packet +//////////////////////////////////////////////////////////// +void sfPacket_Append(sfPacket* Packet, void* Data, size_t SizeInBytes) +{ + CSFML_CALL(Packet, Append(Data, SizeInBytes)); +} + + +//////////////////////////////////////////////////////////// +/// Clear all the data of a packet +/////////////////////////////////////////////////////////// +void sfPacket_Clear(sfPacket* Packet) +{ + CSFML_CALL(Packet, Clear()); +} + + +//////////////////////////////////////////////////////////// +/// Get a pointer to the data contained in a packet +/// Warning : the returned pointer may be invalid after you +/// append data to the packet +//////////////////////////////////////////////////////////// +const char* sfPacket_GetData(sfPacket* Packet) +{ + CSFML_CALL_RETURN(Packet, GetData(), NULL); +} + + +//////////////////////////////////////////////////////////// +/// Get the size of the data contained in a packet +//////////////////////////////////////////////////////////// +size_t sfPacket_GetDataSize(sfPacket* Packet) +{ + CSFML_CALL_RETURN(Packet, GetDataSize(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Tell if the reading position has reached the end of the packet +//////////////////////////////////////////////////////////// +sfBool sfPacket_EndOfPacket(sfPacket* Packet) +{ + CSFML_CALL_RETURN(Packet, EndOfPacket(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Check if a packet is in a valid reading state +//////////////////////////////////////////////////////////// +sfBool sfPacket_CanRead(sfPacket* Packet) +{ + CSFML_CALL_RETURN(Packet, operator bool(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Functions to extract data from a packet +/// +/// \param Packet : Packet to read +/// +//////////////////////////////////////////////////////////// +sfBool sfPacket_ReadBool(sfPacket* Packet) {return PacketRead(Packet);} +sfInt8 sfPacket_ReadInt8(sfPacket* Packet) {return PacketRead(Packet);} +sfUint8 sfPacket_ReadUint8(sfPacket* Packet) {return PacketRead(Packet);} +sfInt16 sfPacket_ReadInt16(sfPacket* Packet) {return PacketRead(Packet);} +sfUint16 sfPacket_ReadUint16(sfPacket* Packet) {return PacketRead(Packet);} +sfInt32 sfPacket_ReadInt32(sfPacket* Packet) {return PacketRead(Packet);} +sfUint32 sfPacket_ReadUint32(sfPacket* Packet) {return PacketRead(Packet);} +float sfPacket_ReadFloat(sfPacket* Packet) {return PacketRead(Packet);} +double sfPacket_ReadDouble(sfPacket* Packet) {return PacketRead(Packet);} + +void sfPacket_ReadString(sfPacket* Packet, char* String) +{ + CSFML_CHECK(Packet); + + if (String) + Packet->This >> String; +} + +void sfPacket_ReadWideString(sfPacket* Packet, wchar_t* String) +{ + CSFML_CHECK(Packet); + + if (String) + Packet->This >> String; +} + + +//////////////////////////////////////////////////////////// +/// Functions to insert data into a packet +/// +/// \param Packet : Packet to write +/// +//////////////////////////////////////////////////////////// +void sfPacket_WriteBool(sfPacket* Packet, sfBool Value) {PacketWrite(Packet, static_cast(Value));} +void sfPacket_WriteInt8(sfPacket* Packet, sfInt8 Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteUint8(sfPacket* Packet, sfUint8 Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteInt16(sfPacket* Packet, sfInt16 Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteUint16(sfPacket* Packet, sfUint16 Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteInt32(sfPacket* Packet, sfInt32 Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteUint32(sfPacket* Packet, sfUint32 Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteFloat(sfPacket* Packet, float Value) {PacketWrite(Packet, Value);} +void sfPacket_WriteDouble(sfPacket* Packet, double Value) {PacketWrite(Packet, Value);} + +void sfPacket_WriteString(sfPacket* Packet, const char* String) +{ + CSFML_CHECK(Packet); + + if (String) + Packet->This << String; +} + +void sfPacket_WriteWideString(sfPacket* Packet, const wchar_t* String) +{ + CSFML_CHECK(Packet); + + if (String) + Packet->This << String; +} diff --git a/CSFML/src/SFML/Network/Selector.cpp b/CSFML/src/SFML/Network/Selector.cpp new file mode 100644 index 00000000..5a048476 --- /dev/null +++ b/CSFML/src/SFML/Network/Selector.cpp @@ -0,0 +1,114 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Network/SocketTCP.h +struct sfSocketTCP +{ + sf::SocketTCP This; +}; +// WARNING : this structure must always be the SAME as in Network/SocketUDP.h +struct sfSocketUDP +{ + sf::SocketUDP This; +}; +struct sfSelectorTCP +{ + sf::SelectorTCP This; + std::map Sockets; +}; +struct sfSelectorUDP +{ + sf::SelectorUDP This; + std::map Sockets; +}; + + + +//////////////////////////////////////////////////////////// +/// Create a new selector +//////////////////////////////////////////////////////////// +sfSelectorTCP* sfSelectorTCP_Create() {return new sfSelectorTCP;} +sfSelectorUDP* sfSelectorUDP_Create() {return new sfSelectorUDP;} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing selector +//////////////////////////////////////////////////////////// +void sfSelectorTCP_Destroy(sfSelectorTCP* Selector) {delete Selector;} +void sfSelectorUDP_Destroy(sfSelectorUDP* Selector) {delete Selector;} + + +//////////////////////////////////////////////////////////// +/// Add a socket to watch to a selector +//////////////////////////////////////////////////////////// +void sfSelectorTCP_Add(sfSelectorTCP* Selector, sfSocketTCP* Socket) {CSFML_CALL(Selector, Add(Socket->This)); Selector->Sockets[Socket->This] = Socket;} +void sfSelectorUDP_Add(sfSelectorUDP* Selector, sfSocketUDP* Socket) {CSFML_CALL(Selector, Add(Socket->This)); Selector->Sockets[Socket->This] = Socket;} + + +//////////////////////////////////////////////////////////// +/// Remove a socket from a selector +//////////////////////////////////////////////////////////// +void sfSelectorTCP_Remove(sfSelectorTCP* Selector, sfSocketTCP* Socket) {CSFML_CALL(Selector, Remove(Socket->This)); Selector->Sockets.erase(Socket->This);} +void sfSelectorUDP_Remove(sfSelectorUDP* Selector, sfSocketUDP* Socket) {CSFML_CALL(Selector, Remove(Socket->This)); Selector->Sockets.erase(Socket->This);} + + +//////////////////////////////////////////////////////////// +/// Remove all sockets from a selector +//////////////////////////////////////////////////////////// +void sfSelectorTCP_Clear(sfSelectorTCP* Selector) {CSFML_CALL(Selector, Clear()); Selector->Sockets.clear();} +void sfSelectorUDP_Clear(sfSelectorUDP* Selector) {CSFML_CALL(Selector, Clear()); Selector->Sockets.clear();} + +//////////////////////////////////////////////////////////// +/// Wait and collect sockets which are ready for reading. +/// This functions will return either when at least one socket +/// is ready, or when the given time is out +//////////////////////////////////////////////////////////// +unsigned int sfSelectorTCP_Wait(sfSelectorTCP* Selector, float Timeout) {CSFML_CALL_RETURN(Selector, Wait(Timeout), 0);} +unsigned int sfSelectorUDP_Wait(sfSelectorUDP* Selector, float Timeout) {CSFML_CALL_RETURN(Selector, Wait(Timeout), 0);} + + +//////////////////////////////////////////////////////////// +/// After a call to Wait(), get the Index-th socket which is +/// ready for reading. The total number of sockets ready +/// is the integer returned by the previous call to Wait() +//////////////////////////////////////////////////////////// +sfSocketTCP* sfSelectorTCP_GetSocketReady(sfSelectorTCP* Selector, unsigned int Index) +{ + CSFML_CHECK_RETURN(Selector, NULL); + return Selector->Sockets[Selector->This.GetSocketReady(Index)]; +} +sfSocketUDP* sfSelectorUDP_GetSocketReady(sfSelectorUDP* Selector, unsigned int Index) +{ + CSFML_CHECK_RETURN(Selector, NULL); + return Selector->Sockets[Selector->This.GetSocketReady(Index)]; +} diff --git a/CSFML/src/SFML/Network/SocketTCP.cpp b/CSFML/src/SFML/Network/SocketTCP.cpp new file mode 100644 index 00000000..815a1484 --- /dev/null +++ b/CSFML/src/SFML/Network/SocketTCP.cpp @@ -0,0 +1,192 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Network/Packet.h +struct sfPacket +{ + sf::Packet This; +}; + +struct sfSocketTCP +{ + sf::SocketTCP This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new TCP socket +//////////////////////////////////////////////////////////// +sfSocketTCP* sfSocketTCP_Create() +{ + return new sfSocketTCP; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing TCP socket +//////////////////////////////////////////////////////////// +void sfSocketTCP_Destroy(sfSocketTCP* Socket) +{ + if (Socket) + { + Socket->This.Close(); + delete Socket; + } +} + + +//////////////////////////////////////////////////////////// +/// Change the blocking state of a TCP socket. +/// The default behaviour of a socket is blocking +//////////////////////////////////////////////////////////// +void sfSocketTCP_SetBlocking(sfSocketTCP* Socket, sfBool Blocking) +{ + CSFML_CALL(Socket, SetBlocking(Blocking == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Connect a TCP socket to another computer on a specified port +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketTCP_Connect(sfSocketTCP* Socket, unsigned short Port, sfIPAddress HostAddress, float Timeout) +{ + sf::IPAddress Address(HostAddress.Address); + + CSFML_CHECK_RETURN(Socket, sfSocketError); + + return static_cast(Socket->This.Connect(Port, Address, Timeout)); +} + + +//////////////////////////////////////////////////////////// +/// Listen to a specified port for incoming data or connections +//////////////////////////////////////////////////////////// +sfBool sfSocketTCP_Listen(sfSocketTCP* Socket, unsigned short Port) +{ + CSFML_CALL_RETURN(Socket, Listen(Port), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Wait for a connection (must be listening to a port). +/// This function is blocking, ie. it won't return before +/// a connection has been accepted +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketTCP_Accept(sfSocketTCP* Socket, sfSocketTCP** Connected, sfIPAddress* Address) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + CSFML_CHECK_RETURN(Connected, sfSocketError); + + // Call SFML internal function + sf::IPAddress ClientAddress; + sf::SocketTCP Client; + sf::Socket::Status Status = Socket->This.Accept(Client, &ClientAddress); + if (Status != sf::Socket::Done) + return static_cast(Status); + + // Convert the client socket returned + *Connected = sfSocketTCP_Create(); + (*Connected)->This = Client; + + // Convert the address if needed + if (Address) + strncpy(Address->Address, ClientAddress.ToString().c_str(), 16); + + return sfSocketDone; +} + + +//////////////////////////////////////////////////////////// +/// Send an array of bytes to the host (must be connected first) +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketTCP_Send(sfSocketTCP* Socket, const char* Data, size_t Size) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + + return static_cast(Socket->This.Send(Data, Size)); +} + + +//////////////////////////////////////////////////////////// +/// Receive an array of bytes from the host (must be connected first) +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketTCP_Receive(sfSocketTCP* Socket, char* Data, size_t MaxSize, size_t* SizeReceived) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + + if (SizeReceived) + { + return static_cast(Socket->This.Receive(Data, MaxSize, *SizeReceived)); + } + else + { + std::size_t Size = 0; + return static_cast(Socket->This.Receive(Data, MaxSize, Size)); + } +} + + +//////////////////////////////////////////////////////////// +/// Send a packet of data to the host (must be connected first) +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketTCP_SendPacket(sfSocketTCP* Socket, sfPacket* Packet) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + CSFML_CHECK_RETURN(Packet, sfSocketError); + + return static_cast(Socket->This.Send(Packet->This)); +} + + +//////////////////////////////////////////////////////////// +/// Receive a packet from the host (must be connected first) +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketTCP_ReceivePacket(sfSocketTCP* Socket, sfPacket* Packet) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + CSFML_CHECK_RETURN(Packet, sfSocketError); + + return static_cast(Socket->This.Receive(Packet->This)); +} + + +//////////////////////////////////////////////////////////// +/// Check if a socket is in a valid state ; this function +/// can be called any time to check if the socket is OK +//////////////////////////////////////////////////////////// +sfBool sfSocketTCP_IsValid(sfSocketTCP* Socket) +{ + CSFML_CALL_RETURN(Socket, IsValid(), sfFalse); +} diff --git a/CSFML/src/SFML/Network/SocketUDP.cpp b/CSFML/src/SFML/Network/SocketUDP.cpp new file mode 100644 index 00000000..89e551f7 --- /dev/null +++ b/CSFML/src/SFML/Network/SocketUDP.cpp @@ -0,0 +1,187 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Network/Packet.h +struct sfPacket +{ + sf::Packet This; +}; + +struct sfSocketUDP +{ + sf::SocketUDP This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new UDP socket +//////////////////////////////////////////////////////////// +sfSocketUDP* sfSocketUDP_Create() +{ + return new sfSocketUDP; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing UDP socket +//////////////////////////////////////////////////////////// +void sfSocketUDP_Destroy(sfSocketUDP* Socket) +{ + delete Socket; +} + + +//////////////////////////////////////////////////////////// +/// Change the blocking state of a UDP socket. +/// The default behaviour of a socket is blocking +//////////////////////////////////////////////////////////// +void sfSocketUDP_SetBlocking(sfSocketUDP* Socket, sfBool Blocking) +{ + CSFML_CALL(Socket, SetBlocking(Blocking == sfTrue)); +} + + +//////////////////////////////////////////////////////////// +/// Bind a socket to a specific port +//////////////////////////////////////////////////////////// +sfBool sfSocketUDP_Bind(sfSocketUDP* Socket, unsigned short Port) +{ + CSFML_CALL_RETURN(Socket, Bind(Port), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Unbind a socket from its previous port, if any +//////////////////////////////////////////////////////////// +sfBool sfSocketUDP_Unbind(sfSocketUDP* Socket) +{ + CSFML_CALL_RETURN(Socket, Unbind(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Send an array of bytes +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketUDP_Send(sfSocketUDP* Socket, const char* Data, size_t Size, sfIPAddress Address, unsigned short Port) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError) + + // Convert the address + sf::IPAddress Receiver(Address.Address); + + return static_cast(Socket->This.Send(Data, Size, Receiver, Port)); +} + + +//////////////////////////////////////////////////////////// +/// Receive an array of bytes. +/// This function is blocking, ie. it won't return before some +/// bytes have been received +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketUDP_Receive(sfSocketUDP* Socket, char* Data, size_t MaxSize, size_t* SizeReceived, sfIPAddress* Address, unsigned short* Port) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + + // Call SFML internal function + sf::IPAddress Sender; + unsigned short SenderPort; + std::size_t Received; + + sf::Socket::Status Status = Socket->This.Receive(Data, MaxSize, Received, Sender, SenderPort); + if (Status != sf::Socket::Done) + return static_cast(Status); + + if (SizeReceived) + *SizeReceived = Received; + + if (Address) + strncpy(Address->Address, Sender.ToString().c_str(), 16); + + if (Port) + *Port = SenderPort; + + return sfSocketDone; +} + + +//////////////////////////////////////////////////////////// +/// Send a packet of data +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketUDP_SendPacket(sfSocketUDP* Socket, sfPacket* Packet, sfIPAddress Address, unsigned short Port) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + CSFML_CHECK_RETURN(Packet, sfSocketError); + + // Convert the address + sf::IPAddress Receiver(Address.Address); + + return static_cast(Socket->This.Send(Packet->This, Receiver, Port)); +} + + +//////////////////////////////////////////////////////////// +/// Receive a packet. +/// This function is blocking, ie. it won't return before a +/// packet is received +//////////////////////////////////////////////////////////// +sfSocketStatus sfSocketUDP_ReceivePacket(sfSocketUDP* Socket, sfPacket* Packet, sfIPAddress* Address, unsigned short* Port) +{ + CSFML_CHECK_RETURN(Socket, sfSocketError); + CSFML_CHECK_RETURN(Packet, sfSocketError); + + sf::IPAddress Sender; + unsigned short SenderPort; + sf::Socket::Status Status = Socket->This.Receive(Packet->This, Sender, SenderPort); + if (Status != sf::Socket::Done) + return static_cast(Status); + + if (Address) + strncpy(Address->Address, Sender.ToString().c_str(), 16); + + if (Port) + *Port = SenderPort; + + return sfSocketDone; +} + + +//////////////////////////////////////////////////////////// +/// Check if a socket is in a valid state ; this function +/// can be called any time to check if the socket is OK +//////////////////////////////////////////////////////////// +sfBool sfSocketUDP_IsValid(sfSocketUDP* Socket) +{ + CSFML_CALL_RETURN(Socket, IsValid(), sfFalse); +} diff --git a/CSFML/src/SFML/System/Clock.cpp b/CSFML/src/SFML/System/Clock.cpp new file mode 100644 index 00000000..87a2adfd --- /dev/null +++ b/CSFML/src/SFML/System/Clock.cpp @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfClock +{ + sf::Clock This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new clock and start it +//////////////////////////////////////////////////////////// +sfClock* sfClock_Create() +{ + return new sfClock; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing clock +//////////////////////////////////////////////////////////// +void sfClock_Destroy(sfClock* Clock) +{ + delete Clock; +} + + +//////////////////////////////////////////////////////////// +/// Get the time elapsed for a clock +//////////////////////////////////////////////////////////// +float sfClock_GetTime(sfClock* Clock) +{ + CSFML_CALL_RETURN(Clock, GetElapsedTime(), 0.f) +} + + +//////////////////////////////////////////////////////////// +/// Restart a clock +//////////////////////////////////////////////////////////// +void sfClock_Reset(sfClock* Clock) +{ + CSFML_CALL(Clock, Reset()) +} diff --git a/CSFML/src/SFML/System/Makefile b/CSFML/src/SFML/System/Makefile new file mode 100644 index 00000000..bdf1e4e5 --- /dev/null +++ b/CSFML/src/SFML/System/Makefile @@ -0,0 +1,23 @@ +LIB = libcsfml-system.so +SRC = $(wildcard *.cpp) +OBJ = $(SRC:.cpp=.o) +LIBNAME = $(LIBPATH)/$(LIB).$(VERSION) + +all: $(LIB) + +libcsfml-system.so: $(OBJ) + $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lsfml-system + +$(OBJ): %.o: %.cpp + $(CPP) -o $@ -c $< $(CFLAGS) + +.PHONY: clean mrproper + +clean: + @rm -rf $(OBJ) + +mrproper: clean + @rm -rf $(LIBNAME) + +install: + @($(CP) $(LIBNAME) $(DESTLIBDIR) && $(LN) $(LNFLAGS) $(DESTLIBDIR)/$(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)) diff --git a/CSFML/src/SFML/System/Mutex.cpp b/CSFML/src/SFML/System/Mutex.cpp new file mode 100644 index 00000000..3686141f --- /dev/null +++ b/CSFML/src/SFML/System/Mutex.cpp @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfMutex +{ + sf::Mutex This; +}; + + +//////////////////////////////////////////////////////////// +/// Create a new mutex +//////////////////////////////////////////////////////////// +sfMutex* sfMutex_Create() +{ + return new sfMutex; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing mutex +//////////////////////////////////////////////////////////// +void sfMutex_Destroy(sfMutex* Mutex) +{ + delete Mutex; +} + + +//////////////////////////////////////////////////////////// +/// Lock a mutex +//////////////////////////////////////////////////////////// +void sfMutex_Lock(sfMutex* Mutex) +{ + CSFML_CALL(Mutex, Lock()) +} + + +//////////////////////////////////////////////////////////// +/// Unlock a mutex +//////////////////////////////////////////////////////////// +void sfMutex_Unlock(sfMutex* Mutex) +{ + CSFML_CALL(Mutex, Unlock()) +} diff --git a/CSFML/src/SFML/System/Randomizer.cpp b/CSFML/src/SFML/System/Randomizer.cpp new file mode 100644 index 00000000..b7b68f13 --- /dev/null +++ b/CSFML/src/SFML/System/Randomizer.cpp @@ -0,0 +1,67 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// Set the seed for the random numbers generator. Using a known seed +/// allows you to reproduce the same sequence of random numbers +//////////////////////////////////////////////////////////// +void sfRandom_SetSeed(unsigned int Seed) +{ + sf::Randomizer::SetSeed(Seed); +} + + +//////////////////////////////////////////////////////////// +/// Get the seed used to generate random numbers the generator +//////////////////////////////////////////////////////////// +unsigned int sfRandom_GetSeed() +{ + return sf::Randomizer::GetSeed(); +} + + +//////////////////////////////////////////////////////////// +/// Get a random float number in a given range +//////////////////////////////////////////////////////////// +float sfRandom_Float(float Begin, float End) +{ + return sf::Randomizer::Random(Begin, End); +} + + +//////////////////////////////////////////////////////////// +/// Get a random integer number in a given range +//////////////////////////////////////////////////////////// +int sfRandom_Int(int Begin, int End) +{ + return sf::Randomizer::Random(Begin, End); +} diff --git a/CSFML/src/SFML/System/Sleep.cpp b/CSFML/src/SFML/System/Sleep.cpp new file mode 100644 index 00000000..e38d0a26 --- /dev/null +++ b/CSFML/src/SFML/System/Sleep.cpp @@ -0,0 +1,39 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// Make the current thread sleep for a given time +//////////////////////////////////////////////////////////// +void sfSleep(float Duration) +{ + sf::Sleep(Duration); +} diff --git a/CSFML/src/SFML/System/Thread.cpp b/CSFML/src/SFML/System/Thread.cpp new file mode 100644 index 00000000..b8ac4c87 --- /dev/null +++ b/CSFML/src/SFML/System/Thread.cpp @@ -0,0 +1,86 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfThread +{ + sfThread(void (*Function)(void*), void* UserData) : This(Function, UserData) {} + + sf::Thread This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new thread from a function pointer +//////////////////////////////////////////////////////////// +sfThread* sfThread_Create(void (*Function)(void*), void* UserData) +{ + return new sfThread(Function, UserData); +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing thread +//////////////////////////////////////////////////////////// +void sfThread_Destroy(sfThread* Thread) +{ + delete Thread; +} + + +//////////////////////////////////////////////////////////// +/// Run a thread +//////////////////////////////////////////////////////////// +void sfThread_Launch(sfThread* Thread) +{ + CSFML_CALL(Thread, Launch()); +} + + +//////////////////////////////////////////////////////////// +/// Wait until a thread finishes +//////////////////////////////////////////////////////////// +void sfThread_Wait(sfThread* Thread) +{ + CSFML_CALL(Thread, Wait()); +} + + +//////////////////////////////////////////////////////////// +/// Terminate a thread +/// Terminating a thread with this function is not safe, +/// you should rather try to make the thread function +/// terminate by itself +//////////////////////////////////////////////////////////// +void sfThread_Terminate(sfThread* Thread) +{ + CSFML_CALL(Thread, Terminate()); +} diff --git a/CSFML/src/SFML/Window/Context.cpp b/CSFML/src/SFML/Window/Context.cpp new file mode 100644 index 00000000..5f4a77fc --- /dev/null +++ b/CSFML/src/SFML/Window/Context.cpp @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfContext +{ + sf::Context This; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new context +//////////////////////////////////////////////////////////// +sfContext* sfContext_Create() +{ + return new sfContext; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing context +//////////////////////////////////////////////////////////// +void sfContext_Destroy(sfContext* Context) +{ + delete Context; +} + + +//////////////////////////////////////////////////////////// +/// Activate or deactivate a context +//////////////////////////////////////////////////////////// +void sfContext_SetActive(sfContext* Context, sfBool Active) +{ + CSFML_CALL(Context, SetActive(Active == sfTrue)) +} diff --git a/CSFML/src/SFML/Window/Input.cpp b/CSFML/src/SFML/Window/Input.cpp new file mode 100644 index 00000000..ef314069 --- /dev/null +++ b/CSFML/src/SFML/Window/Input.cpp @@ -0,0 +1,89 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +struct sfInput +{ + const sf::Input* This; +}; + + +//////////////////////////////////////////////////////////// +/// Get the state of a key +//////////////////////////////////////////////////////////// +sfBool sfInput_IsKeyDown(sfInput* Input, sfKeyCode KeyCode) +{ + CSFML_CALL_PTR_RETURN(Input, IsKeyDown((sf::Key::Code)KeyCode), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the state of a mouse button +//////////////////////////////////////////////////////////// +sfBool sfInput_IsMouseButtonDown(sfInput* Input, sfMouseButton Button) +{ + CSFML_CALL_PTR_RETURN(Input, IsMouseButtonDown((sf::Mouse::Button)Button), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the state of a joystick button +//////////////////////////////////////////////////////////// +sfBool sfInput_IsJoystickButtonDown(sfInput* Input, unsigned int JoyId, unsigned int Button) +{ + CSFML_CALL_PTR_RETURN(Input, IsJoystickButtonDown(JoyId, Button), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the mouse X position +//////////////////////////////////////////////////////////// +int sfInput_GetMouseX(sfInput* Input) +{ + CSFML_CALL_PTR_RETURN(Input, GetMouseX(), 0); +} + + +//////////////////////////////////////////////////////////// +/// Get the mouse Y position +//////////////////////////////////////////////////////////// +int sfInput_GetMouseY(sfInput* Input) +{ + CSFML_CALL_PTR_RETURN(Input, GetMouseY(), 0); +} + +//////////////////////////////////////////////////////////// +/// Get the joystick position on a given axis +//////////////////////////////////////////////////////////// +float sfInput_GetJoystickAxis(sfInput* Input, unsigned int JoyId, sfJoyAxis Axis) +{ + CSFML_CALL_PTR_RETURN(Input, GetJoystickAxis(JoyId, (sf::Joy::Axis)Axis), 0.f); +} diff --git a/CSFML/src/SFML/Window/Makefile b/CSFML/src/SFML/Window/Makefile new file mode 100644 index 00000000..3bd276a4 --- /dev/null +++ b/CSFML/src/SFML/Window/Makefile @@ -0,0 +1,23 @@ +LIB = libcsfml-window.so +SRC = $(wildcard *.cpp) +OBJ = $(SRC:.cpp=.o) +LIBNAME = $(LIBPATH)/$(LIB).$(VERSION) + +all: $(LIB) + +libcsfml-window.so: $(OBJ) + $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lsfml-window -lsfml-system + +$(OBJ): %.o: %.cpp + $(CPP) -o $@ -c $< $(CFLAGS) + +.PHONY: clean mrproper + +clean: + @rm -rf $(OBJ) + +mrproper: clean + @rm -rf $(LIBNAME) + +install: + @($(CP) $(LIBNAME) $(DESTLIBDIR) && $(LN) $(LNFLAGS) $(DESTLIBDIR)/$(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)) diff --git a/CSFML/src/SFML/Window/VideoMode.cpp b/CSFML/src/SFML/Window/VideoMode.cpp new file mode 100644 index 00000000..1acbdf54 --- /dev/null +++ b/CSFML/src/SFML/Window/VideoMode.cpp @@ -0,0 +1,82 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + + +//////////////////////////////////////////////////////////// +/// Get the current desktop video mode +//////////////////////////////////////////////////////////// +sfVideoMode sfVideoMode_GetDesktopMode() +{ + sf::VideoMode Desktop = sf::VideoMode::GetDesktopMode(); + sfVideoMode Ret; + Ret.Width = Desktop.Width; + Ret.Height = Desktop.Height; + Ret.BitsPerPixel = Desktop.BitsPerPixel; + + return Ret; +} + + +//////////////////////////////////////////////////////////// +/// Get a valid video mode +/// Index must be in range [0, GetModesCount()[ +/// Modes are sorted from best to worst +//////////////////////////////////////////////////////////// +sfVideoMode sfVideoMode_GetMode(size_t Index) +{ + sf::VideoMode Mode = sf::VideoMode::GetMode(Index); + sfVideoMode Ret; + Ret.Width = Mode.Width; + Ret.Height = Mode.Height; + Ret.BitsPerPixel = Mode.BitsPerPixel; + + return Ret; +} + + +//////////////////////////////////////////////////////////// +/// Get valid video modes count +//////////////////////////////////////////////////////////// +size_t sfVideoMode_GetModesCount() +{ + return sf::VideoMode::GetModesCount(); +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not a video mode is supported +//////////////////////////////////////////////////////////// +sfBool sfVideoMode_IsValid(sfVideoMode Mode) +{ + sf::VideoMode VideoMode(Mode.Width, Mode.Height, Mode.BitsPerPixel); + return VideoMode.IsValid() ? sfTrue : sfFalse; +} diff --git a/CSFML/src/SFML/Window/Window.cpp b/CSFML/src/SFML/Window/Window.cpp new file mode 100644 index 00000000..90c056ac --- /dev/null +++ b/CSFML/src/SFML/Window/Window.cpp @@ -0,0 +1,344 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2008-2008 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +// WARNING : this structure must always be the SAME as in Window/Input.h +struct sfInput +{ + const sf::Input* This; +}; +struct sfWindow +{ + sf::Window This; + sfInput Input; +}; + + +//////////////////////////////////////////////////////////// +/// Construct a new window +//////////////////////////////////////////////////////////// +sfWindow* sfWindow_Create(sfVideoMode Mode, const char* Title, unsigned long Style, sfWindowSettings Params) +{ + // Convert video mode + sf::VideoMode VideoMode(Mode.Width, Mode.Height, Mode.BitsPerPixel); + + // Create the window + sfWindow* Window = new sfWindow; + sf::WindowSettings Settings(Params.DepthBits, Params.StencilBits, Params.AntialiasingLevel); + Window->This.Create(VideoMode, Title, Style, Settings); + Window->Input.This = &Window->This.GetInput(); + + return Window; +} + + +//////////////////////////////////////////////////////////// +/// Construct a window from an existing control +//////////////////////////////////////////////////////////// +sfWindow* sfWindow_CreateFromHandle(sfWindowHandle Handle, sfWindowSettings Params) +{ + sfWindow* Window = new sfWindow; + sf::WindowSettings Settings(Params.DepthBits, Params.StencilBits, Params.AntialiasingLevel); + Window->This.Create(Handle, Settings); + Window->Input.This = &Window->This.GetInput(); + + return Window; +} + + +//////////////////////////////////////////////////////////// +/// Destroy an existing window +//////////////////////////////////////////////////////////// +void sfWindow_Destroy(sfWindow* Window) +{ + delete Window; +} + +//////////////////////////////////////////////////////////// +/// Close a window (but doesn't destroy the internal data) +//////////////////////////////////////////////////////////// +void sfWindow_Close(sfWindow* Window) +{ + CSFML_CALL(Window, Close()); +} + + +//////////////////////////////////////////////////////////// +/// Tell whether or not a window is opened +//////////////////////////////////////////////////////////// +sfBool sfWindow_IsOpened(sfWindow* Window) +{ + CSFML_CALL_RETURN(Window, IsOpened(), sfFalse); +} + + +//////////////////////////////////////////////////////////// +/// Get the width of the rendering region of a window +//////////////////////////////////////////////////////////// +unsigned int sfWindow_GetWidth(sfWindow* Window) +{ + CSFML_CALL_RETURN(Window, GetWidth(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Get the height of the rendering region of a window +//////////////////////////////////////////////////////////// +unsigned int sfWindow_GetHeight(sfWindow* Window) +{ + CSFML_CALL_RETURN(Window, GetHeight(), 0) +} + + +//////////////////////////////////////////////////////////// +/// Get the creation settings of a window +//////////////////////////////////////////////////////////// +sfWindowSettings sfWindow_GetSettings(sfWindow* Window) +{ + sfWindowSettings Settings = {0, 0, 0}; + CSFML_CHECK_RETURN(Window, Settings); + + const sf::WindowSettings& Params = Window->This.GetSettings(); + Settings.DepthBits = Params.DepthBits; + Settings.StencilBits = Params.StencilBits; + Settings.AntialiasingLevel = Params.AntialiasingLevel; + + return Settings; +} + + +//////////////////////////////////////////////////////////// +/// Get the event on top of events stack of a window, if any, and pop it +//////////////////////////////////////////////////////////// +sfBool sfWindow_GetEvent(sfWindow* Window, sfEvent* Event) +{ + CSFML_CHECK_RETURN(Window, sfFalse); + CSFML_CHECK_RETURN(Event, sfFalse); + + // Get the event + sf::Event SFMLEvent; + sfBool Ret = Window->This.GetEvent(SFMLEvent); + + // No event, return + if (!Ret) + return sfFalse; + + // Convert its type + Event->Type = static_cast(SFMLEvent.Type); + + // Fill its fields + switch (Event->Type) + { + case sfEvtResized : + Event->Size.Width = SFMLEvent.Size.Width; + Event->Size.Height = SFMLEvent.Size.Height; + break; + + case sfEvtTextEntered : + Event->Text.Unicode = SFMLEvent.Text.Unicode; + break; + + case sfEvtKeyReleased : + case sfEvtKeyPressed : + Event->Key.Code = static_cast(SFMLEvent.Key.Code); + Event->Key.Alt = SFMLEvent.Key.Alt ? sfTrue : sfFalse; + Event->Key.Control = SFMLEvent.Key.Control ? sfTrue : sfFalse; + Event->Key.Shift = SFMLEvent.Key.Shift ? sfTrue : sfFalse; + break; + + case sfEvtMouseWheelMoved : + Event->MouseWheel.Delta = SFMLEvent.MouseWheel.Delta; + break; + + case sfEvtMouseButtonPressed : + case sfEvtMouseButtonReleased : + Event->MouseButton.Button = static_cast(SFMLEvent.MouseButton.Button); + Event->MouseButton.X = SFMLEvent.MouseButton.X; + Event->MouseButton.Y = SFMLEvent.MouseButton.Y; + break; + + case sfEvtMouseMoved : + Event->MouseMove.X = SFMLEvent.MouseMove.X; + Event->MouseMove.Y = SFMLEvent.MouseMove.Y; + break; + + case sfEvtJoyButtonPressed : + case sfEvtJoyButtonReleased : + Event->JoyButton.JoystickId = SFMLEvent.JoyButton.JoystickId; + Event->JoyButton.Button = SFMLEvent.JoyButton.Button; + break; + + case sfEvtJoyMoved : + Event->JoyMove.JoystickId = SFMLEvent.JoyMove.JoystickId; + Event->JoyMove.Axis = static_cast(SFMLEvent.JoyMove.Axis); + Event->JoyMove.Position = SFMLEvent.JoyMove.Position; + break; + + default : + break; + } + + return sfTrue; +} + + +//////////////////////////////////////////////////////////// +/// Enable / disable vertical synchronization on a window +//////////////////////////////////////////////////////////// +void sfWindow_UseVerticalSync(sfWindow* Window, sfBool Enabled) +{ + CSFML_CALL(Window, UseVerticalSync(Enabled == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Show or hide the mouse cursor on a window +//////////////////////////////////////////////////////////// +void sfWindow_ShowMouseCursor(sfWindow* Window, sfBool Show) +{ + CSFML_CALL(Window, ShowMouseCursor(Show == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Change the position of the mouse cursor on a window +//////////////////////////////////////////////////////////// +void sfWindow_SetCursorPosition(sfWindow* Window, unsigned int Left, unsigned int Top) +{ + CSFML_CALL(Window, SetCursorPosition(Left, Top)) +} + + +//////////////////////////////////////////////////////////// +/// Change the position of a window on screen. +/// Only works for top-level windows +//////////////////////////////////////////////////////////// +void sfWindow_SetPosition(sfWindow* Window, int Left, int Top) +{ + CSFML_CALL(Window, SetPosition(Left, Top)) +} + + +//////////////////////////////////////////////////////////// +/// Change the size of the rendering region of a window +//////////////////////////////////////////////////////////// +void sfWindow_SetSize(sfWindow* Window, unsigned int Width, unsigned int Height) +{ + CSFML_CALL(Window, SetSize(Width, Height)) +} + + +//////////////////////////////////////////////////////////// +/// Show or hide a window +//////////////////////////////////////////////////////////// +void sfWindow_Show(sfWindow* Window, sfBool State) +{ + CSFML_CALL(Window, Show(State == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Enable or disable automatic key-repeat for keydown events. +/// Automatic key-repeat is enabled by default +//////////////////////////////////////////////////////////// +void sfWindow_EnableKeyRepeat(sfWindow* Window, sfBool Enabled) +{ + CSFML_CALL(Window, EnableKeyRepeat(Enabled == sfTrue)) +} + + +//////////////////////////////////////////////////////////// +/// Change the window's icon +//////////////////////////////////////////////////////////// +void sfWindow_SetIcon(sfWindow* Window, unsigned int Width, unsigned int Height, sfUint8* Pixels) +{ + CSFML_CALL(Window, SetIcon(Width, Height, Pixels)) +} + + +//////////////////////////////////////////////////////////// +/// Activate or deactivate a window as the current target for rendering +//////////////////////////////////////////////////////////// +sfBool sfWindow_SetActive(sfWindow* Window, sfBool Active) +{ + CSFML_CALL_RETURN(Window, SetActive(Active == sfTrue), sfFalse) +} + + +//////////////////////////////////////////////////////////// +/// Display a window on screen +//////////////////////////////////////////////////////////// +void sfWindow_Display(sfWindow* Window) +{ + CSFML_CALL(Window, Display()) +} + + +//////////////////////////////////////////////////////////// +/// Get the input manager of a window +//////////////////////////////////////////////////////////// +sfInput* sfWindow_GetInput(sfWindow* Window) +{ + CSFML_CHECK_RETURN(Window, NULL); + + return &Window->Input; +} + + +//////////////////////////////////////////////////////////// +/// Limit the framerate to a maximum fixed frequency for a window +//////////////////////////////////////////////////////////// +void sfWindow_SetFramerateLimit(sfWindow* Window, unsigned int Limit) +{ + CSFML_CALL(Window, SetFramerateLimit(Limit)) +} + + +//////////////////////////////////////////////////////////// +/// Get time elapsed since last frame of a window +//////////////////////////////////////////////////////////// +float sfWindow_GetFrameTime(sfWindow* Window) +{ + CSFML_CALL_RETURN(Window, GetFrameTime(), 0.f) +} + +//////////////////////////////////////////////////////////// +/// Change the joystick threshold, ie. the value below which +/// no move event will be generated +/// +/// \param Threshold : New threshold, in range [0, 100] +/// +//////////////////////////////////////////////////////////// +void sfWindow_SetJoystickThreshold(sfWindow* Window, float Threshold) +{ + CSFML_CALL(Window, SetJoystickThreshold(Threshold)) +} diff --git a/DSFML/AUTHORS b/DSFML/AUTHORS new file mode 100644 index 00000000..266b2457 --- /dev/null +++ b/DSFML/AUTHORS @@ -0,0 +1,2 @@ +SirJulio (Dagorn Julien) => sirjulio13@gmail.com +Insomniak => insomniak.fr@gmail.com diff --git a/DSFML/LICENCE b/DSFML/LICENCE new file mode 100644 index 00000000..48844753 --- /dev/null +++ b/DSFML/LICENCE @@ -0,0 +1,18 @@ +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. diff --git a/DSFML/import/dsfml/audio/all.d b/DSFML/import/dsfml/audio/all.d new file mode 100644 index 00000000..f01177c1 --- /dev/null +++ b/DSFML/import/dsfml/audio/all.d @@ -0,0 +1,36 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.all; + +public import + dsfml.audio.listener, + dsfml.audio.music, + dsfml.audio.sound, + dsfml.audio.soundbuffer, + dsfml.audio.soundbufferrecorder, + dsfml.audio.soundrecorder, + dsfml.audio.soundstatus, + dsfml.audio.soundstream; diff --git a/DSFML/import/dsfml/audio/listener.d b/DSFML/import/dsfml/audio/listener.d new file mode 100644 index 00000000..80dd2077 --- /dev/null +++ b/DSFML/import/dsfml/audio/listener.d @@ -0,0 +1,184 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.listener; + +import dsfml.system.common; +import dsfml.system.vector3; + +/** +* Listener is a global interface for defining the audio +* listener properties ; the audio listener is the point in +* the scene from where all the sounds are heard. +* +* See_Also: +* SFML Tutorial for sound spatialization example. +*/ +class Listener +{ + + /** + * Change the global volume of all the sounds. + * The default volume is 100 + * + * Params: + * volume = New global volume, in the range [0, 100] + */ + static void setGlobalVolume(float volume) + in + { + assert (volume >= 0.f && volume <= 100.f); + } + body + { + sfListener_SetGlobalVolume(volume); + } + + /** + * Get the current value of the global volume of all the sounds + * + * Returns: + * Current global volume, in the range [0, 100] + */ + static float getGlobalVolume() + { + return sfListener_GetGlobalVolume(); + } + + /** + * Change the position of the listener. + * The default position is (0, 0, 0) + * + * Params: + * posX = X position of the listener in the world + * posY = Y position of the listener in the world + * posZ = Z position of the listener in the world + */ + static void setPosition(float posX, float posY, float posZ) + { + sfListener_SetPosition(posX, posY, posZ); + } + + /** + * Change the position of the listener. + * The default position is (0, 0, 0) + * + * Params: + * position = new position + */ + static void setPosition(Vector3f position) + { + sfListener_SetPosition(position.x, position.y, position.z); + } + + + /** + * Get the current position of the listener + * + * Returns: + * Current position + */ + static Vector3f getPosition() + { + Vector3f ret; + sfListener_GetPosition(&ret.x, &ret.y, &ret.z); + return ret; + } + + /** + * Change the orientation of the listener (the point + * he must look at). + * The default target is (0, 0, -1) + * + * Params: + * targetX = X position of the point the listener must look at + * targetY = X position of the point the listener must look at + * targetZ = X position of the point the listener must look at + */ + static void setTarget(float targetX, float targetY, float targetZ) + { + sfListener_SetTarget(targetX, targetY, targetZ); + } + + /** + * Change the orientation of the listener (the point + * he must look at). + * The default target is (0, 0, -1) + * + * Params: + * target = Position of the point the listener must look at + */ + static void setTarget(Vector3f position) + { + sfListener_SetTarget(position.x, position.y, position.z); + } + + /** + * Get the current orientation of the listener (the point + * he's looking at) + * + * Returns: + * Position of the point the listener is looking at + */ + static Vector3f getTarget() + { + Vector3f ret; + sfListener_GetTarget(&ret.x, &ret.y, &ret.z); + return ret; + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef void function(float) pf_sfListener_SetGlobalVolume; + typedef float function() pf_sfListener_GetGlobalVolume; + typedef void function(float, float, float) pf_sfListener_SetPosition; + typedef void function(float*, float*, float*) pf_sfListener_GetPosition; + typedef void function(float, float, float) pf_sfListener_SetTarget; + typedef void function(float*, float*, float*) pf_sfListener_GetTarget; + + static pf_sfListener_SetGlobalVolume sfListener_SetGlobalVolume; + static pf_sfListener_GetGlobalVolume sfListener_GetGlobalVolume; + static pf_sfListener_SetPosition sfListener_SetPosition; + static pf_sfListener_GetPosition sfListener_GetPosition; + static pf_sfListener_SetTarget sfListener_SetTarget; + static pf_sfListener_GetTarget sfListener_GetTarget; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfListener_SetGlobalVolume = cast(pf_sfListener_SetGlobalVolume)dll.getSymbol("sfListener_SetGlobalVolume"); + sfListener_GetGlobalVolume = cast(pf_sfListener_GetGlobalVolume)dll.getSymbol("sfListener_GetGlobalVolume"); + sfListener_SetPosition = cast(pf_sfListener_SetPosition)dll.getSymbol("sfListener_SetPosition"); + sfListener_GetPosition = cast(pf_sfListener_GetPosition)dll.getSymbol("sfListener_GetPosition"); + sfListener_SetTarget = cast(pf_sfListener_SetTarget)dll.getSymbol("sfListener_SetTarget"); + sfListener_GetTarget = cast(pf_sfListener_GetTarget)dll.getSymbol("sfListener_GetTarget"); + } +} diff --git a/DSFML/import/dsfml/audio/music.d b/DSFML/import/dsfml/audio/music.d new file mode 100644 index 00000000..433c8121 --- /dev/null +++ b/DSFML/import/dsfml/audio/music.d @@ -0,0 +1,396 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.music; + +import dsfml.audio.soundstatus; + +import dsfml.system.common; +import dsfml.system.exception; +import dsfml.system.stringutil; +import dsfml.system.vector3; + +/** +* Music defines a big sound played using streaming, +* so usually what we call a music :) +*/ +class Music : DSFMLObject +{ + /** + * Open a music file (doesn't play it -- call Play for that) + * + * Params: + * filename = Path of the file to open + * + */ + this(char[] filename) + { + if (filename is null || filename.length == 0) + throw new LoadingException("LoadingException : Filename is invalid."); + + super(sfMusic_CreateFromFile(toStringz(filename))); + } + + /** + * Open a music file from memory (doesn't play it -- call Play() for that) + * + * Params: + * data = file data in memory + * + */ + this(byte[] data) + { + if (data is null || data.length == 0) + throw new Exception("LoadingException : Memory stream is invalid."); + + super(m_ptr = sfMusic_CreateFromMemory(data.ptr, data.length)); + } + + override void dispose() + { + sfMusic_Destroy(m_ptr); + } + + /** + * Start playing the audio stream + */ + void play() + { + sfMusic_Play(m_ptr); + } + + /** + * Stop playing the audio stream + */ + void stop() + { + sfMusic_Stop(m_ptr); + } + + /** + * Pause the audio stream + */ + void pause() + { + sfMusic_Pause(m_ptr); + } + + + /** + * Return the number of channels (1 = mono, 2 = stereo) + * + * Returns: + * Number of channels + */ + uint getChannelsCount() + { + return sfMusic_GetChannelsCount(m_ptr); + } + + /** + * Get the stream sample rate + * + * Returns: + * Stream frequency (number of samples per second) + */ + uint getSampleRate() + { + return sfMusic_GetSampleRate(m_ptr); + } + + + /** + * Get the music duration + * + * Returns: + * Music duration, in seconds + */ + float getDuration() + { + return sfMusic_GetDuration(m_ptr); + } + + /** + * Get the status of the stream (stopped, paused, playing) + * + * Returns: + * Current status of the sound + */ + SoundStatus getStatus() + { + return sfMusic_GetStatus(m_ptr); + } + + + /** + * Tell whether or not the music is looping + * + * Returns: + * True if the music is looping, false otherwise + */ + bool getLoop() + { + return cast(bool)sfMusic_GetLoop(m_ptr); + } + + /** + * Get the pitch + * + * Returns: + * Pitch value + */ + float getPitch() + { + return sfMusic_GetPitch(m_ptr); + } + + /** + * Get the volume + * + * Returns: + * Volume value (in range [1, 100]) + */ + float getVolume() + { + return sfMusic_GetVolume(m_ptr); + } + + /** + * Get the sound position + * + * Returns: + * Current position of the music. + */ + Vector3f getPosition() + { + Vector3f ret; + sfMusic_GetPosition(m_ptr, &ret.x, &ret.y, &ret.z); + return ret; + } + + /** + * Get the minimum distance + * + * Returns: + * Minimum distance for the sound + */ + float getMinDistance() + { + return sfMusic_GetMinDistance(m_ptr); + } + + /** + * Get the attenuation factor + * + * Returns: + * Attenuation factor of the sound + * + */ + float getAttenuation() + { + return sfMusic_GetAttenuation(m_ptr); + } + + + /** + * Set the music loop state. + * This parameter is disabled by default + * + * Params: + * loop = True to play in loop, false to play once + */ + void setLoop(bool loop) + { + sfMusic_SetLoop(m_ptr, loop); + } + + /** + * Set the sound pitch. + * The default pitch is 1 + * + * Params: + * pitch = New pitch + * + */ + void setPitch(float pitch) + { + sfMusic_SetPitch(m_ptr, pitch); + } + + /** + * Set the sound volume. + * The default volume is 100 + * + * Params: + * volume = Volume (in range [0, 100]) + * + */ + void setVolume(float volume) + in + { + assert (volume >= 0.f && volume <= 100.f); + } + body + { + sfMusic_SetVolume(m_ptr, volume); + } + + /** + * Set the sound position. + * The default position is (0, 0, 0) + * + * Params: + * x = X position of the sound in the world + * y = Y position of the sound in the world + * z = Z position of the sound in the world + * + */ + void setPosition(float x, float y, float z) + { + sfMusic_SetPosition(m_ptr, x, y, z); + } + + /** + * Set the sound position. + * The default position is (0, 0, 0) + * + * Params: + * position = new position + * + */ + void setPosition(Vector3f position) + { + sfMusic_SetPosition(m_ptr, position.x, position.y, position.z); + } + + + /** + * Set the minimum distance - closer than thsi distance + * the listener will hear the sound at its maximum volume. + * The default distance is 1.0 + * + * Params: + * minDistance = new minimum distance for the sound + */ + void setMinDistance(float minDistance) + { + sfMusic_SetMinDistance(m_ptr, minDistance); + } + + /** + * Set the attenuation factor - the higher the attenuation, the + * more the sound will be attenuated with distance from listener. + * The default attenuation factor 1.0 + * + * Params: + * attenuation = new attenuation factor for the sound + */ + void setAttenuation(float attenuation) + { + sfMusic_SetAttenuation(m_ptr, attenuation); + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef void* function(char*) pf_sfMusic_CreateFromFile; + typedef void* function(byte*, size_t) pf_sfMusic_CreateFromMemory; + typedef void function(void*) pf_sfMusic_Destroy; + typedef void function(void*, int) pf_sfMusic_SetLoop; + typedef bool function(void*) pf_sfMusic_GetLoop; + typedef float function(void*) pf_sfMusic_GetDuration; + typedef void function(void*) pf_sfMusic_Play; + typedef void function(void*) pf_sfMusic_Pause; + typedef void function(void*) pf_sfMusic_Stop; + typedef uint function(void*) pf_sfMusic_GetChannelsCount; + typedef uint function(void*) pf_sfMusic_GetSampleRate; + typedef SoundStatus function(void*) pf_sfMusic_GetStatus; + typedef void function(void*, float) pf_sfMusic_SetPitch; + typedef void function(void*, float) pf_sfMusic_SetVolume; + typedef void function(void*, float, float, float) pf_sfMusic_SetPosition; + typedef float function(void*) pf_sfMusic_GetPitch; + typedef float function(void*) pf_sfMusic_GetVolume; + typedef void function(void*, float*, float*, float*) pf_sfMusic_GetPosition; + typedef float function(void*) pf_sfMusic_GetMinDistance; + typedef float function(void*) pf_sfMusic_GetAttenuation; + typedef void function(void*, float) pf_sfMusic_SetMinDistance; + typedef void function(void*, float) pf_sfMusic_SetAttenuation; + + static pf_sfMusic_CreateFromFile sfMusic_CreateFromFile; + static pf_sfMusic_CreateFromMemory sfMusic_CreateFromMemory; + static pf_sfMusic_Destroy sfMusic_Destroy; + static pf_sfMusic_SetLoop sfMusic_SetLoop; + static pf_sfMusic_GetLoop sfMusic_GetLoop; + static pf_sfMusic_GetDuration sfMusic_GetDuration; + static pf_sfMusic_Play sfMusic_Play; + static pf_sfMusic_Pause sfMusic_Pause; + static pf_sfMusic_Stop sfMusic_Stop; + static pf_sfMusic_GetChannelsCount sfMusic_GetChannelsCount; + static pf_sfMusic_GetSampleRate sfMusic_GetSampleRate; + static pf_sfMusic_GetStatus sfMusic_GetStatus; + static pf_sfMusic_SetPitch sfMusic_SetPitch; + static pf_sfMusic_SetVolume sfMusic_SetVolume; + static pf_sfMusic_SetPosition sfMusic_SetPosition; + static pf_sfMusic_GetPitch sfMusic_GetPitch; + static pf_sfMusic_GetVolume sfMusic_GetVolume; + static pf_sfMusic_GetPosition sfMusic_GetPosition; + static pf_sfMusic_GetMinDistance sfMusic_GetMinDistance; + static pf_sfMusic_GetAttenuation sfMusic_GetAttenuation; + static pf_sfMusic_SetMinDistance sfMusic_SetMinDistance; + static pf_sfMusic_SetAttenuation sfMusic_SetAttenuation; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfMusic_CreateFromFile = cast(pf_sfMusic_CreateFromFile)dll.getSymbol("sfMusic_CreateFromFile"); + sfMusic_CreateFromMemory = cast(pf_sfMusic_CreateFromMemory)dll.getSymbol("sfMusic_CreateFromMemory"); + sfMusic_Destroy = cast(pf_sfMusic_Destroy)dll.getSymbol("sfMusic_Destroy"); + sfMusic_SetLoop = cast(pf_sfMusic_SetLoop)dll.getSymbol("sfMusic_SetLoop"); + sfMusic_GetLoop = cast(pf_sfMusic_GetLoop)dll.getSymbol("sfMusic_GetLoop"); + sfMusic_GetDuration = cast(pf_sfMusic_GetDuration)dll.getSymbol("sfMusic_GetDuration"); + sfMusic_Play = cast(pf_sfMusic_Play)dll.getSymbol("sfMusic_Play"); + sfMusic_Pause = cast(pf_sfMusic_Pause)dll.getSymbol("sfMusic_Pause"); + sfMusic_Stop = cast(pf_sfMusic_Stop)dll.getSymbol("sfMusic_Stop"); + sfMusic_GetChannelsCount = cast(pf_sfMusic_GetChannelsCount)dll.getSymbol("sfMusic_GetChannelsCount"); + sfMusic_GetSampleRate = cast(pf_sfMusic_GetSampleRate)dll.getSymbol("sfMusic_GetSampleRate"); + sfMusic_GetStatus = cast(pf_sfMusic_GetStatus)dll.getSymbol("sfMusic_GetStatus"); + sfMusic_SetPitch = cast(pf_sfMusic_SetPitch)dll.getSymbol("sfMusic_SetPitch"); + sfMusic_SetVolume = cast(pf_sfMusic_SetVolume)dll.getSymbol("sfMusic_SetVolume"); + sfMusic_SetPosition = cast(pf_sfMusic_SetPosition)dll.getSymbol("sfMusic_SetPosition"); + sfMusic_GetPitch = cast(pf_sfMusic_GetPitch)dll.getSymbol("sfMusic_GetPitch"); + sfMusic_GetVolume = cast(pf_sfMusic_GetVolume)dll.getSymbol("sfMusic_GetVolume"); + sfMusic_GetPosition = cast(pf_sfMusic_GetPosition)dll.getSymbol("sfMusic_GetPosition"); + sfMusic_GetMinDistance = cast(pf_sfMusic_GetMinDistance)dll.getSymbol("sfMusic_GetMinDistance"); + sfMusic_GetAttenuation = cast(pf_sfMusic_GetAttenuation)dll.getSymbol("sfMusic_GetAttenuation"); + sfMusic_SetMinDistance = cast(pf_sfMusic_SetMinDistance)dll.getSymbol("sfMusic_SetMinDistance"); + sfMusic_SetAttenuation = cast(pf_sfMusic_SetAttenuation)dll.getSymbol("sfMusic_SetAttenuation"); + } +} + diff --git a/DSFML/import/dsfml/audio/sound.d b/DSFML/import/dsfml/audio/sound.d new file mode 100644 index 00000000..d9eb8d3b --- /dev/null +++ b/DSFML/import/dsfml/audio/sound.d @@ -0,0 +1,415 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.sound; + +import dsfml.audio.soundbuffer; +import dsfml.audio.soundstatus; + +import dsfml.system.common; +import dsfml.system.exception; +import dsfml.system.vector3; + +/** +* Sound defines the properties of the sound such as position, +* volume, pitch, etc. +*/ +class Sound : DSFMLObject +{ + /** + * Default constructor + */ + this() + { + super(sfSound_Create()); + } + + /** + * Construct the sound from its parameters + * + * Params: + * buffer = Sound buffer to play + * loop = Loop flag (false by default) + * pitch = Value of the pitch (1 by default) + * volume = Volume (100 by default) + * x = X position (0 by default) + * y = Y position (0 by default) + * z = Z position (0 by default) + * + * Throws: + * NullParameterException if buffer is null + */ + this(SoundBuffer buffer, bool loop = false, float pitch = 1.f, float volume = 100.f, float x = 0.f, float y = 0.f, float z = 0.f) + { + if (buffer is null) + throw new NullParameterException("NullParameterException : SoundBuffer is null."); + + super(sfSound_Create()); + sfSound_SetBuffer(m_ptr, buffer.getNativePointer()); + sfSound_SetLoop(m_ptr, loop); + sfSound_SetPitch(m_ptr, pitch); + sfSound_SetVolume(m_ptr, volume); + sfSound_SetPosition(m_ptr, x, y, z); + } + + + override void dispose() + { + sfSound_Destroy(m_ptr); + } + + /** + * Play the sound + */ + void play() + { + sfSound_Play(m_ptr); + } + + /** + * Pause the sound + */ + void pause() + { + sfSound_Pause(m_ptr); + } + + /** + * Stop the sound + */ + void stop() + { + sfSound_Stop(m_ptr); + } + + /** + * Set the source buffer + * + * Params: + * buffer = New sound buffer to bind to the sound + */ + void setBuffer(SoundBuffer buffer) + { + if (buffer is null) + throw new NullParameterException("NullParameterException : SoundBuffer is null."); + + m_buffer = buffer; + sfSound_SetBuffer(m_ptr, buffer.getNativePointer); + } + + /** + * Set the sound loop state. + * This parameter is disabled by default + * + * Params: + * loop = True to play in loop, false to play once + */ + void setLoop(bool loop) + { + sfSound_SetLoop(m_ptr, loop); + } + + /** + * Set the sound pitch. + * The default pitch is 1 + * + * Params: + * pitch = New pitch + */ + void setPitch(float pitch) + { + sfSound_SetPitch(m_ptr, pitch); + } + + /** + * Set the sound volume. + * The default volume is 100 + * + * Params: + * volume = Volume (in range [0, 100]) + */ + void setVolume(float volume) + in + { + assert(volume >= 0 && volume <= 100); + } + body + { + sfSound_SetVolume(m_ptr, volume); + } + + /** + * Set the sound position. + * The default position is (0, 0, 0) + * + * Params: + * x = X position of the sound in the world + * y = Y position of the sound in the world + * z = Z position of the sound in the world + */ + void setPosition(float x, float y, float z) + { + sfSound_SetPosition(m_ptr, x, y, z); + } + + /** + * Set the sound position. + * The default position is (0, 0, 0) + * + * Params : + * position = new position + */ + void setPosition(Vector3f position) + { + sfSound_SetPosition(m_ptr, position.x, position.y, position.z); + } + + /** + * Set the minimum distance - closer than this distance + * the listener will hear the sound at its maximum volume. + * The default distance is 1.0 + * + * Params: + * minDistance = new minimum distance for the sound + */ + void setMinDistance(float minDistance) + { + sfSound_SetMinDistance(m_ptr, minDistance); + } + + /** + * Set the attenuation factor - the higher the attenuation, the + * more the sound will be attenuated with distance from listener. + * The default attenuation factor 1.0 + * + * Params: + * attenuation = new attenuation factor for the sound + */ + void setAttenuation(float attenuation) + { + sfSound_SetAttenuation(m_ptr, attenuation); + } + + /** + * Set the current playing offset of a sound + * + * Params: + * offset = new playing position, expressed in seconds + */ + void setPlayingOffset(float offset) + { + sfSound_SetPlayingOffset(m_ptr, offset); + } + + + /** + * Get the source buffer + * + * Returns: + * Sound buffer bound to the sound (can be NULL) + */ + SoundBuffer getBuffer() + { + return m_buffer; + } + + /** + * Tell whether or not the sound is looping + * + * Returns: + * True if the sound is looping, false otherwise + */ + bool getLoop() + { + + return cast(bool)(sfSound_GetLoop(m_ptr)); + } + + /** + * Get the pitch + * + * Returns: + * Pitch value + */ + float getPitch() + { + return sfSound_GetPitch(m_ptr); + } + + /** + * Get the volume + * + * Returns: + * Volume value (in range [1, 100]) + */ + float getVolume() + { + return sfSound_GetVolume(m_ptr); + } + + /** + * Get the sound position + * + * Params: + * x = X position of the sound in the world + * y = Y position of the sound in the world + * z = Z position of the sound in the world + */ + Vector3f getPosition() + { + Vector3f ret; + sfSound_GetPosition(m_ptr, &ret.x, &ret.y, &ret.z); + return ret; + } + + /** + * Get the minimum distance + * + * Returns: + * Minimum distance for the sound + */ + float getMinDistance() + { + return sfSound_GetMinDistance(m_ptr); + } + + /** + * Get the attenuation factor + * + * Returns: + * Attenuation factor of the sound + * + */ + float getAttenuation() + { + return sfSound_GetAttenuation(m_ptr); + } + + + /** + * Get the status of the sound (stopped, paused, playing) + * + * Returns: + * Current status of the sound + */ + SoundStatus getStatus() + { + return sfSound_GetStatus(m_ptr); + } + + /** + * Get the current playing position of the sound + * + * Returns: + * Current playing position, expressed in seconds + */ + float getPlayingOffset() + { + return sfSound_GetPlayingOffset(m_ptr); + } + + +private: + SoundBuffer m_buffer; + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfSound_Create; + typedef void function(void*) pf_sfSound_Destroy; + typedef void function(void*) pf_sfSound_Play; + typedef void function(void*) pf_sfSound_Pause; + typedef void function(void*) pf_sfSound_Stop; + typedef void function(void*, void*) pf_sfSound_SetBuffer; + typedef void* function(void*) pf_sfSound_GetBuffer; + typedef void function(void*, int) pf_sfSound_SetLoop; + typedef int function(void*) pf_sfSound_GetLoop; + typedef SoundStatus function(void*) pf_sfSound_GetStatus; + typedef void function(void*, float) pf_sfSound_SetPitch; + typedef void function(void*, float) pf_sfSound_SetVolume; + typedef void function(void*, float, float, float) pf_sfSound_SetPosition; + typedef float function(void*) pf_sfSound_GetPitch; + typedef float function(void*) pf_sfSound_GetVolume; + typedef void function(void*, float*, float*, float*) pf_sfSound_GetPosition; + typedef float function(void*) pf_sfSound_GetPlayingOffset; + typedef float function(void*) pf_sfSound_GetMinDistance; + typedef float function(void*) pf_sfSound_GetAttenuation; + typedef void function(void*, float) pf_sfSound_SetMinDistance; + typedef void function(void*, float) pf_sfSound_SetAttenuation; + typedef void function(void*, float) pf_sfSound_SetPlayingOffset; + + static pf_sfSound_Create sfSound_Create; + static pf_sfSound_Destroy sfSound_Destroy; + static pf_sfSound_Play sfSound_Play; + static pf_sfSound_Pause sfSound_Pause; + static pf_sfSound_Stop sfSound_Stop; + static pf_sfSound_SetBuffer sfSound_SetBuffer; + static pf_sfSound_GetBuffer sfSound_GetBuffer; + static pf_sfSound_SetLoop sfSound_SetLoop; + static pf_sfSound_GetLoop sfSound_GetLoop; + static pf_sfSound_GetStatus sfSound_GetStatus; + static pf_sfSound_SetPitch sfSound_SetPitch; + static pf_sfSound_SetVolume sfSound_SetVolume; + static pf_sfSound_SetPosition sfSound_SetPosition; + static pf_sfSound_GetPitch sfSound_GetPitch; + static pf_sfSound_GetVolume sfSound_GetVolume; + static pf_sfSound_GetPosition sfSound_GetPosition; + static pf_sfSound_GetPlayingOffset sfSound_GetPlayingOffset; + static pf_sfSound_GetMinDistance sfSound_GetMinDistance; + static pf_sfSound_GetAttenuation sfSound_GetAttenuation; + static pf_sfSound_SetMinDistance sfSound_SetMinDistance; + static pf_sfSound_SetAttenuation sfSound_SetAttenuation; + static pf_sfSound_SetPlayingOffset sfSound_SetPlayingOffset; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfSound_Create = cast(pf_sfSound_Create)dll.getSymbol("sfSound_Create"); + sfSound_Destroy = cast(pf_sfSound_Destroy)dll.getSymbol("sfSound_Destroy"); + sfSound_Play = cast(pf_sfSound_Play)dll.getSymbol("sfSound_Play"); + sfSound_Pause = cast(pf_sfSound_Pause)dll.getSymbol("sfSound_Pause"); + sfSound_Stop = cast(pf_sfSound_Stop)dll.getSymbol("sfSound_Stop"); + sfSound_SetBuffer = cast(pf_sfSound_SetBuffer)dll.getSymbol("sfSound_SetBuffer"); + sfSound_GetBuffer = cast(pf_sfSound_GetBuffer)dll.getSymbol("sfSound_GetBuffer"); + sfSound_SetLoop = cast(pf_sfSound_SetLoop)dll.getSymbol("sfSound_SetLoop"); + sfSound_GetLoop = cast(pf_sfSound_GetLoop)dll.getSymbol("sfSound_GetLoop"); + sfSound_GetStatus = cast(pf_sfSound_GetStatus)dll.getSymbol("sfSound_GetStatus"); + sfSound_SetPitch = cast(pf_sfSound_SetPitch)dll.getSymbol("sfSound_SetPitch"); + sfSound_SetVolume = cast(pf_sfSound_SetVolume)dll.getSymbol("sfSound_SetVolume"); + sfSound_SetPosition = cast(pf_sfSound_SetPosition)dll.getSymbol("sfSound_SetPosition"); + sfSound_GetPitch = cast(pf_sfSound_GetPitch)dll.getSymbol("sfSound_GetPitch"); + sfSound_GetVolume = cast(pf_sfSound_GetVolume)dll.getSymbol("sfSound_GetVolume"); + sfSound_GetPosition = cast(pf_sfSound_GetPosition)dll.getSymbol("sfSound_GetPosition"); + sfSound_GetPlayingOffset = cast(pf_sfSound_GetPlayingOffset)dll.getSymbol("sfSound_GetPlayingOffset"); + sfSound_GetMinDistance = cast(pf_sfSound_GetMinDistance)dll.getSymbol("sfSound_GetMinDistance"); + sfSound_GetAttenuation = cast(pf_sfSound_GetAttenuation)dll.getSymbol("sfSound_GetAttenuation"); + sfSound_SetMinDistance = cast(pf_sfSound_SetMinDistance)dll.getSymbol("sfSound_SetMinDistance"); + sfSound_SetAttenuation = cast(pf_sfSound_SetAttenuation)dll.getSymbol("sfSound_SetAttenuation"); + sfSound_SetPlayingOffset = cast(pf_sfSound_SetPlayingOffset)dll.getSymbol("sfSound_SetPlayingOffset"); + } +} diff --git a/DSFML/import/dsfml/audio/soundbuffer.d b/DSFML/import/dsfml/audio/soundbuffer.d new file mode 100644 index 00000000..f329c9f2 --- /dev/null +++ b/DSFML/import/dsfml/audio/soundbuffer.d @@ -0,0 +1,226 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.soundbuffer; + +import dsfml.system.common; +import dsfml.system.exception; +import dsfml.system.stringutil; + + +/** +* SoundBuffer is the low-level for loading and manipulating +* sound buffers +*/ +class SoundBuffer : DSFMLObject +{ + /** + * Load the sound buffer from a file + * + * Params: + * filename = Path of the sound file to load + * + * Throws: + * LoadingException on failure + */ + this(char[] filename) + { + if (filename is null || filename.length == 0) + throw new LoadingException("LoadingException : Filename is invalid."); + + super(sfSoundBuffer_CreateFromFile(toStringz(filename))); + } + + /** + * Load the sound buffer from a file in memory + * + * Params: + * data = Array of file data in memory + * + * Throws: + * LoadingException on failure + */ + this(byte[] data) + { + if (data is null || data.length == 0) + throw new Exception("LoadingException : Memory stream is invalid."); + + super(sfSoundBuffer_CreateFromMemory(data.ptr, data.length)); + } + + /** + * Load the sound buffer from an array of samples - assumed format for + * samples is 16 bits signed integer + * + * Params: + * samples = Array of samples in memory + * channelsCount = Number of channels (1 = mono, 2 = stereo, ...) + * sampleRate = Frequency (number of samples to play per second) + * + * Throws: + * LoadingException on failure + */ + this(short[] samples, uint channelsCount, uint sampleRate) + { + if (samples is null || samples.length == 0) + throw new Exception("LoadingException : Samples array is invalid."); + + super(sfSoundBuffer_CreateFromSamples(samples.ptr, samples.length, channelsCount, sampleRate)); + } + + override void dispose() + { + sfSoundBuffer_Destroy(m_ptr); + } + + + + /** + * Save the sound buffer to a file + * + * Params: + * filename = Path of the sound file to write + * + * Returns: + * True if saving has been successful + */ + bool saveToFile(char[] filename) + { + if (filename !is null && filename.length > 0 ) + { + return cast(bool)sfSoundBuffer_SaveToFile(m_ptr, toStringz(filename)); + } + return false; + } + + /** + * Return the sound samples + * + * Returns: + * Array of sound samples, in 16 bits signed integer format + */ + short[] getSamples() + { + short* temp = null; + temp = sfSoundBuffer_GetSamples(m_ptr); + + return temp is null ? null : temp[0..getSamplesCount]; + } + + /** + * Return the samples count + * + * Returns: + * Number of samples + */ + size_t getSamplesCount() + { + return sfSoundBuffer_GetSamplesCount(m_ptr); + } + + /** + * Get the sample rate + * + * Returns: + * Sound frequency (number of samples per second) + */ + uint getSampleRate() + { + return sfSoundBuffer_GetSampleRate(m_ptr); + } + + /** + * Return the number of channels (1 = mono, 2 = stereo, ...) + * + * Returns: + * Number of channels + */ + uint getChannelsCount() + { + return sfSoundBuffer_GetChannelsCount(m_ptr); + } + + /** + * Get the sound duration + * + * Returns: + * Sound duration, in seconds + */ + float getDuration() + { + return sfSoundBuffer_GetDuration(m_ptr); + } + +package: + this(void* ptr) + { + super(ptr, true); + } + +private: +// External ==================================================================== + + extern (C) + { + typedef void* function(char*) pf_sfSoundBuffer_CreateFromFile; + typedef void* function(byte*, size_t) pf_sfSoundBuffer_CreateFromMemory; + typedef void* function(short*, size_t, uint, uint) pf_sfSoundBuffer_CreateFromSamples; + typedef void function(void*) pf_sfSoundBuffer_Destroy; + typedef int function(void*, char*) pf_sfSoundBuffer_SaveToFile; + typedef short* function(void*) pf_sfSoundBuffer_GetSamples; + typedef size_t function(void*) pf_sfSoundBuffer_GetSamplesCount; + typedef uint function(void*) pf_sfSoundBuffer_GetSampleRate; + typedef uint function(void*) pf_sfSoundBuffer_GetChannelsCount; + typedef float function(void*) pf_sfSoundBuffer_GetDuration; + + static pf_sfSoundBuffer_CreateFromFile sfSoundBuffer_CreateFromFile; + static pf_sfSoundBuffer_CreateFromMemory sfSoundBuffer_CreateFromMemory; + static pf_sfSoundBuffer_CreateFromSamples sfSoundBuffer_CreateFromSamples; + static pf_sfSoundBuffer_Destroy sfSoundBuffer_Destroy; + static pf_sfSoundBuffer_SaveToFile sfSoundBuffer_SaveToFile; + static pf_sfSoundBuffer_GetSamples sfSoundBuffer_GetSamples; + static pf_sfSoundBuffer_GetSamplesCount sfSoundBuffer_GetSamplesCount; + static pf_sfSoundBuffer_GetSampleRate sfSoundBuffer_GetSampleRate; + static pf_sfSoundBuffer_GetChannelsCount sfSoundBuffer_GetChannelsCount; + static pf_sfSoundBuffer_GetDuration sfSoundBuffer_GetDuration; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfSoundBuffer_CreateFromFile = cast(pf_sfSoundBuffer_CreateFromFile)dll.getSymbol("sfSoundBuffer_CreateFromFile"); + sfSoundBuffer_CreateFromMemory = cast(pf_sfSoundBuffer_CreateFromMemory)dll.getSymbol("sfSoundBuffer_CreateFromMemory"); + sfSoundBuffer_CreateFromSamples = cast(pf_sfSoundBuffer_CreateFromSamples)dll.getSymbol("sfSoundBuffer_CreateFromSamples"); + sfSoundBuffer_Destroy = cast(pf_sfSoundBuffer_Destroy)dll.getSymbol("sfSoundBuffer_Destroy"); + sfSoundBuffer_SaveToFile = cast(pf_sfSoundBuffer_SaveToFile)dll.getSymbol("sfSoundBuffer_SaveToFile"); + sfSoundBuffer_GetSamples = cast(pf_sfSoundBuffer_GetSamples)dll.getSymbol("sfSoundBuffer_GetSamples"); + sfSoundBuffer_GetSamplesCount = cast(pf_sfSoundBuffer_GetSamplesCount)dll.getSymbol("sfSoundBuffer_GetSamplesCount"); + sfSoundBuffer_GetSampleRate = cast(pf_sfSoundBuffer_GetSampleRate)dll.getSymbol("sfSoundBuffer_GetSampleRate"); + sfSoundBuffer_GetChannelsCount = cast(pf_sfSoundBuffer_GetChannelsCount)dll.getSymbol("sfSoundBuffer_GetChannelsCount"); + sfSoundBuffer_GetDuration = cast(pf_sfSoundBuffer_GetDuration)dll.getSymbol("sfSoundBuffer_GetDuration"); + } +} + diff --git a/DSFML/import/dsfml/audio/soundbufferrecorder.d b/DSFML/import/dsfml/audio/soundbufferrecorder.d new file mode 100644 index 00000000..417e144e --- /dev/null +++ b/DSFML/import/dsfml/audio/soundbufferrecorder.d @@ -0,0 +1,105 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.soundbufferrecorder; + +import dsfml.system.common; + +import dsfml.audio.soundbuffer; +import dsfml.audio.soundrecorder; + +/** +* Specialized sfSoundRecorder which saves the captured +* audio data into a sound buffer +*/ +class SoundBufferRecorder : SoundRecorder +{ + /** + * Constructor + */ + this() + { + super(sfSoundBufferRecorder_Create()); + } + + override void dispose() + { + sfSoundBufferRecorder_Destroy(m_ptr); + } + + /** + * Get the sound buffer containing the captured audio data + * + * Returns: + * SoundBuffer containing the captured audio data + * + */ + SoundBuffer getBuffer() + { + return new SoundBuffer(sfSoundBufferRecorder_GetBuffer(m_ptr)); + } + +protected: + + override bool onStart() + { + return true; + } + + override bool onProcessSamples(short[] s) + { + return true; + } + + override void onStop() + { + + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfSoundBufferRecorder_Create; + typedef void function(void*) pf_sfSoundBufferRecorder_Destroy; + typedef void* function(void*) pf_sfSoundBufferRecorder_GetBuffer; + + static pf_sfSoundBufferRecorder_Create sfSoundBufferRecorder_Create; + static pf_sfSoundBufferRecorder_Destroy sfSoundBufferRecorder_Destroy; + static pf_sfSoundBufferRecorder_GetBuffer sfSoundBufferRecorder_GetBuffer; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfSoundBufferRecorder_Create = cast(pf_sfSoundBufferRecorder_Create)dll.getSymbol("sfSoundBufferRecorder_Create"); + sfSoundBufferRecorder_Destroy = cast(pf_sfSoundBufferRecorder_Destroy)dll.getSymbol("sfSoundBufferRecorder_Destroy"); + sfSoundBufferRecorder_GetBuffer = cast(pf_sfSoundBufferRecorder_GetBuffer)dll.getSymbol("sfSoundBufferRecorder_GetBuffer"); + } +} + diff --git a/DSFML/import/dsfml/audio/soundrecorder.d b/DSFML/import/dsfml/audio/soundrecorder.d new file mode 100644 index 00000000..5f670d98 --- /dev/null +++ b/DSFML/import/dsfml/audio/soundrecorder.d @@ -0,0 +1,332 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.soundrecorder; + +import dsfml.audio.soundbuffer; + +import dsfml.system.alloc; +import dsfml.system.common; +import dsfml.system.sleep; +import dsfml.system.linkedlist; +import dsfml.system.mutex; +import dsfml.system.lock; +import dsfml.system.thread; + +/** +* SoundRecorder is an interface for capturing sound data. +* +* $(B onProcessSamples and onStop will be called by a different thread, take care of synchronization issues.) +* +* Examples: +* ------- +* class MySoundRecorder : SoundRecorder +* { +* this() +* { +* +* } +* +* protected bool onStart() +* { +* return true; +* } +* +* protected void onStop() +* { +* +* } +* +* protected bool onProcessSamples(out short[]) +* { +* // Process data here +* +* return true; //return true to continue capture, else return false +* } +* } +* ------- +*/ +abstract class SoundRecorder : DSFMLObject +{ + override void dispose() + { + if (m_flag) + stop(); + + m_instances.remove(m_id); + sfSoundRecorder_Destroy(m_ptr); + } + + + /** + * Start the capture. + * + * Only one capture can happen at the same time + * + * Params: + * sampleRate : Sound frequency (the more samples, the higher the quality) + * (44100 by default = CD quality) + */ + void start(uint sampleRate = 44100) + { + sfSoundRecorder_Start(m_ptr, sampleRate); + m_t = new Thread(&threadPoll); + m_t.launch(); + } + + /** + * Stop the capture + */ + void stop() + { + sfSoundRecorder_Stop(m_ptr); + m_flag = false; + m_t.wait(); + m_t = null; + } + + /** + * Get the sample rate + * + * Returns: + * Frequency, in samples per second + */ + uint getSampleRate() + { + return sfSoundRecorder_GetSampleRate(m_ptr); + } + + /** + * Tell if the system supports sound capture. + * If not, this class won't be usable + * + * Returns: + * True if audio capture is supported + * + */ + static bool canCapture() + { + return cast(bool)sfSoundRecorder_CanCapture(); + } + +protected: + /** + * Protected constructor + */ + this() + { + m_id = ++seed; + m_instances[m_id] = this; + super(sfSoundRecorder_Create(&internalOnStart, &internalCallback, &internalOnStop, &m_id)); + + init(true); + } + + this(void* ptr) + { + super(ptr); + + init(false); + } + + /** + * Start recording audio data + * + * Returns: + * False to abort recording audio data, true to start + */ + abstract bool onStart(); + + /** + * Stop recording audio data + */ + abstract void onStop(); + + /** + * callback function + * + * Parameters: + * samples = Array of samples + * + * Returns: + * true to continue recording, false to stop. + */ + abstract bool onProcessSamples(short[] samples); + + bool m_disposed; +private: + /* + * an init function to initialize id of the object. + */ + void init(bool flag) + { + if (flag) + { + m_list = new LinkedList!(Samples)(); + + m_flag = true; + m_continue = true; + + m_mutex = new Mutex(); + } + } + + void* m_userData; + int m_id; + + static int seed = 0; + static SoundRecorder[int] m_instances; + + /* + * Extern C callback function + * + * This function must be static for C interop. To retrieve the current + * instance, we retrieve id of the sender in the user data, and search associated instance + * in the associative array. + * + * We don't call delegate or derived class on that thread because GC is not aware of this thread + * instead we enqueue data informations in a queue and poll this queue with a managed thread. + */ + extern(C) static int internalCallback(short* s, size_t size, void* user) + { + int id; + // retrieve instance + if ((id = *cast(int*)(user)) in m_instances) + { + SoundRecorder temp = m_instances[id]; + scope Lock l = new Lock(temp.m_mutex); + if (temp.m_continue) + // this new is allowed because Samples is an custom alloc class. + temp.m_list.enqueue(new Samples(s, size)); + return temp.m_continue; + } + return false; + } + + extern(C) static int internalOnStart(void* user) + { + int id; + bool ret = false; + if ((id = *cast(int*)(user)) in m_instances) + { + SoundRecorder temp = m_instances[id]; + ret = temp.onStart(); + } + + return ret; + } + + extern(C) static void internalOnStop(void* user) + { + // Nothing to do + } + + /* + * Managed thread loop + */ + void threadPoll(void* user) + { + while (m_flag) + { + sleep(0.05f); + // if samples are available + if (!m_list.empty) + { + // Lock ressources + scope Lock l = new Lock(m_mutex); + + Samples s = m_list.dequeue; + m_continue = this.onProcessSamples(s.data[0..s.length].dup); + + delete s; + + if (!m_continue) + { + // delete all samples left + foreach(Samples dummy; m_list) + delete dummy; + break; + } + } + } + + onStop(); + } + + Mutex m_mutex; + + bool m_flag; + bool m_continue = true; + LinkedList!(Samples) m_list; + Thread m_t; + +// External ==================================================================== + + extern (C) + { + typedef void* function(int function(void*), int function(short*, size_t, void*), void function(void*), void*) pf_sfSoundRecorder_Create; + typedef void function(void*) pf_sfSoundRecorder_Destroy; + typedef void function(void*, uint SampleRate) pf_sfSoundRecorder_Start; + typedef void function(void*) pf_sfSoundRecorder_Stop; + typedef uint function(void*) pf_sfSoundRecorder_GetSampleRate; + typedef int function() pf_sfSoundRecorder_CanCapture; + + static pf_sfSoundRecorder_Create sfSoundRecorder_Create; + static pf_sfSoundRecorder_Destroy sfSoundRecorder_Destroy; + static pf_sfSoundRecorder_Start sfSoundRecorder_Start; + static pf_sfSoundRecorder_Stop sfSoundRecorder_Stop; + static pf_sfSoundRecorder_GetSampleRate sfSoundRecorder_GetSampleRate; + static pf_sfSoundRecorder_CanCapture sfSoundRecorder_CanCapture; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfSoundRecorder_Create = cast(pf_sfSoundRecorder_Create)dll.getSymbol("sfSoundRecorder_Create"); + sfSoundRecorder_Destroy = cast(pf_sfSoundRecorder_Destroy)dll.getSymbol("sfSoundRecorder_Destroy"); + sfSoundRecorder_Start = cast(pf_sfSoundRecorder_Start)dll.getSymbol("sfSoundRecorder_Start"); + sfSoundRecorder_Stop = cast(pf_sfSoundRecorder_Stop)dll.getSymbol("sfSoundRecorder_Stop"); + sfSoundRecorder_GetSampleRate = cast(pf_sfSoundRecorder_GetSampleRate)dll.getSymbol("sfSoundRecorder_GetSampleRate"); + sfSoundRecorder_CanCapture = cast(pf_sfSoundRecorder_CanCapture)dll.getSymbol("sfSoundRecorder_CanCapture"); + } + +} + +// Use explicit alloc to allow instaciation by C thread +private class Samples +{ + mixin Alloc; + + this(short* data, size_t length) + { + this.data = data; + this.length = length; + } + + public short* data; + public size_t length; +} + diff --git a/DSFML/import/dsfml/audio/soundstatus.d b/DSFML/import/dsfml/audio/soundstatus.d new file mode 100644 index 00000000..288da9d0 --- /dev/null +++ b/DSFML/import/dsfml/audio/soundstatus.d @@ -0,0 +1,34 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.soundstatus; + +/// Enumeration of the sound states +enum SoundStatus +{ + STOPPED, /// Sound / music is not playing + PAUSED, /// Sound / music is paused + PLAYING /// Sound / music is playing +} diff --git a/DSFML/import/dsfml/audio/soundstream.d b/DSFML/import/dsfml/audio/soundstream.d new file mode 100644 index 00000000..2a9ee938 --- /dev/null +++ b/DSFML/import/dsfml/audio/soundstream.d @@ -0,0 +1,550 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.audio.soundstream; + +import dsfml.system.alloc; +import dsfml.system.common; +import dsfml.system.vector3; +import dsfml.system.linkedlist; +import dsfml.system.lock; +import dsfml.system.mutex; +import dsfml.system.sleep; +import dsfml.system.thread; + +import dsfml.audio.sound; +import dsfml.audio.soundstatus; + +/** +* SoundStream is a streamed sound, ie samples are acquired +* while the sound is playing. Use it for big sounds that would +* require hundreds of MB in memory, or for streaming sound from the network. +* +* SoundStream is a base class and cannot be instanciated directly. +* +* $(B onGetData override will be called by a different thread, take care of synchronization issues.) onStart is called by the thread which called .play(). +* +* ------------------------ +* class MySoundStream : SoundStream +* { +* this() +* { +* super(2, 44100); // you need to initialize the base class before any operation. +* } +* protected bool onGetData(out short[] data) +* { +* //You need to fill data array with some samples +* +* return true; //or false if you want to stop playback +* } +* +* protected bool onStart() +* { +* return true; +* } +* } +* ------------------------ +*/ +abstract class SoundStream : DSFMLObject +{ + override void dispose() + { + stop(); + sfSoundStream_Destroy(m_ptr); + s_instances.remove(m_id); + } + + /** + * Start playing the stream + */ + void play() + { + m_flag = true; + sfSoundStream_Play(m_ptr); + + if (getStatus() != SoundStatus.PAUSED) + { + m_t = new Thread(&threadPoll); + m_t.launch(); + } + } + + /** + * Pause the stream + */ + void pause() + { + sfSoundStream_Pause(m_ptr); + } + + /** + * Stop the stream + */ + void stop() + { + m_flag = false; + sfSoundStream_Stop(m_ptr); + m_t.wait(); + if (m_dummy !is null) + delete m_dummy; + } + + /** + * Get number of channels of the stream + * + * Returns: + * number of channels + */ + uint getChannelsCount() + { + return m_channelsCount; + } + + /** + * Get the sample rate of the stream + * + * Returns: + * sample rate + */ + uint getSampleRate() + { + return m_sampleRate; + } + + /** + * Get the current status of the stream + * + * Returns: + * Current stream status + */ + SoundStatus getStatus() + { + return sfSoundStream_GetStatus(m_ptr); + } + + /** + * Set the sound pitch. + * The default pitch is 1 + * + * Params: + * pitch = New pitch + */ + void setPitch(float pitch) + { + sfSoundStream_SetPitch(m_ptr, pitch); + } + + /** + * Set the sound volume. + * The default volume is 100 + * + * Params: + * volume = Volume (in range [0, 100]) + */ + void setVolume(float volume) + in + { + assert(volume >= 0.f && volume <= 100.f); + } + body + { + sfSoundStream_SetVolume(m_ptr, volume); + } + + /* + * Set the sound position (take 3 values). + * The default position is (0, 0, 0) + * + * Params: + * x, y, z = Position of the sound in the world + */ + + void setPosition(float x, float y, float z) + { + sfSoundStream_SetPosition(m_ptr, x, y, z); + } + + /** + * Set the sound position (take 3 values). + * The default position is (0, 0, 0) + * + * Params: + * vec = Position of the sound in the world + * + */ + + void setPosition(Vector3f vec) + { + sfSoundStream_SetPosition(m_ptr, vec.x, vec.y, vec.z); + } + + /** + * Set the minimum distance - closer than this distance, + * the listener will hear the sound at its maximum volume. + * The default minimum distance is 1.0 + * + * Params: + * minDistance = New minimum distance for the sound + */ + void setMinDistance(float minDistance) + { + sfSoundStream_SetMinDistance(m_ptr, minDistance); + } + + /** + * Set the attenuation factor - the higher the attenuation, the + * more the sound will be attenuated with distance from listener. + * The default attenuation factor 1.0 + * + * Params: + * attenuation = New attenuation factor for the sound + * + */ + void setAttenuation(float attenuation) + { + sfSoundStream_SetAttenuation(m_ptr, attenuation); + } + + /** + * Get the pitch + * + * Returns: + * Pitch value + */ + + float getPitch() + { + return sfSoundStream_GetPitch(m_ptr); + } + /** + * Get the volume + * + * Returns: + * Volume value (in range [1, 100]) + * + */ + + float getVolume() + { + return sfSoundStream_GetVolume(m_ptr); + } + + /** + * Get the sound position + * + * Returns: + * Sound position + */ + Vector3f getPosition() + { + Vector3f vec; + sfSoundStream_GetPosition(m_ptr, &vec.x, &vec.y, &vec.z); + return vec; + } + + /** + * Get the minimum distance + * + * Returns: + * Get the minimum distance of the sound + */ + float getMinDistance() + { + return sfSoundStream_GetMinDistance(m_ptr); + } + + /** + * Get the attenuation + * + * Returns: + * Get the attenuation of the sound + */ + float getAttenuation() + { + return sfSoundStream_GetAttenuation(m_ptr); + } + + /** + * Get the current playing offset of the stream + * + * Returns: + * current playing offset, in seconds. + */ + float getPlayingOffset() + { + return sfSoundStream_GetPlayingOffset(m_ptr); + } + + /** + * Tell whether or not the stream is looping + * + * Returns: + * True if the music is looping, false otherwise + */ + bool getLoop() + { + if (m_ptr !is null) + return cast(bool)sfSoundStream_GetLoop(m_ptr); + return false; + } + + /** + * Set the stream loop state. + * + * Disabled by default. + * + * Params: + * loop = true to play in loop, false to play once + */ + void setLoop(bool loop) + { + if (m_ptr !is null) + sfSoundStream_SetLoop(m_ptr, loop); + } +protected: + /** + * Protected constructor + * + * Params: + * channelsCount = number of channel + * sampleRate = sample rate of the stream + * + */ + this(uint channelsCount, uint sampleRate) + { + m_channelsCount = channelsCount; + m_sampleRate = sampleRate; + super(sfSoundStream_Create(&externalOnStart, &externalOnGetData, channelsCount, sampleRate, &m_id)); + + m_mutex = new Mutex(); + + m_samples = new LinkedList!(Data); + + m_t = new Thread(&this.threadPoll); + + m_id = ++s_seed; + s_instances[m_id] = this; + } + + /** + * Called each time the stream restart + * + * Returns: + * false to abort the playback + */ + abstract bool onStart(); + + /** + * Called each time the stream needs new data. + * This method will be call by an other thread, take care of possible synchronisation issues. + * + * Params: + * data = array of samples to stream + * + * Returns: + * true to continue streaming, false to stop + */ + abstract bool onGetData(out short[] data); +private: + + // Called sync when user calling play() + extern(C) static int externalOnStart(void* user) + { + int id; + if ((id = *cast(int*) user) in s_instances) + { + SoundStream temp = s_instances[id]; + return (temp.m_flag = temp.onStart()); + } + return true; + } + + // C Thread callback (no allocation can be done) + extern (C) static int externalOnGetData(sfSoundStreamChunk* data, void* user) + { + int id, flag = false; + // Get calling soundStream + if ((id = *cast(int*) user) in s_instances) + { + SoundStream temp = s_instances[id]; + //if no samples are available but streaming is not stopped, we sleep the thread + while (temp.m_samples.empty && temp.m_flag) + sleep(0.01f); + + scope Lock l = new Lock(temp.m_mutex); + if (!temp.m_samples.empty) + { + if (temp.m_dummy !is null) + delete temp.m_dummy; + + temp.m_dummy = temp.m_samples.dequeue; + + if ((flag = temp.m_dummy.Flag) == true) + { + data.Samples = temp.m_dummy.Samples.ptr; + data.NbSamples = temp.m_dummy.Samples.length; + } + else + { + data.Samples = null; + data.NbSamples = 0; + } + } + } + return flag; + } + + // Managed thread loop + void threadPoll(void* dummy) + { + short[] data; + bool ret = true; + // while streaming is active ... + while (ret && m_flag) + { + { + scope Lock l = new Lock(m_mutex); + // see how many samples are available (keep always 2 samples ready) + if (m_samples.getCount < 2) + { + // if we need new samples, lock and call derived class + ret = onGetData(data); + m_samples.enqueue(new Data(data, ret)); + } + } + sleep(0.1f); + } + } + + private class Data + { + short[] Samples; + bool Flag; + + mixin Alloc; + + this (short[] samples, bool flag) + { + this.Samples = samples; + this.Flag = flag; + } + } + + Thread m_t; + Mutex m_mutex; + LinkedList!(Data) m_samples; + Data m_dummy; + + bool m_flag; + + uint m_channelsCount; + uint m_sampleRate; + + int m_id; + static SoundStream[int] s_instances; + static int s_seed = 0; + +// External ==================================================================== + + extern (C) + { + struct sfSoundStreamChunk{ short* Samples; uint NbSamples; } + + alias int function(void*) sfSoundStreamStartCallback; + alias int function (sfSoundStreamChunk*, void*) sfSoundStreamGetDataCallback; + + typedef void* function(sfSoundStreamStartCallback, sfSoundStreamGetDataCallback, uint, uint, void*) pf_sfSoundStream_Create; + typedef void function(void*) pf_sfSoundStream_Destroy; + typedef void function(void*) pf_sfSoundStream_Play; + typedef void function(void*) pf_sfSoundStream_Pause; + typedef void function(void*) pf_sfSoundStream_Stop; + typedef SoundStatus function(void*) pf_sfSoundStream_GetStatus; + typedef uint function(void*) pf_sfSoundStream_GetChannelsCount; + typedef uint function(void*) pf_sfSoundStream_GetSampleRate; + typedef void function(void*, float) pf_sfSoundStream_SetPitch; + typedef void function(void*, float) pf_sfSoundStream_SetVolume; + typedef void function(void*, float, float, float) pf_sfSoundStream_SetPosition; + typedef void function(void*, float) pf_sfSoundStream_SetMinDistance; + typedef void function(void*, float) pf_sfSoundStream_SetAttenuation; + typedef float function(void*) pf_sfSoundStream_GetPitch; + typedef float function(void*) pf_sfSoundStream_GetVolume; + typedef void function(void*, float*, float*, float*) pf_sfSoundStream_GetPosition; + typedef float function(void*) pf_sfSoundStream_GetMinDistance; + typedef float function(void*) pf_sfSoundStream_GetAttenuation; + typedef float function(void*) pf_sfSoundStream_GetPlayingOffset; + typedef int function(void*) pf_sfSoundStream_GetLoop; + typedef void function(void*, int) pf_sfSoundStream_SetLoop; + + + static pf_sfSoundStream_Create sfSoundStream_Create; + static pf_sfSoundStream_Destroy sfSoundStream_Destroy; + static pf_sfSoundStream_Play sfSoundStream_Play; + static pf_sfSoundStream_Pause sfSoundStream_Pause; + static pf_sfSoundStream_Stop sfSoundStream_Stop; + static pf_sfSoundStream_GetStatus sfSoundStream_GetStatus; + static pf_sfSoundStream_GetChannelsCount sfSoundStream_GetChannelsCount; + static pf_sfSoundStream_GetSampleRate sfSoundStream_GetSampleRate; + static pf_sfSoundStream_SetPitch sfSoundStream_SetPitch; + static pf_sfSoundStream_SetVolume sfSoundStream_SetVolume; + static pf_sfSoundStream_SetPosition sfSoundStream_SetPosition; + static pf_sfSoundStream_SetMinDistance sfSoundStream_SetMinDistance; + static pf_sfSoundStream_SetAttenuation sfSoundStream_SetAttenuation; + static pf_sfSoundStream_GetPitch sfSoundStream_GetPitch; + static pf_sfSoundStream_GetVolume sfSoundStream_GetVolume; + static pf_sfSoundStream_GetPosition sfSoundStream_GetPosition; + static pf_sfSoundStream_GetMinDistance sfSoundStream_GetMinDistance; + static pf_sfSoundStream_GetAttenuation sfSoundStream_GetAttenuation; + static pf_sfSoundStream_GetPlayingOffset sfSoundStream_GetPlayingOffset; + static pf_sfSoundStream_GetLoop sfSoundStream_GetLoop; + static pf_sfSoundStream_SetLoop sfSoundStream_SetLoop; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-audio"); + + sfSoundStream_Create = cast(pf_sfSoundStream_Create)dll.getSymbol("sfSoundStream_Create"); + sfSoundStream_Destroy = cast(pf_sfSoundStream_Destroy)dll.getSymbol("sfSoundStream_Destroy"); + sfSoundStream_Play = cast(pf_sfSoundStream_Play)dll.getSymbol("sfSoundStream_Play"); + sfSoundStream_Pause = cast(pf_sfSoundStream_Pause)dll.getSymbol("sfSoundStream_Pause"); + sfSoundStream_Stop = cast(pf_sfSoundStream_Stop)dll.getSymbol("sfSoundStream_Stop"); + sfSoundStream_GetStatus = cast(pf_sfSoundStream_GetStatus)dll.getSymbol("sfSoundStream_GetStatus"); + sfSoundStream_GetChannelsCount = cast(pf_sfSoundStream_GetChannelsCount)dll.getSymbol("sfSoundStream_GetChannelsCount"); + sfSoundStream_GetSampleRate = cast(pf_sfSoundStream_GetSampleRate)dll.getSymbol("sfSoundStream_GetSampleRate"); + sfSoundStream_SetPitch = cast(pf_sfSoundStream_SetPitch)dll.getSymbol("sfSoundStream_SetPitch"); + sfSoundStream_SetVolume = cast(pf_sfSoundStream_SetVolume)dll.getSymbol("sfSoundStream_SetVolume"); + sfSoundStream_SetPosition = cast(pf_sfSoundStream_SetPosition)dll.getSymbol("sfSoundStream_SetPosition"); + sfSoundStream_SetMinDistance = cast(pf_sfSoundStream_SetMinDistance)dll.getSymbol("sfSoundStream_SetMinDistance"); + sfSoundStream_SetAttenuation = cast(pf_sfSoundStream_SetAttenuation)dll.getSymbol("sfSoundStream_SetAttenuation"); + sfSoundStream_GetPitch = cast(pf_sfSoundStream_GetPitch)dll.getSymbol("sfSoundStream_GetPitch"); + sfSoundStream_GetVolume = cast(pf_sfSoundStream_GetVolume)dll.getSymbol("sfSoundStream_GetVolume"); + sfSoundStream_GetPosition = cast(pf_sfSoundStream_GetPosition)dll.getSymbol("sfSoundStream_GetPosition"); + sfSoundStream_GetMinDistance = cast(pf_sfSoundStream_GetMinDistance)dll.getSymbol("sfSoundStream_GetMinDistance"); + sfSoundStream_GetAttenuation = cast(pf_sfSoundStream_GetAttenuation)dll.getSymbol("sfSoundStream_GetAttenuation"); + sfSoundStream_GetPlayingOffset = cast(pf_sfSoundStream_GetPlayingOffset)dll.getSymbol("sfSoundStream_GetPlayingOffset"); + sfSoundStream_GetLoop = cast(pf_sfSoundStream_GetLoop)dll.getSymbol("sfSoundStream_GetLoop"); + sfSoundStream_SetLoop = cast(pf_sfSoundStream_SetLoop)dll.getSymbol("sfSoundStream_SetLoop"); + } +} diff --git a/DSFML/import/dsfml/graphics/all.d b/DSFML/import/dsfml/graphics/all.d new file mode 100644 index 00000000..dd29091d --- /dev/null +++ b/DSFML/import/dsfml/graphics/all.d @@ -0,0 +1,41 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.all; + +public import + dsfml.graphics.blendmode, + dsfml.graphics.color, + dsfml.graphics.font, + dsfml.graphics.idrawable, + dsfml.graphics.image, + dsfml.graphics.postfx, + dsfml.graphics.rect, + dsfml.graphics.renderwindow, + dsfml.graphics.shape, + dsfml.graphics.sprite, + dsfml.graphics.string, + dsfml.graphics.textstyle, + dsfml.graphics.view; diff --git a/DSFML/import/dsfml/graphics/blendmode.d b/DSFML/import/dsfml/graphics/blendmode.d new file mode 100644 index 00000000..c2497a93 --- /dev/null +++ b/DSFML/import/dsfml/graphics/blendmode.d @@ -0,0 +1,37 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.blendmode; + +/** +* Enumerate the blending modes for drawable objects. +*/ +enum BlendMode +{ + ALPHA, /// Pixel = Src * a + Dest * (1 - a) + ADD, /// Pixel = Src + Dest + MULTIPLY, /// Pixel = Src * Dest + NONE /// No blending +} diff --git a/DSFML/import/dsfml/graphics/color.d b/DSFML/import/dsfml/graphics/color.d new file mode 100644 index 00000000..79929485 --- /dev/null +++ b/DSFML/import/dsfml/graphics/color.d @@ -0,0 +1,130 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.color; + + +/** +* Color is an utility structure for manipulating colors +*/ +struct Color +{ + /** + * Construct the color from its 4 RGBA components + * + * Params: + * r = Red component (0 .. 255) + * g = Green component (0 .. 255) + * b = Blue component (0 .. 255) + * a = Alpha component (0 .. 255) (255 by default) + */ + static Color opCall(ubyte r, ubyte g, ubyte b, ubyte a = 255) + { + Color c; + c.r = r; + c.g = g; + c.b = b; + c.a = a; + + return c; + } + + /** + * Operator == and != overload to compare two colors + */ + int opEquals(Color color2) + { + return + (r == color2.r) + && (g == color2.g) + && (b == color2.b) + && (a == color2.a); + } + /** + * Operator + overload to add two colors + */ + Color opAdd(Color color2) + { + ubyte r = this.r + color2.r > 255 ? 255 : this.r + color2.r; + ubyte g = this.g + color2.g > 255 ? 255 : this.g + color2.g; + ubyte b = this.b + color2.b > 255 ? 255 : this.b + color2.b; + ubyte a = this.a + color2.a > 255 ? 255 : this.a + color2.a; + + return Color(r, g, b, a); + } + + /** + * Operator += overload + */ + Color opAddAssign(Color color2) + { + this.r = this.r + color2.r > 255 ? 255 : this.r + color2.r; + this.g = this.g + color2.g > 255 ? 255 : this.g + color2.g; + this.b = this.b + color2.b > 255 ? 255 : this.b + color2.b; + this.a = this.a + color2.a > 255 ? 255 : this.a + color2.a; + + return *this; + } + + /** + * Operator * overload to modulate colors + */ + Color opMul(Color color2) + { + ubyte r = this.r * color2.r / 255; + ubyte g = this.g * color2.g / 255; + ubyte b = this.b * color2.b / 255; + ubyte a = this.a * color2.a / 255; + + return Color(r, g, b, a); + } + + /** + * Operator *= overload + */ + Color opMulAssign(Color color2) + { + this.r = this.r * color2.r / 255; + this.g = this.g * color2.g / 255; + this.b = this.b * color2.b / 255; + this.a = this.a * color2.a / 255; + + return *this; + } + + ubyte r; /// Red component + ubyte g; /// Green component + ubyte b; /// Blue component + ubyte a = 255; /// Alpha (transparency) component + + static const Color BLACK = {0, 0, 0}; /// Black predefined color + static const Color WHITE = {255, 255, 255}; /// White predefined color + static const Color RED = {255, 0, 0}; /// Red predefined color + static const Color GREEN = {0, 255, 0}; /// Green predefined color + static const Color BLUE = {0, 0, 255}; /// Blue predefined color + static const Color YELLOW = {255, 0, 255}; /// Yellow predefined color + static const Color MAGENTA = {255, 0, 255}; /// Magenta predefined color + static const Color CYAN = {0, 255, 255}; /// Cyan predefined color +} diff --git a/DSFML/import/dsfml/graphics/drawableimpl.d b/DSFML/import/dsfml/graphics/drawableimpl.d new file mode 100644 index 00000000..b954bca4 --- /dev/null +++ b/DSFML/import/dsfml/graphics/drawableimpl.d @@ -0,0 +1,320 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.drawableimpl; + +public import dsfml.system.common; +import dsfml.system.vector2; + +import dsfml.graphics.idrawable; +import dsfml.graphics.color; +import dsfml.graphics.blendmode; +import dsfml.graphics.renderwindow; + + +package +{ + struct sfSprite{}; + struct sfShape{}; + struct sfString{}; +} + +/* +* Package base class of all drawable. +* Provide implementation of IDrawable and functions aliases. +*/ +package class Drawableimpl(T) : DSFMLObject, IDrawable +{ + void setX(float x) + { + sfDrawable_SetX(m_ptr, x); + } + + void setY(float y) + { + sfDrawable_SetY(m_ptr, y); + } + + void setPosition(float x, float y) + { + sfDrawable_SetPosition(m_ptr, x, y); + } + + void setPosition(Vector2f vec) + { + sfDrawable_SetPosition(m_ptr, vec.x, vec.y); + } + + void setScaleX(float scale) + { + if (scale > 0) + sfDrawable_SetScaleX(m_ptr, scale); + } + + void setScaleY(float scale) + { + if (scale > 0) + sfDrawable_SetScaleY(m_ptr, scale); + } + + void setScale(float scaleX, float scaleY) + { + if (scaleX > 0 && scaleY > 0) + sfDrawable_SetScale(m_ptr, scaleX, scaleY); + } + + void setScale(Vector2f scale) + { + if (scale.x > 0 && scale.y > 0) + sfDrawable_SetScale(m_ptr, scale.x, scale.y); + } + + void setCenter(float centerX, float centerY) + { + sfDrawable_SetCenter(m_ptr, centerX, centerY); + } + + void setCenter(Vector2f center) + { + sfDrawable_SetCenter(m_ptr, center.x, center.y); + } + + void setRotation(float angle) + { + sfDrawable_SetRotation(m_ptr, angle); + } + + void setColor(Color c) + { + sfDrawable_SetColor(m_ptr, c); + } + + void setBlendMode(BlendMode mode) + { + sfDrawable_SetBlendMode(m_ptr, mode); + } + + Vector2f getPosition() + { + return Vector2f(sfDrawable_GetX(m_ptr), sfDrawable_GetY(m_ptr)); + } + + Vector2f getScale() + { + return Vector2f(sfDrawable_GetScaleX(m_ptr), sfDrawable_GetScaleY(m_ptr)); + } + + Vector2f getCenter() + { + return Vector2f(sfDrawable_GetCenterX(m_ptr), sfDrawable_GetCenterY(m_ptr)); + } + + float getRotation() + { + return sfDrawable_GetRotation(m_ptr); + } + + Color getColor() + { + return sfDrawable_GetColor(m_ptr); + } + + BlendMode getBlendMode() + { + return cast(BlendMode)(sfDrawable_GetBlendMode(m_ptr)); + } + + void rotate(float angle) + { + sfDrawable_Rotate(m_ptr, angle); + } + + void move(float offsetX, float offsetY) + { + sfDrawable_Move(m_ptr, offsetX, offsetY); + } + + void move(Vector2f offset) + { + sfDrawable_Move(m_ptr, offset.x, offset.y); + } + + void scale(float scaleX, float scaleY) + { + if (scaleX > 0 && scaleY > 0) + sfDrawable_SetScale(m_ptr, scaleX, scaleY); + } + + void scale(Vector2f scale) + { + if (scale.x > 0 && scale.y > 0) + sfDrawable_SetScale(m_ptr, scale.x, scale.y); + } + + Vector2f tranformToLocal(Vector2f point) + { + Vector2f ret; + sfDrawable_TransformToLocal(m_ptr, point.x, point.y, &ret.x, &ret.y); + return ret; + } + + Vector2f tranformToGlobal(Vector2f point) + { + Vector2f ret; + sfDrawable_TransformToLocal(m_ptr, point.x, point.y, &ret.x, &ret.y); + return ret; + } + + void render(RenderWindow window) + { + sfRenderWindow_DrawThis(window.getNativePointer, m_ptr); + } + + override void dispose() + { + sfDrawable_Destroy(m_ptr); + } + +protected: + this() + { + super(sfDrawable_Create()); + } + + this(void* ptr) + { + super(ptr); + } + +private: + + extern (C) + { + typedef void* function() pf_sfDrawable_Create; + typedef void function(void*) pf_sfDrawable_Destroy; + typedef void function(void*, float) pf_sfDrawable_SetX; + typedef void function(void*, float) pf_sfDrawable_SetY; + typedef void function(void*, float, float) pf_sfDrawable_SetPosition; + typedef void function(void*, float) pf_sfDrawable_SetScaleX; + typedef void function(void*, float) pf_sfDrawable_SetScaleY; + typedef void function(void*, float, float) pf_sfDrawable_SetScale; + typedef void function(void*, float) pf_sfDrawable_SetRotation; + typedef void function(void*, float, float) pf_sfDrawable_SetCenter; + typedef void function(void*, Color) pf_sfDrawable_SetColor; + typedef void function(void*, BlendMode) pf_sfDrawable_SetBlendMode; + typedef float function(void*) pf_sfDrawable_GetX; + typedef float function(void*) pf_sfDrawable_GetY; + typedef float function(void*) pf_sfDrawable_GetScaleX; + typedef float function(void*) pf_sfDrawable_GetScaleY; + typedef float function(void*) pf_sfDrawable_GetRotation; + typedef float function(void*) pf_sfDrawable_GetCenterX; + typedef float function(void*) pf_sfDrawable_GetCenterY; + typedef Color function(void*) pf_sfDrawable_GetColor; + typedef BlendMode function(void*) pf_sfDrawable_GetBlendMode; + typedef void function(void*, float, float) pf_sfDrawable_Move; + typedef void function(void*, float, float) pf_sfDrawable_Scale; + typedef void function(void*, float) pf_sfDrawable_Rotate; + typedef void function(void*, float, float, float*, float*) pf_sfDrawable_TransformToLocal; + typedef void function(void*, float, float, float*, float*) pf_sfDrawable_TransformToGlobal; + + typedef void function(void*, void*) pf_sfRenderWindow_DrawThis; + + static pf_sfDrawable_Create sfDrawable_Create; + static pf_sfDrawable_Destroy sfDrawable_Destroy; + static pf_sfDrawable_SetX sfDrawable_SetX; + static pf_sfDrawable_SetY sfDrawable_SetY; + static pf_sfDrawable_SetPosition sfDrawable_SetPosition; + static pf_sfDrawable_SetScaleX sfDrawable_SetScaleX; + static pf_sfDrawable_SetScaleY sfDrawable_SetScaleY; + static pf_sfDrawable_SetScale sfDrawable_SetScale; + static pf_sfDrawable_SetRotation sfDrawable_SetRotation; + static pf_sfDrawable_SetCenter sfDrawable_SetCenter; + static pf_sfDrawable_SetColor sfDrawable_SetColor; + static pf_sfDrawable_SetBlendMode sfDrawable_SetBlendMode; + static pf_sfDrawable_GetX sfDrawable_GetX; + static pf_sfDrawable_GetY sfDrawable_GetY; + static pf_sfDrawable_GetScaleX sfDrawable_GetScaleX; + static pf_sfDrawable_GetScaleY sfDrawable_GetScaleY; + static pf_sfDrawable_GetRotation sfDrawable_GetRotation; + static pf_sfDrawable_GetCenterX sfDrawable_GetCenterX; + static pf_sfDrawable_GetCenterY sfDrawable_GetCenterY; + static pf_sfDrawable_GetColor sfDrawable_GetColor; + static pf_sfDrawable_GetBlendMode sfDrawable_GetBlendMode; + static pf_sfDrawable_Move sfDrawable_Move; + static pf_sfDrawable_Scale sfDrawable_Scale; + static pf_sfDrawable_Rotate sfDrawable_Rotate; + static pf_sfDrawable_TransformToLocal sfDrawable_TransformToLocal; + static pf_sfDrawable_TransformToGlobal sfDrawable_TransformToGlobal; + + static pf_sfRenderWindow_DrawThis sfRenderWindow_DrawThis; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + static if (is (T : sfSprite)) + { + char[] symbol = "sfSprite"; + } + else static if (is (T : sfString)) + { + char[] symbol = "sfString"; + } + else static if (is (T : sfShape)) + { + char[] symbol = "sfShape"; + } + + sfDrawable_Create = cast(pf_sfDrawable_Create)dll.getSymbol(symbol ~ "_Create"); + sfDrawable_Destroy = cast(pf_sfDrawable_Destroy)dll.getSymbol(symbol ~ "_Destroy"); + sfDrawable_SetX = cast(pf_sfDrawable_SetX)dll.getSymbol(symbol ~ "_SetX"); + sfDrawable_SetY = cast(pf_sfDrawable_SetY)dll.getSymbol(symbol ~ "_SetY"); + sfDrawable_SetPosition = cast(pf_sfDrawable_SetPosition)dll.getSymbol(symbol ~ "_SetPosition"); + sfDrawable_SetScaleX = cast(pf_sfDrawable_SetScaleX)dll.getSymbol(symbol ~ "_SetScaleX"); + sfDrawable_SetScaleY = cast(pf_sfDrawable_SetScaleY)dll.getSymbol(symbol ~ "_SetScaleY"); + sfDrawable_SetScale = cast(pf_sfDrawable_SetScale)dll.getSymbol(symbol ~ "_SetScale"); + sfDrawable_SetRotation = cast(pf_sfDrawable_SetRotation)dll.getSymbol(symbol ~ "_SetRotation"); + sfDrawable_SetCenter = cast(pf_sfDrawable_SetCenter)dll.getSymbol(symbol ~ "_SetCenter"); + sfDrawable_SetColor = cast(pf_sfDrawable_SetColor)dll.getSymbol(symbol ~ "_SetColor"); + sfDrawable_SetBlendMode = cast(pf_sfDrawable_SetBlendMode)dll.getSymbol(symbol ~ "_SetBlendMode"); + sfDrawable_GetX = cast(pf_sfDrawable_GetX)dll.getSymbol(symbol ~ "_GetX"); + sfDrawable_GetY = cast(pf_sfDrawable_GetY)dll.getSymbol(symbol ~ "_GetY"); + sfDrawable_GetScaleX = cast(pf_sfDrawable_GetScaleX)dll.getSymbol(symbol ~ "_GetScaleX"); + sfDrawable_GetScaleY = cast(pf_sfDrawable_GetScaleY)dll.getSymbol(symbol ~ "_GetScaleX"); + sfDrawable_GetRotation = cast(pf_sfDrawable_GetRotation)dll.getSymbol(symbol ~ "_GetRotation"); + sfDrawable_GetCenterX = cast(pf_sfDrawable_GetCenterX)dll.getSymbol(symbol ~ "_GetCenterX"); + sfDrawable_GetCenterY = cast(pf_sfDrawable_GetCenterY)dll.getSymbol(symbol ~ "_GetCenterY"); + sfDrawable_GetColor = cast(pf_sfDrawable_GetColor)dll.getSymbol(symbol ~ "_GetColor"); + sfDrawable_GetBlendMode = cast(pf_sfDrawable_GetBlendMode)dll.getSymbol(symbol ~ "_GetBlendMode"); + sfDrawable_Move = cast(pf_sfDrawable_Move)dll.getSymbol(symbol ~ "_Move"); + sfDrawable_Scale = cast(pf_sfDrawable_Scale)dll.getSymbol(symbol ~ "_Scale"); + sfDrawable_Rotate = cast(pf_sfDrawable_Rotate)dll.getSymbol(symbol ~ "_Rotate"); + sfDrawable_TransformToLocal = cast(pf_sfDrawable_TransformToLocal)dll.getSymbol(symbol ~ "_TransformToLocal"); + sfDrawable_TransformToGlobal = cast(pf_sfDrawable_TransformToGlobal)dll.getSymbol(symbol ~ "_TransformToGlobal"); + + sfRenderWindow_DrawThis = cast(pf_sfRenderWindow_DrawThis)dll.getSymbol("sfRenderWindow_Draw" ~ symbol[2..$]); + } +} diff --git a/DSFML/import/dsfml/graphics/font.d b/DSFML/import/dsfml/graphics/font.d new file mode 100644 index 00000000..3ce85334 --- /dev/null +++ b/DSFML/import/dsfml/graphics/font.d @@ -0,0 +1,123 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.font; + +import dsfml.system.common; +import dsfml.system.exception; +import dsfml.system.stringutil; + +/** +* Font is the low-level class for loading and +* manipulating character fonts. +*/ +class Font : DSFMLObject +{ + /** + * Get SFML default built-in font (Arial) + */ + static Font getDefaultFont() + { + if (s_default is null) + s_default = new Font(sfFont_GetDefaultFont()); + return s_default; + } + + /** + * construct the Font from a file + * + * Params: + * filename = font file to load + * charSize = size of characters (30 by default) + * charset = characters set to generate (empty by default - takes the ASCII range [31, 255]) + */ + this(char[] filename, uint charSize = 30, dchar[] charset = null) + { + if (filename is null || filename.length == 0) + throw new LoadingException("LoadingException : Filename is invalid."); + + super(sfFont_CreateFromFile(toStringz(filename), charSize, toStringz(charset))); + } + + /** + * construct the Font from a file in memory + * + * Params: + * data = data to load + * charSize = size of characters (30 by default) + * charset = characters set to generate (empty by default - takes the ASCII range [31, 255]) + */ + this(byte[] data, uint charSize = 30, dchar[] charset = null) + { + if (data is null || data.length == 0) + throw new Exception("LoadingException : Memory stream is invalid."); + + super(sfFont_CreateFromMemory(data.ptr, data.length, charSize, toStringz(charset))); + } + + + override void dispose() + { + sfFont_Destroy(m_ptr); + } + + + +package: + + this(void* ptr) + { + super(ptr, true); + } + +private: + static Font s_default; + + extern (C) + { + typedef void* function() pf_sfFont_Create; + typedef void* function(char*, uint, dchar*) pf_sfFont_CreateFromFile; + typedef void* function(byte*, size_t, uint, dchar*) pf_sfFont_CreateFromMemory; + typedef void function(void*) pf_sfFont_Destroy; + typedef void* function() pf_sfFont_GetDefaultFont; + + static pf_sfFont_Create sfFont_Create; + static pf_sfFont_CreateFromFile sfFont_CreateFromFile; + static pf_sfFont_CreateFromMemory sfFont_CreateFromMemory; + static pf_sfFont_Destroy sfFont_Destroy; + static pf_sfFont_GetDefaultFont sfFont_GetDefaultFont; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfFont_Create = cast(pf_sfFont_Create) dll.getSymbol("sfFont_Create"); + sfFont_CreateFromFile = cast(pf_sfFont_CreateFromFile) dll.getSymbol("sfFont_CreateFromFile"); + sfFont_CreateFromMemory = cast(pf_sfFont_CreateFromMemory) dll.getSymbol("sfFont_CreateFromMemory"); + sfFont_Destroy = cast(pf_sfFont_Destroy) dll.getSymbol("sfFont_Destroy"); + sfFont_GetDefaultFont = cast(pf_sfFont_GetDefaultFont) dll.getSymbol("sfFont_GetDefaultFont"); + } +} diff --git a/DSFML/import/dsfml/graphics/idrawable.d b/DSFML/import/dsfml/graphics/idrawable.d new file mode 100644 index 00000000..f96fb37e --- /dev/null +++ b/DSFML/import/dsfml/graphics/idrawable.d @@ -0,0 +1,284 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.idrawable; + +import dsfml.system.vector2; + +import dsfml.graphics.color; +import dsfml.graphics.blendmode; +import dsfml.graphics.renderwindow; + + +/** +* Interface for drawable object +* +* Shape, String and Sprite implement IDrawable +*/ +interface IDrawable +{ + /** + * Set the left position of the object + * + * Params: + * x = New left coordinate + */ + void setX(float x); + + /** + * Set the top position of the object + * + * Params: + * y = New top coordinate + */ + void setY(float y); + + + /** + * Set the position of the object + * + * Params: + * x = New left coordinate + * y = New top coordinate + */ + void setPosition(float x, float y); + + /** + * Set the position of the object + * + * Params: + * vec = new position + */ + void setPosition(Vector2f vec); + + /** + * Set the horizontal scale of the object + * + * Params: + * scale = New horizontal scale (Strictly positive) + */ + void setScaleX(float scale); + + /** + * Set the vertical scale of the object + * + * Params: + * scale = New vertical scale (Strictly positive) + */ + void setScaleY(float scale); + + /** + * Set the scale of the object + * + * Params: + * scaleX = New horizontal scale + * scaleY = New vertical scale + */ + void setScale(float scaleX, float scaleY); + + /** + * Set the scale of the object + * + * Params: + * scale = new scale + */ + void setScale(Vector2f scale); + + /** + * Set the center of the object, in coordinates relative to the + * top-left of the object (take 2 values). + * The default center is (0, 0) + * + * Params: + * centerX : X coordinate of the center + * centerY : Y coordinate of the center + */ + void setCenter(float centerX, float centerY); + + /** + * Set the center of the object, in coordinates relative to the + * top-left of the object (take a 2D vector). + * The default center is (0, 0) + * + * Params: + * center : New center + */ + void setCenter(Vector2f center); + + + /** + * Set the rotation of the object + * + * Params: + * angle = Angle of rotation, in degree + */ + void setRotation(float angle); + + /** + * Set the color + * + * Params: + * c = New color + */ + void setColor(Color c); + + /** + * Set the blending mode for the object. + * The default blend mode is Blend.Alpha + * + * Params: + * mode = New blending mode + */ + void setBlendMode(BlendMode mode); + + /** + * Get the position of the object + * + * Returns: + * Current position + * + */ + Vector2f getPosition(); + + /** + * Get the current scale of the object + * + * Returns: + * Current scale + */ + Vector2f getScale(); + + /** + * Get the center of the object + * + * Returns: + * Current position of the center + * + */ + Vector2f getCenter(); + + /** + * Get the rotation angle of the object + * + * Returns: + * Angle of rotation, in degree + */ + float getRotation(); + + /** + * Get the color of the string + * + * Returns: + * Current color + */ + Color getColor(); + + /** + * Get the current blending mode + * + * Returns: + * Current blending mode + */ + BlendMode getBlendMode(); + + /** + * Rotate the object + * Angle is added to the current orientation of the objet + * + * Params: + * angle = Angle of rotation in degree + */ + void rotate(float angle); + + /** + * Move the object + * New offset is added to object current position + * + * Params: + * offsetX = Offset on the X axis + * offsetY = Offset on the Y axis + */ + void move(float offsetX, float offsetY); + + /** + * Move the object + * New offset is added to object current position + * + * Params: + * offset = Amount of units to move the object of + */ + void move(Vector2f offset); + + /** + * Set the scale of the object + * + * Params: + * scaleX = New horizontal scale (Strictly positive) + * scaleY = New vertical scale (Strictly positive) + */ + void scale(float scaleX, float scaleY); + + /** + * Scale the object (take a 2D vector) + * + * Params: + * factor = Scaling factors (both values must be strictly positive) + */ + void scale(Vector2f factor); + + /** + * Transform a point from global coordinates into local coordinates + * (ie it applies the inverse of object's center, translation, rotation and scale to the point) + * + * Params: + * point = Point to transform + * + * Returns: + * Transformed point + */ + Vector2f tranformToLocal(Vector2f point); + + /** + * Transform a point from local coordinates into global coordinates + * (ie it applies the inverse of object's center, translation, rotation and scale to the point) + * + * Params: + * point = Point to transform + * + * Returns: + * Transformed point + */ + Vector2f tranformToGlobal(Vector2f point); + + /** + * Render the specific geometry of the object + * + * Params: + * window = Target into which render the object + */ + void render(RenderWindow window); +} + + diff --git a/DSFML/import/dsfml/graphics/image.d b/DSFML/import/dsfml/graphics/image.d new file mode 100644 index 00000000..e35d75c3 --- /dev/null +++ b/DSFML/import/dsfml/graphics/image.d @@ -0,0 +1,366 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + + + +/* +* TODO : FIX circular dependency with render window +*/ +module dsfml.graphics.image; + +import dsfml.graphics.color; +import dsfml.graphics.rect; + +import dsfml.system.common; +import dsfml.system.exception; +import dsfml.system.stringutil; + + +/** +* Image is the low-level class for loading and +* manipulating images +*/ +class Image : DSFMLObject +{ + /** + * Default constructor + */ + this() + { + super(sfImage_Create()); + } + + /** + * Construct an empty image + * + * Params: + * width = Image width + * height = Image height + * col = Image color (black by default) + */ + this(uint width, uint height, Color col = Color.BLACK) + { + super(sfImage_CreateFromColor(width, height, col)); + } + + /** + * Construct the image from a file + * + * Params: + * filename = Path of the image file to load + * + * Throws: + * LoadingException if filename is empty or null. + */ + this(char[] filename) + { + if (filename is null || filename.length == 0) + throw new LoadingException("LoadingException : Filename is invalid."); + + super(sfImage_CreateFromFile(toStringz(filename))); + } + + /** + * Construct the image from a file in memory + * + * Params: + * data = array of data in memory + * Throws: + * LoadingException if data is empty or null. + */ + this(byte[] data) + { + if (data is null || data.length == 0) + throw new LoadingException("LoadingException : Memory stream is invalid."); + + super(sfImage_CreateFromMemory(data.ptr, data.length)); + } + + /** + * Construct the image directly from an array of pixels + * + * Params: + * width = Image width + * height = Image height + * data = array of pixels in memory (assumed format is RGBA) + * + * Throws: + * LoadingException if data length doesn't match Width * Height * 4 + */ + this(uint width, uint height, ubyte[] data) + { + if (width * height * 4 != data.length) + throw new LoadingException("LoadingException : Pixels array length doesn't match the specified size."); + + super(sfImage_CreateFromPixels(width, height, data.ptr)); + } + + override void dispose() + { + sfImage_Destroy(m_ptr); + } + + /** + * Save the content of the image to a file + * + * Params: + * filename = Path of the file to save (overwritten if already exist) + * + * Returns: + * True if saving was successful + */ + bool saveToFile(char[] filename) + { + return cast(bool)sfImage_SaveToFile(m_ptr, toStringz(filename)); + } + + /** + * Create an empty image + * + * Params: + * width = Image width + * height = Image height + * col = Image color (black by default) + * + * Returns: + * True if creation was successful + */ + bool create(uint width, uint height, Color col = Color.BLACK) + { + m_ptr = sfImage_CreateFromColor(width, height, col); + return (m_ptr !is null); + } + + /** + * Create transparency mask from a specified colorkey + * + * Params: + * colorKey = Color to become transparent + * alpha = Alpha value to use for transparent pixels (0 by default) + */ + void createMaskFromColor(Color colorKey, ubyte alpha = 0) + { + sfImage_CreateMaskFromColor(m_ptr, colorKey, alpha); + } + +// /** +// * Create the image from the current contents of the +// * given window +// * +// * Params: +// * window = Window to capture +// * sourceRect = Sub-rectangle of the screen to copy (empty by default - entire image) +// * +// * Returns: +// * True if copy was successful +// */ +// void copyScreen(RenderWindow window, IntRect sourceRect = new IntRect()) +// { +// return cast(bool)sfImage_CopyScreen(m_ptr, window.getNativePointer, sourceRect.toCIntRect()); +// } + + /** + * Copy pixels from another image onto this one. + * This function does a slow pixel copy and should only + * be used at initialization time + * + * Params: + * source = Source image to copy + * destX = X coordinate of the destination position + * destY = Y coordinate of the destination position + * sourceRect = Sub-rectangle of the source image to copy + */ + void copy(Image source, uint destX, uint destY, IntRect sourceRect = new IntRect()) + { + sfImage_Copy(m_ptr, source.getNativePointer, destX, destY, sourceRect.toCIntRect()); + } + + /** + * Change the color of a pixel + * Don't forget to call Update when you end modifying pixels + * + * Params: + * x = X coordinate of pixel in the image + * y = Y coordinate of pixel in the image + * col = New color for pixel (X, Y) + */ + void setPixel(uint x, uint y, Color col) + { + sfImage_SetPixel(m_ptr, x, y, col); + } + + /** + * Get a pixel from the image + * + * Params: + * x = X coordinate of pixel in the image + * y = Y coordinate of pixel in the image + * + * Returns: + * Color of pixel (x, y) + */ + Color getPixel(uint x, uint y) + { + return sfImage_GetPixel(m_ptr, x, y); + } + + /** + * Get an array of pixels (8 bits integers RGBA) + * Array size is GetWidth() x GetHeight() x 4 + * This array becomes invalid if you reload or resize the image + * + * Returns: + * array of pixels + */ + ubyte[] getPixelsArray() + { + return sfImage_GetPixelsPtr(m_ptr)[0..getWidth() * getHeight() * 4]; + } + + /** + * Bind the image for rendering + */ + void bind() + { + sfImage_Bind(m_ptr); + } + + /** + * Enable or disable image smooth filter. + * This parameter is enabled by default + * + * Params: + * smooth = True to enable smoothing filter, false to disable it + */ + void setSmooth(bool smooth) + { + sfImage_SetSmooth(m_ptr, smooth); + } + + /** + * Return the width of the image + * + * Returns: + * Width in pixels + */ + uint getWidth() + { + return sfImage_GetWidth(m_ptr); + } + + /** + * Return the height of the image + * + * Returns: + * Height in pixels + */ + uint getHeight() + { + return sfImage_GetHeight(m_ptr); + } + + /** + * Tells whether the smooth filtering is enabled or not + * + * Returns: + * True if image smoothing is enabled + */ + bool isSmooth() + { + return cast(bool)sfImage_IsSmooth(m_ptr); + } + +package: + this(void* ptr) + { + super(ptr); + } + +private: + extern (C) + { + typedef void* function() pf_sfImage_Create; + typedef void* function(uint, uint, Color) pf_sfImage_CreateFromColor; + typedef void* function(uint, uint, ubyte*) pf_sfImage_CreateFromPixels; + typedef void* function(char*) pf_sfImage_CreateFromFile; + typedef void* function(byte* ,size_t) pf_sfImage_CreateFromMemory; + typedef void function(void*) pf_sfImage_Destroy; + typedef int function(void*, char*) pf_sfImage_SaveToFile; + typedef void function(void*, Color, ubyte) pf_sfImage_CreateMaskFromColor; + typedef int function(void*, void*, sfIntRect) pf_sfImage_CopyScreen; + typedef void function(void*, void*, uint, uint, sfIntRect) pf_sfImage_Copy; + typedef void function(void*, uint, uint, Color) pf_sfImage_SetPixel; + typedef Color function(void*, uint, uint) pf_sfImage_GetPixel; + typedef ubyte* function(void*) pf_sfImage_GetPixelsPtr; + typedef void function(void*) pf_sfImage_Bind; + typedef void function(void*, int) pf_sfImage_SetSmooth; + typedef uint function(void*) pf_sfImage_GetWidth; + typedef uint function(void*) pf_sfImage_GetHeight; + typedef int function(void*) pf_sfImage_IsSmooth; + + static pf_sfImage_Create sfImage_Create; + static pf_sfImage_CreateFromColor sfImage_CreateFromColor; + static pf_sfImage_CreateFromPixels sfImage_CreateFromPixels; + static pf_sfImage_CreateFromFile sfImage_CreateFromFile; + static pf_sfImage_CreateFromMemory sfImage_CreateFromMemory; + static pf_sfImage_Destroy sfImage_Destroy; + static pf_sfImage_SaveToFile sfImage_SaveToFile; + static pf_sfImage_CreateMaskFromColor sfImage_CreateMaskFromColor; + static pf_sfImage_CopyScreen sfImage_CopyScreen; + static pf_sfImage_Copy sfImage_Copy; + static pf_sfImage_SetPixel sfImage_SetPixel; + static pf_sfImage_GetPixel sfImage_GetPixel; + static pf_sfImage_GetPixelsPtr sfImage_GetPixelsPtr; + static pf_sfImage_Bind sfImage_Bind; + static pf_sfImage_SetSmooth sfImage_SetSmooth; + static pf_sfImage_GetWidth sfImage_GetWidth; + static pf_sfImage_GetHeight sfImage_GetHeight; + static pf_sfImage_IsSmooth sfImage_IsSmooth; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfImage_Create = cast(pf_sfImage_Create)dll.getSymbol("sfImage_Create"); + sfImage_CreateFromColor = cast(pf_sfImage_CreateFromColor)dll.getSymbol("sfImage_CreateFromColor"); + sfImage_CreateFromPixels = cast(pf_sfImage_CreateFromPixels)dll.getSymbol("sfImage_CreateFromPixels"); + sfImage_CreateFromFile = cast(pf_sfImage_CreateFromFile)dll.getSymbol("sfImage_CreateFromFile"); + sfImage_CreateFromMemory = cast(pf_sfImage_CreateFromMemory)dll.getSymbol("sfImage_CreateFromMemory"); + sfImage_Destroy = cast(pf_sfImage_Destroy)dll.getSymbol("sfImage_Destroy"); + sfImage_SaveToFile = cast(pf_sfImage_SaveToFile)dll.getSymbol("sfImage_SaveToFile"); + sfImage_CreateMaskFromColor = cast(pf_sfImage_CreateMaskFromColor)dll.getSymbol("sfImage_CreateMaskFromColor"); + sfImage_CopyScreen = cast(pf_sfImage_CopyScreen)dll.getSymbol("sfImage_CopyScreen"); + sfImage_Copy = cast(pf_sfImage_Copy)dll.getSymbol("sfImage_Copy"); + sfImage_SetPixel = cast(pf_sfImage_SetPixel)dll.getSymbol("sfImage_SetPixel"); + sfImage_GetPixel = cast(pf_sfImage_GetPixel)dll.getSymbol("sfImage_GetPixel"); + sfImage_GetPixelsPtr = cast(pf_sfImage_GetPixelsPtr)dll.getSymbol("sfImage_GetPixelsPtr"); + sfImage_Bind = cast(pf_sfImage_Bind)dll.getSymbol("sfImage_Bind"); + sfImage_SetSmooth = cast(pf_sfImage_SetSmooth)dll.getSymbol("sfImage_SetSmooth"); + sfImage_GetWidth = cast(pf_sfImage_GetWidth)dll.getSymbol("sfImage_GetWidth"); + sfImage_GetHeight = cast(pf_sfImage_GetHeight)dll.getSymbol("sfImage_GetHeight"); + sfImage_IsSmooth = cast(pf_sfImage_IsSmooth)dll.getSymbol("sfImage_IsSmooth"); + } +} diff --git a/DSFML/import/dsfml/graphics/postfx.d b/DSFML/import/dsfml/graphics/postfx.d new file mode 100644 index 00000000..a37ea61b --- /dev/null +++ b/DSFML/import/dsfml/graphics/postfx.d @@ -0,0 +1,175 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.postfx; + +import dsfml.graphics.image; + +import dsfml.system.common; +import dsfml.system.exception; +import dsfml.system.stringutil; + + +/** +* Define loading methods for effect +*/ +enum LoadingType +{ + FROMFILE, /// string represents a file path + FROMSTRING /// string represents effect code +} + +/** +* PostFX is used to apply a post effect to a window +* +* See_Also: +* $(LINK2 http://www.sfml-dev.org/tutorials/graphics-postfx.php, SFML post FX tutorial) from more informations about Post effects and GLSL fragment shaders syntax. +*/ +class PostFX : DSFMLObject +{ + /** + * construct the effect + * + * Params: + * effect = Path of a file or string containing the effect. + * type = type of the effect (default is FROMFILE) + */ + this(char[] effect, LoadingType type = LoadingType.FROMFILE) + { + if (effect is null || effect.length == 0) + throw new LoadingException("LoadingException : Effect is invalid."); + + if (type == LoadingType.FROMFILE) + super(sfPostFX_CreateFromFile(toStringz(effect))); + else + super(sfPostFX_CreateFromMemory(toStringz(effect))); + } + + override void dispose() + { + sfPostFX_Destroy(m_ptr); + } + + /** + * Change parameters of the effect + * + * Params: + * name = Parameter name in the effect + */ + void setParameter(char[] name, float x) + { + sfPostFX_SetParameter1(m_ptr, toStringz(name), x); + } + + /** + * ditto + */ + void setParameter(char[] name, float x, float y) + { + sfPostFX_SetParameter2(m_ptr, toStringz(name), x, y); + } + + /** + * ditto + */ + void setParameter(char[] name, float x, float y, float z) + { + sfPostFX_SetParameter3(m_ptr, toStringz(name), x, y, z); + } + + /** + * ditto + */ + void setParameter(char[] name, float x, float y, float z, float w) + { + sfPostFX_SetParameter4(m_ptr, toStringz(name), x, y, z, w); + } + + /** + * Set a texture parameter + * + * Params: + * name = Texture name in the effect + * texture = Image to set (pass NULL to use content of current framebuffer) + */ + void setTexture(char[] name, Image texture) + { + m_texture = texture; + sfPostFX_SetTexture(m_ptr, toStringz(name), texture is null ? null : texture.getNativePointer); + } + + /** + * Tell whether or not the system supports post-effects + * + * Returns: + * True if the system can use post-effects + */ + static bool canUsePostFX() + { + return cast(bool)sfPostFX_CanUsePostFX(); + } + + +private: + Image m_texture; + + extern (C) + { + typedef void* function(char*) pf_sfPostFX_CreateFromFile; + typedef void* function(char*) pf_sfPostFX_CreateFromMemory; + typedef void function(void*) pf_sfPostFX_Destroy; + typedef void function(void*, char*, float) pf_sfPostFX_SetParameter1; + typedef void function(void*, char*, float, float) pf_sfPostFX_SetParameter2; + typedef void function(void*, char*, float, float, float) pf_sfPostFX_SetParameter3; + typedef void function(void*, char*, float, float, float, float) pf_sfPostFX_SetParameter4; + typedef void function(void*, char*, void*) pf_sfPostFX_SetTexture; + typedef int function() pf_sfPostFX_CanUsePostFX; + + static pf_sfPostFX_CreateFromFile sfPostFX_CreateFromFile; + static pf_sfPostFX_CreateFromMemory sfPostFX_CreateFromMemory; + static pf_sfPostFX_Destroy sfPostFX_Destroy; + static pf_sfPostFX_SetParameter1 sfPostFX_SetParameter1; + static pf_sfPostFX_SetParameter2 sfPostFX_SetParameter2; + static pf_sfPostFX_SetParameter3 sfPostFX_SetParameter3; + static pf_sfPostFX_SetParameter4 sfPostFX_SetParameter4; + static pf_sfPostFX_SetTexture sfPostFX_SetTexture; + static pf_sfPostFX_CanUsePostFX sfPostFX_CanUsePostFX; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfPostFX_CreateFromFile = cast(pf_sfPostFX_CreateFromFile)dll.getSymbol("sfPostFX_CreateFromFile"); + sfPostFX_CreateFromMemory = cast(pf_sfPostFX_CreateFromMemory)dll.getSymbol("sfPostFX_CreateFromMemory"); + sfPostFX_Destroy = cast(pf_sfPostFX_Destroy)dll.getSymbol("sfPostFX_Destroy"); + sfPostFX_SetParameter1 = cast(pf_sfPostFX_SetParameter1)dll.getSymbol("sfPostFX_SetParameter1"); + sfPostFX_SetParameter2 = cast(pf_sfPostFX_SetParameter2)dll.getSymbol("sfPostFX_SetParameter2"); + sfPostFX_SetParameter3 = cast(pf_sfPostFX_SetParameter3)dll.getSymbol("sfPostFX_SetParameter3"); + sfPostFX_SetParameter4 = cast(pf_sfPostFX_SetParameter4)dll.getSymbol("sfPostFX_SetParameter4"); + sfPostFX_SetTexture = cast(pf_sfPostFX_SetTexture)dll.getSymbol("sfPostFX_SetTexture"); + sfPostFX_CanUsePostFX = cast(pf_sfPostFX_CanUsePostFX)dll.getSymbol("sfPostFX_CanUsePostFX"); + } +} diff --git a/DSFML/import/dsfml/graphics/rect.d b/DSFML/import/dsfml/graphics/rect.d new file mode 100644 index 00000000..f616a7df --- /dev/null +++ b/DSFML/import/dsfml/graphics/rect.d @@ -0,0 +1,291 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.rect; + +struct sfFloatRect +{ + float Left; + float Top; + float Right; + float Bottom; +} + +struct sfIntRect +{ + int Left; + int Top; + int Right; + int Bottom; +} + +version (Tango) +{ + import tango.core.Traits; +} +else +{ + template isIntegerType(T) + { + const bool isIntegerType = + is (T == byte) || + is (T == short) || + is (T == int) || + is (T == long); + } + + template isRealType(T) + { + const bool isRealType = + is (T == float) || + is (T == double) || + is (T == real); + } +} +/** +* Rect is an utility class for manipulating rectangles. +* Template parameter defines the type of coordinates (integer float, ...) +*/ + +class Rect (T) +{ + static if (!isIntegerType!(T) && !isRealType!(T)) + { + static assert (0, "This type is not supported by Rectangle"); + } + + T min(T)(T i, T j) + { + return i < j ? i : j; + } + + T max(T)(T i, T j) + { + return i > j ? i : j; + } + + /** + * Default constructor + */ + this() + { + m_Left = 0; + m_Top = 0; + m_Right = 0; + m_Bottom = 0; + } + + /** + * Construct the rectangle from its coordinates + * + * Params: + * leftCoord = Left coordinate of the rectangle + * topCoord = Top coordinate of the rectangle + * rightCoord = Right coordinate of the rectangle + * bottomCoord = Bottom coordinate of the rectangle + */ + this(T leftCoord, T topCoord, T rightCoord, T bottomCoord) + { + m_Left = leftCoord; + m_Top = topCoord; + m_Right = rightCoord; + m_Bottom = bottomCoord; + } + + /** + * Get the width of the rectangle + * + * Returns: + * Width of rectangle + */ + T getWidth() + { + return m_Right - m_Left; + } + + /** + * Get the height of the rectangle + * + * Returns: + * Height of rectangle + */ + T getHeight() + { + return m_Bottom - m_Top; + } + + /** + * Move the whole rectangle by the given offset + * + * Params: + * offsetX = Horizontal offset + * offsetY = Vertical offset + */ + void offset(T offsetX, T offsetY) + { + m_Left += offsetX; + m_Right += offsetX; + m_Top += offsetY; + m_Bottom += offsetY; + } + + /** + * Check if a point is inside the rectangle's area + * + * Params: + * x = X coordinate of the point to test + * y = Y coordinate of the point to test + * + * Returns: + * True if the point is inside + */ + bool contains(T x, T y) + { + return (x >= m_Left) && (x <= m_Right) && (y >= m_Top) && (y <= m_Bottom); + } + + /** + * Check intersection between two rectangles + * + * Params: + * rectangle = Rectangle to test + * overlappingRect = Rectangle to be filled with overlapping rect (NULL by default) + * + * Returns: + * True if rectangles overlap + */ + bool intersects(Rect!(T) rectangle, out Rect!(T) overlappingRect = null) + { + // Compute overlapping rect + Rect!(T) overlapping = new Rect!(T)( + max(m_Left, rectangle.getLeft), + max(m_Top, rectangle.getTop), + min(m_Right, rectangle.getRight), + min(m_Bottom, rectangle.getBottom) + ); + + // If overlapping rect is valid, then there is intersection + if ((overlapping.getLeft() < overlapping.getRight() ) && (overlapping.getTop() < overlapping.getBottom())) + { + overlappingRect = overlapping; + return true; + } + else + { + overlappingRect = new Rect!(T)(); + return false; + } + } + + /** + * Set left Coordinate + */ + void setLeft(T left) + { + m_Left = left; + } + + /** + * Set top Coordinate + */ + void setTop(T top) + { + m_Top = top; + } + + /** + * Set right Coordinate + */ + void setRight(T right) + { + m_Right = right; + } + + /** + * Set bottom Coordinate + */ + void setBottom(T bottom) + { + m_Bottom = bottom; + } + + /** + * Get left Coordinate + */ + T getLeft() + { + return m_Left; + } + + /** + * Get top Coordinate + */ + T getTop() + { + return m_Top; + } + + /** + * Get right Coordinate + */ + T getRight() + { + return m_Right; + } + + /** + * Get bottom Coordinate + */ + T getBottom() + { + return m_Bottom; + } + +package: + sfFloatRect toCFloatRect() + { + return sfFloatRect(m_Left, m_Top, m_Right, m_Bottom); + } + + sfIntRect toCIntRect() + { + return sfIntRect(cast(int)m_Left, cast(int)m_Top, cast(int)m_Right, cast(int)m_Bottom); + } + +private: + + T m_Left; // Left coordinate of the rectangle + T m_Top; // Top coordinate of the rectangle + T m_Right; // Right coordinate of the rectangle + T m_Bottom; // Bottom coordinate of the rectangle +} + +///Alias +alias Rect!(int) IntRect; +///ditto +alias Rect!(float) FloatRect; + + + diff --git a/DSFML/import/dsfml/graphics/renderwindow.d b/DSFML/import/dsfml/graphics/renderwindow.d new file mode 100644 index 00000000..262c10fc --- /dev/null +++ b/DSFML/import/dsfml/graphics/renderwindow.d @@ -0,0 +1,306 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.renderwindow; + +import dsfml.graphics.color; +import dsfml.graphics.idrawable; +import dsfml.graphics.image; +import dsfml.graphics.rect; +import dsfml.graphics.postfx; +import dsfml.graphics.view; + +import dsfml.window.event; +import dsfml.window.input; +import dsfml.window.videomode; +import dsfml.window.window; +import dsfml.window.windowhandle; +import dsfml.window.windowsettings; +import dsfml.window.windowstyle; + +import dsfml.system.common; +import dsfml.system.stringutil; +import dsfml.system.vector2; + +/** +* Simple wrapper for Window that allows easy 2D rendering. +*/ +class RenderWindow : Window +{ + /** + * Construct the window + * + * Params: + * mode = Video mode to use + * title = Title of the window + * windowStyle = Window style (Resize | Close by default) + * settings = Window settings (default is default WindowSettings values) + */ + this(VideoMode mode, in char[] title, ulong windowStyle = Style.RESIZE | Style.CLOSE, WindowSettings settings = WindowSettings()) + { + super(sfRenderWindow_Create(mode, toStringz(title), windowStyle, settings)); + m_input = new Input(sfRenderWindow_GetInput(m_ptr)); + } + + /** + * Construct the window from an existing control + * + * Params: + * handle = Platform-specific handle of the control + * settings = Window settings (default is default WindowSettings values) + */ + this(WindowHandle handle, WindowSettings settings = WindowSettings()) + { + super(sfRenderWindow_CreateFromHandle(handle, settings)); + m_input = new Input(sfRenderWindow_GetInput(m_ptr)); + } + + override void dispose() + { + sfRenderWindow_Destroy(m_ptr); + } + + /** + * Create (or recreate) the window + * + * Input created with getInput will become invalid. + * + * Params: + * mode = Video mode to use + * title = Title of the window + * windowStyle = Window style (Resize | Close by default) + * settings = Window settings (default is default WindowSettings values) + * + */ + void create(VideoMode mode, char[] title, ulong windowStyle = Style.RESIZE | Style.CLOSE, WindowSettings settings = WindowSettings()) + { + if (m_ptr !is null) + dispose(); + + m_ptr = sfRenderWindow_Create(mode, toStringz(title), windowStyle, settings); + m_input = new Input(sfRenderWindow_GetInput(m_ptr)); + } + + /** + * Create (or recreate) the window from an existing control + * + * Input created with getInput become invalid. + * + * Params: + * handle = Platform-specific handle of the control + * settings = Window settings (default is default WindowSettings values) + * + */ + void create(WindowHandle handle, WindowSettings settings = WindowSettings()) + { + if (m_ptr !is null) + dispose(); + + m_ptr = sfRenderWindow_CreateFromHandle(handle, settings); + m_input = new Input(sfRenderWindow_GetInput(m_ptr)); + } + + /** + * Draw a PostFX on the window + * + * Params: + * postFX = PostFX to draw + */ + void draw(PostFX postFX) + { + sfRenderWindow_DrawPostFX(m_ptr, postFX.getNativePointer); + } + + /** + * Draw a Sprite or a String + * + * Params: + * obj = IDrawable object to draw + */ + void draw(IDrawable obj) + { + obj.render(this); + } + /** + * Save the content of the window to an image + * + * Returns: + * Image instance containing the contents of the screen + */ + Image capture() + { + return new Image(sfRenderWindow_Capture(m_ptr)); + } + + /** + * Clear the screen with the given color. + * + * Params: + * col = Fill color + */ + void clear(Color col = Color.BLACK) + { + sfRenderWindow_Clear(m_ptr, col); + } + + /** + * Change the current active view. + * The current view is defined with the initial size of the window + * + * Params: + * newView = Pointer to the new view (pass getDefaultView to set the default view) + */ + void setView(View newView) + { + if (m_view !is null) + { + m_view.setHandled(false); + } + + sfRenderWindow_SetView(m_ptr, newView.getNativePointer); + + m_view = newView; + m_view.setHandled(true); + } + + /** + * Get the current view rectangle + * + * Returns: + * current view rectangle, in global coordinates + */ + View getView() + { + if (m_view is null) + { + void* cView = sfRenderWindow_GetView(m_ptr); + m_view = new View(cView, true); + } + return m_view; + } + + /** + * Get the default view + * + * Returns: + * default view + */ + View getDefaultView() + { + if (m_defaultView is null) + { + void* cView = sfRenderWindow_GetDefaultView(m_ptr); + m_defaultView = new View(cView, true); + } + return m_defaultView; + } + + /** + * Convert a point in window coordinates into view coordinates + * + * Params: + * windowX = X coordinate of the point to convert, relative to the window + * windowY = Y coordinate of the point to convert, relative to the window + * targetView = Target view to convert the point to (pass NULL to use the current view) + * + * Returns: + * Converted point + */ + Vector2f convertCoords(uint windowX, uint windowY, View targetView = null) + { + Vector2f vec; + sfRenderWindow_ConvertCoords(m_ptr, windowX, windowY, &vec.x, &vec.y, targetView is null ? null : targetView.getNativePointer); + return vec; + } + + /** + * Tell SFML to preserve external OpenGL states, at the expense of + * more CPU charge. Use this function if you don't want SFML + * to mess up your own OpenGL states (if any). + * Don't enable state preservation if not needed, as it will allow + * SFML to do internal optimizations and improve performances. + * This parameter is false by default + * + * Params: + * preserve = True to preserve OpenGL states, false to let SFML optimize + * + */ + void preserveOpenGLStates(bool preserve) + { + sfRenderWindow_PreserveOpenGLStates(m_ptr, preserve); + } + +private: + View m_view = null; + View m_defaultView = null; + + extern (C) + { + typedef void* function(VideoMode, char*, uint, WindowSettings) pf_sfRenderWindow_Create; + typedef void* function(WindowHandle, WindowSettings) pf_sfRenderWindow_CreateFromHandle; + typedef void function(void*) pf_sfRenderWindow_Destroy; + typedef void* function(void*) pf_sfRenderWindow_GetInput; + typedef void function(void*, void*) pf_sfRenderWindow_DrawPostFX; + typedef void* function(void*) pf_sfRenderWindow_Capture; + typedef void function(void*, Color) pf_sfRenderWindow_Clear; + typedef void function(void*, void*) pf_sfRenderWindow_SetView; + typedef void* function(void*) pf_sfRenderWindow_GetView; + typedef void* function (void*) pf_sfRenderWindow_GetDefaultView; + typedef void function(void*, uint, uint, float*, float*, void*) pf_sfRenderWindow_ConvertCoords; + typedef void function(void*, int) pf_sfRenderWindow_PreserveOpenGLStates; + + static pf_sfRenderWindow_Create sfRenderWindow_Create; + static pf_sfRenderWindow_CreateFromHandle sfRenderWindow_CreateFromHandle; + static pf_sfRenderWindow_Destroy sfRenderWindow_Destroy; + static pf_sfRenderWindow_GetInput sfRenderWindow_GetInput; + static pf_sfRenderWindow_DrawPostFX sfRenderWindow_DrawPostFX; + static pf_sfRenderWindow_Capture sfRenderWindow_Capture; + static pf_sfRenderWindow_Clear sfRenderWindow_Clear; + static pf_sfRenderWindow_SetView sfRenderWindow_SetView; + static pf_sfRenderWindow_GetView sfRenderWindow_GetView; + static pf_sfRenderWindow_GetDefaultView sfRenderWindow_GetDefaultView; + static pf_sfRenderWindow_ConvertCoords sfRenderWindow_ConvertCoords; + static pf_sfRenderWindow_PreserveOpenGLStates sfRenderWindow_PreserveOpenGLStates; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfRenderWindow_Create = cast(pf_sfRenderWindow_Create)dll.getSymbol("sfRenderWindow_Create"); + sfRenderWindow_CreateFromHandle = cast(pf_sfRenderWindow_CreateFromHandle)dll.getSymbol("sfRenderWindow_CreateFromHandle"); + sfRenderWindow_Destroy = cast(pf_sfRenderWindow_Destroy)dll.getSymbol("sfRenderWindow_Destroy"); + sfRenderWindow_GetInput = cast(pf_sfRenderWindow_GetInput)dll.getSymbol("sfRenderWindow_GetInput"); + sfRenderWindow_DrawPostFX = cast(pf_sfRenderWindow_DrawPostFX)dll.getSymbol("sfRenderWindow_DrawPostFX"); + sfRenderWindow_Capture = cast(pf_sfRenderWindow_Capture)dll.getSymbol("sfRenderWindow_Capture"); + sfRenderWindow_Clear = cast(pf_sfRenderWindow_Clear)dll.getSymbol("sfRenderWindow_Clear"); + sfRenderWindow_SetView = cast(pf_sfRenderWindow_SetView)dll.getSymbol("sfRenderWindow_SetView"); + sfRenderWindow_GetView = cast(pf_sfRenderWindow_GetView)dll.getSymbol("sfRenderWindow_GetView"); + sfRenderWindow_GetDefaultView = cast(pf_sfRenderWindow_GetDefaultView)dll.getSymbol("sfRenderWindow_GetDefaultView"); + sfRenderWindow_ConvertCoords = cast(pf_sfRenderWindow_ConvertCoords)dll.getSymbol("sfRenderWindow_ConvertCoords"); + sfRenderWindow_PreserveOpenGLStates = cast(pf_sfRenderWindow_PreserveOpenGLStates)dll.getSymbol("sfRenderWindow_PreserveOpenGLStates"); + } +} + diff --git a/DSFML/import/dsfml/graphics/shape.d b/DSFML/import/dsfml/graphics/shape.d new file mode 100644 index 00000000..3fc32760 --- /dev/null +++ b/DSFML/import/dsfml/graphics/shape.d @@ -0,0 +1,333 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.shape; + +import dsfml.system.vector2; + +import dsfml.graphics.blendmode; +import dsfml.graphics.color; +import dsfml.graphics.drawableimpl; + +/** +* Shape defines a drawable convex shape ; it also defines +* helper functions to draw simple shapes like +* lines, rectangles, circles, etc. +*/ +class Shape : Drawableimpl!(sfShape) +{ + this() + { + super(); + } + + /** + * Add a point to the shape + * + * Params: + * x = X position of the point + * y = Y position of the point + * col = Color of the point (white by default) + * outlineCol = Outline color of the point (black by default) + */ + void addPoint(float x, float y, Color col = Color.WHITE, Color outlineCol = Color.BLACK) + { + sfShape_AddPoint(m_ptr, x, y, col, outlineCol); + } + + /** + * Add a point to the shape + * + * Params: + * position = position of the point + * col = Color of the point (white by default) + * outlineCol = Outline color of the point (black by default) + */ + void addPoint(Vector2f position, Color col = Color.WHITE, Color outlineCol = Color.BLACK) + { + sfShape_AddPoint(m_ptr, position.x, position.x, col, outlineCol); + } + + /** + * Enable or disable filling the shape. + * Fill is enabled by default. + * + * Params: + * enable = True to enable, false to disable + */ + void enableFill(bool enable) + { + sfShape_EnableFill(m_ptr, enable); + } + + /** + * Enable or disable drawing a shape outline. + * Outline is enabled by default + * + * Params: + * enable = True to enable, false to disable + */ + void enableOutline(bool enable) + { + sfShape_EnableOutline(m_ptr, enable); + } + + /** + * Change the width of a shape outline + * + * Params: + * width = New width + */ + void setOutlineWidth(float width) + { + sfShape_SetOutlineWidth(m_ptr, width); + } + + /** + * Get the width of the shape outline + * + * Returns: + * Current outline width + * + */ + float getOutlineWidth() + { + return sfShape_GetOutlineWidth(m_ptr); + } + + /** + * Get the number of points composing a shape + * + * Returns: + * Total number of points + */ + uint getNbPoints() + { + return sfShape_GetNbPoints(m_ptr); + } + + /** + * Get a point of the shape + * + * Params: + * index = Index of the point + * + * Returns: + * position of the point + */ + Vector2f getPointPosition(uint index) + { + float x, y; + sfShape_GetPointPosition(m_ptr, index, &x, &y); + return Vector2f(x, y); + } + + /** + * Set the position of a shape point + * + * Params: + * index = Index of the point + * position = New position of the point + */ + void setPointPosition(uint index, Vector2f position) + { + sfShape_SetPointPosition(m_ptr, index, position.x, position.y); + } + + /** + * Get the color of a shape's point + * + * Params: + * index = Index of the point + * + * Returns: + * Color of the point + */ + Color getPointColor(uint index) + { + return sfShape_GetPointColor(m_ptr, index); + } + + /** + * Set the color of a shape's point + * + * Params: + * index = Index of the point + * color = new color of the point + */ + void setPointColor(uint index, Color color) + { + sfShape_SetPointColor(m_ptr, index, color); + } + + /** + * Get the outline color of a shape's point + * + * Params: + * index = Index of the point + * + * Returns: + * Color of the outline + */ + Color getPointOutlineColor(uint index) + { + return sfShape_GetPointOutlineColor(m_ptr, index); + } + + /** + * Set the outline color of a shape's point + * + * Params: + * index = Index of the point + * color = new color of the point + */ + void setPointOutlineColor(uint index, Color color) + { + sfShape_SetPointOutlineColor(m_ptr, index, color); + } + + + + /** + * Create a shape made of a single line + * + * Params: + * p1X, p1Y = Position of the first point + * p2X, p2Y = Position second point + * thickness = Line thickness + * col = Color used to draw the line + * outline = Outline width (0 by default) + * outlineCol = Color used to draw the outline (black by default) + * + * Returns: + * New line shape + */ + static Shape line(float p1X, float p1Y, float p2X, float p2Y, float thickness, Color col, float outline = 0.f, Color outlineCol = Color.BLACK) + { + + return new Shape(sfShape_CreateLine(p1X, p1Y, p2X, p2Y, thickness, col, outline, outlineCol)); + } + + /** + * Create a shape made of a single rectangle + * + * Params: + * p1X = X position of the first point + * p1Y = Y position of the first point + * p2X = X position second point + * p2Y = Y position second point + * col = Color used to fill the rectangle + * outline = Outline width (0 by default) + * outlineCol = Color used to draw the outline (black by default) + * + * Returns: + * new rectangle shape + */ + static Shape rectangle(float p1X, float p1Y, float p2X, float p2Y, Color col, float outline = 0.f, Color outlineCol = Color.BLACK) + { + return new Shape(sfShape_CreateRectangle(p1X, p1Y, p2X, p2Y, col, outline, outlineCol)); + } + + /** + * Create a shape made of a single circle + * + * Params: + * x = X position of the center + * y = Y position of the center + * radius = Radius + * col = Color used to fill the circle + * outline = Outline width (0 by default) + * outlineCol = Color used to draw the outline (black by default) + * + * Returns: + * new circle shape + */ + static Shape circle(float x, float y, float radius, Color col, float outline = 0.f, Color outlineCol = Color.BLACK) + { + return new Shape(sfShape_CreateCircle(x, y, radius, col, outline, outlineCol)); + } + +private: + this (void* ptr) + { + super(ptr); + } + + extern (C) + { + typedef void* function(float, float, float, float, float, Color, float, Color) pf_sfShape_CreateLine; + typedef void* function(float, float, float, float, Color, float, Color) pf_sfShape_CreateRectangle; + typedef void* function(float, float, float, Color, float, Color) pf_sfShape_CreateCircle; + typedef void function(void* Shape, float, float, Color, Color) pf_sfShape_AddPoint; + typedef void function(void* Shape, int) pf_sfShape_EnableFill; + typedef void function(void* Shape, int) pf_sfShape_EnableOutline; + typedef void function (void* Shape, float Width) pf_sfShape_SetOutlineWidth; + typedef float function (void* Shape) pf_sfShape_GetOutlineWidth; + typedef uint function (void* Shape) pf_sfShape_GetNbPoints; + typedef void function (void* Shape, uint Index, float* X, float* Y) pf_sfShape_GetPointPosition; + typedef void function (void* Shape, uint Index, float X, float Y) pf_sfShape_SetPointPosition; + typedef Color function (void* Shape, uint index) pf_sfShape_GetPointColor; + typedef void function (void* Shape, uint index, Color color) pf_sfShape_SetPointColor; + typedef Color function (void* Shape, uint index) pf_sfShape_GetPointOutlineColor; + typedef void function (void* Shape, uint index, Color color) pf_sfShape_SetPointOutlineColor; + + static pf_sfShape_CreateLine sfShape_CreateLine; + static pf_sfShape_CreateRectangle sfShape_CreateRectangle; + static pf_sfShape_CreateCircle sfShape_CreateCircle; + static pf_sfShape_AddPoint sfShape_AddPoint; + static pf_sfShape_EnableFill sfShape_EnableFill; + static pf_sfShape_EnableOutline sfShape_EnableOutline; + static pf_sfShape_SetOutlineWidth sfShape_SetOutlineWidth; + static pf_sfShape_GetOutlineWidth sfShape_GetOutlineWidth; + static pf_sfShape_GetNbPoints sfShape_GetNbPoints; + static pf_sfShape_GetPointPosition sfShape_GetPointPosition; + static pf_sfShape_SetPointPosition sfShape_SetPointPosition; + static pf_sfShape_GetPointColor sfShape_GetPointColor; + static pf_sfShape_SetPointColor sfShape_SetPointColor; + static pf_sfShape_GetPointOutlineColor sfShape_GetPointOutlineColor; + static pf_sfShape_SetPointOutlineColor sfShape_SetPointOutlineColor; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfShape_CreateLine = cast(pf_sfShape_CreateLine)dll.getSymbol("sfShape_CreateLine"); + sfShape_CreateRectangle = cast(pf_sfShape_CreateRectangle)dll.getSymbol("sfShape_CreateRectangle"); + sfShape_CreateCircle = cast(pf_sfShape_CreateCircle)dll.getSymbol("sfShape_CreateCircle"); + sfShape_AddPoint = cast(pf_sfShape_AddPoint)dll.getSymbol("sfShape_AddPoint"); + sfShape_EnableFill = cast(pf_sfShape_EnableFill)dll.getSymbol("sfShape_EnableFill"); + sfShape_EnableOutline = cast(pf_sfShape_EnableOutline)dll.getSymbol("sfShape_EnableOutline"); + sfShape_SetOutlineWidth = cast(pf_sfShape_SetOutlineWidth)dll.getSymbol("sfShape_SetOutlineWidth"); + sfShape_GetOutlineWidth = cast(pf_sfShape_GetOutlineWidth)dll.getSymbol("sfShape_GetOutlineWidth"); + sfShape_GetNbPoints = cast(pf_sfShape_GetNbPoints)dll.getSymbol("sfShape_GetNbPoints"); + sfShape_GetPointPosition = cast(pf_sfShape_GetPointPosition)dll.getSymbol("sfShape_GetPointPosition"); + sfShape_SetPointPosition = cast(pf_sfShape_SetPointPosition)dll.getSymbol("sfShape_SetPointPosition"); + sfShape_GetPointColor = cast (pf_sfShape_GetPointColor)dll.getSymbol("sfShape_GetPointColor"); + sfShape_SetPointColor = cast (pf_sfShape_SetPointColor)dll.getSymbol("sfShape_SetPointColor"); + sfShape_GetPointOutlineColor = cast(pf_sfShape_GetPointOutlineColor)dll.getSymbol("sfShape_GetPointOutlineColor"); + sfShape_SetPointOutlineColor = cast(pf_sfShape_SetPointOutlineColor)dll.getSymbol("sfShape_SetPointOutlineColor"); + } +} diff --git a/DSFML/import/dsfml/graphics/sprite.d b/DSFML/import/dsfml/graphics/sprite.d new file mode 100644 index 00000000..3a5286df --- /dev/null +++ b/DSFML/import/dsfml/graphics/sprite.d @@ -0,0 +1,248 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.sprite; + +import dsfml.graphics.blendmode; +import dsfml.graphics.color; +import dsfml.graphics.drawableimpl; +import dsfml.graphics.image; +import dsfml.graphics.rect; + +import dsfml.system.vector2; + +/** +* Sprite defines a sprite : texture, transformations, +* color, and draw on screen +* See_Also: +* IDrawable +*/ +class Sprite : Drawableimpl!(sfSprite) +{ + /** + * Default constructor + */ + this() + { + } + + /** + * Construct the sprite from a source image + * + * Params: + * img = Image of the sprite + * left = Left coordinate of the sprite (0 by default) + * top = Top coordinate of the sprite (0 by default) + * scaleX = Horizontal scale (1 by default) + * scaleY= Vertical scale (1 by default) + * rotation = Orientation, in degrees (0 by default) + * col = Color of the sprite (white by default) + */ + this(Image img, float left = 0.f, float top = 0.f, float scaleX = 1.f, float scaleY = 1.f, float rotation = 0.f, Color col = Color.WHITE) + { + m_image = img; + sfSprite_SetImage(m_ptr, img.getNativePointer); + setX(left); + setY(top); + setScaleX(scaleX); + setScaleY(scaleY); + setRotation(rotation); + setColor(col); + } + + /** + * Change the image of the sprite + * + * Params: + * img = New image + */ + void setImage(Image img) + { + assert(img !is null, "Trying to set a null image."); + sfSprite_SetImage(m_ptr, img.getNativePointer); + m_image = img; + } + + /** + * Set the sub-rectangle of a sprite inside the source image. + * + * Params: + * rect = New sub-rectangle + */ + void setSubRect(IntRect rect) + { + sfIntRect r = rect.toCIntRect(); + sfSprite_SetSubRect(m_ptr, &r); + m_subRect = rect; + } + + /** + * Resize the sprite (by changing its scale factors). + * The default size is defined by the subrect + * + * Params: + * width = New width (must be strictly positive) + * height = New height (must be strictly positive) + */ + void resize(float width, float height) + { + if (width > 0 && height > 0) + sfSprite_Resize(m_ptr, width, height); + } + + /** + * Resize the sprite (by changing its scale factors). + * The default size is defined by the subrect + * + * Params: + * size = New size (both coordinates must be strictly positive) + */ + void resize(Vector2f size) + { + if (size.x > 0 && size.y > 0) + sfSprite_Resize(m_ptr, size.x, size.y); + } + + + /** + * Flip the sprite horizontally + * + * Params: + * flipped = True to flip the sprite + */ + void flipX(bool flipped) + { + sfSprite_FlipX(m_ptr, flipped); + } + + /** + * Flip the sprite vertically + * + * Params: + * flipped = True to flip the sprite + */ + void flipY(bool flipped) + { + sfSprite_FlipY(m_ptr, flipped); + } + + /** + * Get the source image of the sprite + * + * Returns: + * Pointer to the image (can be NULL) + */ + Image getImage() + { + return m_image; + } + + /** + * Get the sub-rectangle of the sprite inside the source image + * + * Returns: + * Sub-rectangle + */ + IntRect getSubRect() + { + if (m_subRect is null) + m_subRect = new IntRect(0, 0, m_image.getWidth(), m_image.getHeight()); + + return m_subRect; + } + + /** + * Get the sprite size + * + * Returns: + * Size of the sprite + */ + Vector2f getSize() + { + return Vector2f(sfSprite_GetWidth(m_ptr), sfSprite_GetHeight(m_ptr)); + } + + /** + * Get the color of a given pixel in the sprite + * + * Params: + * x = X coordinate + * y = Y coordinate + * + * Returns: + * Color of pixel + */ + Color getPixel(uint x, uint y) + { + return sfSprite_GetPixel(m_ptr, x, y); + } + +private: + Image m_image; //< Image used to draw the sprite + IntRect m_subRect; //< Sub-rectangle of source image to assign to the sprite + + extern (C) + { + typedef void function(void*, void*) pf_sfSprite_SetImage; + typedef void function(void*, sfIntRect*) pf_sfSprite_SetSubRect; + typedef void function(void*, float, float) pf_sfSprite_Resize; + typedef void function(void*, int) pf_sfSprite_FlipX; + typedef void function(void*, int) pf_sfSprite_FlipY; + typedef void* function(void*) pf_sfSprite_GetImage; + typedef void* function(void*) pf_sfSprite_GetSubRect; + typedef float function(void*) pf_sfSprite_GetWidth; + typedef float function(void*) pf_sfSprite_GetHeight; + typedef Color function(void*, uint, uint) pf_sfSprite_GetPixel; + + static pf_sfSprite_SetImage sfSprite_SetImage; + static pf_sfSprite_SetSubRect sfSprite_SetSubRect; + static pf_sfSprite_Resize sfSprite_Resize; + static pf_sfSprite_FlipX sfSprite_FlipX; + static pf_sfSprite_FlipY sfSprite_FlipY; + static pf_sfSprite_GetImage sfSprite_GetImage; + static pf_sfSprite_GetSubRect sfSprite_GetSubRect; + static pf_sfSprite_GetWidth sfSprite_GetWidth; + static pf_sfSprite_GetHeight sfSprite_GetHeight; + static pf_sfSprite_GetPixel sfSprite_GetPixel; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfSprite_SetImage = cast(pf_sfSprite_SetImage)dll.getSymbol("sfSprite_SetImage"); + sfSprite_SetSubRect = cast(pf_sfSprite_SetSubRect)dll.getSymbol("sfSprite_SetSubRect"); + sfSprite_Resize = cast(pf_sfSprite_Resize)dll.getSymbol("sfSprite_Resize"); + sfSprite_FlipX = cast(pf_sfSprite_FlipX)dll.getSymbol("sfSprite_FlipX"); + sfSprite_FlipY = cast(pf_sfSprite_FlipY)dll.getSymbol("sfSprite_FlipY"); + sfSprite_GetImage = cast(pf_sfSprite_GetImage)dll.getSymbol("sfSprite_GetImage"); + sfSprite_GetSubRect = cast(pf_sfSprite_GetSubRect)dll.getSymbol("sfSprite_GetSubRect"); + sfSprite_GetWidth = cast(pf_sfSprite_GetWidth)dll.getSymbol("sfSprite_GetWidth"); + sfSprite_GetHeight = cast(pf_sfSprite_GetHeight)dll.getSymbol("sfSprite_GetHeight"); + sfSprite_GetPixel = cast(pf_sfSprite_GetPixel)dll.getSymbol("sfSprite_GetPixel"); + } + +} + diff --git a/DSFML/import/dsfml/graphics/string.d b/DSFML/import/dsfml/graphics/string.d new file mode 100644 index 00000000..659935d9 --- /dev/null +++ b/DSFML/import/dsfml/graphics/string.d @@ -0,0 +1,290 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.string; + +import dsfml.graphics.blendmode; +import dsfml.graphics.color; +import dsfml.graphics.font; +import dsfml.graphics.textstyle; +import dsfml.graphics.drawableimpl; +import dsfml.graphics.rect; + +import dsfml.system.stringutil; +import dsfml.system.vector2; + + +/** +* String defines a graphical 2D text, that can be drawn on screen +* +* All string litterals used must be prefixed with c for utf-8 +* and d for utf-32 string. +* +* Examples : +* --------------------------------------------------------------- +* String s = new String("Hello"c); +* //this(char[], Font, float) +* s = new String("Hello"d); +* //this(dchar[], Font, float) +* --------------------------------------------------------------- +* +* See_Also: +* IDrawable +*/ +class String : Drawableimpl!(sfString) +{ + /** + * Construct the string from a text + * + * Prefixs string litterals with c + * + * Params: + * text = Text assigned to the string + * font = Font used to draw the string (use default font) + * size = Characters size, in pixels (32 by default) + */ + this(char[] text, Font font = Font.getDefaultFont(), float size = 30.f) + { + super(); + m_font = font; + setFont(font); + setText(text); + setSize(size); + } + + /** + * Construct the string from a unicode text + * + * Prefixs string litterals with d + * + * Params: + * text = Text assigned to the string + * font = Font used to draw the string (use default font) + * size = Characters size, in pixels (32 by default) + */ + this(dchar[] text, Font font = Font.getDefaultFont(), float size = 30.f) + { + super(); + m_font = font; + setFont(font); + setText(text); + setSize(size); + } + + /** + * Set the text (from a multibyte string) + * + * Params: + * text = New text + * + */ + void setText(char[] text) + { + sfString_SetText(m_ptr,toStringz(text)); + } + + /** + * Set the text (from a unicode string) + * + * Params: + * text = New text + */ + void setText(dchar[] text) + { + sfString_SetUnicodeText(m_ptr, toStringz(text)); + } + + /** + * Set the font of the string + * + * Params: + * font = Font filename + */ + void setFont(Font font) + { + m_font = font; + sfString_SetFont(m_ptr, font.getNativePointer); + } + + /** + * Set the size of the string + * + * Params: + * size = New size, in pixels + */ + void setSize(float size) + { + sfString_SetSize(m_ptr, size); + } + + /** + * Set the style of the text + * The default style is Regular + * + * Params: + * TextStyle = New text style, (combination of Style enum values) + * + */ + void setStyle(TextStyle style) + { + sfString_SetStyle(m_ptr, style); + } + + /** + * Get the text (returns a unicode string) + * + * Returns: + * Text + */ + dchar[] getUnicodeText() + { + return fromStringz(sfString_GetUnicodeText(m_ptr)); + } + + /** + * Get the text (returns a multibyte string) + * + * Returns: + * Text + */ + char[] getText() + { + return fromStringz(sfString_GetText(m_ptr)); + } + + /** + * Get the font used by the string + * + * Returns: + * Font name + */ + Font getFont() + { + return m_font; + } + + /** + * Get the size of the characters + * + * Returns: + * Size of the characters + */ + float getSize() + { + return sfString_GetSize(m_ptr); + } + + /** + * Get the current font style + * + * Returns: + * Font style + */ + TextStyle getStyle() + { + return sfString_GetStyle(m_ptr); + } + + /** + * Return the visual position of the Index-th character of the string, + * in coordinates relative to the string + * (note : translation, center, rotation and scale are not applied) + * + * Params: + * index = Index of the character + * + * Returns: + * Position of the Index-th character (end of string of Index is out of range) + */ + Vector2f getCharacterPos(size_t index) + { + Vector2f ret; + sfString_GetCharacterPos(m_ptr, index, &ret.x, &ret.y); + return ret; + } + + /** + * Get the string rectangle on screen + * + * Returns: + * Rectangle contaning the string in screen coordinates + */ + FloatRect getRect() + { + sfFloatRect sfRect = sfString_GetRect(m_ptr); + + return new Rect!(float)(sfRect.Left, sfRect.Top, sfRect.Right, sfRect.Bottom); + } + +private: + Font m_font; + + extern (C) + { + typedef void function(void*, char*) pf_sfString_SetText; + typedef void function(void*, dchar*) pf_sfString_SetUnicodeText; + typedef void function(void*, void*) pf_sfString_SetFont; + typedef void function(void*, float) pf_sfString_SetSize; + typedef void function(void*, TextStyle) pf_sfString_SetStyle; + typedef dchar* function(void*) pf_sfString_GetUnicodeText; + typedef char* function(void*) pf_sfString_GetText; + typedef void* function(void*) pf_sfString_GetFont; + typedef float function(void*) pf_sfString_GetSize; + typedef TextStyle function (void*) pf_sfString_GetStyle; + typedef void function(void*, size_t, float*, float*) pf_sfString_GetCharacterPos; + typedef sfFloatRect function(void*) pf_sfString_GetRect; + + static pf_sfString_SetText sfString_SetText; + static pf_sfString_SetUnicodeText sfString_SetUnicodeText; + static pf_sfString_SetFont sfString_SetFont; + static pf_sfString_SetSize sfString_SetSize; + static pf_sfString_SetStyle sfString_SetStyle; + static pf_sfString_GetUnicodeText sfString_GetUnicodeText; + static pf_sfString_GetText sfString_GetText; + static pf_sfString_GetFont sfString_GetFont; + static pf_sfString_GetSize sfString_GetSize; + static pf_sfString_GetStyle sfString_GetStyle; + static pf_sfString_GetCharacterPos sfString_GetCharacterPos; + static pf_sfString_GetRect sfString_GetRect; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfString_SetText = cast(pf_sfString_SetText)dll.getSymbol("sfString_SetText"); + sfString_SetUnicodeText = cast(pf_sfString_SetUnicodeText)dll.getSymbol("sfString_SetUnicodeText"); + sfString_SetFont = cast(pf_sfString_SetFont)dll.getSymbol("sfString_SetFont"); + sfString_SetSize = cast(pf_sfString_SetSize)dll.getSymbol("sfString_SetSize"); + sfString_SetStyle = cast(pf_sfString_SetStyle)dll.getSymbol("sfString_SetStyle"); + sfString_GetUnicodeText = cast(pf_sfString_GetUnicodeText)dll.getSymbol("sfString_GetUnicodeText"); + sfString_GetText = cast(pf_sfString_GetText)dll.getSymbol("sfString_GetText"); + sfString_GetFont = cast(pf_sfString_GetFont)dll.getSymbol("sfString_GetFont"); + sfString_GetSize = cast(pf_sfString_GetSize)dll.getSymbol("sfString_GetSize"); + sfString_GetStyle = cast(pf_sfString_GetStyle)dll.getSymbol("sfString_GetStyle"); + sfString_GetCharacterPos = cast(pf_sfString_GetCharacterPos)dll.getSymbol("sfString_GetCharacterPos"); + sfString_GetRect = cast(pf_sfString_GetRect)dll.getSymbol("sfString_GetRect"); + } +} diff --git a/DSFML/import/dsfml/graphics/textstyle.d b/DSFML/import/dsfml/graphics/textstyle.d new file mode 100644 index 00000000..33c4c51a --- /dev/null +++ b/DSFML/import/dsfml/graphics/textstyle.d @@ -0,0 +1,37 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.textstyle; + +/** +* Enumerate the string drawing styles +*/ +enum TextStyle +{ + REGULAR = 0, /// Regular characters, no style + BOLD = 1 << 0, /// Characters are bold + ITALIC = 1 << 1, /// Characters are in italic + UNDERLINED = 1 << 2 /// Characters are underlined +} diff --git a/DSFML/import/dsfml/graphics/view.d b/DSFML/import/dsfml/graphics/view.d new file mode 100644 index 00000000..0df612c6 --- /dev/null +++ b/DSFML/import/dsfml/graphics/view.d @@ -0,0 +1,274 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.graphics.view; + +import dsfml.graphics.rect; + +import dsfml.system.common; +import dsfml.system.vector2; + +/** +* This class defines a view (position, size and zoom) ; +* you can consider it as a camera +*/ +class View : DSFMLObject +{ + /** + * Constructor + * + * Default view (1000 x 1000) + */ + this() + { + super(sfView_Create()); + } + + /** + * Constructor + * + * Params: + * center = center of the view + * halfsize = Half-size of the view (from center to corner) + */ + this(Vector2f center, Vector2f halfsize) + { + super(sfView_CreateFromRect(sfFloatRect(center.x - halfsize.x, center.y - halfsize.y, center.x + halfsize.x, center.y + halfsize.y) )); + } + + /** + * Constructor + * + * Params: + * rect = Rectangle defining the position and size of the view + */ + this(FloatRect rect) + { + super(sfView_CreateFromRect(rect.toCFloatRect())); + } + + override void dispose() + { + sfView_Destroy(m_ptr); + } + + /** + * Change the center of the view + * + * Params: + * x = X coordinates of the new center + * y = Y coordinates of the new center + */ + void setCenter(float x, float y) + { + sfView_SetCenter(m_ptr, x, y); + m_isModified = true; + } + + /** + * Change the center of the view + * + * Params: + * center = New center + */ + void setCenter(Vector2f center) + { + sfView_SetCenter(m_ptr, center.x, center.y); + m_isModified = true; + } + + /** + * Change the half-size of the view (take 2 values) + * + * Params: + * halfWidth = New half-width + * halfHeight = New half-height + */ + void setHalfSize(float halfWidth, float HalfHeight) + { + sfView_SetHalfSize(m_ptr, halfWidth, HalfHeight); + m_isModified = true; + } + + /** + * Change the half-size of the view (take 2 values) + * + * Params: + * helfSize = New halfsize + */ + void setHalfSize(Vector2f halfSize) + { + sfView_SetHalfSize(m_ptr, halfSize.x, halfSize.y); + m_isModified = true; + } + + /** + * Rebuild the view from a rectangle + * + * Params: + * viewRect : Rectangle defining the position and size of the view + */ + void setFromRect(FloatRect viewRect) + { + sfView_SetFromRect(m_ptr, viewRect.toCFloatRect()); + m_rect = viewRect; + } + + /** + * Get the center of the view + * + * Returns: + * Center of the view + */ + Vector2f GetCenter() + { + return Vector2f(sfView_GetCenterX(m_ptr), sfView_GetCenterY(m_ptr)); + } + + /** + * Get the halfsize of the view + * + * Returns: + * Halfsize of the view + */ + Vector2f GetHalfSize() + { + return Vector2f(sfView_GetHalfSizeX(m_ptr), sfView_GetHalfSizeY(m_ptr)); + } + + /** + * Get the bounding retangle of the view + */ + FloatRect getRect() + { + if (m_isModified) + { + m_isModified = false; + sfFloatRect cRect = sfView_GetRect(m_ptr); + m_rect = new FloatRect(cRect.Left, cRect.Top, cRect.Right, cRect.Bottom); + } + return m_rect; + } + + /** + * Move the view + * + * Params: + * offsetX = Offset to move the view, on X axis + * offsetY = Offset to move the view, on Y axis + */ + void move(float offsetX, float offsetY) + { + sfView_Move(m_ptr, offsetX, offsetY); + m_isModified = true; + } + + /** + * Move the view + * + * Params: + * offset = offsetto move the view + */ + void move(Vector2f offset) + { + sfView_Move(m_ptr, offset.x, offset.y); + m_isModified = true; + } + + /** + * Resize the view rectangle to simulate a zoom / unzoom effect + * + * Params: + * factor = Zoom factor to apply, relative to the current zoom + */ + void zoom(float factor) + { + sfView_Zoom(m_ptr, factor); + m_isModified = true; + } + +package: + + this(void* ptr, bool preventDelete) + { + super(ptr, preventDelete); + } + +private: + FloatRect m_rect; + bool m_isModified = true; + + extern (C) + { + typedef void* function() pf_sfView_Create; + typedef void* function(sfFloatRect) pf_sfView_CreateFromRect; + typedef void function(void*) pf_sfView_Destroy; + typedef void function(void*, float, float) pf_sfView_SetCenter; + typedef void function(void*, float, float) pf_sfView_SetHalfSize; + typedef void function(void*, sfFloatRect ViewRect) pf_sfView_SetFromRect; + typedef float function(void*) pf_sfView_GetCenterX; + typedef float function(void*) pf_sfView_GetCenterY; + typedef float function(void*) pf_sfView_GetHalfSizeX; + typedef float function(void*) pf_sfView_GetHalfSizeY; + typedef sfFloatRect function(void*) pf_sfView_GetRect; + typedef void function(void*, float, float) pf_sfView_Move; + typedef void function(void*, float) pf_sfView_Zoom; + + static pf_sfView_Create sfView_Create; + static pf_sfView_CreateFromRect sfView_CreateFromRect; + static pf_sfView_Destroy sfView_Destroy; + static pf_sfView_SetCenter sfView_SetCenter; + static pf_sfView_SetHalfSize sfView_SetHalfSize; + static pf_sfView_SetFromRect sfView_SetFromRect; + static pf_sfView_GetCenterX sfView_GetCenterX; + static pf_sfView_GetCenterY sfView_GetCenterY; + static pf_sfView_GetHalfSizeX sfView_GetHalfSizeX; + static pf_sfView_GetHalfSizeY sfView_GetHalfSizeY; + static pf_sfView_GetRect sfView_GetRect; + static pf_sfView_Move sfView_Move; + static pf_sfView_Zoom sfView_Zoom; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-graphics"); + + sfView_Create = cast(pf_sfView_Create) dll.getSymbol("sfView_Create"); + sfView_CreateFromRect = cast(pf_sfView_CreateFromRect) dll.getSymbol("sfView_CreateFromRect"); + sfView_Destroy = cast(pf_sfView_Destroy) dll.getSymbol("sfView_Destroy"); + sfView_SetCenter = cast(pf_sfView_SetCenter) dll.getSymbol("sfView_SetCenter"); + sfView_SetHalfSize = cast(pf_sfView_SetHalfSize) dll.getSymbol("sfView_SetHalfSize"); + sfView_SetFromRect = cast(pf_sfView_SetFromRect) dll.getSymbol("sfView_SetFromRect"); + sfView_GetCenterX = cast(pf_sfView_GetCenterX) dll.getSymbol("sfView_GetCenterX"); + sfView_GetCenterY = cast(pf_sfView_GetCenterY) dll.getSymbol("sfView_GetCenterY"); + sfView_GetHalfSizeX = cast(pf_sfView_GetHalfSizeX) dll.getSymbol("sfView_GetHalfSizeX"); + sfView_GetHalfSizeY = cast(pf_sfView_GetHalfSizeY) dll.getSymbol("sfView_GetHalfSizeY"); + sfView_GetRect = cast(pf_sfView_GetRect) dll.getSymbol("sfView_GetRect"); + sfView_Move = cast(pf_sfView_Move) dll.getSymbol("sfView_Move"); + sfView_Zoom = cast(pf_sfView_Zoom) dll.getSymbol("sfView_Zoom"); + } +} + + diff --git a/DSFML/import/dsfml/network/all.d b/DSFML/import/dsfml/network/all.d new file mode 100644 index 00000000..fa836542 --- /dev/null +++ b/DSFML/import/dsfml/network/all.d @@ -0,0 +1,36 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.all; + +public import + dsfml.network.ftp, + dsfml.network.http, + dsfml.network.ipaddress, + dsfml.network.packet, + dsfml.network.selector, + dsfml.network.socketstatus, + dsfml.network.sockettcp, + dsfml.network.socketudp; diff --git a/DSFML/import/dsfml/network/ftp.d b/DSFML/import/dsfml/network/ftp.d new file mode 100644 index 00000000..5d72e816 --- /dev/null +++ b/DSFML/import/dsfml/network/ftp.d @@ -0,0 +1,598 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.ftp; + +import dsfml.system.common; +import dsfml.system.stringutil; + +import dsfml.network.ipaddress; + + +/** +* Enumeration of transfer mode +*/ +enum FtpTransferMode +{ + BINARY, ///< Binary mode (file is transfered as a sequence of bytes) + ASCII, ///< Text mode using ASCII encoding + EBCDIC ///< Text mode using EBCDIC encoding +} + +/** +* Enumerate all the valid status codes returned in +* a FTP response +*/ +enum FtpStatus +{ + // 1xx: the requested action is being initiated, + // expect another reply before proceeding with a new command + RESTARTMARKERREPLY = 110, ///< Restart marker reply + SERVICEREADYSOON = 120, ///< Service ready in N minutes + DATACONNECTIONALREADYOPENED = 125, ///< Data connection already opened, transfer starting + OPENINGDATACONNECTION = 150, ///< File status ok, about to open data connection + + // 2xx: the requested action has been successfully completed + OK = 200, ///< Command ok + POINTLESSCOMMAND = 202, ///< Command not implemented + SYSTEMSTATUS = 211, ///< System status, or system help reply + DIRECTORYSTATUS = 212, ///< Directory status + FILESTATUS = 213, ///< File status + HELPMESSAGE = 214, ///< Help message + SYSTEMTYPE = 215, ///< NAME system type, where NAME is an official system name from the list in the Assigned Numbers document + SERVICEREADY = 220, ///< Service ready for new user + CLOSINGCONNECTION = 221, ///< Service closing control connection + DATACONNECTIONOPENED = 225, ///< Data connection open, no transfer in progress + CLOSINGDATACONNECTION = 226, ///< Closing data connection, requested file action successful + ENTERINGPASSIVEMODE = 227, ///< Entering passive mode + LOGGEDIN = 230, ///< User logged in, proceed. Logged out if appropriate + FILEACTIONOK = 250, ///< Requested file action ok + DIRECTORYOK = 257, ///< PATHNAME created + + // 3xx: the command has been accepted, but the requested action + // is dormant, pending receipt of further information + NEEDPASSWORD = 331, ///< User name ok, need password + NEEDACCOUNTTOLOGIN = 332, ///< Need account for login + NEEDINFORMATION = 350, ///< Requested file action pending further information + + // 4xx: the command was not accepted and the requested action did not take place, + // but the error condition is temporary and the action may be requested again + SERVICEUNAVAILABLE = 421, ///< Service not available, closing control connection + DATACONNECTIONUNAVAILABLE = 425, ///< Can't open data connection + TRANSFERABORTED = 426, ///< Connection closed, transfer aborted + FILEACTIONABORTED = 450, ///< Requested file action not taken + LOCALERROR = 451, ///< Requested action aborted, local error in processing + INSUFFICIENTSTORAGESPACE = 452, ///< Requested action not taken; insufficient storage space in system, file unavailable + + // 5xx: the command was not accepted and + // the requested action did not take place + COMMANDUNKNOWN = 500, ///< Syntax error, command unrecognized + PARAMETERSUNKNOWN = 501, ///< Syntax error in parameters or arguments + COMMANDNOTIMPLEMENTED = 502, ///< Command not implemented + BADCOMMANDSEQUENCE = 503, ///< Bad sequence of commands + PARAMETERNOTIMPLEMENTED = 504, ///< Command not implemented for that parameter + NOTLOGGEDIN = 530, ///< Not logged in + NEEDACCOUNTTOSTORE = 532, ///< Need account for storing files + FILEUNAVAILABLE = 550, ///< Requested action not taken, file unavailable + PAGETYPEUNKNOWN = 551, ///< Requested action aborted, page type unknown + NOTENOUGHMEMORY = 552, ///< Requested file action aborted, exceeded storage allocation + FILENAMENOTALLOWED = 553, ///< Requested action not taken, file name not allowed + + // 10xx: SFML custom codes + INVALIDRESPONSE = 1000, ///< Response is not a valid FTP one + CONNECTIONFAILED = 1001, ///< Connection with server failed + CONNECTIONCLOSED = 1002, ///< Connection with server closed + INVALIDFILE = 1003 ///< Invalid file to upload / download +} + + +/** +* This class provides methods for manipulating the FTP protocol (described in RFC 959). +* It provides easy access and transfers to remote directories and files on a FTP server. +*/ +class Ftp : DSFMLObject +{ + /** + * This class wraps a FTP response, which is basically : + * - a status code + * - a message + */ + static class FtpResponse : DSFMLObject + { + override void dispose() + { + sfFtpResponse_Destroy(m_ptr); + } + + /** + * Convenience function to check if the response status code + * means a success + * + * Returns: + * True if status is success (code < 400) + */ + bool isOk() + { + return cast(bool)sfFtpResponse_IsOk(m_ptr); + } + + /** + * Get the response status code + * + * Returns: + * Status code + */ + FtpStatus getStatus() + { + return sfFtpResponse_GetStatus(m_ptr); + } + + /** + * Get the full message contained in the response + * + * Returns: + * The response message + */ + char[] getMessage() + { + return fromStringz(sfFtpResponse_GetMessage(m_ptr)); + } + + private: + this(void* ptr) + { + super(ptr); + } + // External ================================================================ + + extern (C) + { + typedef void function(void*) pf_sfFtpResponse_Destroy; + typedef int function(void*) pf_sfFtpResponse_IsOk; + typedef FtpStatus function(void*) pf_sfFtpResponse_GetStatus; + typedef char* function(void*) pf_sfFtpResponse_GetMessage; + + static pf_sfFtpResponse_Destroy sfFtpResponse_Destroy; + static pf_sfFtpResponse_IsOk sfFtpResponse_IsOk; + static pf_sfFtpResponse_GetStatus sfFtpResponse_GetStatus; + static pf_sfFtpResponse_GetMessage sfFtpResponse_GetMessage; + } + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfFtpResponse_Destroy = cast(pf_sfFtpResponse_Destroy)dll.getSymbol("sfFtpResponse_Destroy"); + sfFtpResponse_IsOk = cast(pf_sfFtpResponse_IsOk)dll.getSymbol("sfFtpResponse_IsOk"); + sfFtpResponse_GetStatus = cast(pf_sfFtpResponse_GetStatus)dll.getSymbol("sfFtpResponse_GetStatus"); + sfFtpResponse_GetMessage = cast(pf_sfFtpResponse_GetMessage)dll.getSymbol("sfFtpResponse_GetMessage"); + } + } + + /** + * Specialization of FTP response returning a directory + */ + static class FtpDirectoryResponse : FtpResponse + { + override void dispose() + { + sfFtpDirectoryResponse_Destroy(m_ptr); + } + + /** + * Get the directory returned in the response. + * + * Returns: + * Directory name + */ + char[] getDirectory() + { + return fromStringz(sfFtpDirectoryResponse_GetDirectory(m_ptr)); + } + + private: + this(void* ptr) + { + super(ptr); + } + // External ================================================================ + + extern (C) + { + typedef void function(void*) pf_sfFtpDirectoryResponse_Destroy; + typedef char* function(void*) pf_sfFtpDirectoryResponse_GetDirectory; + + static pf_sfFtpDirectoryResponse_Destroy sfFtpDirectoryResponse_Destroy; + static pf_sfFtpDirectoryResponse_GetDirectory sfFtpDirectoryResponse_GetDirectory; + } + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfFtpDirectoryResponse_Destroy = cast(pf_sfFtpDirectoryResponse_Destroy)dll.getSymbol("sfFtpDirectoryResponse_Destroy"); + sfFtpDirectoryResponse_GetDirectory = cast(pf_sfFtpDirectoryResponse_GetDirectory)dll.getSymbol("sfFtpDirectoryResponse_GetDirectory"); + } + + } + + /** + * Specialization of FTP response returning a filename listing. + */ + static class FtpListingResponse : FtpResponse + { + override void dispose() + { + sfFtpListingResponse_Destroy(m_ptr); + } + + /** + * Get the number of files in the listing + * + * Returns: + * Total number of files + */ + size_t getCount() + { + return sfFtpListingResponse_GetCount(m_ptr); + } + + /** + * Get the index-th filename in the directory + * + * Params: + * index = Index of the filename to get + * + * Returns: + * Filename + */ + char[] opIndex(size_t index) + { + return fromStringz(sfFtpListingResponse_GetFilename(m_ptr, index)); + } + + /** + * Foreach implementation + */ + int opApply(int delegate(char[]) dg) + { + size_t count = getCount(); + int result; + + for(int i = 0; i < count; i++) + { + result = dg(this[i]); + if (result) + break; + } + + return result; + } + + private: + this(void* ptr) + { + super(ptr); + } + + // External ================================================================ + extern (C) + { + typedef void function(void*) pf_sfFtpListingResponse_Destroy; + typedef size_t function(void*) pf_sfFtpListingResponse_GetCount; + typedef char* function(void*, size_t) pf_sfFtpListingResponse_GetFilename; + + static pf_sfFtpListingResponse_Destroy sfFtpListingResponse_Destroy; + static pf_sfFtpListingResponse_GetCount sfFtpListingResponse_GetCount; + static pf_sfFtpListingResponse_GetFilename sfFtpListingResponse_GetFilename; + } + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfFtpListingResponse_Destroy = cast(pf_sfFtpListingResponse_Destroy)dll.getSymbol("sfFtpListingResponse_Destroy"); + sfFtpListingResponse_GetCount = cast(pf_sfFtpListingResponse_GetCount)dll.getSymbol("sfFtpListingResponse_GetCount"); + sfFtpListingResponse_GetFilename = cast(pf_sfFtpListingResponse_GetFilename)dll.getSymbol("sfFtpListingResponse_GetFilename"); + } + } + + /** + * Default constructor + */ + this() + { + super(sfFtp_Create()); + } + + override void dispose() + { + sfFtp_Destroy(m_ptr); + } + + /** + * Connect to the specified FTP server + * + * Params: + * server = FTP server to connect to + * port = Port used for connection (21 by default, standard FTP port) + * timeout = Maximum time to wait, in seconds (0 by default, means no timeout) + * + * Returns: + * Server response to the request + */ + FtpResponse connect(IPAddress server, ushort port = 21, float timeout = 0.f) + { + return new FtpResponse(sfFtp_Connect(m_ptr, server, port, timeout)); + } + + /** + * Log in using anonymous account + * + * Returns: + * Server response to the request + */ + FtpResponse login() + { + return new FtpResponse(sfFtp_LoginAnonymous(m_ptr)); + } + + /** + * Log in using a username and a password + * + * Params: + * username = User name + * password = password + * + * Returns: + * Server response to the request + */ + FtpResponse login(char[] username, char[] password) + { + return new FtpResponse(sfFtp_Login(m_ptr, toStringz(username), toStringz(password))); + } + + /** + * Close the connection with FTP server + * + * Returns: + * Server response to the request + */ + FtpResponse disconnect() + { + return new FtpResponse(sfFtp_Disconnect(m_ptr)); + } + + /** + * Send a null command to prevent from being disconnected. + * + * Returns: + * Server response to the request + */ + FtpResponse keepAlive() + { + return new FtpResponse(sfFtp_KeepAlive(m_ptr)); + } + + /** + * Get the current working directory + * + * Returns: + * Server response to the request + */ + FtpDirectoryResponse getWorkingDirectory() + { + return new FtpDirectoryResponse(sfFtp_GetWorkingDirectory(m_ptr)); + } + + /** + * Get the content of the given directory (subdirectories and files). + * + * Params: + * directory = directory to list (null by default, the current one) + * + * Returns: + * Server response to the request + */ + FtpListingResponse getDirectoryListing(char[] directory = null) + { + return new FtpListingResponse(sfFtp_GetDirectoryListing(m_ptr, toStringz(directory))); + } + + /** + * Change the current working directory + * + * Params: + * directory = New directory, relative to the current one. + * + * Returns: + * Server response to the request + */ + FtpResponse changeDirectory(char[] directory) + { + return new FtpResponse(sfFtp_ChangeDirectory(m_ptr, toStringz(directory))); + } + + /** + * Go to the parent directory of the current one + * + * Returns: + * Server response to the request + */ + FtpResponse parentDirectory() + { + return new FtpResponse(sfFtp_ParentDirectory(m_ptr)); + } + + /** + * Create a new directory + * + * Params: + * name = name of the directory to create + * + * Returns: + * Server response to the request + */ + FtpResponse makeDirectory(char[] name) + { + return new FtpResponse(sfFtp_MakeDirectory(m_ptr, toStringz(name))); + } + + /** + * remove an existing directory + * + * Params: + * name = name of the directory to remove + * + * Returns: + * Server response to the request + */ + FtpResponse deleteDirectory(char[] name) + { + return new FtpResponse(sfFtp_DeleteDirectory(m_ptr, toStringz(name))); + } + + /** + * Rename a file + * + * Params: + * name = file to rename + * newName = new name + * + * Returns: + * Server response to the request + */ + FtpResponse renameFile(char[] name, char[] newName) + { + return new FtpResponse(sfFtp_RenameFile(m_ptr, toStringz(name), toStringz(newName))); + } + + /** + * Remove an existing file + * + * Params: + * name = file to remove + * + * Returns: + * Server response to the request + */ + FtpResponse deleteFile(char[] name) + { + return new FtpResponse(sfFtp_DeleteFile(m_ptr, toStringz(name))); + } + + /** + * Download a file from the server + * + * Params: + * distantFile = Path of the distant file to download + * destFile = Where to put the file on the local computer + * mode = transfer mode (binary by default) + * + * Returns: + * Server response to the request + */ + FtpResponse download(char[] distantFile, char[] destFile, FtpTransferMode mode = FtpTransferMode.BINARY) + { + return new FtpResponse(sfFtp_Download(m_ptr, toStringz(distantFile), toStringz(destFile), mode)); + } + + /** + * Upload a file to the server + * + * Params: + * localFile = Path of the local file to upload + * destPath = Where to put the file on the server + * mode = transfer mode (binary by default) + * Returns: + * Server response to the request + */ + FtpResponse upload(char[] localFile, char[] destFile, FtpTransferMode mode = FtpTransferMode.BINARY) + { + return new FtpResponse(sfFtp_Upload(m_ptr, toStringz(localFile), toStringz(destFile), mode)); + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfFtp_Create; + typedef void function(void*) pf_sfFtp_Destroy; + typedef void* function(void*, IPAddress, ushort, float) pf_sfFtp_Connect; + typedef void* function(void*) pf_sfFtp_LoginAnonymous; + typedef void* function(void*, char*, char*) pf_sfFtp_Login; + typedef void* function(void*) pf_sfFtp_Disconnect; + typedef void* function(void*) pf_sfFtp_KeepAlive; + typedef void* function(void*) pf_sfFtp_GetWorkingDirectory; + typedef void* function(void*, char*) pf_sfFtp_GetDirectoryListing; + typedef void* function(void*, char*) pf_sfFtp_ChangeDirectory; + typedef void* function(void*) pf_sfFtp_ParentDirectory; + typedef void* function(void*, char*) pf_sfFtp_MakeDirectory; + typedef void* function(void*, char*) pf_sfFtp_DeleteDirectory; + typedef void* function(void*, char*, char*) pf_sfFtp_RenameFile; + typedef void* function(void*, char*) pf_sfFtp_DeleteFile; + typedef void* function(void*, char*, char*, FtpTransferMode) pf_sfFtp_Download; + typedef void* function(void*, char*, char*, FtpTransferMode) pf_sfFtp_Upload; + + static pf_sfFtp_Create sfFtp_Create; + static pf_sfFtp_Destroy sfFtp_Destroy; + static pf_sfFtp_Connect sfFtp_Connect; + static pf_sfFtp_LoginAnonymous sfFtp_LoginAnonymous; + static pf_sfFtp_Login sfFtp_Login; + static pf_sfFtp_Disconnect sfFtp_Disconnect; + static pf_sfFtp_KeepAlive sfFtp_KeepAlive; + static pf_sfFtp_GetWorkingDirectory sfFtp_GetWorkingDirectory; + static pf_sfFtp_GetDirectoryListing sfFtp_GetDirectoryListing; + static pf_sfFtp_ChangeDirectory sfFtp_ChangeDirectory; + static pf_sfFtp_ParentDirectory sfFtp_ParentDirectory; + static pf_sfFtp_MakeDirectory sfFtp_MakeDirectory; + static pf_sfFtp_DeleteDirectory sfFtp_DeleteDirectory; + static pf_sfFtp_RenameFile sfFtp_RenameFile; + static pf_sfFtp_DeleteFile sfFtp_DeleteFile; + static pf_sfFtp_Download sfFtp_Download; + static pf_sfFtp_Upload sfFtp_Upload; + } + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfFtp_Create = cast(pf_sfFtp_Create)dll.getSymbol("sfFtp_Create"); + sfFtp_Destroy = cast(pf_sfFtp_Destroy)dll.getSymbol("sfFtp_Destroy"); + sfFtp_Connect = cast(pf_sfFtp_Connect)dll.getSymbol("sfFtp_Connect"); + sfFtp_LoginAnonymous = cast(pf_sfFtp_LoginAnonymous)dll.getSymbol("sfFtp_LoginAnonymous"); + sfFtp_Login = cast(pf_sfFtp_Login)dll.getSymbol("sfFtp_Login"); + sfFtp_Disconnect = cast(pf_sfFtp_Disconnect)dll.getSymbol("sfFtp_Disconnect"); + sfFtp_KeepAlive = cast(pf_sfFtp_KeepAlive)dll.getSymbol("sfFtp_KeepAlive"); + sfFtp_GetWorkingDirectory = cast(pf_sfFtp_GetWorkingDirectory)dll.getSymbol("sfFtp_GetWorkingDirectory"); + sfFtp_GetDirectoryListing = cast(pf_sfFtp_GetDirectoryListing)dll.getSymbol("sfFtp_GetDirectoryListing"); + sfFtp_ChangeDirectory = cast(pf_sfFtp_ChangeDirectory)dll.getSymbol("sfFtp_ChangeDirectory"); + sfFtp_ParentDirectory = cast(pf_sfFtp_ParentDirectory)dll.getSymbol("sfFtp_ParentDirectory"); + sfFtp_MakeDirectory = cast(pf_sfFtp_MakeDirectory)dll.getSymbol("sfFtp_MakeDirectory"); + sfFtp_DeleteDirectory = cast(pf_sfFtp_DeleteDirectory)dll.getSymbol("sfFtp_DeleteDirectory"); + sfFtp_RenameFile = cast(pf_sfFtp_RenameFile)dll.getSymbol("sfFtp_RenameFile"); + sfFtp_DeleteFile = cast(pf_sfFtp_DeleteFile)dll.getSymbol("sfFtp_DeleteFile"); + sfFtp_Download = cast(pf_sfFtp_Download)dll.getSymbol("sfFtp_Download"); + sfFtp_Upload = cast(pf_sfFtp_Upload)dll.getSymbol("sfFtp_Upload"); + } +} diff --git a/DSFML/import/dsfml/network/http.d b/DSFML/import/dsfml/network/http.d new file mode 100644 index 00000000..93efde45 --- /dev/null +++ b/DSFML/import/dsfml/network/http.d @@ -0,0 +1,394 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.http; + +import dsfml.system.stringutil; +import dsfml.system.common; + +/** +* HTTP methods enumeration +*/ +enum HttpMethod +{ + GET, ///< Request in get mode, standard method to retrieve a page + POST, ///< Request in post mode, usually to send data to a page + HEAD ///< Request a page's header only +} + +/** +* HTTP response status code +*/ +enum HttpStatus +{ + // 2xx: success + OK = 200, ///< Most common code returned when operation was successful + CREATED = 201, ///< The resource has successfully been created + ACCEPTED = 202, ///< The request has been accepted, but will be processed later by the server + NOCONTENT = 204, ///< Sent when the server didn't send any data in return + + // 3xx: redirection + MULTIPLECHOICES = 300, ///< The requested page can be accessed from several locations + MOVEDPERMANENTLY = 301, ///< The requested page has permanently moved to a new location + MOVEDTEMPORARILY = 302, ///< The requested page has temporarily moved to a new location + NOTMODIFIED = 304, ///< For conditionnal requests, means the requested page hasn't changed and doesn't need to be refreshed + + // 4xx: client error + BADREQUEST = 400, ///< The server couldn't understand the request (syntax error) + UNAUTHORIZED = 401, ///< The requested page needs an authentification to be accessed + FORBIDDEN = 403, ///< The requested page cannot be accessed at all, even with authentification + NOTFOUND = 404, ///< The requested page doesn't exist + + // 5xx: server error + INTERNALSERVERERROR = 500, ///< The server encountered an unexpected error + NOTIMPLEMENTED = 501, ///< The server doesn't implement a requested feature + BADGATEWAY = 502, ///< The gateway server has received an error from the source server + SERVICENOTAVAILABLE = 503, ///< The server is temporarily unavailable (overloaded, in maintenance, ...) + + // 10xx: SFML custom codes + INVALIDRESPONSE = 1000, ///< Response is not a valid HTTP one + CONNECTIONFAILED = 1001 ///< Connection with server failed +} + +/** +* This class provides methods for manipulating the HTTP protocol (described in +* RFC 1945). +* It can connect to a website, get files, send requests +*/ +class Http : DSFMLObject +{ + /** + * Wrapper for a http request, which is basically : + * - a header with a method, a target URI and a set of field/value pairs + * - an optional body (for POST requests) + */ + static class Response : DSFMLObject + { + override void dispose() + { + sfHttpResponse_Destroy(m_ptr); + } + + /** + * Get the value of a field + * + * Params: + * field = Name of the field to get (case-insensitive) + * Returns: + * Value of the field, or enpty string if not found + */ + char[] getField(char[] field) + { + return fromStringz(sfHttpResponse_GetField(m_ptr, toStringz(field))); + } + + /** + * Get the header status code + * + * Returns: + * header status code + */ + HttpStatus getStatus() + { + return sfHttpResponse_GetStatus(m_ptr); + } + + /** + * Get the major HTTP version number of the response + * + * Returns: + * Major version number + */ + uint getMajorHTTPVersion() + { + return sfHttpResponse_GetMajorVersion(m_ptr); + } + + /** + * Get the minor HTTP version number of the response + * + * Returns: + * Minor version number + */ + uint getMinorHTTPVersion() + { + return sfHttpResponse_GetMinorVersion(m_ptr); + } + + /** + * Get the body of the response. The body can contain : + * - the requested page (for GET requests) + * - a response from the server (for POST requests) + * - nothing (for HEAD requests) + * - an error message (in case of an error) + * + * Returns: + * the response body + */ + char[] getBody() + { + return fromStringz(sfHttpResponse_GetBody(m_ptr)); + } + + private: + this(void* ptr) + { + super(ptr); + } + // External ================================================================ + extern (C) + { + typedef void function(void*) pf_sfHttpResponse_Destroy; + typedef char* function(void*, char*) pf_sfHttpResponse_GetField; + typedef HttpStatus function(void*) pf_sfHttpResponse_GetStatus; + typedef uint function(void*) pf_sfHttpResponse_GetMajorVersion; + typedef uint function(void*) pf_sfHttpResponse_GetMinorVersion; + typedef char* function(void*) pf_sfHttpResponse_GetBody; + + static pf_sfHttpResponse_Destroy sfHttpResponse_Destroy; + static pf_sfHttpResponse_GetField sfHttpResponse_GetField; + static pf_sfHttpResponse_GetStatus sfHttpResponse_GetStatus; + static pf_sfHttpResponse_GetMajorVersion sfHttpResponse_GetMajorVersion; + static pf_sfHttpResponse_GetMinorVersion sfHttpResponse_GetMinorVersion; + static pf_sfHttpResponse_GetBody sfHttpResponse_GetBody; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfHttpResponse_Destroy = cast(pf_sfHttpResponse_Destroy)dll.getSymbol("sfHttpResponse_Destroy"); + sfHttpResponse_GetField = cast(pf_sfHttpResponse_GetField)dll.getSymbol("sfHttpResponse_GetField"); + sfHttpResponse_GetStatus = cast(pf_sfHttpResponse_GetStatus)dll.getSymbol("sfHttpResponse_GetStatus"); + sfHttpResponse_GetMajorVersion = cast(pf_sfHttpResponse_GetMajorVersion)dll.getSymbol("sfHttpResponse_GetMajorVersion"); + sfHttpResponse_GetMinorVersion = cast(pf_sfHttpResponse_GetMinorVersion)dll.getSymbol("sfHttpResponse_GetMinorVersion"); + sfHttpResponse_GetBody = cast(pf_sfHttpResponse_GetBody)dll.getSymbol("sfHttpResponse_GetBody"); + } + } + + /** + * Wrapper for a HTTP response which is basically : + * - a header with a status code and a set of field/value pairs + * - a body (the content of the requested resource) + */ + static class Request : DSFMLObject + { + /** + * Constructor + * + * Params: + * requestMethod = Method to use for the request (Get by default) + * uri = Target URI ("/" by default -- index page) + * requestBody = Content of the request's body (empty by default) + */ + this(HttpMethod requestMethod = HttpMethod.GET, char[] uri = "/", char[] requestBody = "") + { + super(sfHttpRequest_Create()); + sfHttpRequest_SetMethod(m_ptr, requestMethod); + sfHttpRequest_SetURI(m_ptr, toStringz(uri)); + sfHttpRequest_SetBody(m_ptr, toStringz(requestBody)); + } + + /** + * Set the value of a field. Field is created if it doesn't exists. + * + * Params: + * field = name of the field to set (case-insensitive) + * value = value of the field + */ + void setField(char[] field, char[] value) + { + sfHttpRequest_SetField(m_ptr, toStringz(field), toStringz(value)); + } + + /** + * Set the request method. + * + * Params: + * requestMethod = Method to use for the request. + */ + void setMethod(HttpMethod requestMethod) + { + sfHttpRequest_SetMethod(m_ptr, requestMethod); + } + + /** + * Set the target URI of the request. + * + * Params: + * uri = URI to request, local to the host. + * Returns: + */ + void setURI(char[] uri) + { + sfHttpRequest_SetURI(m_ptr, toStringz(uri)); + } + + /** + * Set the HTTP version of the request. + * + * Params: + * major = Major version number + * minor = Minor version number + */ + void setHttpVersion(uint major, uint minor) + { + sfHttpRequest_SetHttpVersion(m_ptr, major, minor); + } + + /** + * Set the body of the request. This parameter is optionnal and make sense + * only for POST requests. + * + * Params: + * requestBody = Content of the request body. + */ + void setBody(char[] requestBody) + { + sfHttpRequest_SetBody(m_ptr, toStringz(requestBody)); + } + + private: + + // External ================================================================ + extern (C) + { + typedef void* function() pf_sfHttpRequest_Create; + typedef void function(void*) pf_sfHttpRequest_Destroy; + typedef void function(void*, char*, char*) pf_sfHttpRequest_SetField; + typedef void function(void*, HttpMethod) pf_sfHttpRequest_SetMethod; + typedef void function(void*, char*) pf_sfHttpRequest_SetURI; + typedef void function(void*, uint, uint) pf_sfHttpRequest_SetHttpVersion; + typedef void function(void*, char*) pf_sfHttpRequest_SetBody; + + static pf_sfHttpRequest_Create sfHttpRequest_Create; + static pf_sfHttpRequest_Destroy sfHttpRequest_Destroy; + static pf_sfHttpRequest_SetField sfHttpRequest_SetField; + static pf_sfHttpRequest_SetMethod sfHttpRequest_SetMethod; + static pf_sfHttpRequest_SetURI sfHttpRequest_SetURI; + static pf_sfHttpRequest_SetHttpVersion sfHttpRequest_SetHttpVersion; + static pf_sfHttpRequest_SetBody sfHttpRequest_SetBody; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfHttpRequest_Create = cast(pf_sfHttpRequest_Create)dll.getSymbol("sfHttpRequest_Create"); + sfHttpRequest_Destroy = cast(pf_sfHttpRequest_Destroy)dll.getSymbol("sfHttpRequest_Destroy"); + sfHttpRequest_SetField = cast(pf_sfHttpRequest_SetField)dll.getSymbol("sfHttpRequest_SetField"); + sfHttpRequest_SetMethod = cast(pf_sfHttpRequest_SetMethod)dll.getSymbol("sfHttpRequest_SetMethod"); + sfHttpRequest_SetURI = cast(pf_sfHttpRequest_SetURI)dll.getSymbol("sfHttpRequest_SetURI"); + sfHttpRequest_SetHttpVersion = cast(pf_sfHttpRequest_SetHttpVersion)dll.getSymbol("sfHttpRequest_SetHttpVersion"); + sfHttpRequest_SetBody = cast(pf_sfHttpRequest_SetBody)dll.getSymbol("sfHttpRequest_SetBody"); + } + } + + /** + * Constructor + */ + this() + { + super(sfHttp_Create()); + } + + /** + * Constructor + * + * Params: + * host = Web server to connect to + * port = port to use for connection (0 by default -- use the standard port of the protocol) + */ + this(char[] host, ushort port = 0) + { + super(sfHttp_Create()); + sfHttp_SetHost(m_ptr, toStringz(host), port); + } + + override void dispose() + { + sfHttp_Destroy(m_ptr); + } + + /** + * Set the target host. + * + * Params: + * host = Web server to connect to + * port = port to use for connection (0 by default -- use the standard port of the protocol) + */ + void setHost(char[] host, ushort port = 0) + { + sfHttp_SetHost(m_ptr, toStringz(host), port); + } + + /** + * Send a HTTP request and return the server's response. + * You must be connected to a host before sending requests. + * Any missing mandatory header field will be added with an appropriate value. + * + * Warning : this function waits for the server's response and may + * not return instantly; use a thread if you don't want to block your + * application. + * + * Params: + * req = Request to send + * + * Returns: + * Server's response + */ + + Response sendRequest(Request req) + { + return new Response( sfHttp_SendRequest(m_ptr, req.getNativePointer) ); + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfHttp_Create; + typedef void function(void*) pf_sfHttp_Destroy; + typedef void function(void*, char*, ushort) pf_sfHttp_SetHost; + typedef void* function(void*, void*) pf_sfHttp_SendRequest; + + static pf_sfHttp_Create sfHttp_Create; + static pf_sfHttp_Destroy sfHttp_Destroy; + static pf_sfHttp_SetHost sfHttp_SetHost; + static pf_sfHttp_SendRequest sfHttp_SendRequest; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfHttp_Create = cast(pf_sfHttp_Create)dll.getSymbol("sfHttp_Create"); + sfHttp_Destroy = cast(pf_sfHttp_Destroy)dll.getSymbol("sfHttp_Destroy"); + sfHttp_SetHost = cast(pf_sfHttp_SetHost)dll.getSymbol("sfHttp_SetHost"); + sfHttp_SendRequest = cast(pf_sfHttp_SendRequest)dll.getSymbol("sfHttp_SendRequest"); + } +} diff --git a/DSFML/import/dsfml/network/ipaddress.d b/DSFML/import/dsfml/network/ipaddress.d new file mode 100644 index 00000000..a04f27f4 --- /dev/null +++ b/DSFML/import/dsfml/network/ipaddress.d @@ -0,0 +1,164 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.ipaddress; + +import dsfml.system.common; +import dsfml.system.stringutil; + +/** +* IPAddress provides easy manipulation of IP v4 addresses +*/ +struct IPAddress +{ + /** + * Construct the address from a string + * + * Params: + * address = IP address ("xxx.xxx.xxx.xxx") or network name + * + */ + static IPAddress opCall(char[] address) + { + return sfIPAddress_FromString(toStringz(address)); + } + + + /** + * Construct the address from 4 bytes + * + * Params: + * byte0 = First byte of the address + * byte1 = Second byte of the address + * byte2 = Third byte of the address + * byte3 = Fourth byte of the address + * + */ + static IPAddress opCall(ubyte byte0, ubyte byte1, ubyte byte2, ubyte byte3) + { + return sfIPAddress_FromBytes(byte0, byte1, byte2, byte3); + } + + /** + * Construct the address from a 32 bits integer + * + * Params: + * address = 4 bytes of the address packed into a 32 bits integer + * + */ + static IPAddress opCall(uint address) + { + return sfIPAddress_FromInteger(address); + } + + /** + * Tell if the address is a valid one + * + * Returns: + * True if address has a valid syntax + * + */ + bool isValid() + { + return cast(bool)sfIPAddress_IsValid(*this); + } + + /** + * Get the computer's local IP address (from the LAN point of view) + * + * Returns: + * Local IP address + * + */ + static IPAddress getLocalAddress() + { + return sfIPAddress_GetLocalAddress(); + } + + /** + * Get the computer's public IP address (from the web point of view). + * The only way to get a public address is to ask it to a + * distant website ; as a consequence, this function may be + * very slow -- use it as few as possible ! + * + * Returns: + * Public IP address + * + */ + static IPAddress getPublicAddress() + { + return sfIPAddress_GetPublicAddress(); + } + + bool opEqual(IPAddress other) + { + return Address == other.Address; + } + + /** + * Local host address (to connect to the same computer). + */ + static IPAddress LOCALHOST() + { + return sfIPAddress_LocalHost(); + } + + byte[16] Address; + +} + +private: + +extern (C) +{ + typedef IPAddress function(char*) pf_sfIPAddress_FromString; + typedef IPAddress function(ubyte, ubyte, ubyte, ubyte) pf_sfIPAddress_FromBytes; + typedef IPAddress function(uint) pf_sfIPAddress_FromInteger; + typedef int function(IPAddress) pf_sfIPAddress_IsValid; + typedef IPAddress function() pf_sfIPAddress_GetLocalAddress; + typedef IPAddress function() pf_sfIPAddress_GetPublicAddress; + typedef IPAddress function() pf_sfIPAddress_LocalHost; + + static pf_sfIPAddress_FromString sfIPAddress_FromString; + static pf_sfIPAddress_FromBytes sfIPAddress_FromBytes; + static pf_sfIPAddress_FromInteger sfIPAddress_FromInteger; + static pf_sfIPAddress_IsValid sfIPAddress_IsValid; + static pf_sfIPAddress_GetLocalAddress sfIPAddress_GetLocalAddress; + static pf_sfIPAddress_GetPublicAddress sfIPAddress_GetPublicAddress; + static pf_sfIPAddress_LocalHost sfIPAddress_LocalHost; +} + +static this() +{ + DllLoader dll = DllLoader.load("csfml-network"); + + sfIPAddress_FromBytes = cast(pf_sfIPAddress_FromBytes)dll.getSymbol("sfIPAddress_FromBytes"); + sfIPAddress_FromString = cast(pf_sfIPAddress_FromString)dll.getSymbol("sfIPAddress_FromString"); + sfIPAddress_FromInteger = cast(pf_sfIPAddress_FromInteger)dll.getSymbol("sfIPAddress_FromInteger"); + sfIPAddress_GetLocalAddress = cast(pf_sfIPAddress_GetLocalAddress)dll.getSymbol("sfIPAddress_GetLocalAddress"); + sfIPAddress_GetPublicAddress = cast(pf_sfIPAddress_GetPublicAddress)dll.getSymbol("sfIPAddress_GetPublicAddress"); + sfIPAddress_IsValid = cast(pf_sfIPAddress_IsValid)dll.getSymbol("sfIPAddress_IsValid"); + sfIPAddress_LocalHost = cast(pf_sfIPAddress_LocalHost)dll.getSymbol("sfIPAddress_LocalHost"); +} diff --git a/DSFML/import/dsfml/network/packet.d b/DSFML/import/dsfml/network/packet.d new file mode 100644 index 00000000..f99f46d1 --- /dev/null +++ b/DSFML/import/dsfml/network/packet.d @@ -0,0 +1,413 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.packet; + +import dsfml.system.common; +import dsfml.system.stringutil; + +/** +* Packet wraps data to send / to receive through the network +* +* The order of insertion and extraction must be the same. +* +* You can derive from Packet and override onSend and onReceive to do custom operations before send or after reception. +* +* Litterals integer are promoted to int. +* Litterals floating point are promoted to float. +* +* Extraction or insertion can be specified with explicit template. +* Examples: +* ------------------------------------------------------------ +* Packet p = new Packet(); +* +* int i = 32, j = 42; +* char[] k = hello; +* +* p.set(i, k, j); //Set the data in the packet +* +* int a, b; +* char[] c; +* p.get(a, c, b); //Get data from the packet +* +* //... +* +* Packet p = new Packet(); +* p.set!(byte)(5); // Litteral are inserted with byte type +* ------------------------------------------------------------ +* +* See_Also: +* $(LINK2 http://www.digitalmars.com/d/1.0/lex.html, D litterals Specification) for more informations. +*/ +class Packet : DSFMLObject +{ + /** + * Default constructor + * + */ + this() + { + super(sfPacket_Create()); + } + + override void dispose() + { + sfPacket_Destroy(m_ptr); + } + + /** + * Append data to the end of the packet. + * + * Params: + * data = Array of data to append + * + */ + void append(byte[] data) + { + if (data !is null) + sfPacket_Append(m_ptr, data.ptr, data.length); + } + + /** + * Clear the packet data + * + */ + void clear() + { + sfPacket_Clear(m_ptr); + } + + /** + * Get an array to the data contained in the packet + * $(B the returned array may be invalid after you + * append data to the packet) + * + * Returns: + * array of data + * + * Remarks: + * return an array of $(B all) data in the packet. + * + * ---------- + * Packet p = new Packet(); + * + * char[] str1 = "Hi"; + * char[] str2 = "Hello"; + * + * p.set(str1, str2); + * + * // Retrieve str1 from packet + * char[] str3; + * p.get(str3); + * + * // Returns an array containing str1 and str2. + * byte[] ptr = p.getData(); + * ---------- + */ + byte[] getData() + { + if (canRead) + return sfPacket_GetData(m_ptr)[0..getDataSize]; + } + + + /** + * Get the size of the data contained in the packet + * + * Returns: + * Data size, in bytes + */ + uint getDataSize() + { + return sfPacket_GetDataSize(m_ptr); + } + + /** + * Tell if the reading position has reached the end of the packet + * + * Returns: + * true if all data have been read. + */ + bool endOfPacket() + { + return cast(bool)sfPacket_EndOfPacket(m_ptr); + } + /** + * Tell if the packet is valid for reading + * + * Returns: + * True if data can be extracted from the packet + * + */ + bool canRead() + { + return cast(bool)sfPacket_CanRead(m_ptr); + } + + + /** + * Add new variables to the packet + * Accept (u)byte, (u)short, (u)int, float, double, char[] and wchar[] types + */ + Packet set(T...)(T t) + { + foreach (v; t) + internalSet(t); + return this; + } + + /** + * Retrieve data from the packet + * Accept (u)byte, (u)short, (u)int, float, double, char[] and wchar[] types + */ + Packet get(T...)(ref T t) + { + foreach (v; t) + internalGet(t); + return this; + } + + /** + * Called before packet is send + * + * Params: + * size = Variable to fill with the size of the data to send + * Returns: + * Array of byte to send + */ + byte[] onSend() + { + return getData(); + } + + /** + * Called after a packet has been received + * + * Params: + * data = Array of byte received + */ + void onReceive(byte[] data) + { + append(data); + } + +private: + void internalGet(ref bool data) + { + data = cast(bool)sfPacket_ReadInt32(m_ptr); + } + void internalGet(ref byte data) + { + data = sfPacket_ReadInt8(m_ptr); + } + void internalGet(ref ubyte data) + { + data = sfPacket_ReadUint8(m_ptr); + } + void internalGet(ref short data) + { + data = sfPacket_ReadInt16(m_ptr); + } + void internalGet(ref ushort data) + { + data = sfPacket_ReadUint16(m_ptr); + } + void internalGet(ref int data) + { + data = sfPacket_ReadInt32(m_ptr); + } + void internalGet(ref uint data) + { + data = sfPacket_ReadUint32(m_ptr); + } + void internalGet(ref float data) + { + data = sfPacket_ReadFloat(m_ptr); + } + void internalGet(ref double data) + { + data = sfPacket_ReadDouble(m_ptr); + } + void internalGet(ref char[] data) + { + scope char[] temp = new char[sfPacket_GetDataSize(m_ptr)]; + sfPacket_ReadString(m_ptr, temp.ptr); + size_t l = fromStringz(temp.ptr).length; + data = new char[l]; + data[] = temp[0 .. l]; + } + + void internalGet(ref wchar[] data) + { + scope wchar[] temp = new wchar[sfPacket_GetDataSize(m_ptr)]; + sfPacket_ReadWideString(m_ptr, temp.ptr); + size_t l = fromStringz(temp.ptr).length; + data = new wchar[l]; + data[] = temp[0 .. l]; + } + + void internalSet(bool data) + { + sfPacket_WriteInt32(m_ptr, cast(int)data); + } + void internalSet(byte data) + { + sfPacket_WriteInt8(m_ptr, data); + } + void internalSet(ubyte data) + { + sfPacket_WriteUint8(m_ptr, data); + } + void internalSet(short data) + { + sfPacket_WriteInt16(m_ptr, data); + } + void internalSet(ushort data) + { + sfPacket_WriteUint16(m_ptr, data); + } + void internalSet(int data) + { + sfPacket_WriteInt32(m_ptr, data); + } + void internalSet(uint data) + { + sfPacket_WriteUint32(m_ptr, data); + } + void internalSet(float data) + { + sfPacket_WriteFloat(m_ptr, data); + } + void internalSet(double data) + { + sfPacket_WriteDouble(m_ptr, data); + } + void internalSet(char[] data) + { + sfPacket_WriteString(m_ptr, toStringz(data)); + } + + void internalSet(wchar[] data) + { + sfPacket_WriteWideString(m_ptr, toStringz(data)); + } + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfPacket_Create; + typedef void function(void*) pf_sfPacket_Destroy; + typedef void function(void*, void*, size_t) pf_sfPacket_Append; + typedef void function(void*) pf_sfPacket_Clear; + typedef byte* function(void*) pf_sfPacket_GetData; + typedef uint function(void*) pf_sfPacket_GetDataSize; + typedef int function(void*) pf_sfPacket_EndOfPacket; + typedef int function(void*) pf_sfPacket_CanRead; + typedef byte function(void*) pf_sfPacket_ReadInt8; + typedef ubyte function(void*) pf_sfPacket_ReadUint8; + typedef short function(void*) pf_sfPacket_ReadInt16; + typedef ushort function(void*) pf_sfPacket_ReadUint16; + typedef int function(void*) pf_sfPacket_ReadInt32; + typedef uint function(void*) pf_sfPacket_ReadUint32; + typedef float function(void*) pf_sfPacket_ReadFloat; + typedef double function(void*) pf_sfPacket_ReadDouble; + typedef void function(void*, char*) pf_sfPacket_ReadString; + typedef void function(void*, wchar*) pf_sfPacket_ReadWideString; + typedef void function(void*, byte) pf_sfPacket_WriteInt8; + typedef void function(void*, ubyte) pf_sfPacket_WriteUint8; + typedef void function(void*, short) pf_sfPacket_WriteInt16; + typedef void function(void*, ushort) pf_sfPacket_WriteUint16; + typedef void function(void*, int) pf_sfPacket_WriteInt32; + typedef void function(void*, uint) pf_sfPacket_WriteUint32; + typedef void function(void*, float) pf_sfPacket_WriteFloat; + typedef void function(void*, double) pf_sfPacket_WriteDouble; + typedef void function(void*, char*) pf_sfPacket_WriteString; + typedef void function(void*, wchar*) pf_sfPacket_WriteWideString; + + static pf_sfPacket_Create sfPacket_Create; + static pf_sfPacket_Destroy sfPacket_Destroy; + static pf_sfPacket_Append sfPacket_Append; + static pf_sfPacket_Clear sfPacket_Clear; + static pf_sfPacket_GetData sfPacket_GetData; + static pf_sfPacket_GetDataSize sfPacket_GetDataSize; + static pf_sfPacket_EndOfPacket sfPacket_EndOfPacket; + static pf_sfPacket_CanRead sfPacket_CanRead; + static pf_sfPacket_ReadInt8 sfPacket_ReadInt8; + static pf_sfPacket_ReadUint8 sfPacket_ReadUint8; + static pf_sfPacket_ReadInt16 sfPacket_ReadInt16; + static pf_sfPacket_ReadUint16 sfPacket_ReadUint16; + static pf_sfPacket_ReadInt32 sfPacket_ReadInt32; + static pf_sfPacket_ReadUint32 sfPacket_ReadUint32; + static pf_sfPacket_ReadFloat sfPacket_ReadFloat; + static pf_sfPacket_ReadDouble sfPacket_ReadDouble; + static pf_sfPacket_ReadString sfPacket_ReadString; + static pf_sfPacket_ReadWideString sfPacket_ReadWideString; + static pf_sfPacket_WriteInt8 sfPacket_WriteInt8; + static pf_sfPacket_WriteUint8 sfPacket_WriteUint8; + static pf_sfPacket_WriteInt16 sfPacket_WriteInt16; + static pf_sfPacket_WriteUint16 sfPacket_WriteUint16; + static pf_sfPacket_WriteInt32 sfPacket_WriteInt32; + static pf_sfPacket_WriteUint32 sfPacket_WriteUint32; + static pf_sfPacket_WriteFloat sfPacket_WriteFloat; + static pf_sfPacket_WriteDouble sfPacket_WriteDouble; + static pf_sfPacket_WriteString sfPacket_WriteString; + static pf_sfPacket_WriteWideString sfPacket_WriteWideString; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfPacket_Append = cast(pf_sfPacket_Append)dll.getSymbol("sfPacket_Append"); + sfPacket_CanRead = cast(pf_sfPacket_CanRead)dll.getSymbol("sfPacket_CanRead"); + sfPacket_Clear = cast(pf_sfPacket_Clear)dll.getSymbol("sfPacket_Clear"); + sfPacket_Create = cast(pf_sfPacket_Create)dll.getSymbol("sfPacket_Create"); + sfPacket_Destroy = cast(pf_sfPacket_Destroy)dll.getSymbol("sfPacket_Destroy"); + sfPacket_EndOfPacket = cast(pf_sfPacket_EndOfPacket)dll.getSymbol("sfPacket_EndOfPacket"); + sfPacket_GetData = cast(pf_sfPacket_GetData)dll.getSymbol("sfPacket_GetData"); + sfPacket_GetDataSize = cast(pf_sfPacket_GetDataSize)dll.getSymbol("sfPacket_GetDataSize"); + sfPacket_ReadDouble = cast(pf_sfPacket_ReadDouble)dll.getSymbol("sfPacket_ReadDouble"); + sfPacket_ReadFloat = cast(pf_sfPacket_ReadFloat)dll.getSymbol("sfPacket_ReadFloat"); + sfPacket_ReadInt16 = cast(pf_sfPacket_ReadInt16)dll.getSymbol("sfPacket_ReadInt16"); + sfPacket_ReadInt32 = cast(pf_sfPacket_ReadInt32)dll.getSymbol("sfPacket_ReadInt32"); + sfPacket_ReadInt8 = cast(pf_sfPacket_ReadInt8)dll.getSymbol("sfPacket_ReadInt8"); + sfPacket_ReadString = cast(pf_sfPacket_ReadString)dll.getSymbol("sfPacket_ReadString"); + sfPacket_ReadWideString = cast(pf_sfPacket_ReadWideString)dll.getSymbol("sfPacket_ReadWideString"); + sfPacket_ReadUint16 = cast(pf_sfPacket_ReadUint16)dll.getSymbol("sfPacket_ReadUint16"); + sfPacket_ReadUint32 = cast(pf_sfPacket_ReadUint32)dll.getSymbol("sfPacket_ReadUint32"); + sfPacket_ReadUint8 = cast(pf_sfPacket_ReadUint8)dll.getSymbol("sfPacket_ReadUint8"); + sfPacket_WriteDouble = cast(pf_sfPacket_WriteDouble)dll.getSymbol("sfPacket_WriteDouble"); + sfPacket_WriteFloat = cast(pf_sfPacket_WriteFloat)dll.getSymbol("sfPacket_WriteFloat"); + sfPacket_WriteInt16 = cast(pf_sfPacket_WriteInt16)dll.getSymbol("sfPacket_WriteInt16"); + sfPacket_WriteInt32 = cast(pf_sfPacket_WriteInt32)dll.getSymbol("sfPacket_WriteInt32"); + sfPacket_WriteInt8 = cast(pf_sfPacket_WriteInt8)dll.getSymbol("sfPacket_WriteInt8"); + sfPacket_WriteString = cast(pf_sfPacket_WriteString)dll.getSymbol("sfPacket_WriteString"); + sfPacket_WriteWideString = cast(pf_sfPacket_WriteWideString)dll.getSymbol("sfPacket_WriteWideString"); + sfPacket_WriteUint16 = cast(pf_sfPacket_WriteUint16)dll.getSymbol("sfPacket_WriteUint16"); + sfPacket_WriteUint32 = cast(pf_sfPacket_WriteUint32)dll.getSymbol("sfPacket_WriteUint32"); + sfPacket_WriteUint8 = cast(pf_sfPacket_WriteUint8)dll.getSymbol("sfPacket_WriteUint8"); + } +} diff --git a/DSFML/import/dsfml/network/selector.d b/DSFML/import/dsfml/network/selector.d new file mode 100644 index 00000000..8536427c --- /dev/null +++ b/DSFML/import/dsfml/network/selector.d @@ -0,0 +1,187 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.selector; + +import dsfml.network.sockettcp; +import dsfml.network.socketudp; + +import dsfml.system.common; + +/** +* Selector TCP allow reading from multiple sockets +* without blocking. It's a kind of multiplexer. Use SocketTCP or +* SocketUDP aliases. +*/ +class Selector(T) : DSFMLObject +{ + //Ensure type is correct + static if (!is(T : SocketTCP) && !is(T : SocketUDP)) + static assert("Only SocketTCP and SocketUDP are valid for Selector."); + + + /** + * Default constructor + */ + this() + { + super(sfSelector_Create()); + } + + override void dispose() + { + sfSelector_Destroy(m_ptr); + } + + /** + * Add a socket to watch + * + * Params: + * socket = A tcp or udp socket + */ + void add(T socket) + { + if (!(socket.getNativePointer in m_watchedSockets)) + { + sfSelector_Add(m_ptr, socket.getNativePointer); + m_watchedSockets[socket.getNativePointer] = socket; + m_numSocketsWatched++; + } + } + + /** + * Remove a previously added socket + * + * Params: + * socket = A tcp or udp socket + */ + void remove(T socket) + { + if (socket.getNativePointer in m_watchedSockets) + { + sfSelector_Remove(m_ptr, socket.getNativePointer); + m_watchedSockets.remove(socket.getNativePointer); + m_numSocketsWatched--; + } + } + + /** + * Clear all sockets being watched + */ + void clear() + { + sfSelector_Clear(m_ptr); + foreach(key; m_watchedSockets.keys) + m_watchedSockets.remove(key); + m_numSocketsWatched = 0; + } + + /** + * Wait and collect sockets which are ready for reading. + * This functions will return either when at least one socket + * is ready, or when the given time is out + * + * Params: + * timeout = Maximum time to wait, in seconds (0 to disable timeout) + * + * Returns: + * Number of sockets ready + */ + uint wait(float timeout = 0.f) + { + return sfSelector_Wait(m_ptr, timeout); + } + + /** + * After a call to Wait(), get the Index-th socket which is + * ready for reading. The total number of sockets ready + * is the integer returned by the previous call to Wait() + * + * Params: + * index = Index of the socket to get + * + * Returns: + * The Index-th socket + */ + T GetSocketsReady(uint index) + { + return m_watchedSockets[sfSelector_GetSocketReady(m_ptr, index)]; + } + + +private: + size_t m_numSocketsWatched; + T[void*] m_watchedSockets; + +// External ==================================================================== + extern (C) + { + typedef void* function() pf_sfSelector_Create; + typedef void function(void*) pf_sfSelector_Destroy; + typedef void function(void*, void*) pf_sfSelector_Add; + typedef void function(void*, void*) pf_sfSelector_Remove; + typedef void function(void*) pf_sfSelector_Clear; + typedef uint function(void*, float) pf_sfSelector_Wait; + typedef void* function(void*, uint) pf_sfSelector_GetSocketReady; + + static pf_sfSelector_Create sfSelector_Create; + static pf_sfSelector_Destroy sfSelector_Destroy; + static pf_sfSelector_Add sfSelector_Add; + static pf_sfSelector_Remove sfSelector_Remove; + static pf_sfSelector_Clear sfSelector_Clear; + static pf_sfSelector_Wait sfSelector_Wait; + static pf_sfSelector_GetSocketReady sfSelector_GetSocketReady; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + static if (is (T : SocketTCP)) + { + char[] symbol = "sfSelectorTCP"; + } + else static if (is (T : SocketUDP)) + { + char[] symbol = "sfSelectorUDP"; + } + + sfSelector_Add = cast(pf_sfSelector_Add)dll.getSymbol(symbol ~ "_Add"); + sfSelector_Clear = cast(pf_sfSelector_Clear)dll.getSymbol(symbol ~ "_Clear"); + sfSelector_Create = cast(pf_sfSelector_Create)dll.getSymbol(symbol ~ "_Create"); + sfSelector_Destroy = cast(pf_sfSelector_Destroy)dll.getSymbol(symbol ~ "_Destroy"); + sfSelector_GetSocketReady = cast(pf_sfSelector_GetSocketReady)dll.getSymbol(symbol ~ "_GetSocketReady"); + sfSelector_Wait = cast(pf_sfSelector_Wait)dll.getSymbol(symbol ~ "_Wait"); + sfSelector_Remove = cast(pf_sfSelector_Remove)dll.getSymbol(symbol ~ "_Remove"); + } +} + +/** +* alias of selector for TCP or UDP Socket. +*/ +alias Selector!(SocketTCP) SelectorTCP; +/// ditto +alias Selector!(SocketUDP) SelectorUDP; + diff --git a/DSFML/import/dsfml/network/socketstatus.d b/DSFML/import/dsfml/network/socketstatus.d new file mode 100644 index 00000000..1af48b8b --- /dev/null +++ b/DSFML/import/dsfml/network/socketstatus.d @@ -0,0 +1,37 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.socketstatus; + +/** +* Enumeration of status returned by socket functions +*/ +enum SocketStatus +{ + DONE, /// + NOTREADY, /// + DISCONNECTED, /// + UNEXPECTEDERROR /// +} diff --git a/DSFML/import/dsfml/network/sockettcp.d b/DSFML/import/dsfml/network/sockettcp.d new file mode 100644 index 00000000..a7bd694a --- /dev/null +++ b/DSFML/import/dsfml/network/sockettcp.d @@ -0,0 +1,268 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.sockettcp; + +import dsfml.network.ipaddress; +import dsfml.network.packet; +import dsfml.network.socketstatus; + +import dsfml.system.common; + +/** +* SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower) +*/ +class SocketTCP : DSFMLObject +{ + /** + * Default constructor + */ + this() + { + super(sfSocketTCP_Create()); + m_intermediatePacket = new Packet(); + } + + override void dispose() + { + sfSocketTCP_Destroy(m_ptr); + } + + /** + * Connect to another computer on a specified port + * + * Params: + * port = Port to use for transfers (warning : ports < 1024 are reserved) + * hostAddress = IP Address of the host to connect to + * timeout = Maximum time to wait in seconds (0 by default : no timeout) + * + * Returns: + * True if operation has been successful + */ + bool connect(ushort port, IPAddress hostAddress, float timeout = 0.f) + { + return cast(bool) !sfSocketTCP_Connect(m_ptr, port, hostAddress, timeout); + } + + /** + * Listen to a specified port for incoming data or connections + * + * Params: + * port = Port to listen to + * + * Returns: + * True if operation has been successful + */ + bool listen(ushort port) + { + return cast(bool)sfSocketTCP_Listen(m_ptr, port); + } + + /** + * Wait for a connection (must be listening to a port). + * This function is blocking. + * + * Params: + * connected = Socket containing the connection with the connected client + * + * Returns: + * Status code + */ + SocketStatus accept(SocketTCP connected) + { + void* temp = null; + SocketStatus ret = sfSocketTCP_Accept(m_ptr, &temp, null); + connected.m_ptr = temp; + return ret; + } + + /** + * Wait for a connection (must be listening to a port). + * This function is blocking. + * + * Params: + * connected = Socket containing the connection with the connected client + * address = Pointer to an address to fill with client infos + * + * Returns: + * Status code + */ + SocketStatus accept(SocketTCP connected, out IPAddress address) + { + void* temp = null; + SocketStatus ret = sfSocketTCP_Accept(m_ptr, &temp, &address); + connected.m_ptr = temp; + return ret; + } + + /** + * Send an array of bytes to the host (must be connected first) + * + * Params: + * data = array of bytes to send + * + * Returns: + * Status code + */ + SocketStatus send(byte[] data) + { + if (data && data.length > 0) + return cast(SocketStatus)sfSocketTCP_Send(m_ptr, data.ptr, data.length); + } + + /** + * Receive an array of bytes from the host (must be connected first). + * This function will block until a connection was accepted + * + * Params: + * data = array to fill (make sure it is big enough) + * sizeReceived = Number of bytes received + * + * Returns: + * Status code + * + * Remarks: + * Assert if data is null or length == 0 + * + */ + SocketStatus receive(byte[] data, out size_t sizeReceived) + { + if (data && data.length > 0) + return cast(SocketStatus)sfSocketTCP_Receive(m_ptr, data.ptr, data.length, &sizeReceived); + } + + + /** + * Send a packet of data to the host (must be connected first) + * + * Params: + * packetToSend = Packet to send + * + * Returns: + * Status code + * + */ + SocketStatus send(Packet packetToSend) + { + byte[] dataArray = packetToSend.onSend(); + m_intermediatePacket.append(dataArray); + SocketStatus stat = cast(SocketStatus)sfSocketTCP_SendPacket(m_ptr, m_intermediatePacket.getNativePointer); + m_intermediatePacket.clear(); + return stat; + } + + /** + * Receive a packet from the host (must be connected first). + * This function will block if the socket is blocking + * + * Params: + * packetToReceive = Packet to fill with received data + * + * Returns: + * Status code + * + */ + SocketStatus receive(Packet packetToReceive) + { + SocketStatus stat = cast(SocketStatus)sfSocketTCP_ReceivePacket(m_ptr, m_intermediatePacket.getNativePointer); + packetToReceive.onReceive(m_intermediatePacket.getData); + m_intermediatePacket.clear(); + return stat; + } + + /** + * Check if the socket is in a valid state ; this function + * can be called any time to check if the socket is OK + * + * Returns: + * True if the socket is valid + * + */ + bool isValid() + { + return cast(bool)sfSocketTCP_IsValid(m_ptr); + } + + /// + bool opEquals(SocketTCP other) + { + return (other.getNativePointer == this.getNativePointer); + } + + +package: + + this (void* ptr) + { + super(ptr); + m_intermediatePacket = new Packet(); + } + + +private: + Packet m_intermediatePacket; + +// External ==================================================================== + extern (C) + { + typedef void* function() pf_sfSocketTCP_Create; + typedef void function(void*) pf_sfSocketTCP_Destroy; + typedef int function(void*, ushort, IPAddress, float) pf_sfSocketTCP_Connect; + typedef int function(void*, ushort) pf_sfSocketTCP_Listen; + typedef SocketStatus function(void*, void**, IPAddress*) pf_sfSocketTCP_Accept; + typedef SocketStatus function(void*, byte*, size_t) pf_sfSocketTCP_Send; + typedef SocketStatus function(void*, byte*, size_t, size_t*) pf_sfSocketTCP_Receive; + typedef SocketStatus function(void*, void*) pf_sfSocketTCP_SendPacket; + typedef SocketStatus function(void*, void*) pf_sfSocketTCP_ReceivePacket; + typedef int function(void*) pf_sfSocketTCP_IsValid; + + static pf_sfSocketTCP_Create sfSocketTCP_Create; + static pf_sfSocketTCP_Destroy sfSocketTCP_Destroy; + static pf_sfSocketTCP_Connect sfSocketTCP_Connect; + static pf_sfSocketTCP_Listen sfSocketTCP_Listen; + static pf_sfSocketTCP_Accept sfSocketTCP_Accept; + static pf_sfSocketTCP_Send sfSocketTCP_Send; + static pf_sfSocketTCP_Receive sfSocketTCP_Receive; + static pf_sfSocketTCP_SendPacket sfSocketTCP_SendPacket; + static pf_sfSocketTCP_ReceivePacket sfSocketTCP_ReceivePacket; + static pf_sfSocketTCP_IsValid sfSocketTCP_IsValid; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfSocketTCP_Accept = cast(pf_sfSocketTCP_Accept)dll.getSymbol("sfSocketTCP_Accept"); + sfSocketTCP_Connect = cast(pf_sfSocketTCP_Connect)dll.getSymbol("sfSocketTCP_Connect"); + sfSocketTCP_Create = cast(pf_sfSocketTCP_Create)dll.getSymbol("sfSocketTCP_Create"); + sfSocketTCP_Destroy = cast(pf_sfSocketTCP_Destroy)dll.getSymbol("sfSocketTCP_Destroy"); + sfSocketTCP_IsValid = cast(pf_sfSocketTCP_IsValid)dll.getSymbol("sfSocketTCP_IsValid"); + sfSocketTCP_Listen = cast(pf_sfSocketTCP_Listen)dll.getSymbol("sfSocketTCP_Listen"); + sfSocketTCP_Receive = cast(pf_sfSocketTCP_Receive)dll.getSymbol("sfSocketTCP_Receive"); + sfSocketTCP_ReceivePacket = cast(pf_sfSocketTCP_ReceivePacket)dll.getSymbol("sfSocketTCP_ReceivePacket"); + sfSocketTCP_Send = cast(pf_sfSocketTCP_Send)dll.getSymbol("sfSocketTCP_Send"); + sfSocketTCP_SendPacket = cast(pf_sfSocketTCP_SendPacket)dll.getSymbol("sfSocketTCP_SendPacket"); + } +} diff --git a/DSFML/import/dsfml/network/socketudp.d b/DSFML/import/dsfml/network/socketudp.d new file mode 100644 index 00000000..d24bce08 --- /dev/null +++ b/DSFML/import/dsfml/network/socketudp.d @@ -0,0 +1,243 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.network.socketudp; + +import dsfml.network.ipaddress; +import dsfml.network.packet; +import dsfml.network.socketstatus; + +import dsfml.system.common; + +/** +* SocketUDP wraps a socket using UDP protocol to +* send data fastly (but with less safety) +*/ +class SocketUDP : DSFMLObject +{ + /** + * Default constructor + */ + this() + { + super(sfSocketUDP_Create()); + m_intermediatePacket = new Packet(); + } + + override void dispose() + { + sfSocketUDP_Destroy(m_ptr); + } + + /** + * Bind the socket to a specific port + * + * Params: + * port = Port to bind the socket to + * + * Returns: + * True if operation has been successful + * + */ + bool bind(ushort port) + { + m_port = port; + return cast(bool)sfSocketUDP_Bind(m_ptr, port); + } + + /** + * Unbind the socket from its previous port, if any + * + * Returns: True if operation has been successful + * + */ + bool unbind() + { + m_port = 0; + return cast(bool)sfSocketUDP_Unbind(m_ptr, m_port); + } + + /** + * Send an array of bytes + * + * Params: + * data = bytes array to send + * address = Address of the computer to send the packet to + * port = Port to send the data to + * + * Returns: + * Status code + * + */ + SocketStatus send(byte[] data, IPAddress address, ushort port) + { + return cast(SocketStatus) sfSocketUDP_Send(m_ptr, data.ptr, data.length, address, port); + } + + /** + * Receive an array of bytes. + * This function is blocking. + * + * Params: + * data = Pointer to a byte array to fill (make sure it is big enough) + * sizeReceived = Number of bytes received + * address = Address of the computer which sent the data + * + * Returns: + * Status code + * + * Remarks: + * Assert if data is null or length == 0 + * + */ + SocketStatus receive(byte[] data, out size_t sizeReceived, out IPAddress address) + { + SocketStatus ret = sfSocketUDP_Receive(m_ptr, data.ptr, data.length, &sizeReceived, &address); + return ret; + } + + /** + * Send a packet of data + * + * Params: + * packetToSend = Packet to send + * address = Address of the computer to send the packet to + * port = Port to send the data to + * + * Returns: + * Status code + * + */ + SocketStatus send(Packet packetToSend, IPAddress address, ushort port) + { + byte[] dataArray = packetToSend.onSend(); + m_intermediatePacket.append(dataArray); + SocketStatus stat = cast(SocketStatus)sfSocketUDP_SendPacket(m_ptr, m_intermediatePacket.getNativePointer, address, port); + m_intermediatePacket.clear(); + return stat; + } + + /** + * Receive a packet. + * This function is blocking. + * + * Params: + * packetToReceive = Packet to fill with received data + * address = Address of the computer which sent the packet + * + * Returns: + * Status code + * + */ + SocketStatus receive(Packet packetToReceive, out IPAddress address) + { + SocketStatus ret = sfSocketUDP_ReceivePacket(m_ptr, m_intermediatePacket.getNativePointer, &address); + packetToReceive.onReceive(m_intermediatePacket.getData); + m_intermediatePacket.clear(); + return ret; + + } + + /** + * Check if the socket is in a valid state ; this function + * can be called any time to check if the socket is OK + * + * Returns: + * True if the socket is valid + * + */ + bool isValid() + { + return cast(bool)sfSocketUDP_IsValid(m_ptr); + } + + /** + * Get the port the socket is currently bound to + * + * Returns: + * Current port (0 means the socket is not bound) + */ + ushort getPort() + { + return m_port; + } + + /// + bool opEquals(SocketUDP other) + { + return (other.getNativePointer == this.getNativePointer); + } + +package: + this (void* ptr) + { + super(ptr); + m_intermediatePacket = new Packet(); + } + +private: + Packet m_intermediatePacket; + ushort m_port; + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfSocketUDP_Create; + typedef void function(void*) pf_sfSocketUDP_Destroy; + typedef int function(void*, ushort) pf_sfSocketUDP_Bind; + typedef int function(void*, ushort) pf_sfSocketUDP_Unbind; + typedef SocketStatus function(void*, byte*, size_t, IPAddress, ushort) pf_sfSocketUDP_Send; + typedef SocketStatus function(void*, byte*, size_t, size_t*, IPAddress*) pf_sfSocketUDP_Receive; + typedef SocketStatus function(void*, void*, IPAddress, ushort) pf_sfSocketUDP_SendPacket; + typedef SocketStatus function(void*, void*, IPAddress*) pf_sfSocketUDP_ReceivePacket; + typedef int function(void*) pf_sfSocketUDP_IsValid; + + static pf_sfSocketUDP_Create sfSocketUDP_Create; + static pf_sfSocketUDP_Destroy sfSocketUDP_Destroy; + static pf_sfSocketUDP_Bind sfSocketUDP_Bind; + static pf_sfSocketUDP_Unbind sfSocketUDP_Unbind; + static pf_sfSocketUDP_Send sfSocketUDP_Send; + static pf_sfSocketUDP_Receive sfSocketUDP_Receive; + static pf_sfSocketUDP_SendPacket sfSocketUDP_SendPacket; + static pf_sfSocketUDP_ReceivePacket sfSocketUDP_ReceivePacket; + static pf_sfSocketUDP_IsValid sfSocketUDP_IsValid; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-network"); + + sfSocketUDP_Bind = cast(pf_sfSocketUDP_Bind)dll.getSymbol("sfSocketUDP_Bind"); + sfSocketUDP_Create = cast(pf_sfSocketUDP_Create)dll.getSymbol("sfSocketUDP_Create"); + sfSocketUDP_Destroy = cast(pf_sfSocketUDP_Destroy)dll.getSymbol("sfSocketUDP_Destroy"); + sfSocketUDP_IsValid = cast(pf_sfSocketUDP_IsValid)dll.getSymbol("sfSocketUDP_IsValid"); + sfSocketUDP_Receive = cast(pf_sfSocketUDP_Receive)dll.getSymbol("sfSocketUDP_Receive"); + sfSocketUDP_ReceivePacket = cast(pf_sfSocketUDP_ReceivePacket)dll.getSymbol("sfSocketUDP_ReceivePacket"); + sfSocketUDP_Send = cast(pf_sfSocketUDP_Send)dll.getSymbol("sfSocketUDP_Send"); + sfSocketUDP_SendPacket = cast(pf_sfSocketUDP_SendPacket)dll.getSymbol("sfSocketUDP_SendPacket"); + sfSocketUDP_Unbind = cast(pf_sfSocketUDP_Unbind)dll.getSymbol("sfSocketUDP_Unbind"); + } +} diff --git a/DSFML/import/dsfml/system/all.d b/DSFML/import/dsfml/system/all.d new file mode 100644 index 00000000..8b43f2fc --- /dev/null +++ b/DSFML/import/dsfml/system/all.d @@ -0,0 +1,45 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.all; + +version (linux) +{ + version (build) + { + pragma(link, "dl"); //Link libdl.so (dlopen, dlsym) + } +} + + +public import + dsfml.system.clock, + dsfml.system.lock, + dsfml.system.mutex, + dsfml.system.randomizer, + dsfml.system.sleep, + dsfml.system.thread, + dsfml.system.vector2, + dsfml.system.vector3; diff --git a/DSFML/import/dsfml/system/alloc.d b/DSFML/import/dsfml/system/alloc.d new file mode 100644 index 00000000..71a6f98d --- /dev/null +++ b/DSFML/import/dsfml/system/alloc.d @@ -0,0 +1,81 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.alloc; + +version (Tango) +{ + public import tango.core.Memory; +} +else +{ + import std.c.stdlib; + import std.gc; + + struct GC + { + static void* malloc(uint size) + { + return std.c.stdlib.malloc(size); + } + + static void free(void* ptr) + { + std.c.stdlib.free(ptr); + } + + static void addRange(void* ptr, uint size) + { + std.gc.addRange(ptr, ptr + size); + } + + static void removeRange(void* ptr) + { + std.gc.removeRange(ptr); + } + } +} + +/* +* Template for native non-GCed allocation for interaction between C and D threads. +*/ +template Alloc() +{ + new (uint size) + { + void* p = GC.malloc(size); + if (!p) + assert(0, "Memory allocation failed"); + + GC.addRange(p, size); + return p; + } + + delete(void* p) + { + GC.removeRange(p); + GC.free(p); + } +} diff --git a/DSFML/import/dsfml/system/clock.d b/DSFML/import/dsfml/system/clock.d new file mode 100644 index 00000000..0bcedcb5 --- /dev/null +++ b/DSFML/import/dsfml/system/clock.d @@ -0,0 +1,97 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.clock; + +import dsfml.system.common; + +/** + * Utility class for manipulating time + */ +class Clock : DSFMLObject +{ + /** + * Default constructor + */ + this() + { + super(sfClock_Create()); + } + + /** + * Destructor + */ + override void dispose() + { + sfClock_Destroy(m_ptr); + } + + /** + * Return the time elapsed since the last reset + * Returns: + * Elapsed Time in seconds + */ + float getElapsedTime() + { + return sfClock_GetTime(m_ptr); + } + + /** + * Restart the timer + */ + void reset() + { + sfClock_Reset(m_ptr); + } + +private: + +// External ==================================================================== + + + extern (C) + { + typedef void* function() pf_sfClock_Create; + typedef void function(void*) pf_sfClock_Destroy; + typedef float function(void*) pf_sfClock_GetTime; + typedef void function(void*) pf_sfClock_Reset; + + static pf_sfClock_Create sfClock_Create; + static pf_sfClock_Destroy sfClock_Destroy; + static pf_sfClock_GetTime sfClock_GetTime; + static pf_sfClock_Reset sfClock_Reset; + + static this() + { + DllLoader dll = DllLoader.load("csfml-system"); + + sfClock_Create = cast(pf_sfClock_Create)dll.getSymbol("sfClock_Create"); + sfClock_Destroy = cast(pf_sfClock_Destroy)dll.getSymbol("sfClock_Destroy"); + sfClock_GetTime = cast(pf_sfClock_GetTime)dll.getSymbol("sfClock_GetTime"); + sfClock_Reset = cast(pf_sfClock_Reset)dll.getSymbol("sfClock_Reset"); + } + } +} + diff --git a/DSFML/import/dsfml/system/common.d b/DSFML/import/dsfml/system/common.d new file mode 100644 index 00000000..830c1bf7 --- /dev/null +++ b/DSFML/import/dsfml/system/common.d @@ -0,0 +1,70 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.common; + +public import dsfml.system.dllloader; + +/** +* Base class for all DSFML classes. +*/ +class DSFMLObject +{ + this(void* ptr, bool preventDelete = false) + { + m_ptr = ptr; + } + + ~this() + { + if (!m_preventDelete) + dispose(); + + m_ptr = m_ptr.init; + } + + abstract void dispose(); + + void* getNativePointer() + { + return m_ptr; + } + + void setHandled(bool handled) + { + m_preventDelete = handled; + } + + protected invariant() + { + assert(m_ptr !is null, "Problem occurs with a null pointer in " ~ this.toString); + } + +protected: + void* m_ptr; + +private: + bool m_preventDelete; +} diff --git a/DSFML/import/dsfml/system/dllloader.d b/DSFML/import/dsfml/system/dllloader.d new file mode 100644 index 00000000..887da6f7 --- /dev/null +++ b/DSFML/import/dsfml/system/dllloader.d @@ -0,0 +1,189 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.dllloader; + +import dsfml.system.stringutil; + +version (Tango) +{ + import tango.io.Console; + import tango.sys.SharedLib; +} +else +{ + import std.stdio; + + version (Windows) + { + import std.c.windows.windows; + alias HMODULE MODULEHANDLE; + } + version (linux) + { + import std.c.linux.linux; + alias void* MODULEHANDLE; + + const int RTLD_NOW = 0x00002; + const int RTLD_GLOBAL = 0x00100; + } +} + +static this() +{ + version (Tango) + { + SharedLib.throwExceptions = false; + } +} + +private void report(char[] msg, char[] lib, char[] symb) +{ + char[] str = "Loading error. Reason : " ~ msg ~ " (library : " ~ lib ~ ", symbol : " ~ symb ~ ")"; + version (Tango) + { + Cerr(str).newline; + } + else + { + fwritefln(stderr, str); + } +} + + +/** +* Simple Dll loader. +*/ +class DllLoader +{ + static DllLoader load(char[] library) + { + version (Windows) + { + char[] libraryName = library ~ ".dll"; + } + version (linux) + { + char[] libraryName = "lib" ~ library ~ ".so"; + } + + if (libraryName in alreadyLoaded) + { + return alreadyLoaded[libraryName]; + } + else + { + DllLoader temp = new DllLoader(libraryName); + alreadyLoaded[libraryName] = temp; + return temp; + } + } + + ~this() + { + close(); + } + + void* getSymbol(char[] symbolName) + { + void* symb; + version (Tango) + { + symb = m_lib.getSymbol(toStringz(symbolName)); + } + else + { + version (Windows) + { + symb = GetProcAddress(m_lib, toStringz(symbolName)); + } + version (linux) + { + symb = dlsym(m_lib, toStringz(symbolName)); + } + } + + if (symb is null) + report( "Symbol cannot be found in specified library", m_libPath, symbolName); + + return symb; + } + + void close() + { + version (Tango) + { + m_lib.unload(); + } + else + { + version (Windows) + { + FreeLibrary(m_lib); + } + version (linux) + { + dlclose(m_lib); + } + alreadyLoaded.remove(this.m_libPath); + } + } + +private: + this(char[] libraryPath) + { + m_libPath = libraryPath; + + version (Tango) + { + m_lib = SharedLib.load(libraryPath); + } + else + { + version (Windows) + { + m_lib = LoadLibraryA(toStringz(libraryPath)); + } + version (linux) + { + m_lib = dlopen(toStringz(libraryPath), RTLD_NOW | RTLD_GLOBAL); + } + } + if (m_lib is null) + report("Cannot open library", m_libPath, null); + } + + version (Tango) + { + SharedLib m_lib; + } + else + { + MODULEHANDLE m_lib; + } + + static DllLoader[char[]] alreadyLoaded; + char[] m_libPath; +} diff --git a/DSFML/import/dsfml/system/exception.d b/DSFML/import/dsfml/system/exception.d new file mode 100644 index 00000000..c9823a30 --- /dev/null +++ b/DSFML/import/dsfml/system/exception.d @@ -0,0 +1,42 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.exception; + +class LoadingException : Exception +{ + this(char[] msg) + { + super(msg); + } +} + +class NullParameterException : Exception +{ + this(char[] msg) + { + super(msg); + } +} diff --git a/DSFML/import/dsfml/system/linkedlist.d b/DSFML/import/dsfml/system/linkedlist.d new file mode 100644 index 00000000..5ef6b829 --- /dev/null +++ b/DSFML/import/dsfml/system/linkedlist.d @@ -0,0 +1,102 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.linkedlist; + +/* +* Trivial implementation of Queue linked list (for internal use) +*/ +class LinkedList(T) +{ + Node!(T) head; + Node!(T) tail; + private size_t m_count; + + void enqueue(T object) + { + if (empty) + head = tail = new Node!(T)(object); + else + { + tail.Next = new Node!(T)(object); + tail = tail.Next; + } + m_count++; + } + + T dequeue() + { + T o; + if (empty) + o = T.init; + else + { + o = head.Data; + head = head.Next; + m_count--; + } + return o; + } + + bool empty() + { + return (head is null); + } + + size_t getCount() + { + return m_count; + } + + void clear() + { + T data; + while ((data = dequeue()) !is T.init) {} + } + + int opApply(int delegate(ref T) dg) + { + T data; + int result; + while ((data = dequeue) !is T.init) + { + if ((result = dg(data)) != 0) + break; + } + return result; + } +} + +private class Node(T) +{ + Node Next; + T Data; + + this(T data) + { + Data = data; + } +} + diff --git a/DSFML/import/dsfml/system/lock.d b/DSFML/import/dsfml/system/lock.d new file mode 100644 index 00000000..171c96b4 --- /dev/null +++ b/DSFML/import/dsfml/system/lock.d @@ -0,0 +1,65 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.lock; + +import dsfml.system.mutex; + +/** +* Encapsulation of an critical section. Unlocking is guaranteed when the Lock goes out of scope, even on exception. +* +* Remarks: +* Lock is a scope class, you need to mark Lock object as scope : +* +* ----------------- +* Mutex m = new Mutex; +* //.. +* { +* scope Lock l = new Lock(m); +* // Critical section +* } // End of critical (Destructor called and mutex unlocked) +* //.. +* +* ----------------- +*/ +scope class Lock +{ + /** + * Construct the lock and lock the mutex + */ + this(Mutex m) + { + m_mutex = m; + m_mutex.lock(); + } + + ~this() + { + m_mutex.unlock(); + } + +private: + Mutex m_mutex; +} diff --git a/DSFML/import/dsfml/system/mutex.d b/DSFML/import/dsfml/system/mutex.d new file mode 100644 index 00000000..8fa1802c --- /dev/null +++ b/DSFML/import/dsfml/system/mutex.d @@ -0,0 +1,94 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.mutex; + +import dsfml.system.common; + +/** +* Provide portable implementation of Mutual Exclusion object. +* +* Uses CriticalSection on Windows and pthread mutexes on linux. +*/ +final class Mutex : DSFMLObject +{ + /** + * Constructor + */ + this() + { + super(sfMutex_Create()); + } + + override void dispose() + { + sfMutex_Destroy(m_ptr); + } + + /** + * Lock the mutex + * + * Can be called multiples times, but each lock must be unlocked with unlock() + */ + void lock() + { + sfMutex_Lock(m_ptr); + } + + /** + * Unlock the mutex + */ + void unlock() + { + sfMutex_Unlock(m_ptr); + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef void* function() pf_sfMutex_Create; + typedef void function(void*) pf_sfMutex_Destroy; + typedef void function(void*) pf_sfMutex_Lock; + typedef void function(void*) pf_sfMutex_Unlock; + + static pf_sfMutex_Create sfMutex_Create; + static pf_sfMutex_Destroy sfMutex_Destroy; + static pf_sfMutex_Lock sfMutex_Lock; + static pf_sfMutex_Unlock sfMutex_Unlock; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-system"); + + sfMutex_Create = cast(pf_sfMutex_Create)dll.getSymbol("sfMutex_Create"); + sfMutex_Destroy = cast(pf_sfMutex_Destroy)dll.getSymbol("sfMutex_Destroy"); + sfMutex_Lock = cast(pf_sfMutex_Lock)dll.getSymbol("sfMutex_Lock"); + sfMutex_Unlock = cast(pf_sfMutex_Unlock)dll.getSymbol("sfMutex_Unlock"); + } +} diff --git a/DSFML/import/dsfml/system/randomizer.d b/DSFML/import/dsfml/system/randomizer.d new file mode 100644 index 00000000..e9238a7b --- /dev/null +++ b/DSFML/import/dsfml/system/randomizer.d @@ -0,0 +1,130 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.randomizer; + +import dsfml.system.common; + +/** +* Randomizer is an utility class for generating pseudo-random +* numbers +* +* Examples: +* ----------------------------------------------------------- +* int randI = Randomizer.Random(1, 100); +* float randF = Randomizer.Random(1.0, 10.0) +* ----------------------------------------------------------- +*/ +class Randomizer +{ + /** + * Set the seed for the generator. Using a known seed + * allows you to reproduce the same sequence of random number + * + * Params: + * seed = Number to use as the seed + * + */ + static void setSeed(uint seed) + { + sfRandom_SetSeed(seed); + } + + /** + * Get the seed used to generate random numbers the generator. + * + * Returns: + * Current seed + */ + static uint getSeed() + { + return sfRandom_GetSeed(); + } + + /** + * Get a random float number in a given range + * + * Params: + * begin = Start of the range + * end = End of the range + * Returns: + * Random number in [Begin, End] + */ + static float random(float begin, float end) + { + return sfRandom_Float(begin, end); + } + + /** + * Get a random integral number in a given range + * + * Params: + * begin = Start of the range + * end = End of the range + * Returns: + * Random number in [Begin, End] + */ + static int random(int begin, int end) + { + return sfRandom_Int(begin, end); + } + + +private: + + /* + * Prevent instanciation + */ + this() + { + + } + +// External ==================================================================== + + extern (C) + { + typedef void function(uint) pf_sfRandom_SetSeed; + typedef uint function() pf_sfRandom_GetSeed; + typedef float function(float, float) pf_sfRandom_Float; + typedef int function(int, int) pf_sfRandom_Int; + + static pf_sfRandom_SetSeed sfRandom_SetSeed; + static pf_sfRandom_GetSeed sfRandom_GetSeed; + static pf_sfRandom_Float sfRandom_Float; + static pf_sfRandom_Int sfRandom_Int; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-system"); + + sfRandom_SetSeed = cast(pf_sfRandom_SetSeed)dll.getSymbol("sfRandom_SetSeed"); + sfRandom_GetSeed = cast(pf_sfRandom_GetSeed)dll.getSymbol("sfRandom_GetSeed"); + sfRandom_Float = cast(pf_sfRandom_Float)dll.getSymbol("sfRandom_Float"); + sfRandom_Int = cast(pf_sfRandom_Int)dll.getSymbol("sfRandom_Int"); + } +} + diff --git a/DSFML/import/dsfml/system/sleep.d b/DSFML/import/dsfml/system/sleep.d new file mode 100644 index 00000000..5733d11e --- /dev/null +++ b/DSFML/import/dsfml/system/sleep.d @@ -0,0 +1,53 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.sleep; + +import dsfml.system.common; + +extern(C) +{ + typedef void function(float) pf_sfSleep; + + private static pf_sfSleep sfSleep; +} + +static this() +{ + DllLoader dll = DllLoader.load("csfml-system"); + + sfSleep = cast(pf_sfSleep)dll.getSymbol("sfSleep"); +} + +/** +* Make the current thread sleep for a given time +* +* Params: +* duration = Time to sleep, in seconds +*/ +void sleep(float duration) +{ + sfSleep(duration); +} diff --git a/DSFML/import/dsfml/system/stringutil.d b/DSFML/import/dsfml/system/stringutil.d new file mode 100644 index 00000000..91cbb0c3 --- /dev/null +++ b/DSFML/import/dsfml/system/stringutil.d @@ -0,0 +1,169 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.stringutil; + +// version (Tango) +// { +// public import tango.stdc.stringz; +// } +// else +// { + T* toStringz(T)(T[] str) + { + if (str is null) + return null; + else if (str.length && str[$ - 1] is T.init) + return str.ptr; + + T[] ret = new T[str.length + 1]; + + ret[0 .. str.length] = str[0 .. $]; + ret[str.length] = 0; + + return ret.ptr; + } + + size_t stringLength(T)(T* p) + { + if (p is null || *p == T.init) + return 0; + + size_t length; + + while (*(p + length)) + { + length++; + } + + return length; + } + + T[] fromStringz(T)(T* ptr) + { + T[] ret = new T[stringLength(ptr)]; + ret[0..$] = ptr[0..ret.length]; + + return ret; + } + + + +// /* +// * Tango equivalent functions +// * +// * Author : Keinfarbton +// * Licence : BSD style +// */ +// char* toStringz(char[] s) +// { +// if (s.ptr) +// if (!(s.length && s[$-1] is 0)) +// s = s ~ '\0'; +// return s.ptr; +// } +// +// char[] fromStringz (char* s) +// { +// size_t i; +// +// if (s) +// while (*(s+i)) +// ++i; +// +// return s ? s[0 .. i] : null; +// } +// +// wchar* toString16z(wchar[] s) +// { +// if (s.ptr) +// if (!(s.length && s[$-1] is 0)) +// s = s ~ '\0'; +// return s.ptr; +// } +// +// wchar[] fromString16z (wchar* s) +// { +// size_t i; +// +// if (s) +// while (*(s+i)) +// ++i; +// +// return s ? s[0 .. i] : null; +// } +// +// dchar* toString32z (dchar[] s) +// { +// if (s.ptr) +// if (!(s.length && s[$-1] is 0)) +// s = s ~ "\0"d; +// return s.ptr; +// } +// +// +// dchar[] fromString32z (dchar* s) +// { +// size_t i; +// +// if (s) +// while (*(s+i)) +// ++i; +// +// return s ? s[0 .. i] : null; +// } +// } +version (UnitTest) +{ + void main() + { + + } + unittest + { + char[] str = "Test"; + char[] espaceStr = "string with espace"; + + dchar[] strW = "Test"d; + dchar[] espaceStrW = "string with espace"d; + + char[] empty = ""; + dchar[] emptyW = ""d; + + char[] nullStr = null; + dchar[] nullStrW = null; + + assert(fromStringz(toStringz(str)) == str); + assert(fromStringz(toStringz(espaceStr)) == espaceStr); + assert(fromStringz(toStringz(strW)) == strW); + assert(fromStringz(toStringz(espaceStrW)) == espaceStrW); + + assert(fromStringz(toStringz(empty)) == empty); + assert(fromStringz(toStringz(emptyW)) == emptyW); + + assert(fromStringz(toStringz(nullStr)) == nullStr); + assert(fromStringz(toStringz(nullStrW)) == nullStrW); + } +} diff --git a/DSFML/import/dsfml/system/thread.d b/DSFML/import/dsfml/system/thread.d new file mode 100644 index 00000000..cde2d52e --- /dev/null +++ b/DSFML/import/dsfml/system/thread.d @@ -0,0 +1,216 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.thread; + +version(Tango) +{ + static import tango.core.Thread; + alias tango.core.Thread.Thread DThread; +} +else +{ + static import std.thread; + alias std.thread.Thread DThread; +} + +/** +* Thread defines a simple thread abstraction. +* +* Examples: +* Can be a base class (you need to override void run(void) method) : +* -------------------- +* class MyThread : Thread +* { +* void function() +* { +* this.launch(); +* } +* +* //Thread entry point +* protected void run() +* { +* } +* } +* -------------------- +* +* or +* +* -------------------- +* void main() +* { +* Thread t = new Thread(&threadStart); +* t.launch(); +* t.wait(); //Wait the end of t thread +* } +* +* //Thread entry point +* void threadStart (void* userData) +* { +* +* } +* -------------------- +* +* or +* +* -------------------- +* void main() +* { +* MyObject foo = new MyObject(); +* Thread t = new Thread(&foo.bar); +* t.launch(); +* t.wait(); //Wait the end of t thread +* } +* +* class MyObject +* { +* void bar(void* user) +* { +* //... +* } +* } +* -------------------- +*/ +class Thread +{ + /** + * Construct the thread from a function pointer. + * + * Params: + * func = Entry point of the thread + * userData = Data to pass to the thread function (NULL by default) + * + */ + this(void function(void*) func, void* userData = null) + { + m_t = new DThread(&threadStart); + + m_func = func; + m_userData = userData; + } + + /** + * Construct the thread from a delegate. + * + * Params: + * dg = Entry point of the thread + * userData = Data to pass to the thread function (NULL by default) + * + */ + this(void delegate(void*) dg, void* userData = null) + { + m_t = new DThread(&threadStart); + + m_dg = dg; + m_userData = userData; + + m_isDelegate = true; + } + + /** + * Run the thread + */ + final void launch() + { + if (!m_running) + { + m_t.start(); + m_running = true; + } + } + + /** + * Wait until the thread finishes + */ + final void wait() + { + if(m_running) + { + version (Tango) + { + m_t.join(); + } + else + { + m_t.wait(); + } + } + } + +protected: + /** + * Protected constructor + */ + this() + { + m_t = new DThread(&threadStart); + } + + /** + * Override this method in class derived from Thread. + */ + void run() + { + if (m_isDelegate) + this.m_dg(this.m_userData); + else + this.m_func(this.m_userData); + } + +private: + DThread m_t; + bool m_isDelegate; + bool m_running; + + union + { + void function(void*) m_func; + void delegate(void*) m_dg; + } + + void* m_userData; + + /* + * Thread entry point + */ + version (Tango) + { + final void threadStart() + { + run(); + m_running = false; + } + } + else + { + final int threadStart() + { + run(); + m_running = false; + return 0; + } + } +} + diff --git a/DSFML/import/dsfml/system/vector2.d b/DSFML/import/dsfml/system/vector2.d new file mode 100644 index 00000000..ae0d3323 --- /dev/null +++ b/DSFML/import/dsfml/system/vector2.d @@ -0,0 +1,160 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.vector2; + +/** +* Vector2 is an utility class for manipulating 2 dimensional +* vectors. Template parameter defines the type of coordinates +* (integer, float, ...) +*/ +struct Vector2(T) +{ + T x; + T y; + + static Vector2 opCall(T x, T y) + { + Vector2!(T) ret; + + ret.x = x; + ret.y = y; + + return ret; + } + + /// unary (-) overload + Vector2 opNeg() + { + return Vector2!(T)(-x, -y); + } + + /// (+=) overload + Vector2 opAddAssign(Vector2 other) + { + x += other.x; + y += other.y; + return *this; + } + + /// (-=) overload + Vector2 opSubAssign(Vector2 other) + { + x -= other.x; + y -= other.y; + return *this; + } + + /// (+) overload + Vector2 opAdd(Vector2 other) + { + return Vector2!(T)( (x + other.x), (y + other.y) ); + } + + /// (-) overload + Vector2 opSub(Vector2 other) + { + return Vector2!(T) ( (x - other.x), (y - other.y) ); + } + + /// (*) overload + Vector2 opMul(int i) + { + return Vector2!(T) ( (x * i), (y * i) ); + } + + /// (*=) overload + Vector2 opMulAssign(int i) + { + x *= i; + y *= i; + return *this; + } + + /// (/) overload + Vector2 opDiv(int i) + { + return Vector2!(T) ( (x / i), (y / i)); + } + + /// (/=) overload + Vector2 opDivAssign(int i) + { + x /= i; + y /= i; + return *this; + } + + /// + int opEquals(Vector2 other) + { + return (x == other.x) && (y == other.y); + } +} + +version (UnitTest) +{ + unittest + { + Vector2f main = Vector2f(10f, 10f); + Vector2f other = Vector2f(10f, 10f); + Vector2f result; + + result = -main; + assert (result == Vector2f(-10.f, -10.f) ); + + result = main; + result += other; + assert (result == Vector2f(20.f, 20.f)); + + result = main; + result -= other; + assert (result == Vector2f(0.f, 0.f)); + + result = main + other; + assert (result == Vector2f(20.f, 20.f)); + + result = main - other; + assert (result == Vector2f(0.f, 0.f)); + + result = main * 10; + assert (result == Vector2f(100.f, 100.f)); + + result *= 2; + assert (result == Vector2f(200.f, 200.f)); + + result = main / 2; + assert (result == Vector2f(5.f, 5.f)); + + result = main; + result /= 2; + assert (result == Vector2f(5.f, 5.f)); + } +} + +/// Aliases +alias Vector2!(float) Vector2f; +/// ditto +alias Vector2!(int) Vector2i; diff --git a/DSFML/import/dsfml/system/vector3.d b/DSFML/import/dsfml/system/vector3.d new file mode 100644 index 00000000..66c3fd80 --- /dev/null +++ b/DSFML/import/dsfml/system/vector3.d @@ -0,0 +1,166 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.system.vector3; + +/** +* Vector3 is an utility class for manipulating 3 dimensional +* vectors. Template parameter defines the type of coordinates +* (integer, float, ...) +*/ +struct Vector3(T) +{ + T x; + T y; + T z; + + static Vector3 opCall(T x, T y, T z) + { + Vector3!(T) ret; + + ret.x = x; + ret.y = y; + ret.z = z; + + return ret; + } + + /// unary (-) overload + Vector3 opNeg() + { + return Vector3!(T)(-x, -y, -z); + } + + /// (+=) overload + Vector3 opAddAssign(Vector3 other) + { + x += other.x; + y += other.y; + z += other.z; + return *this; + } + + /// (-=) overload + Vector3 opSubAssign(Vector3 other) + { + x -= other.x; + y -= other.y; + z -= other.z; + return *this; + } + + /// (+) overload + Vector3 opAdd(Vector3 other) + { + return Vector3!(T)( (x + other.x), (y + other.y), (z + other.z) ); + } + + /// (-) overload + Vector3 opSub(Vector3 other) + { + return Vector3!(T) ( (x - other.x), (y - other.y), (z - other.z) ); + } + + /// (*) overload + Vector3 opMul(int i) + { + return Vector3!(T) ( (x * i), (y * i), (z * i) ); + } + + /// (*=) overload + Vector3 opMulAssign(int i) + { + x *= i; + y *= i; + z *= i; + return *this; + } + + /// (/) overload + Vector3 opDiv(int i) + { + return Vector3!(T) ( (x / i), (y / i), (z / i) ); + } + + /// (/=) overload + Vector3 opDivAssign(int i) + { + x /= i; + y /= i; + z /= i; + return *this; + } + + /// + int opEquals(Vector3 other) + { + return (x == other.x) && (y == other.y) && (z == other.z) ; + } +} + +version (UnitTest) +{ + unittest + { + Vector3f main = Vector3f(10f, 10f, 10.f); + Vector3f other = Vector3f(10f, 10f, 10.f); + Vector3f result; + + result = -main; + assert (result == Vector3f(-10.f, -10.f, -10.f) ); + + result = main; + result += other; + assert (result == Vector3f(20.f, 20.f, 20.f)); + + result = main; + result -= other; + assert (result == Vector3f(0.f, 0.f, 0.f)); + + result = main + other; + assert (result == Vector3f(20.f, 20.f, 20.f)); + + result = main - other; + assert (result == Vector3f(0.f, 0.f, 0.f)); + + result = main * 10; + assert (result == Vector3f(100.f, 100.f, 100.f)); + + result *= 2; + assert (result == Vector3f(200.f, 200.f, 200.f)); + + result = main / 2; + assert (result == Vector3f(5.f, 5.f, 5.f)); + + result = main; + result /= 2; + assert (result == Vector3f(5.f, 5.f, 5.f)); + } +} + +/// Aliases +alias Vector3!(float) Vector3f; +/// ditto +alias Vector3!(int) Vector3i; diff --git a/DSFML/import/dsfml/window/all.d b/DSFML/import/dsfml/window/all.d new file mode 100644 index 00000000..95b1c733 --- /dev/null +++ b/DSFML/import/dsfml/window/all.d @@ -0,0 +1,35 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.all; + +public import + dsfml.window.event, + dsfml.window.input, + dsfml.window.videomode, + dsfml.window.window, + dsfml.window.windowhandle, + dsfml.window.windowsettings, + dsfml.window.windowstyle; diff --git a/DSFML/import/dsfml/window/event.d b/DSFML/import/dsfml/window/event.d new file mode 100644 index 00000000..d597cf97 --- /dev/null +++ b/DSFML/import/dsfml/window/event.d @@ -0,0 +1,329 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.event; + +/** +* Definition of key codes for keyboard events +* +* $(B Possibles values:)$(BR) +* Except letters and numbers, you can use :$(BR) +* * LCONTROL, LSHIFT, LALT, LSYSTEM, RCONTROL, RSHIFT, RALT, RSYSTEM.$(BR) +* * LBRACKET, RBRACKET, SEMICOLON, COMMA, PERIOD, QUOTE, SLASH, BACKSLASH, TILDE, EQUAL, DASH.$(BR) +* * SPACE, RETURN, BACK, TAB, PAGEUP, PAGEDOWN, END, HOME, INSERT, DELETE.$(BR) +* * ADD, SUBTRACT, MULTIPLY, DIVIDE, LEFT, RIGHT, UP, DOWN.$(BR) +* * NUMPAD0, NUMPAD1, NUMPAD2, NUMPAD3, NUMPAD4, NUMPAD5, NUMPAD6, NUMPAD7, NUMPAD8, NUMPAD9.$(BR) +* * F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15.$(BR) +*/ +enum KeyCode +{ + A = 'a', + B = 'b', + C = 'c', + D = 'd', + E = 'e', + F = 'f', + G = 'g', + H = 'h', + I = 'i', + J = 'j', + K = 'k', + L = 'l', + M = 'm', + N = 'n', + O = 'o', + P = 'p', + Q = 'q', + R = 'r', + S = 's', + T = 't', + U = 'u', + V = 'v', + W = 'w', + X = 'x', + Y = 'y', + Z = 'z', + NUM0 = '0', + NUM1 = '1', + NUM2 = '2', + NUM3 = '3', + NUM4 = '4', + NUM5 = '5', + NUM6 = '6', + NUM7 = '7', + NUM8 = '8', + NUM9 = '9', + ESCAPE = 256, + LCONTROL, + LSHIFT, + LALT, + LSYSTEM, + RCONTROL, + RSHIFT, + RALT, + RSYSTEM, + MENU, + LBRACKET, + RBRACKET, + SEMICOLON, + COMMA, + PERIOD, + QUOTE, + SLASH, + BACKSLASH, + TILDE, + EQUAL, + DASH, + SPACE, + RETURN, + BACK, + TAB, + PAGEUP, + PAGEDOWN, + END, + HOME, + INSERT, + DELETE, + ADD, + SUBTRACT, + MULTIPLY, + DIVIDE, + LEFT, + RIGHT, + UP, + DOWN, + NUMPAD0, + NUMPAD1, + NUMPAD2, + NUMPAD3, + NUMPAD4, + NUMPAD5, + NUMPAD6, + NUMPAD7, + NUMPAD8, + NUMPAD9, + F1, + F2, + F3, + F4, + F5, + F6, + F7, + F8, + F9, + F10, + F11, + F12, + F13, + F14, + F15, + PAUSE, +} + + +/** +* Definition of button codes for mouse events +*/ +enum MouseButtons +{ + LEFT, /// + RIGHT, /// + MIDDLE, /// + XBUTTON1, /// + XBUTTON2 /// +} + + + +/** +* Definition of joystick axis for joystick events +*/ +enum JoyAxis +{ + AXISX, /// + AXISY, /// + AXISZ, /// + AXISR, /// + AXISU, /// + AXISV, /// + AXISPOV /// +} + + + +/** +* Event defines a system event and its parameters +*/ +align(1) struct Event +{ + enum EventType + { + CLOSED, + RESIZED, + LOSTFOCUS, + GAINEDFOCUS, + TEXTENTERED, + KEYPRESSED, + KEYRELEASED, + MOUSEWHEELMOVED, + MOUSEBUTTONPRESSED, + MOUSEBUTTONRELEASED, + MOUSEMOVED, + MOUSEENTERED, + MOUSELEFT, + JOYBUTTONPRESSED, + JOYBUTTONRELEASED, + JOYMOVED + } + + /** + * Enumeration of the different types of events. Accessing a value of another event that the one received (e.g. Event.Size.Width when receiving an KEYPRESSED event) will result in undefined behavior. + * $(UL + * $(LI CLOSED) + * $(LI LOSTFOCUS) + * $(LI GAINEDFOCUS) + * $(LI RESIZED + * $(UL + * $(LI Event.Size.Width : new Width, in pixels.) + * $(LI Event.Size.Height : new height, in pixels.) + * ) + * ) + * $(LI TEXTENTERED + * $(UL + * $(LI Event.Text.Unicode : dchar entered.) + * ) + * ) + * $(LI KEYPRESSED, KEYRELEASED + * $(UL + * $(LI Event.Key.Code : Key code of the key.) + * $(LI Event.Key.Alt : Alt pressed ?) + * $(LI Event.Key.Control : Control pressed ?) + * $(LI Event.Key.Shift : Shift pressed ?) + * ) + * ) + * $(LI MOUSEWHEELMOVED + * $(UL + * $(LI Event.MouseWheel.Delta : Wheel move (positive if forward, negative else.) ) + * ) + * ) + * $(LI MOUSEBUTTONPRESSED, MOUSEBUTTONRELEASED + * $(UL + * $(LI Event.MouseButton.Button : Mouse button pressed.) + * $(LI Event.MouseButton.X : Cursor X position.) + * $(LI Event.MouseButton.Y : Cursor X position.) + * ) + * ) + * $(LI MOUSEMOVED + * $(UL + * $(LI Event.MouseMove.X : Cursor X position. Local coordinates.) + * $(LI Event.MouseMove.Y : Cursor Y position. Local coordinates.) + * ) + * ) + * $(LI MOUSEENTERED) + * $(LI MOUSELEFT) + * $(LI JOYBUTTONPRESSED, JOYBUTTONRELEASED + * $(UL + * $(LI Event.JoyButton.JoystickId : Id of the joystick.) + * $(LI Event.JoyButton.Button : Joystick button pressed.) + * ) + * ) + * $(LI JOYMOVED + * $(UL + * $(LI Event.JoyMove.JoystickId : Id of the joystick.) + * $(LI Event.JoyMove.Axis : Moved axis.) + * $(LI Event.JoyMove.Position : Actual position of the axis [-100, 100], except for POV [0, 360].) + * ) + * ) + * ) + */ + EventType Type; + + union + { + struct SText + { + dchar Unicode; + } + SText Text; + + struct SKey + { + KeyCode Code; + bool Alt; + byte[3] Filler1; + bool Control; + byte[3] Filler2; + bool Shift; + byte[3] Filler3; + } + SKey Key; + + struct SMouseMove + { + int X; + int Y; + } + SMouseMove MouseMove; + + struct SMouseButton + { + MouseButtons Button; + int X; + int Y; + } + SMouseButton MouseButton; + + struct SMouseWheel + { + int Delta; + } + SMouseWheel MouseWheel; + + struct SJoyMove + { + uint JoystickId; + JoyAxis Axis; + float Position; + } + SJoyMove JoyMove; + + struct SJoyButton + { + uint JoystickId; + uint Button; + } + SJoyButton JoyButton; + + struct SSize + { + uint Width; + uint Height; + } + SSize Size; + } +} + + + diff --git a/DSFML/import/dsfml/window/input.d b/DSFML/import/dsfml/window/input.d new file mode 100644 index 00000000..4f115140 --- /dev/null +++ b/DSFML/import/dsfml/window/input.d @@ -0,0 +1,162 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.input; + +import dsfml.system.common; + +import dsfml.window.event; + +/** +* Input handles real-time input from keyboard and mouse. +* Use it instead of events to handle continuous moves and more +* game-friendly inputs +*/ +class Input : DSFMLObject +{ + /** + * Get the state of a key + * + * Params: + * key = Key to check + * + * Returns: + * True if key is down, false if key is up + */ + bool isKeyDown(KeyCode key) + { + return cast(bool)sfInput_IsKeyDown(m_ptr, key); + } + + /** + * Get the state of a mouse button + * + * Params: + * button = Button to check + * + * Returns: + * True if button is down, false if button is up + */ + bool isMouseButtonDown(MouseButtons button) + { + return cast(bool)sfInput_IsMouseButtonDown(m_ptr, button); + } + + /** + * Get the state of a joystick button + * + * Params: + * joyId = Identifier of the joystick to check (0 or 1) + * button = Button to check + * + * Returns: + * True if button is down, false if button is up + */ + bool isJoystickButtonDown(uint joyId, uint button) + { + return cast(bool)sfInput_IsJoystickButtonDown(m_ptr, joyId, button); + } + + /* + * Get the mouse X position + * + * Returns: + * Current mouse left position, relative to owner window + */ + int getMouseX() + { + return sfInput_GetMouseX(m_ptr); + } + + /** + * Get the mouse Y position + * + * Returns: + * Current mouse top position, relative to owner window + * + */ + int getMouseY() + { + return sfInput_GetMouseY(m_ptr); + } + + /** + * Get a joystick axis position + * + * Params: + * joyId = Identifier of the joystick to check (0 or 1) + * axis = Axis to get + * + * Returns: + * Current axis position, in the range [-100, 100] (except for POV, which is [0, 360]) + */ + float getJoystickAxis(uint joyId, JoyAxis axis) + { + return sfInput_GetJoystickAxis(m_ptr, joyId, axis); + } + + this(void* input) + { + super(input, true); + } + + override void dispose() + { + // nothing to do + } + +private: + +// External ==================================================================== + + extern (C) + { + typedef int function(void*, KeyCode) pf_sfInput_IsKeyDown; + typedef int function(void*, MouseButtons) pf_sfInput_IsMouseButtonDown; + typedef int function(void*, uint, uint) pf_sfInput_IsJoystickButtonDown; + typedef uint function (void*) pf_sfInput_GetMouseX; + typedef uint function(void*) pf_sfInput_GetMouseY; + typedef float function(void*, uint, JoyAxis) pf_sfInput_GetJoystickAxis; + + static pf_sfInput_IsKeyDown sfInput_IsKeyDown; + static pf_sfInput_IsMouseButtonDown sfInput_IsMouseButtonDown; + static pf_sfInput_IsJoystickButtonDown sfInput_IsJoystickButtonDown; + static pf_sfInput_GetMouseX sfInput_GetMouseX; + static pf_sfInput_GetMouseY sfInput_GetMouseY; + static pf_sfInput_GetJoystickAxis sfInput_GetJoystickAxis; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-window"); + + sfInput_IsKeyDown = cast(pf_sfInput_IsKeyDown)dll.getSymbol("sfInput_IsKeyDown"); + sfInput_IsMouseButtonDown = cast(pf_sfInput_IsMouseButtonDown)dll.getSymbol("sfInput_IsMouseButtonDown"); + sfInput_IsJoystickButtonDown = cast(pf_sfInput_IsJoystickButtonDown)dll.getSymbol("sfInput_IsJoystickButtonDown"); + sfInput_GetMouseX = cast(pf_sfInput_GetMouseX)dll.getSymbol("sfInput_GetMouseX"); + sfInput_GetMouseY = cast(pf_sfInput_GetMouseY)dll.getSymbol("sfInput_GetMouseY"); + sfInput_GetJoystickAxis = cast(pf_sfInput_GetJoystickAxis)dll.getSymbol("sfInput_GetJoystickAxis"); + } +} diff --git a/DSFML/import/dsfml/window/videomode.d b/DSFML/import/dsfml/window/videomode.d new file mode 100644 index 00000000..6efd495a --- /dev/null +++ b/DSFML/import/dsfml/window/videomode.d @@ -0,0 +1,136 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.videomode; + +import dsfml.system.common; + +/** +* VideoMode defines a video mode (width, height, bpp, frequency) +* and provides static functions for getting modes supported +* by the display device +*/ +align(1) struct VideoMode +{ + static VideoMode opCall(uint width, uint height, uint bitsPerPixel = 32) + { + VideoMode mode; + mode.Width = width; + mode.Height = height; + mode.BitsPerPixel = bitsPerPixel; + return mode; + } + /** + * Get the current desktop video mode + * + * Returns: + * Current desktop video mode + */ + static VideoMode getDesktopMode() + { + return sfVideoMode_GetDesktopMode(); + } + + /** + * Get a valid video mode + * Index must be in range [0, GetModesCount()[ + * Modes are sorted from best to worst + * + * Params: + * index = Index of video mode to get + * + * Returns: + * Corresponding video mode (invalid mode if index is out of range) + */ + static VideoMode getMode(size_t index) + { + return sfVideoMode_GetMode(index); + } + + /** + * Get valid video modes count + * + * Returns: + * Number of valid video modes available + */ + static size_t getModesCount() + { + return sfVideoMode_GetModesCount(); + } + + /** + * Tell whether or not the video mode is supported + * + * Returns: + * True if video mode is supported, false otherwise + */ + bool isValid() + { + return cast(bool)sfVideoMode_IsValid(*this); + } + + /** + * Comparison operator overload -- tell if two video modes are equal + * + * Params: + * Other : Video mode to compare + * + * Returns: + * True if modes are equal + */ + bool opEquals(VideoMode other) + { + return ((other.Width == Width) && (other.Height == Height) && (other.BitsPerPixel == BitsPerPixel)); + } + + uint Width; /// Video mode width, in pixels + uint Height; /// Video mode height, in pixels + uint BitsPerPixel; /// Video mode pixel depth, in bits per pixels +} + +extern (C) +{ + typedef VideoMode function() pf_sfVideoMode_GetDesktopMode; + typedef VideoMode function(size_t) pf_sfVideoMode_GetMode; + typedef size_t function() pf_sfVideoMode_GetModesCount; + typedef int function(VideoMode) pf_sfVideoMode_IsValid; + + pf_sfVideoMode_GetDesktopMode sfVideoMode_GetDesktopMode; + pf_sfVideoMode_GetMode sfVideoMode_GetMode; + pf_sfVideoMode_GetModesCount sfVideoMode_GetModesCount; + pf_sfVideoMode_IsValid sfVideoMode_IsValid; +} + +static this() +{ + DllLoader dll = DllLoader.load("csfml-window"); + + sfVideoMode_GetDesktopMode = cast(pf_sfVideoMode_GetDesktopMode)dll.getSymbol("sfVideoMode_GetDesktopMode"); + sfVideoMode_GetMode = cast(pf_sfVideoMode_GetMode)dll.getSymbol("sfVideoMode_GetMode"); + sfVideoMode_GetModesCount = cast(pf_sfVideoMode_GetModesCount)dll.getSymbol("sfVideoMode_GetModesCount"); + sfVideoMode_IsValid = cast(pf_sfVideoMode_IsValid)dll.getSymbol("sfVideoMode_IsValid"); +} + + diff --git a/DSFML/import/dsfml/window/window.d b/DSFML/import/dsfml/window/window.d new file mode 100644 index 00000000..15f6c41a --- /dev/null +++ b/DSFML/import/dsfml/window/window.d @@ -0,0 +1,435 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.window; + +import dsfml.window.event; +import dsfml.window.input; +import dsfml.window.videomode; +import dsfml.window.windowhandle; +import dsfml.window.windowsettings; +import dsfml.window.windowstyle; + +import dsfml.system.common; +import dsfml.system.stringutil; + +/** +* Window is a rendering window ; it can create a new window +* or connect to an existing one +*/ +class Window : DSFMLObject +{ + /** + * Construct a new window + * + * Params: + * mode = Video mode to use + * title = Title of the window + * windowStyle = Window style (Resize | Close by default) + * settings = Window settings (default is default WindowSettings values) + */ + this(VideoMode mode, char[] title, Style windowStyle = Style.RESIZE | Style.CLOSE, WindowSettings settings = WindowSettings()) + { + super(sfWindow_Create(mode, toStringz(title), windowStyle, settings)); + } + + /** + * Construct the window from an existing control + * + * Params: + * handle = Platform-specific handle of the control + * settings = Window settings (default is default WindowSettings values) + */ + this(WindowHandle handle, WindowSettings settings = WindowSettings()) + { + super(sfWindow_CreateFromHandle(handle, settings)); + } + + override void dispose() + { + m_input = null; + sfWindow_Destroy(m_ptr); + } + + /** + * Create (or recreate) the window + * + * Input created with getInput becomes invalid. + * + * Params: + * mode = Video mode to use + * title = Title of the window + * windowStyle = Window style (Resize | Close by default) + * settings = Window settings (default is default WindowSettings values) + */ + void create(VideoMode mode, char[] title, Style windowStyle = Style.RESIZE | Style.CLOSE, WindowSettings settings = WindowSettings()) + { + if (m_ptr !is null) + dispose(); + + m_ptr = sfWindow_Create(mode, toStringz(title), windowStyle, settings); + } + + /** + * Create (or recreate) the window from an existing control + * + * Input created with getInput becomes invalid. + * + * Params: + * handle = Platform-specific handle of the control + * settings = Window settings (default is default WindowSettings values) + */ + void create(WindowHandle handle, WindowSettings settings = WindowSettings()) + { + if (m_ptr !is null) + dispose(); + + m_ptr = sfWindow_CreateFromHandle(handle, settings); + } + + /** + * Close (destroy) the window. + * You can call create to recreate a valid window + */ + void close() + { + sfWindow_Close(m_ptr); + } + + /** + * Tell whether or not a window is opened + * + * Returns: + * True if window is currently open. + */ + bool isOpened() + { + return cast(bool)sfWindow_IsOpened(m_ptr); + } + /** + * Get the width of the rendering region of the window + * + * Returns: + * Width in pixels + */ + uint getWidth() + { + return sfWindow_GetWidth(m_ptr); + } + + /** + * Get the height of the rendering region of the window + * + * Returns: + * Height in pixels + */ + uint getHeight() + { + return sfWindow_GetHeight(m_ptr); + } + + /** + * Get the creation settings of a window + * + * Returns: + * Settings used to create the window + */ + WindowSettings getSettings() + { + return sfWindow_GetSettings(m_ptr); + } + + + /** + * Get the event on top of events stack, if any, and pop it + * + * Params: + * eventReceived = Event to fill, if any + * + * Returns: + * True if an event was returned, false if events stack was empty + */ + bool getEvent(ref Event eventReceived) + { + return cast(bool)sfWindow_GetEvent(m_ptr, &eventReceived); + } + + /** + * Enable / disable vertical synchronization + * + * Params: + * enabled : True to enable v-sync, false to deactivate + */ + void useVerticalSync(bool enabled) + { + sfWindow_UseVerticalSync(m_ptr, enabled); + } + + /** + * Show or hide the mouse cursor + * + * Params: + * show : True to show, false to hide + */ + void showMouseCursor(bool show) + { + sfWindow_ShowMouseCursor(m_ptr, show); + } + + /** + * Change the position of the mouse cursor + * + * Params: + * left = Left coordinate of the cursor, relative to the window + * top = Top coordinate of the cursor, relative to the window + */ + void setCursorPosition(uint left, uint top) + { + sfWindow_SetCursorPosition(m_ptr, left, top); + } + + /** + * Change the position of the window on screen. + * Only works for top-level windows + * + * Params: + * left = Left position + * top = Top position + */ + void setPosition(int left, int top) + { + sfWindow_SetPosition(m_ptr, left, top); + } + + /** + * change the size of the rendering region of the window + * + * Params: + * width : new width + * height : new height + */ + void setSize(uint width, uint height) + { + sfWindow_SetSize(m_ptr, width, height); + } + + /** + * Show or hide the window + * + * Params: + * state = True to show, false to hide + * + */ + void show(bool state) + { + sfWindow_Show(m_ptr, state); + } + + /** + * Enable or disable automatic key-repeat for keydown events. + * Automatic key-repeat is enabled by default. + * + * Params: + * enabled = true to enable, false to disable + */ + void enableKeyRepeat(bool enabled) + { + sfWindow_EnableKeyRepeat(m_ptr, enabled); + } + + /** + * Change the window's icon + * + * Params: + * width = Icon's width, in pixels + * height = Icon's height, in pixels + * data = array of pixels in memory, format must be RGBA 32 bits + * + */ + void setIcon(size_t width, size_t height, ubyte[] data) + { + sfWindow_SetIcon(m_ptr, width, height, data.ptr); + } + + /** + * Set the window as the current target for rendering + * + * Params: + * active = True to activate, false to deactivate + * Returns: + * True if operation was successful, false otherwise + */ + bool setActive(bool active = true) + { + return cast(bool)sfWindow_SetActive(m_ptr, active); + } + + /** + * Display the window on screen + */ + void display() + { + sfWindow_Display(m_ptr); + } + + /** + * Get the input manager of the window + * + * Returns: + * An input manager + * See_Also : + * Input + */ + Input getInput() + { + if (m_input is null) + m_input = new Input(sfWindow_GetInput(m_ptr)); + return m_input; + } + + /** + * Limit the framerate to a maximum fixed frequency + * + * Params: + * limit : Framerate limit, in frames per seconds (use 0 to disable limit) + */ + void setFramerateLimit(uint limit) + { + sfWindow_SetFramerateLimit(m_ptr, limit); + } + + /** + * Get time elapsed since last frame + * + * Returns: + * Time elapsed, in seconds + */ + float getFrameTime() + { + return sfWindow_GetFrameTime(m_ptr); + } + + /** + * Change the joystick threshold, ie. the value below which + * no move event will be generated + * + * Params: + * threshold : New threshold, in range [0, 100] + */ + void setJoystickThreshold(float threshold) + { + sfWindow_SetJoystickThreshold(m_ptr, threshold); + } + +protected: + this(void* ptr) + { + super(ptr); + } + + Input m_input; +private: + +// External ==================================================================== + extern (C) + { + typedef void* function(VideoMode, char*, uint, WindowSettings) pf_sfWindow_Create; + typedef void* function(WindowHandle, WindowSettings) pf_sfWindow_CreateFromHandle; + typedef void function(void*) pf_sfWindow_Destroy; + typedef void function(void*) pf_sfWindow_Close; + typedef int function(void*) pf_sfWindow_IsOpened; + typedef uint function(void*) pf_sfWindow_GetWidth; + typedef uint function(void*) pf_sfWindow_GetHeight; + typedef WindowSettings function(void* Window) pf_sfWindow_GetSettings; + typedef int function(void*, Event*) pf_sfWindow_GetEvent; + typedef void function(void*, int) pf_sfWindow_UseVerticalSync; + typedef void function(void*, int) pf_sfWindow_ShowMouseCursor; + typedef void function(void*, uint, uint) pf_sfWindow_SetCursorPosition; + typedef void function(void*, int, int) pf_sfWindow_SetPosition; + typedef void function(void*, uint, uint) pf_sfWindow_SetSize; + typedef void function(void*, int) pf_sfWindow_Show; + typedef void function(void*, int) pf_sfWindow_EnableKeyRepeat; + typedef void function(void*, size_t, size_t, ubyte*) pf_sfWindow_SetIcon; + typedef int function(void*, int) pf_sfWindow_SetActive; + typedef void function(void*) pf_sfWindow_Display; + typedef void* function(void*) pf_sfWindow_GetInput; + typedef void function(void*, uint) pf_sfWindow_SetFramerateLimit; + typedef float function(void*) pf_sfWindow_GetFrameTime; + typedef void function(void*, float) pf_sfWindow_SetJoystickThreshold; + + static pf_sfWindow_Create sfWindow_Create; + static pf_sfWindow_CreateFromHandle sfWindow_CreateFromHandle; + static pf_sfWindow_Destroy sfWindow_Destroy; + static pf_sfWindow_Close sfWindow_Close; + static pf_sfWindow_IsOpened sfWindow_IsOpened; + static pf_sfWindow_GetWidth sfWindow_GetWidth; + static pf_sfWindow_GetHeight sfWindow_GetHeight; + static pf_sfWindow_GetSettings sfWindow_GetSettings; + static pf_sfWindow_GetEvent sfWindow_GetEvent; + static pf_sfWindow_UseVerticalSync sfWindow_UseVerticalSync; + static pf_sfWindow_ShowMouseCursor sfWindow_ShowMouseCursor; + static pf_sfWindow_SetCursorPosition sfWindow_SetCursorPosition; + static pf_sfWindow_SetPosition sfWindow_SetPosition; + static pf_sfWindow_SetSize sfWindow_SetSize; + static pf_sfWindow_Show sfWindow_Show; + static pf_sfWindow_EnableKeyRepeat sfWindow_EnableKeyRepeat; + static pf_sfWindow_SetIcon sfWindow_SetIcon; + static pf_sfWindow_SetActive sfWindow_SetActive; + static pf_sfWindow_Display sfWindow_Display; + static pf_sfWindow_GetInput sfWindow_GetInput; + static pf_sfWindow_SetFramerateLimit sfWindow_SetFramerateLimit; + static pf_sfWindow_GetFrameTime sfWindow_GetFrameTime; + static pf_sfWindow_SetJoystickThreshold sfWindow_SetJoystickThreshold; + } + + static this() + { + DllLoader dll = DllLoader.load("csfml-window"); + + sfWindow_Create = cast(pf_sfWindow_Create)dll.getSymbol("sfWindow_Create"); + sfWindow_CreateFromHandle = cast(pf_sfWindow_CreateFromHandle)dll.getSymbol("sfWindow_CreateFromHandle"); + sfWindow_Destroy = cast(pf_sfWindow_Destroy)dll.getSymbol("sfWindow_Destroy"); + sfWindow_Close = cast(pf_sfWindow_Close)dll.getSymbol("sfWindow_Close"); + sfWindow_IsOpened = cast(pf_sfWindow_IsOpened)dll.getSymbol("sfWindow_IsOpened"); + sfWindow_GetWidth = cast(pf_sfWindow_GetWidth)dll.getSymbol("sfWindow_GetWidth"); + sfWindow_GetHeight = cast(pf_sfWindow_GetHeight)dll.getSymbol("sfWindow_GetHeight"); + sfWindow_GetSettings = cast(pf_sfWindow_GetSettings)dll.getSymbol("sfWindow_GetSettings"); + sfWindow_GetEvent = cast(pf_sfWindow_GetEvent)dll.getSymbol("sfWindow_GetEvent"); + sfWindow_UseVerticalSync = cast(pf_sfWindow_UseVerticalSync)dll.getSymbol("sfWindow_UseVerticalSync"); + sfWindow_ShowMouseCursor = cast(pf_sfWindow_ShowMouseCursor)dll.getSymbol("sfWindow_ShowMouseCursor"); + sfWindow_SetCursorPosition = cast(pf_sfWindow_SetCursorPosition)dll.getSymbol("sfWindow_SetCursorPosition"); + sfWindow_SetPosition = cast(pf_sfWindow_SetPosition)dll.getSymbol("sfWindow_SetPosition"); + sfWindow_SetSize = cast(pf_sfWindow_SetSize)dll.getSymbol("sfWindow_SetSize"); + sfWindow_Show = cast(pf_sfWindow_Show)dll.getSymbol("sfWindow_Show"); + sfWindow_EnableKeyRepeat = cast(pf_sfWindow_EnableKeyRepeat)dll.getSymbol("sfWindow_EnableKeyRepeat"); + sfWindow_SetIcon = cast(pf_sfWindow_SetIcon)dll.getSymbol("sfWindow_SetIcon"); + sfWindow_SetActive = cast(pf_sfWindow_SetActive)dll.getSymbol("sfWindow_SetActive"); + sfWindow_Display = cast(pf_sfWindow_Display)dll.getSymbol("sfWindow_Display"); + sfWindow_GetInput = cast(pf_sfWindow_GetInput)dll.getSymbol("sfWindow_GetInput"); + sfWindow_SetFramerateLimit = cast(pf_sfWindow_SetFramerateLimit)dll.getSymbol("sfWindow_SetFramerateLimit"); + sfWindow_GetFrameTime = cast(pf_sfWindow_GetFrameTime)dll.getSymbol("sfWindow_GetFrameTime"); + sfWindow_SetJoystickThreshold = cast(pf_sfWindow_SetJoystickThreshold)dll.getSymbol("sfWindow_SetJoystickThreshold"); + } +} diff --git a/DSFML/import/dsfml/window/windowhandle.d b/DSFML/import/dsfml/window/windowhandle.d new file mode 100644 index 00000000..fad6c9a5 --- /dev/null +++ b/DSFML/import/dsfml/window/windowhandle.d @@ -0,0 +1,42 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.windowhandle; + +/** +* Define a low-level window handle type, specific to +* each platform +*/ +version(Windows) +{ + // Windows defines a void* handle (HWND) + typedef void* WindowHandle; +} +else version(linux) +{ + // Unix - X11 defines an unsigned integer handle (Window) + typedef ulong WindowHandle; +} + diff --git a/DSFML/import/dsfml/window/windowsettings.d b/DSFML/import/dsfml/window/windowsettings.d new file mode 100644 index 00000000..002f1d16 --- /dev/null +++ b/DSFML/import/dsfml/window/windowsettings.d @@ -0,0 +1,48 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.windowsettings; + +/** +* Structure defining the creation settings of windows +*/ +struct WindowSettings +{ + /// + static WindowSettings opCall(uint depth = 24, uint stencil = 8, uint antialiasing = 0) + { + WindowSettings ret; + + ret.DepthBits = depth; + ret.StencilBits = stencil; + ret.AntialiasingLevel = antialiasing; + + return ret; + } + + uint DepthBits; /// Bits of the depth buffer + uint StencilBits; /// Bits of the stencil buffer + uint AntialiasingLevel; /// Level of antialiasing +} diff --git a/DSFML/import/dsfml/window/windowstyle.d b/DSFML/import/dsfml/window/windowstyle.d new file mode 100644 index 00000000..5966ab61 --- /dev/null +++ b/DSFML/import/dsfml/window/windowstyle.d @@ -0,0 +1,38 @@ +/* +* DSFML - SFML Library binding in D language. +* Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) +* +* This software is provided 'as-is', without any express or +* implied warranty. In no event will the authors be held +* liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute +* it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; +* you must not claim that you wrote the original software. +* If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but +* is not required. +* +* 2. Altered source versions must be plainly marked as such, +* and must not be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any +* source distribution. +*/ + +module dsfml.window.windowstyle; + +/** +* Window style +*/ +enum Style +{ + NONE = 0, /// No border / title bar (this flag and all others are mutually exclusive) + TITLEBAR = 1 << 0, /// Title bar + fixed border + RESIZE = 1 << 1, /// Titlebar + resizable border + maximize button + CLOSE = 1 << 2, /// Titlebar + close button + FULLSCREEN = 1 << 3 /// Fullscreen mode (this flag and all others are mutually exclusive) +} diff --git a/DSFML/import/dsss.conf b/DSFML/import/dsss.conf new file mode 100644 index 00000000..e9ea3a76 --- /dev/null +++ b/DSFML/import/dsss.conf @@ -0,0 +1,46 @@ +name=dsfml + +[dsfml/audio] +type = library +target = dsfml-audio +version (Windows){ + postbuild += copy "dsfml-audio.lib" "../lib/dsfml-audio.lib" +} else version (linux){ + postbuild += cp -f "libdsfml-audio.a" "../lib/libdsfml-audio.a" +} + +[dsfml/network] +type = library +target = dsfml-network +version (Windows){ + postbuild += copy "dsfml-network.lib" "../lib/dsfml-network.lib" +} else version (linux){ + postbuild += cp -f "libdsfml-network.a" "../lib/libdsfml-network.a" +} + +[dsfml/graphics] +type = library +target = dsfml-graphics +version (Windows){ + postbuild += copy "dsfml-graphics.lib" "../lib/dsfml-graphics.lib" +} else version (linux){ + postbuild += cp -f "libdsfml-graphics.a" "../lib/libdsfml-graphics.a" +} + +[dsfml/system] +type = library +target = dsfml-system +version (Windows){ + postbuild += copy "dsfml-system.lib" "../lib/dsfml-system.lib" +} else version (linux){ + postbuild += cp -f "libdsfml-system.a" "../lib/libdsfml-system.a" +} + +[dsfml/window] +type = library +target = dsfml-window +version (Windows){ + postbuild += copy "dsfml-window.lib" "../lib/dsfml-window.lib" +} else version (linux){ + postbuild += cp -f "libdsfml-window.a" "../lib/libdsfml-window.a" +} diff --git a/DSFML/samples/dsfml/bin/Data/background.jpg b/DSFML/samples/dsfml/bin/Data/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c778e86bda0212b9823e6f0043c5dac1656da11f GIT binary patch literal 157847 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 literal 0 HcmV?d00001 diff --git a/DSFML/samples/dsfml/bin/Data/ball.wav b/DSFML/samples/dsfml/bin/Data/ball.wav new file mode 100644 index 0000000000000000000000000000000000000000..8b3cfbadc0de7ce350152aa1ba96b80d5846ff9d GIT binary patch literal 15442 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 V>eI!M>_3~2|J6RzE7tn!e*uus=a>Kh literal 0 HcmV?d00001 diff --git a/DSFML/samples/dsfml/bin/Data/bluerallyecarleft.bmp b/DSFML/samples/dsfml/bin/Data/bluerallyecarleft.bmp new file mode 100644 index 0000000000000000000000000000000000000000..afd8c94ac49fe6282602672deccca0aacfb2403c GIT binary patch literal 27702 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 N6W|H(1pdDe_#f$&no$4% literal 0 HcmV?d00001 diff --git a/DSFML/samples/dsfml/bin/Data/bluerallyecarright.bmp b/DSFML/samples/dsfml/bin/Data/bluerallyecarright.bmp new file mode 100644 index 0000000000000000000000000000000000000000..07d839b971d16d17e02ae4426a8f9eb4e58385fa GIT binary patch literal 27702 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 G;Qs(qs2K(T literal 0 HcmV?d00001 diff --git a/DSFML/samples/dsfml/bin/Data/blur.sfx b/DSFML/samples/dsfml/bin/Data/blur.sfx new file mode 100644 index 00000000..04bfec53 --- /dev/null +++ b/DSFML/samples/dsfml/bin/Data/blur.sfx @@ -0,0 +1,16 @@ +texture framebuffer +float offset + +effect +{ + vec2 offx = vec2(offset, 0.0); + vec2 offy = vec2(0.0, offset); + + vec4 c0 = framebuffer(_in); + vec4 c1 = framebuffer(_in - offy); + vec4 c2 = framebuffer(_in + offy); + vec4 c3 = framebuffer(_in - offx); + vec4 c4 = framebuffer(_in + offx); + + _out = c0 * 0.2 + c1 * 0.2 + c2 * 0.2 + c3 * 0.2 + c4 * 0.2; +} diff --git a/DSFML/samples/dsfml/bin/Data/car_idle.wav b/DSFML/samples/dsfml/bin/Data/car_idle.wav new file mode 100644 index 0000000000000000000000000000000000000000..51a55f891137010a62818023994fb9b4b7327d86 GIT binary patch literal 59291 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 NOzj}wM$Q#0{tuYio(KQ{ literal 0 HcmV?d00001 diff --git a/DSFML/samples/dsfml/bin/Data/cheeseburger.ttf b/DSFML/samples/dsfml/bin/Data/cheeseburger.ttf new file mode 100644 index 0000000000000000000000000000000000000000..47704266ef288293e6590a29d649eccbd85fa0b8 GIT binary patch literal 42020 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Μ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 BXH@_I literal 0 HcmV?d00001 diff --git a/DSFML/samples/dsfml/dfl/DFLSample.d b/DSFML/samples/dsfml/dfl/DFLSample.d new file mode 100644 index 00000000..995859da --- /dev/null +++ b/DSFML/samples/dsfml/dfl/DFLSample.d @@ -0,0 +1,230 @@ +module dflsample; + +import dsfml.system.all; +import dsfml.window.all; + +// DFL and Derelict must be present. +import dfl.all; + +import Derelict.opengl.gl; +import Derelict.opengl.glu; + + +// An enum for each controls methods +enum ControlMethod +{ + MOUSE, + KEYBOARD +} + +void main() +{ + DerelictGL.load(); + DerelictGLU.load(); + //Start the message loop + Application.run(new MyForm()); +} + +//A simple form with a groupbox to choose input method and the openGL control +class MyForm : Form +{ + GLControl m_gl; + GroupBox m_gbx; + RadioButton m_rb1; + RadioButton m_rb2; + + this() + { + m_gbx = new GroupBox(); + m_gbx.dock = DockStyle.TOP; + m_gbx.height = 40; + m_gbx.text = "Choose your input"; + this.controls.add(m_gbx); + + m_rb1 = new RadioButton(); + m_rb1.text = "Mouse"; + m_rb1.location = Point(10, 15); + m_rb1.checked = true; + m_rb1.click ~= &radioButtonClick; + m_gbx.controls.add(m_rb1); + + m_rb2 = new RadioButton(); + m_rb2.text = "Keyboard"; + m_rb2.location = Point(m_rb1.width + 10, 15); + m_rb2.click ~= &radioButtonClick; + m_gbx.controls.add(m_rb2); + + m_gl = new GLControl(); + m_gl.dock = DockStyle.FILL; + m_gl.controlMethod = ControlMethod.MOUSE; + this.controls.add(m_gl); + + this.text = "DFL Opengl Integration Sample"; + } + + private void radioButtonClick(Control c, EventArgs ea) + { + m_gl.controlMethod(c.text == "Mouse" ? ControlMethod.MOUSE : ControlMethod.KEYBOARD); + m_gl.focus(); + } + +} + +//Our OpenGL control +class GLControl : Control +{ + Window m_win; + Input i; + Timer m_timer; + GLfloat rotx = 0.f, roty = 0.f; + ControlMethod m_method = ControlMethod.MOUSE; + + this () + { + super(); + this.setStyle(ControlStyles.SELECTABLE | ControlStyles.ALL_PAINTING_IN_WM_PAINT | ControlStyles.WANT_ALL_KEYS, true); + + //We set a timer to ensure periodic refresh of the window + m_timer = new Timer(); + m_timer.interval(10); + m_timer.tick ~= &this.onTick; + + } + + public void controlMethod(ControlMethod m) + { + m_method = m; + } + + //Override of the onHandleCreated method of Control + //integration of DSFML window in a control need a valid handle + protected void onHandleCreated(EventArgs ea) + { + super.onHandleCreated(ea); + + //Construction of the window + m_win = new Window(cast(WindowHandle)this.handle); + + //Get the input for further use + i = m_win.getInput(); + + //Now that the Window is instanciated, we can start the timer. + m_timer.start(); + + //Some opengl initializations functions + glClearDepth(1.f); + glClearColor(0.f, 0.f, 0.f, 0.f); + glEnable(GL_DEPTH_TEST); + glDepthMask(GL_TRUE); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(90.f, 1.f, 1.f, 500.f); + } + + //We handle Mouse leaving and entering the control to hide or show the cursor + protected void onMouseEnter(MouseEventArgs mea) + { + super.onMouseEnter(mea); + Cursor.current.hide(); + } + + protected void onMouseLeave(MouseEventArgs mea) + { + super.onMouseLeave(mea); + Cursor.current.show(); + } + + //If the window is resize, we need to modify openGL view + protected void onResize(EventArgs ea) + { + super.onResize(ea); + glViewport(0, 0, this.width, this.height); + } + + protected void onTick(Timer t, EventArgs ea) + { + draw(); + } + + protected void onPaint(PaintEventArgs pea) + { + super.onPaint(pea); + draw(); + } + + private void handleKeys() + { + if (i.isKeyDown(KeyCode.UP)) + rotx += 1.f; + if (i.isKeyDown(KeyCode.DOWN)) + rotx += -1.f; + if (i.isKeyDown(KeyCode.LEFT)) + roty += -1.f; + if (i.isKeyDown(KeyCode.RIGHT)) + roty += 1.f; + + } + private void handleMousePos() + { + rotx = i.getMouseY() - (this.height / 2.0); + roty = i.getMouseX() - (this.width / 2.0); + } + + private void draw() + { + if (m_method == ControlMethod.KEYBOARD) + handleKeys(); + else + handleMousePos(); + + m_win.setActive(true); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.f, 0.f, -200.f); + glRotatef(rotx, 1.f, 0.f, 0.f); + glRotatef(roty, 0.f, 1.f, 0.f); + + glBegin(GL_QUADS); + glColor3f(1.f, 0.f, 0.f); + glVertex3f(-50.f, -50.f, -50.f); + glVertex3f(-50.f, 50.f, -50.f); + glVertex3f( 50.f, 50.f, -50.f); + glVertex3f( 50.f, -50.f, -50.f); + + glColor3f(0.f, 1.f, 0.f); + glVertex3f(-50.f, -50.f, 50.f); + glVertex3f(-50.f, 50.f, 50.f); + glVertex3f( 50.f, 50.f, 50.f); + glVertex3f( 50.f, -50.f, 50.f); + + glColor3f(0.f, 0.f, 1.f); + glVertex3f(-50.f, -50.f, -50.f); + glVertex3f(-50.f, 50.f, -50.f); + glVertex3f(-50.f, 50.f, 50.f); + glVertex3f(-50.f, -50.f, 50.f); + + glColor3f(1.f, 1.f, 0.f); + glVertex3f(50.f, -50.f, -50.f); + glVertex3f(50.f, 50.f, -50.f); + glVertex3f(50.f, 50.f, 50.f); + glVertex3f(50.f, -50.f, 50.f); + + glColor3f(1.f, 0.f, 1.f); + glVertex3f(-50.f, -50.f, 50.f); + glVertex3f(-50.f, -50.f, -50.f); + glVertex3f( 50.f, -50.f, -50.f); + glVertex3f( 50.f, -50.f, 50.f); + + glColor3f(0.f, 1.f, 1.f); + glVertex3f(-50.f, 50.f, 50.f); + glVertex3f(-50.f, 50.f, -50.f); + glVertex3f( 50.f, 50.f, -50.f); + glVertex3f( 50.f, 50.f, 50.f); + glEnd(); + + m_win.display(); + } +} diff --git a/DSFML/samples/dsfml/dsss.conf b/DSFML/samples/dsfml/dsss.conf new file mode 100644 index 00000000..17fe1efc --- /dev/null +++ b/DSFML/samples/dsfml/dsss.conf @@ -0,0 +1,33 @@ +[*] +buildflags += -I../../import -Ivoip + +[pong/pong.d] +target = bin/pong + +[postFX/postFX.d] +target = bin/postFX + +[socket/socketclient.d] +target = bin/client + +[socket/socketserver.d] +target = bin/server + +[sound3d/sound3d.d] +target = bin/sound3d + +[soundstream/soundstream.d] +target = bin/soundstream + +[view/view.d] +target = bin/view + +[voip/entry.d] +target = bin/voip + +version (Windows){ + version (DFL){ + [dfl/dflsample.d] + target = bin/dflSample + } +} diff --git a/DSFML/samples/dsfml/pong/pong.d b/DSFML/samples/dsfml/pong/pong.d new file mode 100644 index 00000000..603a9011 --- /dev/null +++ b/DSFML/samples/dsfml/pong/pong.d @@ -0,0 +1,183 @@ +module pong; + +import dsfml.system.all; +import dsfml.audio.all; +import dsfml.window.all; +import dsfml.graphics.all; + +version (Tango) +{ + import tango.io.Stdout; + import tango.math.Math; +} +else +{ + import std.math; +} + +void main() +{ + // Defines PI + const float PI = 3.14159f; + + // Create the window of the application + RenderWindow app = new RenderWindow(VideoMode(800, 600, 32), "SFML Pong"); + + app.useVerticalSync(true); + + Input i = app.getInput(); + + // Load the sounds used in the game + Sound BallSound = new Sound(new SoundBuffer("Data/ball.wav")); + + // Load the images used in the game + Image PaddleImage = new Image("Data/paddle.tga"); + Image BallImage = new Image("Data/ball.tga"); + + + // Initialize the end text + String End = new String(""c); + Font font = new Font("Data/cheeseburger.ttf"); + End.setFont(font); + End.setSize(60.f); + End.move(150.f, 200.f); + End.setColor(Color(50, 50, 250)); + + // Create the sprites of the background, the paddles and the ball + Sprite LeftPaddle = new Sprite(PaddleImage); + Sprite RightPaddle = new Sprite(PaddleImage); + Sprite Ball = new Sprite(BallImage); + + LeftPaddle.move(10, (app.getView().getRect().getHeight() - LeftPaddle.getSize().y) / 2); + RightPaddle.move(app.getView().getRect().getWidth() - RightPaddle.getSize().x - 10, (app.getView().getRect().getHeight() - RightPaddle.getSize().y) / 2); + Ball.move((app.getView().getRect().getWidth() - Ball.getSize().x) / 2, (app.getView().getRect().getHeight() - Ball.getSize().y) / 2); + + // Define the paddles properties + Clock AITimer = new Clock(); + const float AITime = 0.1f; + float LeftPaddleSpeed = 400.f; + float RightPaddleSpeed = 400.f; + + // Define the ball properties + float BallSpeed = 400.f; + float BallAngle = 0.f; + do + { + // Make sure the ball initial angle is not too much vertical + BallAngle = Randomizer.random(0.f, 2 * PI); + } while (abs(cos(BallAngle)) < 0.7f); + + bool IsPlaying = true; + + Event evt; + while (app.isOpened()) + { + app.clear(Color(255, 255, 255, 255)); + // Handle events + + while (app.getEvent(evt)) + { + // Window closed or escape key pressed : exit + if ((evt.Type == Event.EventType.CLOSED) || + ((evt.Type == Event.EventType.KEYPRESSED) && (evt.Key.Code == KeyCode.ESCAPE))) + { + app.close(); + break; + } + } + + if (IsPlaying) + { + // Move the player's paddle + if (i.isKeyDown(KeyCode.UP) && (LeftPaddle.getPosition().y > 5.f)) + LeftPaddle.move(0.f, -LeftPaddleSpeed * app.getFrameTime()); + if (i.isKeyDown(KeyCode.DOWN) && (LeftPaddle.getPosition().y < app.getView().getRect().getHeight() - LeftPaddle.getSize().y - 5.f)) + LeftPaddle.move(0.f, LeftPaddleSpeed * app.getFrameTime()); + + // Move the computer's paddle + if (((RightPaddleSpeed < 0.f) && (RightPaddle.getPosition().y > 5.f)) || + ((RightPaddleSpeed > 0.f) && (RightPaddle.getPosition().y < app.getView().getRect().getHeight() - RightPaddle.getSize().y - 5.f))) + { + RightPaddle.move(0.f, RightPaddleSpeed * app.getFrameTime()); + } + + // Update the computer's paddle direction according to the ball position + if (AITimer.getElapsedTime() > AITime) + { + AITimer.reset(); + if ((RightPaddleSpeed < 0) && (Ball.getPosition().y + Ball.getSize().y > RightPaddle.getPosition().y + RightPaddle.getSize().y)) + RightPaddleSpeed = -RightPaddleSpeed; + if ((RightPaddleSpeed > 0) && (Ball.getPosition().y < RightPaddle.getPosition().y)) + RightPaddleSpeed = -RightPaddleSpeed; + } + + + + // Move the ball + float Factor = BallSpeed * app.getFrameTime(); + Ball.move(cos(BallAngle) * Factor, sin(BallAngle) * Factor); + + // Check collisions between the ball and the screen + if (Ball.getPosition().x < 0.f) + { + IsPlaying = false; + End.setText("You lost !\n(press escape to exit)"c); + } + + if (Ball.getPosition().x + Ball.getSize().x > app.getView().getRect().getWidth()) + { + IsPlaying = false; + End.setText("You won !\n(press escape to exit)"c); + } + + if (Ball.getPosition().y < 0.f) + { + BallSound.play(); + BallAngle = -BallAngle; + Ball.setY(0.1f); + } + + if (Ball.getPosition().y + Ball.getSize().y > app.getView().getRect().getHeight()) + { + BallSound.play(); + BallAngle = -BallAngle; + Ball.setY(app.getView().getRect().getHeight() - Ball.getSize().y - 0.1f); + } + // Check the collisions between the ball and the paddles + // Left Paddle + if (Ball.getPosition().x < LeftPaddle.getPosition().x + LeftPaddle.getSize().x && + Ball.getPosition().x > LeftPaddle.getPosition().x + (LeftPaddle.getSize().x / 2.0f) && + Ball.getPosition().y + Ball.getSize().y >= LeftPaddle.getPosition().y && + Ball.getPosition().y <= LeftPaddle.getPosition().y + LeftPaddle.getSize().y) + { + BallSound.play(); + BallAngle = PI - BallAngle; + Ball.setX(LeftPaddle.getPosition().x + LeftPaddle.getSize().x + 0.1f); + } + + // Right Paddle + if (Ball.getPosition().x + Ball.getSize().x > RightPaddle.getPosition().x && + Ball.getPosition().x + Ball.getSize().x < RightPaddle.getPosition().x + (RightPaddle.getSize().x / 2.0f) && + Ball.getPosition().y + Ball.getSize().y >= RightPaddle.getPosition().y && + Ball.getPosition().y <= RightPaddle.getPosition().y + RightPaddle.getSize().y) + { + BallSound.play(); + BallAngle = PI - BallAngle; + Ball.setX(RightPaddle.getPosition().x - Ball.getSize().x - 0.1f); + } + } + + // Draw the background, paddles and ball sprites + + app.draw(LeftPaddle); + app.draw(RightPaddle); + app.draw(Ball); + + // If the game is over, display the end message + if (!IsPlaying) + app.draw(End); + + // Display things on screen + app.display(); + } +} diff --git a/DSFML/samples/dsfml/postFX/postFX.d b/DSFML/samples/dsfml/postFX/postFX.d new file mode 100644 index 00000000..e2f210bc --- /dev/null +++ b/DSFML/samples/dsfml/postFX/postFX.d @@ -0,0 +1,117 @@ +module postfx; + +import dsfml.graphics.all; +import dsfml.system.all; +import dsfml.window.all; + +const char[][5] EFFECTS = ["nothing", "blur", "colorize", "fisheye", "wave"]; + +void main() +{ + int actualIndex; + + // Check that the system can use post effects + if (PostFX.canUsePostFX() == false) + assert(0, "Your system doesn't support Post Effects."); + + // Create the main window + RenderWindow app = new RenderWindow(VideoMode(800, 600), "SFML PostFX"); + app.setFramerateLimit(100); + + // Load a cute background image to display :) + Sprite background = new Sprite(new Image("Data/background.jpg")); + + // Load the image needed for the wave effect + Image WaveImage = new Image("Data/wave.jpg"); + + // Load all effects + PostFX[char[]] Effects; + foreach(char[] c; EFFECTS) + { + Effects[c] = new PostFX("Data/" ~ c ~ ".sfx"); + } + PostFX currentEffect = Effects[EFFECTS[actualIndex]]; + + // Do specific initializations + Effects["nothing"].setTexture("framebuffer", null); + Effects["blur"].setTexture("framebuffer", null); + Effects["blur"].setParameter("offset", 0.f); + Effects["colorize"].setTexture("framebuffer", null); + Effects["colorize"].setParameter("color", 1.f, 1.f, 1.f); + Effects["fisheye"].setTexture("framebuffer", null); + Effects["wave"].setTexture("framebuffer", null); + Effects["wave"].setTexture("wave", WaveImage); + + Font f = new Font("Data/cheeseburger.ttf"); + + // Define a string for displaying current effect description + String curFXStr = new String("Current effect is " ~ EFFECTS[actualIndex]); + curFXStr.setFont(f); + curFXStr.setPosition(20.f, 0.f); + + // Define a string for displaying help + String infoStr = new String("Move your mouse to change the effect parameters\nPress numpad + and - to change effect\nWarning : some effects may not work\ndepending on your graphics card"c); + infoStr.setFont(f); + infoStr.setPosition(20.f, 460.f); + infoStr.setColor(Color(200, 100, 150)); + + // Start the game loop + while (app.isOpened()) + { + // Process events + Event evt; + while (app.getEvent(evt)) + { + // Close window : exit + if (evt.Type == Event.EventType.CLOSED || + evt.Type == Event.EventType.KEYPRESSED && evt.Key.Code == KeyCode.ESCAPE) + app.close(); + + if (evt.Type == Event.EventType.KEYPRESSED) + { + // Add key : next effect + if (evt.Key.Code == KeyCode.ADD) + { + if (actualIndex == 4) + actualIndex = 0; + else + actualIndex++; + currentEffect = Effects[EFFECTS[actualIndex]]; + curFXStr.setText("Current effect is " ~ EFFECTS[actualIndex]); + } + + // Subtract key : previous effect + if (evt.Key.Code == KeyCode.SUBTRACT) + { + if (actualIndex == 0) + actualIndex = 4; + else + actualIndex--; + currentEffect = Effects[EFFECTS[actualIndex]]; + curFXStr.setText("Current effect is " ~ EFFECTS[actualIndex]); + } + } + } + + // Get the mouse position in the range [0, 1] + float X = app.getInput().getMouseX() / cast(float) app.getWidth(); + float Y = app.getInput().getMouseY() / cast(float) app.getHeight(); + + // Update the current effect + if (EFFECTS[actualIndex] == "blur") currentEffect.setParameter("offset", X * Y * 0.1f); + else if (EFFECTS[actualIndex] == "colorize") currentEffect.setParameter("color", 0.3f, X, Y); + else if (EFFECTS[actualIndex] == "fisheye") currentEffect.setParameter("mouse", X, 1.f - Y); + else if (EFFECTS[actualIndex] == "wave") currentEffect.setParameter("offset", X, Y); + + // Draw background and apply the post-fx + app.draw(background); + app.draw(currentEffect); + + // Draw interface strings + app.draw(curFXStr); + app.draw(infoStr); + + // Finally, display the rendered frame on screen + app.display(); + } +} diff --git a/DSFML/samples/dsfml/socket/socketclient.d b/DSFML/samples/dsfml/socket/socketclient.d new file mode 100644 index 00000000..231fa961 --- /dev/null +++ b/DSFML/samples/dsfml/socket/socketclient.d @@ -0,0 +1,66 @@ +module socketclient; + +import dsfml.system.all; +import dsfml.network.all; + +version (Tango) +{ + import tango.io.Console; + import tango.io.Stdout; +} +else +{ + import std.stdio; +} + + +void main() +{ + //The TCP socket + SocketTCP client = new SocketTCP(); + //Try to connect to server (on localhost for this sample) + client.connect(9000, IPAddress.LOCALHOST); + + display("Connected to server."w); + + //Prepare a packet with a string + Packet p = new Packet(); + p.set("Hello from the client !"w); + if (client.send(p) != SocketStatus.DONE) // Assert on error + assert(0); + + //Clear the packet + p.clear(); + + //Wait for the response of the server and display it + if (client.receive(p) != SocketStatus.DONE) + assert(0); + wchar[] c; + p.get(c); + display("Packet received : "w ~ c); + read(); +} + +void display(wchar[] c) +{ + version (Tango) + { + Stdout(c).newline; + } + else + { + writefln("%s", c); + } +} + +void read() +{ + version (Tango) + { + Cin.get(); + } + else + { + readln(); + } +} diff --git a/DSFML/samples/dsfml/socket/socketserver.d b/DSFML/samples/dsfml/socket/socketserver.d new file mode 100644 index 00000000..0fce640e --- /dev/null +++ b/DSFML/samples/dsfml/socket/socketserver.d @@ -0,0 +1,83 @@ +module socketserver; + +import dsfml.system.all; +import dsfml.network.all; + +version (Tango) +{ + import tango.io.Console; + import tango.io.Stdout; +} +else +{ + import std.stdio; +} + +void main() +{ + //We create a TCP socket for listening incomming client + SocketTCP listener = new SocketTCP(); + + //Set a random port for the listener + if (!listener.listen(9000)) + assert(0); + + //Creation of TCP socket + SocketTCP client = new SocketTCP(); + IPAddress ipClient; + + display("Waiting for client."w); + + if (listener.accept(client, ipClient) == SocketStatus.DONE) //This call blocks until client connection + { + display("New client connected."w); + //The packet for retrieving the client message + Packet p = new Packet(); + display("Waiting for data"w); + if (client.receive(p) != SocketStatus.DONE) //Assert on reception error + assert(0); + + + //Display the string send by the client + wchar[] c; + p.get(c); + display("Packet received : "w ~ c); + + //Clear the packet (We could use a new one) + p.clear(); + + //and send response to client + client.send(p.set("Hello from the server !"w)); + } + read(); +} + +/** +* Multilib string display +*/ +void display(wchar[] c) +{ + version (Tango) + { + Stdout(c).newline; + } + else + { + writefln("%s", c); + } +} + +/** +* Dummy function to prevent console closing on windows +*/ +void read() +{ + version (Tango) + { + Cin.get(); + } + else + { + readln(); + } +} diff --git a/DSFML/samples/dsfml/sound3d/sound3d.d b/DSFML/samples/dsfml/sound3d/sound3d.d new file mode 100644 index 00000000..db512697 --- /dev/null +++ b/DSFML/samples/dsfml/sound3d/sound3d.d @@ -0,0 +1,190 @@ +module sound3d; + +import dsfml.system.all; +import dsfml.window.all; +import dsfml.graphics.all; +import dsfml.audio.all; + +void main() +{ + //We create our window with a limit of 100 and a white backcolor. + RenderWindow app = new RenderWindow (VideoMode(800, 600, 32), "Sound Spatialization Sample"); + app.useVerticalSync(true); + + Font f = new Font("Data/cheeseburger.ttf", 34); + + //Some instructions + String s = new String("Click anywhere on screen to change listener position.\nPress + or - to modify the speed of the car."c, f); + s.setPosition(20, 30); + s.setColor(Color.BLACK); + + //We prepare our images and the sound + char[][2] images = ["Data/bluerallyecarleft.bmp", "Data/bluerallyecarright.bmp"]; + Car c = new Car(images, "Data/car_idle.wav"); + + int carSpeed = 100; + + //Set default position for the car and the listener + c.setPosition(Vector2f(0, 300)); + SoundListener.setPosition(Vector2f(400, 300)); + + c.startPlaying(); + + //Start the main loop + while (app.isOpened()) + { + app.clear(Color.WHITE); + Event evt; + //The event loop + while (app.getEvent(evt)) + { + // if the window is closed, we can leave the game loop + if (evt.Type == Event.EventType.CLOSED) + app.close(); + // we handle the click event to change listener position + else if (evt.Type == Event.EventType.MOUSEBUTTONPRESSED && evt.MouseButton.Button == MouseButtons.LEFT) + { + Input i = app.getInput(); + SoundListener.setPosition(Vector2f(i.getMouseX(), i.getMouseY())); + } + // and eventual keys press + else if (evt.Type == Event.EventType.KEYPRESSED) + { + //Change the car speed + if (evt.Key.Code == KeyCode.ADD) + { + carSpeed += 25; + } + else if (evt.Key.Code == KeyCode.SUBTRACT) + { + carSpeed -= 25; + } + } + } + + //We move constantly our car. + c.move(Vector2f(app.getFrameTime() * carSpeed, 0)); + + //Draw all the sprite and string on render window + app.draw(s); + app.draw(c.getSprite()); + app.draw(SoundListener.getSprite()); + + //And finally display the window + app.display(); + } + + +} + +// Encapsulate the listener position and the visor sprite. +// There is only one listener so all the methods are statics. +class SoundListener +{ + static Sprite s_crosshair; + static Vector2f s_p; + + static this() + { + Image crosshairImg = new Image("Data/crosshair.tga"); + crosshairImg.createMaskFromColor(Color.WHITE); + + s_crosshair = new Sprite(crosshairImg); + s_crosshair.setCenter(Vector2f(s_crosshair.getSize().x / 2, s_crosshair.getSize().y / 2)); + + //Listener.setTarget(1.f, 0.f, 0.f); + } + + // Adjust position of the listener + static void setPosition(Vector2f p) + { + Listener.setPosition(p.x, p.y, 5.f); + s_crosshair.setPosition(p); + } + + static Sprite getSprite() + { + return s_crosshair; + } +} + + +// Class encapsulating all data for our car +class Car +{ + Vector2f m_actual; + Sprite m_sprite; + Sound m_sound; + bool reverse; + Image[2] imgs; + + //Constructor with with a fixed size string array of image path, and a string for the sound path + this (char[][2] images, char[] soundFilename) + { + //load images and create filter + imgs[0] = new Image(images[0]); imgs[1] = new Image(images[1]); + + foreach(img; imgs) + img.createMaskFromColor(Color(97, 68, 43)); + + m_sprite = new Sprite(imgs[0]); + m_sprite.setCenter(Vector2f(m_sprite.getSize().x / 2, m_sprite.getSize().y / 2)); + + SoundBuffer buff = new SoundBuffer(soundFilename); + + //load our sound with loop enabled + m_sound = new Sound(buff, true); + m_sound.setAttenuation(.05f); + } + + // Begin the sound play + void startPlaying() + { + m_sound.play(); + } + + // Set the position of the car on the window + // Used to setup the begin car window and sound location + void setPosition(Vector2f p) + { + m_sprite.setPosition(p); + m_sound.setPosition(p.x, 0, p.y); + } + + //Move the car (visual and sound position) + //If the car leave the screen, we change the sprite image and reverse moving + void move(Vector2f vec) + { + // if the car is beyond the right screen limit + if (!reverse && m_sprite.getPosition().x > 850) + { + m_sprite.setImage(imgs[1]); + reverse = true; + } + // same as above but for left limit + else if (reverse && vec.x + m_sprite.getPosition().x < -50) + { + m_sprite.setImage(imgs[0]); + reverse = false; + } + + if (reverse) + vec = -vec; + + m_sprite.move(vec); + Vector2f pos = m_sprite.getPosition(); + m_sound.setPosition(pos.x , pos.y, 0); + } + + Sprite getSprite() + { + return m_sprite; + } +} + + + + + + + diff --git a/DSFML/samples/dsfml/soundstream/soundstream.d b/DSFML/samples/dsfml/soundstream/soundstream.d new file mode 100644 index 00000000..75da8489 --- /dev/null +++ b/DSFML/samples/dsfml/soundstream/soundstream.d @@ -0,0 +1,91 @@ +module soundstream; + +import dsfml.system.all; +import dsfml.audio.all; + +version (Tango) +{ + import tango.io.Console; + import tango.io.Stdout; +} +else +{ + import std.stdio; +} + +// SoundStream is an abstract class. +// You need to implement onStart() and onGetData() +// Don't forget to call initialize() before any usage or playback will fail. +class MySoundStream : SoundStream +{ + SoundBuffer m_buff; + short[] m_data; + size_t m_cursor; + + this() + { + // We initialize the stream with some sound informations + super(1, 11025); + + // We create a sound buffer to load samples from files + m_buff = new SoundBuffer("Data/car_idle.wav"); + m_data = m_buff.getSamples[0..m_buff.getSamplesCount]; + } +protected: + bool onStart() + { + // No specifics things to do, just return true. + return true; + } + + bool onGetData(out short[] data) + { + // We ensure that we have enough data to send + if (m_cursor + this.getSampleRate > m_data.length) + return false; + + // Assign data in the buffer ... + data = m_data[m_cursor..m_cursor + this.getSampleRate]; + // ... and increment the cursor + m_cursor += this.getSampleRate; + return true; + } + +} + +void main() +{ + MySoundStream stream = new MySoundStream(); + + display("Playing sound !\n Press enter to stop playback."); + stream.play(); + read(); + stream.stop(); +} + +void display(char[] c) +{ + version (Tango) +{ + Stdout(c).newline; +} + else +{ + writefln("%s", c); +} +} + +/** +* Dummy function to prevent console closing on windows +*/ +void read() +{ + version (Tango) +{ + Cin.get(); +} + else +{ + readln(); +} +} diff --git a/DSFML/samples/dsfml/view/view.d b/DSFML/samples/dsfml/view/view.d new file mode 100644 index 00000000..ff1d50d0 --- /dev/null +++ b/DSFML/samples/dsfml/view/view.d @@ -0,0 +1,69 @@ +module view; + +import dsfml.system.all; +import dsfml.window.all; +import dsfml.graphics.all; + +void main() +{ + RenderWindow window = new RenderWindow(VideoMode(800, 600), "View sample"); + window.setFramerateLimit(100); + Input input = window.getInput(); + Vector2f top; + Rect!(float) bound; + Shape s; + bool mousePressed; + + Sprite background = new Sprite(new Image("Data/background.jpg")); + + Font f = new Font("Data/cheeseburger.ttf"); + String str = new String("Create a selection of the background with your mouse.\nPress Enter to zoom to this selection.\nPress Escape to return to the default view."c, f); + + while (window.isOpened()) + { + Event evt; + + while (window.getEvent(evt)) + { + if ( evt.Type == Event.EventType.MOUSEBUTTONPRESSED && + evt.MouseButton.Button == MouseButtons.LEFT) + { + top = window.convertCoords(input.getMouseX(), input.getMouseY()); + mousePressed = true; + + } + else if ( evt.Type == Event.EventType.MOUSEBUTTONRELEASED && + evt.MouseButton.Button == MouseButtons.LEFT) + { + mousePressed = false; + } + else if ( evt.Type == Event.EventType.MOUSEMOVED && + mousePressed) + { + Vector2f bottom = window.convertCoords(input.getMouseX(), input.getMouseY()); + bound = new Rect!(float)(top.x, top.y, bottom.x, bottom.y); + s = Shape.rectangle(top.x, top.y, bottom.x, bottom.y, Color(0, 0, 0, 0), 1, Color.BLACK); + } + else if ( evt.Type == Event.EventType.KEYPRESSED && + evt.Key.Code == KeyCode.RETURN) + { + if (bound !is null) + window.setView(new View(bound)); + s = null; + } + else if ( evt.Type == Event.EventType.KEYPRESSED && + evt.Key.Code == KeyCode.ESCAPE) + { + window.setView(window.getDefaultView()); + } + else if ( evt.Type == Event.EventType.CLOSED) + window.close(); + + } + + window.draw(background); + window.draw(str); + if (s !is null) window.draw(s); + window.display(); + } +} diff --git a/DSFML/samples/dsfml/voip/client.d b/DSFML/samples/dsfml/voip/client.d new file mode 100644 index 00000000..e010aeb2 --- /dev/null +++ b/DSFML/samples/dsfml/voip/client.d @@ -0,0 +1,72 @@ +module client; + +import util; + + +// Specialization of audio recorder for sending recorded audio +// data through the network +class NetworkRecorder : SoundRecorder +{ +public: + + // Constructor + this(SocketTCP Socket) + { + mySocket = Socket; + } + + ~this() + { + delete mySocket; + } +protected: + override bool onStart() + { + return true; + } + + override void onStop() + { + + } + + override bool onProcessSamples(short[] samples) + { + // Pack the audio samples into a network packet + Packet PacketOut = new Packet(); + PacketOut.set(AudioData); + PacketOut.append((cast(byte*)samples.ptr)[0..samples.length * short.sizeof]); + // Send the audio packet to the server + return mySocket.send(PacketOut) == SocketStatus.DONE; + } + + SocketTCP mySocket; ///< Socket used to communicate with the server +} + +void runClient(IPAddress adr, int port) +{ + // Create a TCP socket for communicating with server + SocketTCP Socket = new SocketTCP(); + + // Connect to the specified server + if (!Socket.connect(port, adr)) + return; + + // Wait for user input... + Cout("Press enter to start recording audio").newline; + Cin.get(); + + // Create a instance of our custom recorder + NetworkRecorder Recorder = new NetworkRecorder(Socket); + + // Start capturing audio data + Recorder.start(44100); + Cout("Press enter to stop recording audio").newline; + Cin.get(); + Recorder.stop(); + + // Send a "end-of-stream" packet + Packet PacketOut = new Packet(); + PacketOut.set(EndOfStream); + Socket.send(PacketOut); +} diff --git a/DSFML/samples/dsfml/voip/entry.d b/DSFML/samples/dsfml/voip/entry.d new file mode 100644 index 00000000..aaa9a088 --- /dev/null +++ b/DSFML/samples/dsfml/voip/entry.d @@ -0,0 +1,46 @@ +module entry; + +import util; +import server; +import client; + +int main(char[][] args) +{ + char[][] argc = args.dup; + if (argc.length > 1) + { + if ( argc[1] == "-c" && + argc.length == 4) + { + IPAddress adr = IPAddress(argc[2]); + + if (adr.isValid() && + parse(argc[3]) <= 60000 && + parse(argc[3]) >= 1000) + { + runClient(adr, parse(argc[3])); + } + else + printUsage(); + } + else if ( argc[1] == "-s" && + argc.length == 3 && + parse(argc[2]) <= 60000 && + parse(argc[2]) >= 1000) + { + runServer(parse(argc[2])); + + } + else + printUsage(); + } + else + printUsage(); + + return 0; +} + +void printUsage() +{ + Cout("Usage :\n voip.exe [-c [ip address] | -s] [port] \n -c = run as client\n -s = run as server\n ip address = address of the server\n port = port between 1000 and 65000\n").newline; +} diff --git a/DSFML/samples/dsfml/voip/server.d b/DSFML/samples/dsfml/voip/server.d new file mode 100644 index 00000000..5735448a --- /dev/null +++ b/DSFML/samples/dsfml/voip/server.d @@ -0,0 +1,162 @@ +module server; + +import util; + +class NetworkAudioStream : SoundStream +{ +public: + static this() + { + s_sync = new Object(); + } + + // Default constructor + this() + { + myListener = new SocketTCP(); + myClient = new SocketTCP(); + // Set the sound parameters + super(1, 44100); + } + + // Destructor + ~this() + { + // Close the sockets + delete myClient; + delete myListener; + } + + // Run the server, stream audio data from the client + void start(int Port) + { + if (!myHasFinished) + { + // Listen to the given port for incoming connections + if (!myListener.listen(Port)) + return; + Cout("Listening").newline; + myListener.accept(myClient); + Cout("New Client").newline; + // Start playback + play(); + + // Start receiving audio data + receiveLoop(); + } + else + { + // Start playback + play(); + } + } + +protected: + + override bool onStart() + { + // Reset the playing offset + myOffset = 0; + + return true; + } + + override bool onGetData(out short[] data) + { + // We have reached the end of the buffer and all audio data have been played : we can stop playback + if ((myOffset == mySamples.length) && myHasFinished) + return false; + // No new data has arrived since last update : wait until we get some + while (myOffset == mySamples.length && !myHasFinished) + sleep(0.01f); + + synchronized(s_sync) + { + myTempBuffer = mySamples[myOffset..mySamples.length]; + // Update the playing offset + myOffset += myTempBuffer.length; + } + + data = myTempBuffer; + return true; + } + +private: + + void receiveLoop() + { + while (!myHasFinished) + { + // Get waiting audio data from the network + Packet PacketIn = new Packet(); + if (myClient.receive(PacketIn) != SocketStatus.DONE) + break; + + // Extract the message ID + ubyte Id; + PacketIn.get(Id); + + if (Id == AudioData) + { + // Extract audio samples from the packet, and append it to our samples buffer + + synchronized(s_sync) + { + byte* temp = PacketIn.getData().ptr; + temp++; + + mySamples ~= (cast(short*)temp)[0..(PacketIn.getDataSize - byte.sizeof ) / short.sizeof]; + } + } + else if (Id == EndOfStream) + { + // End of stream reached : we stop receiving audio data + myHasFinished = true; + } + else + { + // Something's wrong... + myHasFinished = true; + } + } + } + + SocketTCP myListener; + SocketTCP myClient; + short[] mySamples; + short[] myTempBuffer; + size_t myOffset; + bool myHasFinished; + + static Object s_sync; +}; + + + +// Launch a server and wait for incoming audio data from +// a connected client +void runServer(int Port) +{ + // Build an audio stream to play sound data as it is received through the network + NetworkAudioStream audioStream = new NetworkAudioStream; + audioStream.start(Port); + + // Loop until the sound playback is finished + while (audioStream.getStatus() != SoundStatus.STOPPED) + { + // Leave some CPU time for other threads + sleep(0.1f); + } + + Cout("Enter to replay").newline; + Cin.get(); + // Replay the sound (just to make sure replaying the received data is OK) + audioStream.play(); + + // Loop until the sound playback is finished + while (audioStream.getStatus() != SoundStatus.STOPPED) + { + // Leave some CPU time for other threads + sleep(0.1f); + } +} diff --git a/DSFML/samples/dsfml/voip/util.d b/DSFML/samples/dsfml/voip/util.d new file mode 100644 index 00000000..cc69525b --- /dev/null +++ b/DSFML/samples/dsfml/voip/util.d @@ -0,0 +1,49 @@ +module util; + +const ubyte AudioData = 1; +const ubyte EndOfStream = 2; + +public import dsfml.system.all; +public import dsfml.audio.all; +public import dsfml.network.all; + +version(Tango) +{ + public import tango.io.Console; + public import tango.text.convert.Integer; +} +else +{ + public import std.stdio; + + //simple abstraction of Cout & Cin for phobos + class Cout + { + static Cout s_c; + static this() + { + s_c = new Cout(); + } + + static Cout opCall(char[] str) + { + writefln("%s", str); + return s_c; + } + void newline() + { + + } + } + + class Cin + { + static char[] get() + { + return readln(); + } + } + + public import std.string : atoi; + alias atoi parse; +} diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 00000000..5a2bcf0b --- /dev/null +++ b/Doxyfile @@ -0,0 +1,1550 @@ +# Doxyfile 1.5.8 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = SFML + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, +# Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = include/SFML/ \ + Doxygen.hpp \ + src/SFML/ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = .svn \ + stb_vorbis \ + libjpeg \ + libpng \ + SOIL \ + zlib \ + glew \ + glext \ + Linux \ + Unix \ + Attic \ + OSX* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = priv + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = NO + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .htm + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = header.htm + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = footer.htm + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = doxygen.css + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = YES + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = ../SFML.chm + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = "C:/Program Files/HTML Help Workshop/hhc.exe" + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 1 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = D:/Programmes/mscgen + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Options related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/Doxygen.hpp b/Doxygen.hpp new file mode 100644 index 00000000..33322a0e --- /dev/null +++ b/Doxygen.hpp @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////// +/// \mainpage +/// +/// \section welcome Welcome +/// Welcome to the official SFML documentation. Here you will find a detailed +/// view of all the SFML classes, as well as source +/// files.
+/// If you are looking for tutorials, you can visit the official website +/// at www.sfml-dev.org. +/// +/// \section example Short example +/// Here is a short example, to show you how simple it is to use SFML : +/// +/// \code +/// +/// #include +/// #include +/// +/// int main() +/// { +/// // Create the main window +/// sf::RenderWindow App(sf::VideoMode(800, 600), "SFML window"); +/// +/// // Load a sprite to display +/// sf::Image Image; +/// if (!Image.LoadFromFile("cute_image.jpg")) +/// return EXIT_FAILURE; +/// sf::Sprite Sprite(Image); +/// +/// // Create a graphical string to display +/// sf::Font Arial; +/// if (!Arial.LoadFromFile("arial.ttf")) +/// return EXIT_FAILURE; +/// sf::String Text("Hello SFML", Arial, 50); +/// +/// // Load a music to play +/// sf::Music Music; +/// if (!Music.OpenFromFile("nice_music.ogg")) +/// return EXIT_FAILURE; +/// +/// // Play the music +/// Music.Play(); +/// +/// // Start the game loop +/// while (App.IsOpened()) +/// { +/// // Process events +/// sf::Event Event; +/// while (App.GetEvent(Event)) +/// { +/// // Close window : exit +/// if (Event.Type == sf::Event::Closed) +/// App.Close(); +/// } +/// +/// // Clear screen +/// App.Clear(); +/// +/// // Draw the sprite +/// App.Draw(Sprite); +/// +/// // Draw the string +/// App.Draw(Text); +/// +/// // Update the window +/// App.Display(); +/// } +/// +/// return EXIT_SUCCESS; +/// } +/// \endcode +//////////////////////////////////////////////////////////// diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..1b0f851e --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ + +all: sfml + +sfml: + @(cd ./src/SFML && $(MAKE)) + +sfml-samples: + @(cd ./samples && $(MAKE)) + +install: + @(cd ./src/SFML && $(MAKE) $@) + +clean: + @(cd ./src/SFML && $(MAKE) $@) + @(cd ./samples && $(MAKE) $@) + +mrproper: + @(cd ./src/SFML && $(MAKE) $@) + @(cd ./samples && $(MAKE) $@) diff --git a/build/codeblocks/SFML.workspace b/build/codeblocks/SFML.workspace new file mode 100644 index 00000000..56e3f261 --- /dev/null +++ b/build/codeblocks/SFML.workspace @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/codeblocks/sfml-audio.cbp b/build/codeblocks/sfml-audio.cbp new file mode 100644 index 00000000..b5920b97 --- /dev/null +++ b/build/codeblocks/sfml-audio.cbp @@ -0,0 +1,146 @@ + + + + + + diff --git a/build/codeblocks/sfml-graphics.cbp b/build/codeblocks/sfml-graphics.cbp new file mode 100644 index 00000000..c7ec569b --- /dev/null +++ b/build/codeblocks/sfml-graphics.cbp @@ -0,0 +1,422 @@ + + + + + + diff --git a/build/codeblocks/sfml-main.cbp b/build/codeblocks/sfml-main.cbp new file mode 100644 index 00000000..66781f3a --- /dev/null +++ b/build/codeblocks/sfml-main.cbp @@ -0,0 +1,46 @@ + + + + + + diff --git a/build/codeblocks/sfml-network.cbp b/build/codeblocks/sfml-network.cbp new file mode 100644 index 00000000..d5824de1 --- /dev/null +++ b/build/codeblocks/sfml-network.cbp @@ -0,0 +1,134 @@ + + + + + + diff --git a/build/codeblocks/sfml-system.cbp b/build/codeblocks/sfml-system.cbp new file mode 100644 index 00000000..c6b5f622 --- /dev/null +++ b/build/codeblocks/sfml-system.cbp @@ -0,0 +1,124 @@ + + + + + + diff --git a/build/codeblocks/sfml-window.cbp b/build/codeblocks/sfml-window.cbp new file mode 100644 index 00000000..2af97df1 --- /dev/null +++ b/build/codeblocks/sfml-window.cbp @@ -0,0 +1,140 @@ + + + + + + diff --git a/build/vc2005/SFML.sln b/build/vc2005/SFML.sln new file mode 100644 index 00000000..e55b3af3 --- /dev/null +++ b/build/vc2005/SFML.sln @@ -0,0 +1,363 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-audio", "sfml-audio.vcproj", "{B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-graphics", "sfml-graphics.vcproj", "{FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-main", "sfml-main.vcproj", "{2BD26A09-E1B6-42E2-A0D0-63987B76BB97}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-network", "sfml-network.vcproj", "{823DDC98-42D5-4A38-88CF-9DC06C788AE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-system", "sfml-system.vcproj", "{C061A27D-7CA0-4179-9869-672FA04A86A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-window", "sfml-window.vcproj", "{0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opengl", "..\..\samples\build\vc2005\opengl.vcproj", "{4CD9A872-16EF-4C53-81FC-C7E77E782718}" + ProjectSection(ProjectDependencies) = postProject + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} = {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "postfx", "..\..\samples\build\vc2005\postfx.vcproj", "{E8B7727D-2308-4ADC-90AE-D3F46798447D}" + ProjectSection(ProjectDependencies) = postProject + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} = {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sockets", "..\..\samples\build\vc2005\sockets.vcproj", "{E6ED898F-218E-4467-8B1D-92E393283E1B}" + ProjectSection(ProjectDependencies) = postProject + {823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sound", "..\..\samples\build\vc2005\sound.vcproj", "{11E3764D-850E-4EDA-9823-F66383A11042}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} = {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sound-capture", "..\..\samples\build\vc2005\sound-capture.vcproj", "{34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}" + ProjectSection(ProjectDependencies) = postProject + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} = {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "voip", "..\..\samples\build\vc2005\voip.vcproj", "{4B169017-FFDD-4588-9658-6F1C9ABC6495}" + ProjectSection(ProjectDependencies) = postProject + {823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} = {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win32", "..\..\samples\build\vc2005\win32.vcproj", "{303EC049-639D-4F9C-9F33-D4B7F702275B}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "window", "..\..\samples\build\vc2005\window.vcproj", "{11E9ABEF-17A5-4FF7-91E5-994F34172F68}" + ProjectSection(ProjectDependencies) = postProject + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} = {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxwidgets", "..\..\samples\build\vc2005\wxwidgets.vcproj", "{8B3B274A-B3B7-4C6B-8D4A-5334E2116830}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qt", "..\..\samples\build\vc2005\qt.vcproj", "{EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}" + ProjectSection(ProjectDependencies) = postProject + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pong", "..\..\samples\build\vc2005\pong.vcproj", "{DDDE27DC-5568-43EE-BD0E-57C581F73EDE}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} = {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} = {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SFML", "SFML", "{C6D36691-1669-4189-AAB8-06C9932C2A45}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{3EE136A0-C638-4989-BE5A-E4007221CA28}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ftp", "..\..\samples\build\vc2005\ftp.vcproj", "{7236920B-254C-43A3-9DC1-778B477226DF}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug DLL|Win32 = Debug DLL|Win32 + Debug static|Win32 = Debug static|Win32 + Debug|Win32 = Debug|Win32 + Release DLL|Win32 = Release DLL|Win32 + Release static|Win32 = Release static|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.Build.0 = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.Build.0 = Release static|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug DLL|Win32.Build.0 = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug static|Win32.ActiveCfg = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug static|Win32.Build.0 = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug|Win32.ActiveCfg = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug|Win32.Build.0 = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release DLL|Win32.ActiveCfg = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release DLL|Win32.Build.0 = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release static|Win32.ActiveCfg = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release static|Win32.Build.0 = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release|Win32.ActiveCfg = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release|Win32.Build.0 = Release|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.Build.0 = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.Build.0 = Release static|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Debug DLL|Win32.Build.0 = Debug|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Debug static|Win32.ActiveCfg = Debug|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Debug static|Win32.Build.0 = Debug|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Debug|Win32.ActiveCfg = Debug|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Debug|Win32.Build.0 = Debug|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Release DLL|Win32.ActiveCfg = Release|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Release DLL|Win32.Build.0 = Release|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Release static|Win32.ActiveCfg = Release|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Release static|Win32.Build.0 = Release|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Release|Win32.ActiveCfg = Release|Win32 + {4CD9A872-16EF-4C53-81FC-C7E77E782718}.Release|Win32.Build.0 = Release|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Debug DLL|Win32.Build.0 = Debug|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Debug static|Win32.ActiveCfg = Debug|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Debug static|Win32.Build.0 = Debug|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Debug|Win32.ActiveCfg = Debug|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Debug|Win32.Build.0 = Debug|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Release DLL|Win32.ActiveCfg = Release|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Release DLL|Win32.Build.0 = Release|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Release static|Win32.ActiveCfg = Release|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Release static|Win32.Build.0 = Release|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Release|Win32.ActiveCfg = Release|Win32 + {E8B7727D-2308-4ADC-90AE-D3F46798447D}.Release|Win32.Build.0 = Release|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Debug DLL|Win32.Build.0 = Debug|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Debug static|Win32.ActiveCfg = Debug|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Debug static|Win32.Build.0 = Debug|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Debug|Win32.Build.0 = Debug|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Release DLL|Win32.ActiveCfg = Release|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Release DLL|Win32.Build.0 = Release|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Release static|Win32.ActiveCfg = Release|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Release static|Win32.Build.0 = Release|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Release|Win32.ActiveCfg = Release|Win32 + {E6ED898F-218E-4467-8B1D-92E393283E1B}.Release|Win32.Build.0 = Release|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Debug DLL|Win32.Build.0 = Debug|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Debug static|Win32.ActiveCfg = Debug|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Debug static|Win32.Build.0 = Debug|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Debug|Win32.ActiveCfg = Debug|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Debug|Win32.Build.0 = Debug|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Release DLL|Win32.ActiveCfg = Release|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Release DLL|Win32.Build.0 = Release|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Release static|Win32.ActiveCfg = Release|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Release static|Win32.Build.0 = Release|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Release|Win32.ActiveCfg = Release|Win32 + {11E3764D-850E-4EDA-9823-F66383A11042}.Release|Win32.Build.0 = Release|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Debug DLL|Win32.Build.0 = Debug|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Debug static|Win32.ActiveCfg = Debug|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Debug static|Win32.Build.0 = Debug|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Debug|Win32.ActiveCfg = Debug|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Debug|Win32.Build.0 = Debug|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Release DLL|Win32.ActiveCfg = Release|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Release DLL|Win32.Build.0 = Release|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Release static|Win32.ActiveCfg = Release|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Release static|Win32.Build.0 = Release|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Release|Win32.ActiveCfg = Release|Win32 + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573}.Release|Win32.Build.0 = Release|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Debug DLL|Win32.Build.0 = Debug|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Debug static|Win32.ActiveCfg = Debug|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Debug static|Win32.Build.0 = Debug|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Debug|Win32.ActiveCfg = Debug|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Debug|Win32.Build.0 = Debug|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Release DLL|Win32.ActiveCfg = Release|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Release DLL|Win32.Build.0 = Release|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Release static|Win32.ActiveCfg = Release|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Release static|Win32.Build.0 = Release|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Release|Win32.ActiveCfg = Release|Win32 + {4B169017-FFDD-4588-9658-6F1C9ABC6495}.Release|Win32.Build.0 = Release|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Debug DLL|Win32.Build.0 = Debug|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Debug static|Win32.ActiveCfg = Debug|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Debug static|Win32.Build.0 = Debug|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Debug|Win32.ActiveCfg = Debug|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Debug|Win32.Build.0 = Debug|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Release DLL|Win32.ActiveCfg = Release|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Release DLL|Win32.Build.0 = Release|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Release static|Win32.ActiveCfg = Release|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Release static|Win32.Build.0 = Release|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Release|Win32.ActiveCfg = Release|Win32 + {303EC049-639D-4F9C-9F33-D4B7F702275B}.Release|Win32.Build.0 = Release|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Debug DLL|Win32.Build.0 = Debug|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Debug static|Win32.ActiveCfg = Debug|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Debug static|Win32.Build.0 = Debug|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Debug|Win32.ActiveCfg = Debug|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Debug|Win32.Build.0 = Debug|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Release DLL|Win32.ActiveCfg = Release|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Release DLL|Win32.Build.0 = Release|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Release static|Win32.ActiveCfg = Release|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Release static|Win32.Build.0 = Release|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Release|Win32.ActiveCfg = Release|Win32 + {11E9ABEF-17A5-4FF7-91E5-994F34172F68}.Release|Win32.Build.0 = Release|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Debug DLL|Win32.Build.0 = Debug|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Debug static|Win32.ActiveCfg = Debug|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Debug static|Win32.Build.0 = Debug|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Debug|Win32.Build.0 = Debug|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Release DLL|Win32.ActiveCfg = Release|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Release DLL|Win32.Build.0 = Release|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Release static|Win32.ActiveCfg = Release|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Release static|Win32.Build.0 = Release|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Release|Win32.ActiveCfg = Release|Win32 + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830}.Release|Win32.Build.0 = Release|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Debug DLL|Win32.Build.0 = Debug|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Debug static|Win32.ActiveCfg = Debug|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Debug static|Win32.Build.0 = Debug|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Debug|Win32.Build.0 = Debug|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Release DLL|Win32.ActiveCfg = Release|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Release DLL|Win32.Build.0 = Release|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Release static|Win32.ActiveCfg = Release|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Release static|Win32.Build.0 = Release|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Release|Win32.ActiveCfg = Release|Win32 + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2}.Release|Win32.Build.0 = Release|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Debug DLL|Win32.Build.0 = Debug|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Debug static|Win32.ActiveCfg = Debug|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Debug static|Win32.Build.0 = Debug|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Debug|Win32.ActiveCfg = Debug|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Debug|Win32.Build.0 = Debug|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Release DLL|Win32.ActiveCfg = Release|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Release DLL|Win32.Build.0 = Release|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Release static|Win32.ActiveCfg = Release|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Release static|Win32.Build.0 = Release|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Release|Win32.ActiveCfg = Release|Win32 + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE}.Release|Win32.Build.0 = Release|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Debug DLL|Win32.Build.0 = Debug|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Debug static|Win32.ActiveCfg = Debug|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Debug static|Win32.Build.0 = Debug|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Debug|Win32.Build.0 = Debug|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Release DLL|Win32.ActiveCfg = Release|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Release DLL|Win32.Build.0 = Release|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Release static|Win32.ActiveCfg = Release|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Release static|Win32.Build.0 = Release|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Release|Win32.ActiveCfg = Release|Win32 + {7236920B-254C-43A3-9DC1-778B477226DF}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B} = {C6D36691-1669-4189-AAB8-06C9932C2A45} + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97} = {C6D36691-1669-4189-AAB8-06C9932C2A45} + {823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {C6D36691-1669-4189-AAB8-06C9932C2A45} + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C6D36691-1669-4189-AAB8-06C9932C2A45} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {C6D36691-1669-4189-AAB8-06C9932C2A45} + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2} = {C6D36691-1669-4189-AAB8-06C9932C2A45} + {E8B7727D-2308-4ADC-90AE-D3F46798447D} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {E6ED898F-218E-4467-8B1D-92E393283E1B} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {11E3764D-850E-4EDA-9823-F66383A11042} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {34EBDA13-AFA3-4AD9-AB64-2B2D40E09573} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {4B169017-FFDD-4588-9658-6F1C9ABC6495} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {303EC049-639D-4F9C-9F33-D4B7F702275B} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {11E9ABEF-17A5-4FF7-91E5-994F34172F68} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {8B3B274A-B3B7-4C6B-8D4A-5334E2116830} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {EAB1A0A4-8CCC-4A74-B3B5-9F60243581D2} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {DDDE27DC-5568-43EE-BD0E-57C581F73EDE} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {4CD9A872-16EF-4C53-81FC-C7E77E782718} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + {7236920B-254C-43A3-9DC1-778B477226DF} = {3EE136A0-C638-4989-BE5A-E4007221CA28} + EndGlobalSection +EndGlobal diff --git a/build/vc2005/sfml-audio.vcproj b/build/vc2005/sfml-audio.vcproj new file mode 100644 index 00000000..857d80a4 --- /dev/null +++ b/build/vc2005/sfml-audio.vcproj @@ -0,0 +1,495 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2005/sfml-graphics.vcproj b/build/vc2005/sfml-graphics.vcproj new file mode 100644 index 00000000..3b34601e --- /dev/null +++ b/build/vc2005/sfml-graphics.vcproj @@ -0,0 +1,3456 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2005/sfml-main.vcproj b/build/vc2005/sfml-main.vcproj new file mode 100644 index 00000000..dfeef9be --- /dev/null +++ b/build/vc2005/sfml-main.vcproj @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2005/sfml-network.vcproj b/build/vc2005/sfml-network.vcproj new file mode 100644 index 00000000..9ebc1287 --- /dev/null +++ b/build/vc2005/sfml-network.vcproj @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2005/sfml-system.vcproj b/build/vc2005/sfml-system.vcproj new file mode 100644 index 00000000..fa95ce48 --- /dev/null +++ b/build/vc2005/sfml-system.vcproj @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2005/sfml-window.vcproj b/build/vc2005/sfml-window.vcproj new file mode 100644 index 00000000..a3e7dd28 --- /dev/null +++ b/build/vc2005/sfml-window.vcproj @@ -0,0 +1,518 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2008/SFML.sln b/build/vc2008/SFML.sln new file mode 100644 index 00000000..50d4b35d --- /dev/null +++ b/build/vc2008/SFML.sln @@ -0,0 +1,112 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-audio", "sfml-audio.vcproj", "{B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-graphics", "sfml-graphics.vcproj", "{FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} = {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-main", "sfml-main.vcproj", "{2BD26A09-E1B6-42E2-A0D0-63987B76BB97}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-network", "sfml-network.vcproj", "{823DDC98-42D5-4A38-88CF-9DC06C788AE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-system", "sfml-system.vcproj", "{C061A27D-7CA0-4179-9869-672FA04A86A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfml-window", "sfml-window.vcproj", "{0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}" + ProjectSection(ProjectDependencies) = postProject + {C061A27D-7CA0-4179-9869-672FA04A86A8} = {C061A27D-7CA0-4179-9869-672FA04A86A8} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug DLL|Win32 = Debug DLL|Win32 + Debug static|Win32 = Debug static|Win32 + Debug|Win32 = Debug|Win32 + Release DLL|Win32 = Release DLL|Win32 + Release static|Win32 = Release static|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug static|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.ActiveCfg = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Debug|Win32.Build.0 = Debug static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release static|Win32.Build.0 = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.ActiveCfg = Release static|Win32 + {B1BDA469-E6A7-4AF7-BDF9-EDDD7AD979A2}.Release|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug static|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.ActiveCfg = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Debug|Win32.Build.0 = Debug static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release static|Win32.Build.0 = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.ActiveCfg = Release static|Win32 + {FA4620B1-393A-4719-9BB4-3BC8CAA70C4B}.Release|Win32.Build.0 = Release static|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug DLL|Win32.ActiveCfg = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug DLL|Win32.Build.0 = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug static|Win32.ActiveCfg = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug static|Win32.Build.0 = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug|Win32.ActiveCfg = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Debug|Win32.Build.0 = Debug|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release DLL|Win32.ActiveCfg = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release DLL|Win32.Build.0 = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release static|Win32.ActiveCfg = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release static|Win32.Build.0 = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release|Win32.ActiveCfg = Release|Win32 + {2BD26A09-E1B6-42E2-A0D0-63987B76BB97}.Release|Win32.Build.0 = Release|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug static|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.ActiveCfg = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Debug|Win32.Build.0 = Debug static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release static|Win32.Build.0 = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.ActiveCfg = Release static|Win32 + {823DDC98-42D5-4A38-88CF-9DC06C788AE4}.Release|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug static|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.ActiveCfg = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Debug|Win32.Build.0 = Debug static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release static|Win32.Build.0 = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.ActiveCfg = Release static|Win32 + {C061A27D-7CA0-4179-9869-672FA04A86A8}.Release|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug static|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.ActiveCfg = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Debug|Win32.Build.0 = Debug static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release DLL|Win32.Build.0 = Release DLL|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release static|Win32.Build.0 = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.ActiveCfg = Release static|Win32 + {0F9CE5F0-4D89-4314-9147-8AAB1B8842ED}.Release|Win32.Build.0 = Release static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/vc2008/sfml-audio.vcproj b/build/vc2008/sfml-audio.vcproj new file mode 100644 index 00000000..ffad02ee --- /dev/null +++ b/build/vc2008/sfml-audio.vcproj @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2008/sfml-graphics.vcproj b/build/vc2008/sfml-graphics.vcproj new file mode 100644 index 00000000..24a62a30 --- /dev/null +++ b/build/vc2008/sfml-graphics.vcproj @@ -0,0 +1,3454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2008/sfml-main.vcproj b/build/vc2008/sfml-main.vcproj new file mode 100644 index 00000000..429ccbef --- /dev/null +++ b/build/vc2008/sfml-main.vcproj @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2008/sfml-network.vcproj b/build/vc2008/sfml-network.vcproj new file mode 100644 index 00000000..008d030b --- /dev/null +++ b/build/vc2008/sfml-network.vcproj @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2008/sfml-system.vcproj b/build/vc2008/sfml-system.vcproj new file mode 100644 index 00000000..aa6d8d7d --- /dev/null +++ b/build/vc2008/sfml-system.vcproj @@ -0,0 +1,437 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/vc2008/sfml-window.vcproj b/build/vc2008/sfml-window.vcproj new file mode 100644 index 00000000..43b7c91e --- /dev/null +++ b/build/vc2008/sfml-window.vcproj @@ -0,0 +1,477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/xcode/SFML-Info.plist b/build/xcode/SFML-Info.plist new file mode 100644 index 00000000..4ec0de6f --- /dev/null +++ b/build/xcode/SFML-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + SFML + CFBundleIdentifier + com.sfml.sfml + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/SFML-bare.xcodeproj/project.pbxproj b/build/xcode/SFML-bare.xcodeproj/project.pbxproj new file mode 100644 index 00000000..4cd20dd1 --- /dev/null +++ b/build/xcode/SFML-bare.xcodeproj/project.pbxproj @@ -0,0 +1,1392 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + A0AD0A300E7663E1006E7E0D /* All */ = { + isa = PBXAggregateTarget; + buildConfigurationList = A0AD0A460E766415006E7E0D /* Build configuration list for PBXAggregateTarget "All" */; + buildPhases = ( + ); + dependencies = ( + A0AD0A340E7663F1006E7E0D /* PBXTargetDependency */, + A0AD0A360E7663F1006E7E0D /* PBXTargetDependency */, + A0AD0A380E7663F1006E7E0D /* PBXTargetDependency */, + A0AD0A3A0E7663F1006E7E0D /* PBXTargetDependency */, + A0AD0A3C0E7663F1006E7E0D /* PBXTargetDependency */, + ); + name = All; + productName = All; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + A018A2AF0EA21A2C005FFAC3 /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A018A2AD0EA21A2C005FFAC3 /* Http.cpp */; }; + A018A2B00EA21A2C005FFAC3 /* Ftp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A018A2AE0EA21A2C005FFAC3 /* Ftp.cpp */; }; + A04C5A9D0EDDD88B00935061 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A04C5A940EDDD88B00935061 /* AppController.mm */; }; + A04C5A9E0EDDD88B00935061 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A04C5A950EDDD88B00935061 /* Joystick.cpp */; }; + A04C5A9F0EDDD88B00935061 /* VideoModeSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A04C5A970EDDD88B00935061 /* VideoModeSupport.cpp */; }; + A04C5AA00EDDD88B00935061 /* WindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A04C5A9A0EDDD88B00935061 /* WindowController.mm */; }; + A04C5AA10EDDD88B00935061 /* WindowImplCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A04C5A9C0EDDD88B00935061 /* WindowImplCocoa.mm */; }; + A0660EBA0E89051400D39DEB /* Clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EA90E89051400D39DEB /* Clock.cpp */; }; + A0660EBC0E89051400D39DEB /* Lock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EAB0E89051400D39DEB /* Lock.cpp */; }; + A0660EBD0E89051400D39DEB /* Randomizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EAC0E89051400D39DEB /* Randomizer.cpp */; }; + A0660EBE0E89051400D39DEB /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EAD0E89051400D39DEB /* Unicode.cpp */; }; + A0660EBF0E89051400D39DEB /* Mutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EAF0E89051400D39DEB /* Mutex.cpp */; }; + A0660EC00E89051400D39DEB /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EB00E89051400D39DEB /* Platform.cpp */; }; + A0660EC20E89051400D39DEB /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EB20E89051400D39DEB /* Thread.cpp */; }; + A0660EC40E89051400D39DEB /* Sleep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EB40E89051400D39DEB /* Sleep.cpp */; }; + A0660ED30E89053100D39DEB /* IPAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EC90E89053100D39DEB /* IPAddress.cpp */; }; + A0660ED40E89053100D39DEB /* SelectorBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660ECA0E89053100D39DEB /* SelectorBase.cpp */; }; + A0660ED60E89053100D39DEB /* SocketTCP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660ECC0E89053100D39DEB /* SocketTCP.cpp */; }; + A0660ED70E89053100D39DEB /* SocketHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660ECE0E89053100D39DEB /* SocketHelper.cpp */; }; + A0660ED90E89053100D39DEB /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660ED10E89053100D39DEB /* Packet.cpp */; }; + A0660EDA0E89053100D39DEB /* SocketUDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660ED20E89053100D39DEB /* SocketUDP.cpp */; }; + A0660EF00E89054E00D39DEB /* AudioDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EDB0E89054E00D39DEB /* AudioDevice.cpp */; }; + A0660EF20E89054E00D39DEB /* AudioResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EDD0E89054E00D39DEB /* AudioResource.cpp */; }; + A0660EF30E89054E00D39DEB /* Listener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EDE0E89054E00D39DEB /* Listener.cpp */; }; + A0660EF50E89054E00D39DEB /* Music.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE00E89054E00D39DEB /* Music.cpp */; }; + A0660EF70E89054E00D39DEB /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE20E89054E00D39DEB /* Sound.cpp */; }; + A0660EF80E89054E00D39DEB /* SoundBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE30E89054E00D39DEB /* SoundBuffer.cpp */; }; + A0660EF90E89054E00D39DEB /* SoundBufferRecorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE40E89054E00D39DEB /* SoundBufferRecorder.cpp */; }; + A0660EFA0E89054E00D39DEB /* SoundFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE50E89054E00D39DEB /* SoundFile.cpp */; }; + A0660EFC0E89054E00D39DEB /* SoundFileDefault.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE70E89054E00D39DEB /* SoundFileDefault.cpp */; }; + A0660EFE0E89054E00D39DEB /* SoundFileOgg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EE90E89054E00D39DEB /* SoundFileOgg.cpp */; }; + A0660F000E89054E00D39DEB /* SoundRecorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EEB0E89054E00D39DEB /* SoundRecorder.cpp */; }; + A0660F010E89054E00D39DEB /* SoundStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660EEC0E89054E00D39DEB /* SoundStream.cpp */; }; + A0660F020E89054E00D39DEB /* stb_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660EEE0E89054E00D39DEB /* stb_vorbis.c */; }; + A0660F3A0E89056300D39DEB /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F040E89056300D39DEB /* Context.cpp */; }; + A0660F3E0E89056300D39DEB /* Input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F090E89056300D39DEB /* Input.cpp */; }; + A0660F5F0E89056300D39DEB /* VideoMode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F2E0E89056300D39DEB /* VideoMode.cpp */; }; + A0660F670E89056300D39DEB /* Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F370E89056300D39DEB /* Window.cpp */; }; + A0660F680E89056300D39DEB /* WindowImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F380E89056300D39DEB /* WindowImpl.cpp */; }; + A0660FF10E89058900D39DEB /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F6B0E89058900D39DEB /* Color.cpp */; }; + A0660FF20E89058900D39DEB /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F6C0E89058900D39DEB /* Drawable.cpp */; }; + A0660FF30E89058900D39DEB /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F6D0E89058900D39DEB /* Font.cpp */; }; + A0660FF40E89058900D39DEB /* FontLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F6E0E89058900D39DEB /* FontLoader.cpp */; }; + A0660FF60E89058900D39DEB /* glew.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F710E89058900D39DEB /* glew.c */; }; + A0660FFA0E89058900D39DEB /* GraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F750E89058900D39DEB /* GraphicsContext.cpp */; }; + A0660FFC0E89058900D39DEB /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F770E89058900D39DEB /* Image.cpp */; }; + A0660FFD0E89058900D39DEB /* ImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660F780E89058900D39DEB /* ImageLoader.cpp */; }; + A06610000E89058900D39DEB /* jcapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F7C0E89058900D39DEB /* jcapimin.c */; }; + A06610010E89058900D39DEB /* jcapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F7D0E89058900D39DEB /* jcapistd.c */; }; + A06610020E89058900D39DEB /* jccoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F7E0E89058900D39DEB /* jccoefct.c */; }; + A06610030E89058900D39DEB /* jccolor.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F7F0E89058900D39DEB /* jccolor.c */; }; + A06610040E89058900D39DEB /* jcdctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F800E89058900D39DEB /* jcdctmgr.c */; }; + A06610050E89058900D39DEB /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F810E89058900D39DEB /* jchuff.c */; }; + A06610070E89058900D39DEB /* jcinit.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F830E89058900D39DEB /* jcinit.c */; }; + A06610080E89058900D39DEB /* jcmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F840E89058900D39DEB /* jcmainct.c */; }; + A06610090E89058900D39DEB /* jcmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F850E89058900D39DEB /* jcmarker.c */; }; + A066100A0E89058900D39DEB /* jcmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F860E89058900D39DEB /* jcmaster.c */; }; + A066100B0E89058900D39DEB /* jcomapi.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F870E89058900D39DEB /* jcomapi.c */; }; + A066100D0E89058900D39DEB /* jcparam.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F890E89058900D39DEB /* jcparam.c */; }; + A066100E0E89058900D39DEB /* jcphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F8A0E89058900D39DEB /* jcphuff.c */; }; + A066100F0E89058900D39DEB /* jcprepct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F8B0E89058900D39DEB /* jcprepct.c */; }; + A06610100E89058900D39DEB /* jcsample.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F8C0E89058900D39DEB /* jcsample.c */; }; + A06610110E89058900D39DEB /* jctrans.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F8D0E89058900D39DEB /* jctrans.c */; }; + A06610120E89058900D39DEB /* jdapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F8E0E89058900D39DEB /* jdapimin.c */; }; + A06610130E89058900D39DEB /* jdapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F8F0E89058900D39DEB /* jdapistd.c */; }; + A06610140E89058900D39DEB /* jdatadst.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F900E89058900D39DEB /* jdatadst.c */; }; + A06610150E89058900D39DEB /* jdatasrc.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F910E89058900D39DEB /* jdatasrc.c */; }; + A06610160E89058900D39DEB /* jdcoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F920E89058900D39DEB /* jdcoefct.c */; }; + A06610170E89058900D39DEB /* jdcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F930E89058900D39DEB /* jdcolor.c */; }; + A06610190E89058900D39DEB /* jddctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F950E89058900D39DEB /* jddctmgr.c */; }; + A066101A0E89058900D39DEB /* jdhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F960E89058900D39DEB /* jdhuff.c */; }; + A066101C0E89058900D39DEB /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F980E89058900D39DEB /* jdinput.c */; }; + A066101D0E89058900D39DEB /* jdmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F990E89058900D39DEB /* jdmainct.c */; }; + A066101E0E89058900D39DEB /* jdmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F9A0E89058900D39DEB /* jdmarker.c */; }; + A066101F0E89058900D39DEB /* jdmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F9B0E89058900D39DEB /* jdmaster.c */; }; + A06610200E89058900D39DEB /* jdmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F9C0E89058900D39DEB /* jdmerge.c */; }; + A06610210E89058900D39DEB /* jdphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F9D0E89058900D39DEB /* jdphuff.c */; }; + A06610220E89058900D39DEB /* jdpostct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F9E0E89058900D39DEB /* jdpostct.c */; }; + A06610230E89058900D39DEB /* jdsample.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660F9F0E89058900D39DEB /* jdsample.c */; }; + A06610240E89058900D39DEB /* jdtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA00E89058900D39DEB /* jdtrans.c */; }; + A06610250E89058900D39DEB /* jerror.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA10E89058900D39DEB /* jerror.c */; }; + A06610270E89058900D39DEB /* jfdctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA30E89058900D39DEB /* jfdctflt.c */; }; + A06610280E89058900D39DEB /* jfdctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA40E89058900D39DEB /* jfdctfst.c */; }; + A06610290E89058900D39DEB /* jfdctint.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA50E89058900D39DEB /* jfdctint.c */; }; + A066102A0E89058900D39DEB /* jidctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA60E89058900D39DEB /* jidctflt.c */; }; + A066102B0E89058900D39DEB /* jidctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA70E89058900D39DEB /* jidctfst.c */; }; + A066102C0E89058900D39DEB /* jidctint.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA80E89058900D39DEB /* jidctint.c */; }; + A066102D0E89058900D39DEB /* jidctred.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FA90E89058900D39DEB /* jidctred.c */; }; + A066102F0E89058900D39DEB /* jmemmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FAB0E89058900D39DEB /* jmemmgr.c */; }; + A06610300E89058900D39DEB /* jmemnobs.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FAC0E89058900D39DEB /* jmemnobs.c */; }; + A06610350E89058900D39DEB /* jquant1.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FB10E89058900D39DEB /* jquant1.c */; }; + A06610360E89058900D39DEB /* jquant2.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FB20E89058900D39DEB /* jquant2.c */; }; + A06610370E89058900D39DEB /* jutils.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FB30E89058900D39DEB /* jutils.c */; }; + A06610390E89058900D39DEB /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FB60E89058900D39DEB /* png.c */; }; + A066103C0E89058900D39DEB /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FB90E89058900D39DEB /* pngerror.c */; }; + A066103D0E89058900D39DEB /* pnggccrd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FBA0E89058900D39DEB /* pnggccrd.c */; }; + A066103E0E89058900D39DEB /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FBB0E89058900D39DEB /* pngget.c */; }; + A066103F0E89058900D39DEB /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FBC0E89058900D39DEB /* pngmem.c */; }; + A06610400E89058900D39DEB /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FBD0E89058900D39DEB /* pngpread.c */; }; + A06610410E89058900D39DEB /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FBE0E89058900D39DEB /* pngread.c */; }; + A06610420E89058900D39DEB /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FBF0E89058900D39DEB /* pngrio.c */; }; + A06610430E89058900D39DEB /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC00E89058900D39DEB /* pngrtran.c */; }; + A06610440E89058900D39DEB /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC10E89058900D39DEB /* pngrutil.c */; }; + A06610450E89058900D39DEB /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC20E89058900D39DEB /* pngset.c */; }; + A06610460E89058900D39DEB /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC30E89058900D39DEB /* pngtrans.c */; }; + A06610470E89058900D39DEB /* pngvcrd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC40E89058900D39DEB /* pngvcrd.c */; }; + A06610480E89058900D39DEB /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC50E89058900D39DEB /* pngwio.c */; }; + A06610490E89058900D39DEB /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC60E89058900D39DEB /* pngwrite.c */; }; + A066104A0E89058900D39DEB /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC70E89058900D39DEB /* pngwtran.c */; }; + A066104B0E89058900D39DEB /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FC80E89058900D39DEB /* pngwutil.c */; }; + A066104D0E89058900D39DEB /* Matrix3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FCA0E89058900D39DEB /* Matrix3.cpp */; }; + A066104E0E89058900D39DEB /* PostFX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FCB0E89058900D39DEB /* PostFX.cpp */; }; + A066104F0E89058900D39DEB /* RenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FCC0E89058900D39DEB /* RenderTarget.cpp */; }; + A06610500E89058900D39DEB /* RenderWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FCD0E89058900D39DEB /* RenderWindow.cpp */; }; + A06610510E89058900D39DEB /* Shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FCE0E89058900D39DEB /* Shape.cpp */; }; + A06610520E89058900D39DEB /* image_DXT.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FD00E89058900D39DEB /* image_DXT.c */; }; + A06610540E89058900D39DEB /* SOIL.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FD20E89058900D39DEB /* SOIL.c */; }; + A06610560E89058900D39DEB /* stb_image_aug.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FD40E89058900D39DEB /* stb_image_aug.c */; }; + A066105A0E89058900D39DEB /* Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FD80E89058900D39DEB /* Sprite.cpp */; }; + A066105B0E89058900D39DEB /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FD90E89058900D39DEB /* String.cpp */; }; + A066105C0E89058900D39DEB /* View.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0660FDA0E89058900D39DEB /* View.cpp */; }; + A066105D0E89058900D39DEB /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FDC0E89058900D39DEB /* adler32.c */; }; + A066105E0E89058900D39DEB /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FDD0E89058900D39DEB /* compress.c */; }; + A066105F0E89058900D39DEB /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FDE0E89058900D39DEB /* crc32.c */; }; + A06610610E89058900D39DEB /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FE00E89058900D39DEB /* deflate.c */; }; + A06610630E89058900D39DEB /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FE20E89058900D39DEB /* inffast.c */; }; + A06610660E89058900D39DEB /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FE50E89058900D39DEB /* inflate.c */; }; + A06610680E89058900D39DEB /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FE70E89058900D39DEB /* inftrees.c */; }; + A066106A0E89058900D39DEB /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FE90E89058900D39DEB /* trees.c */; }; + A066106C0E89058900D39DEB /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FEB0E89058900D39DEB /* uncompr.c */; }; + A066106F0E89058900D39DEB /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A0660FEE0E89058900D39DEB /* zutil.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + A0AD0A330E7663F1006E7E0D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A01269590E63189C00B96A5D /* Project object */; + proxyType = 1; + remoteGlobalIDString = A01269650E6318C000B96A5D; + remoteInfo = "sfml-system"; + }; + A0AD0A350E7663F1006E7E0D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A01269590E63189C00B96A5D /* Project object */; + proxyType = 1; + remoteGlobalIDString = A012696E0E6318FE00B96A5D; + remoteInfo = "sfml-network"; + }; + A0AD0A370E7663F1006E7E0D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A01269590E63189C00B96A5D /* Project object */; + proxyType = 1; + remoteGlobalIDString = A01269750E63190F00B96A5D; + remoteInfo = "sfml-audio"; + }; + A0AD0A390E7663F1006E7E0D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A01269590E63189C00B96A5D /* Project object */; + proxyType = 1; + remoteGlobalIDString = A012697C0E63192000B96A5D; + remoteInfo = "sfml-window"; + }; + A0AD0A3B0E7663F1006E7E0D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A01269590E63189C00B96A5D /* Project object */; + proxyType = 1; + remoteGlobalIDString = A01269830E63192B00B96A5D; + remoteInfo = "sfml-graphics"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + A01269660E6318C000B96A5D /* libsfml-system.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "libsfml-system.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; + A012696F0E6318FE00B96A5D /* libsfml-network.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "libsfml-network.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; + A01269760E63190F00B96A5D /* libsfml-audio.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "libsfml-audio.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; + A012697D0E63192000B96A5D /* libsfml-window.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "libsfml-window.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; + A01269840E63192B00B96A5D /* libsfml-graphics.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "libsfml-graphics.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; + A018A2AD0EA21A2C005FFAC3 /* Http.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Http.cpp; path = ../../src/SFML/Network/Http.cpp; sourceTree = SOURCE_ROOT; }; + A018A2AE0EA21A2C005FFAC3 /* Ftp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Ftp.cpp; path = ../../src/SFML/Network/Ftp.cpp; sourceTree = SOURCE_ROOT; }; + A04C5A930EDDD88B00935061 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppController.h; path = ../../src/SFML/Window/Cocoa/AppController.h; sourceTree = SOURCE_ROOT; }; + A04C5A940EDDD88B00935061 /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = AppController.mm; path = ../../src/SFML/Window/Cocoa/AppController.mm; sourceTree = SOURCE_ROOT; }; + A04C5A950EDDD88B00935061 /* Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Joystick.cpp; path = ../../src/SFML/Window/Cocoa/Joystick.cpp; sourceTree = SOURCE_ROOT; }; + A04C5A960EDDD88B00935061 /* Joystick.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Joystick.hpp; path = ../../src/SFML/Window/Cocoa/Joystick.hpp; sourceTree = SOURCE_ROOT; }; + A04C5A970EDDD88B00935061 /* VideoModeSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoModeSupport.cpp; path = ../../src/SFML/Window/Cocoa/VideoModeSupport.cpp; sourceTree = SOURCE_ROOT; }; + A04C5A980EDDD88B00935061 /* VideoModeSupport.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = VideoModeSupport.hpp; path = ../../src/SFML/Window/Cocoa/VideoModeSupport.hpp; sourceTree = SOURCE_ROOT; }; + A04C5A990EDDD88B00935061 /* WindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = WindowController.h; path = ../../src/SFML/Window/Cocoa/WindowController.h; sourceTree = SOURCE_ROOT; }; + A04C5A9A0EDDD88B00935061 /* WindowController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = WindowController.mm; path = ../../src/SFML/Window/Cocoa/WindowController.mm; sourceTree = SOURCE_ROOT; }; + A04C5A9B0EDDD88B00935061 /* WindowImplCocoa.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowImplCocoa.hpp; path = ../../src/SFML/Window/Cocoa/WindowImplCocoa.hpp; sourceTree = SOURCE_ROOT; }; + A04C5A9C0EDDD88B00935061 /* WindowImplCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = WindowImplCocoa.mm; path = ../../src/SFML/Window/Cocoa/WindowImplCocoa.mm; sourceTree = SOURCE_ROOT; }; + A0660EA90E89051400D39DEB /* Clock.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Clock.cpp; path = ../../src/SFML/System/Clock.cpp; sourceTree = SOURCE_ROOT; }; + A0660EAA0E89051400D39DEB /* Platform.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Platform.hpp; path = ../../src/SFML/System/Platform.hpp; sourceTree = SOURCE_ROOT; }; + A0660EAB0E89051400D39DEB /* Lock.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Lock.cpp; path = ../../src/SFML/System/Lock.cpp; sourceTree = SOURCE_ROOT; }; + A0660EAC0E89051400D39DEB /* Randomizer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Randomizer.cpp; path = ../../src/SFML/System/Randomizer.cpp; sourceTree = SOURCE_ROOT; }; + A0660EAD0E89051400D39DEB /* Unicode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Unicode.cpp; path = ../../src/SFML/System/Unicode.cpp; sourceTree = SOURCE_ROOT; }; + A0660EAF0E89051400D39DEB /* Mutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Mutex.cpp; path = ../../src/SFML/System/Unix/Mutex.cpp; sourceTree = SOURCE_ROOT; }; + A0660EB00E89051400D39DEB /* Platform.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Platform.cpp; path = ../../src/SFML/System/Unix/Platform.cpp; sourceTree = SOURCE_ROOT; }; + A0660EB10E89051400D39DEB /* Platform.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Platform.hpp; path = ../../src/SFML/System/Unix/Platform.hpp; sourceTree = SOURCE_ROOT; }; + A0660EB20E89051400D39DEB /* Thread.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Thread.cpp; path = ../../src/SFML/System/Unix/Thread.cpp; sourceTree = SOURCE_ROOT; }; + A0660EB40E89051400D39DEB /* Sleep.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Sleep.cpp; path = ../../src/SFML/System/Sleep.cpp; sourceTree = SOURCE_ROOT; }; + A0660EC90E89053100D39DEB /* IPAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = IPAddress.cpp; path = ../../src/SFML/Network/IPAddress.cpp; sourceTree = SOURCE_ROOT; }; + A0660ECA0E89053100D39DEB /* SelectorBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SelectorBase.cpp; path = ../../src/SFML/Network/SelectorBase.cpp; sourceTree = SOURCE_ROOT; }; + A0660ECC0E89053100D39DEB /* SocketTCP.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SocketTCP.cpp; path = ../../src/SFML/Network/SocketTCP.cpp; sourceTree = SOURCE_ROOT; }; + A0660ECE0E89053100D39DEB /* SocketHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SocketHelper.cpp; path = ../../src/SFML/Network/Unix/SocketHelper.cpp; sourceTree = SOURCE_ROOT; }; + A0660ED10E89053100D39DEB /* Packet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Packet.cpp; path = ../../src/SFML/Network/Packet.cpp; sourceTree = SOURCE_ROOT; }; + A0660ED20E89053100D39DEB /* SocketUDP.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SocketUDP.cpp; path = ../../src/SFML/Network/SocketUDP.cpp; sourceTree = SOURCE_ROOT; }; + A0660EDB0E89054E00D39DEB /* AudioDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDevice.cpp; path = ../../src/SFML/Audio/AudioDevice.cpp; sourceTree = SOURCE_ROOT; }; + A0660EDC0E89054E00D39DEB /* AudioDevice.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = AudioDevice.hpp; path = ../../src/SFML/Audio/AudioDevice.hpp; sourceTree = SOURCE_ROOT; }; + A0660EDD0E89054E00D39DEB /* AudioResource.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AudioResource.cpp; path = ../../src/SFML/Audio/AudioResource.cpp; sourceTree = SOURCE_ROOT; }; + A0660EDE0E89054E00D39DEB /* Listener.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Listener.cpp; path = ../../src/SFML/Audio/Listener.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE00E89054E00D39DEB /* Music.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Music.cpp; path = ../../src/SFML/Audio/Music.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE10E89054E00D39DEB /* OpenAL.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = OpenAL.hpp; path = ../../src/SFML/Audio/OpenAL.hpp; sourceTree = SOURCE_ROOT; }; + A0660EE20E89054E00D39DEB /* Sound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Sound.cpp; path = ../../src/SFML/Audio/Sound.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE30E89054E00D39DEB /* SoundBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundBuffer.cpp; path = ../../src/SFML/Audio/SoundBuffer.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE40E89054E00D39DEB /* SoundBufferRecorder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundBufferRecorder.cpp; path = ../../src/SFML/Audio/SoundBufferRecorder.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE50E89054E00D39DEB /* SoundFile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundFile.cpp; path = ../../src/SFML/Audio/SoundFile.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE60E89054E00D39DEB /* SoundFile.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundFile.hpp; path = ../../src/SFML/Audio/SoundFile.hpp; sourceTree = SOURCE_ROOT; }; + A0660EE70E89054E00D39DEB /* SoundFileDefault.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundFileDefault.cpp; path = ../../src/SFML/Audio/SoundFileDefault.cpp; sourceTree = SOURCE_ROOT; }; + A0660EE80E89054E00D39DEB /* SoundFileDefault.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundFileDefault.hpp; path = ../../src/SFML/Audio/SoundFileDefault.hpp; sourceTree = SOURCE_ROOT; }; + A0660EE90E89054E00D39DEB /* SoundFileOgg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundFileOgg.cpp; path = ../../src/SFML/Audio/SoundFileOgg.cpp; sourceTree = SOURCE_ROOT; }; + A0660EEA0E89054E00D39DEB /* SoundFileOgg.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundFileOgg.hpp; path = ../../src/SFML/Audio/SoundFileOgg.hpp; sourceTree = SOURCE_ROOT; }; + A0660EEB0E89054E00D39DEB /* SoundRecorder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundRecorder.cpp; path = ../../src/SFML/Audio/SoundRecorder.cpp; sourceTree = SOURCE_ROOT; }; + A0660EEC0E89054E00D39DEB /* SoundStream.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundStream.cpp; path = ../../src/SFML/Audio/SoundStream.cpp; sourceTree = SOURCE_ROOT; }; + A0660EEE0E89054E00D39DEB /* stb_vorbis.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stb_vorbis.c; path = ../../src/SFML/Audio/stb_vorbis/stb_vorbis.c; sourceTree = SOURCE_ROOT; }; + A0660EEF0E89054E00D39DEB /* stb_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stb_vorbis.h; path = ../../src/SFML/Audio/stb_vorbis/stb_vorbis.h; sourceTree = SOURCE_ROOT; }; + A0660F040E89056300D39DEB /* Context.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Context.cpp; path = ../../src/SFML/Window/Context.cpp; sourceTree = SOURCE_ROOT; }; + A0660F090E89056300D39DEB /* Input.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Input.cpp; path = ../../src/SFML/Window/Input.cpp; sourceTree = SOURCE_ROOT; }; + A0660F0A0E89056300D39DEB /* Joystick.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Joystick.hpp; path = ../../src/SFML/Window/Joystick.hpp; sourceTree = SOURCE_ROOT; }; + A0660F2E0E89056300D39DEB /* VideoMode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoMode.cpp; path = ../../src/SFML/Window/VideoMode.cpp; sourceTree = SOURCE_ROOT; }; + A0660F2F0E89056300D39DEB /* VideoModeSupport.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = VideoModeSupport.hpp; path = ../../src/SFML/Window/VideoModeSupport.hpp; sourceTree = SOURCE_ROOT; }; + A0660F370E89056300D39DEB /* Window.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Window.cpp; path = ../../src/SFML/Window/Window.cpp; sourceTree = SOURCE_ROOT; }; + A0660F380E89056300D39DEB /* WindowImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = WindowImpl.cpp; path = ../../src/SFML/Window/WindowImpl.cpp; sourceTree = SOURCE_ROOT; }; + A0660F390E89056300D39DEB /* WindowImpl.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowImpl.hpp; path = ../../src/SFML/Window/WindowImpl.hpp; sourceTree = SOURCE_ROOT; }; + A0660F6A0E89058900D39DEB /* Arial.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Arial.hpp; path = ../../src/SFML/Graphics/Arial.hpp; sourceTree = SOURCE_ROOT; }; + A0660F6B0E89058900D39DEB /* Color.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Color.cpp; path = ../../src/SFML/Graphics/Color.cpp; sourceTree = SOURCE_ROOT; }; + A0660F6C0E89058900D39DEB /* Drawable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Drawable.cpp; path = ../../src/SFML/Graphics/Drawable.cpp; sourceTree = SOURCE_ROOT; }; + A0660F6D0E89058900D39DEB /* Font.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Font.cpp; path = ../../src/SFML/Graphics/Font.cpp; sourceTree = SOURCE_ROOT; }; + A0660F6E0E89058900D39DEB /* FontLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = FontLoader.cpp; path = ../../src/SFML/Graphics/FontLoader.cpp; sourceTree = SOURCE_ROOT; }; + A0660F6F0E89058900D39DEB /* FontLoader.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = FontLoader.hpp; path = ../../src/SFML/Graphics/FontLoader.hpp; sourceTree = SOURCE_ROOT; }; + A0660F710E89058900D39DEB /* glew.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = glew.c; path = ../../src/SFML/Graphics/GLEW/glew.c; sourceTree = SOURCE_ROOT; }; + A0660F720E89058900D39DEB /* glew.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = glew.h; path = ../../src/SFML/Graphics/GLEW/glew.h; sourceTree = SOURCE_ROOT; }; + A0660F730E89058900D39DEB /* glxew.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = glxew.h; path = ../../src/SFML/Graphics/GLEW/glxew.h; sourceTree = SOURCE_ROOT; }; + A0660F740E89058900D39DEB /* wglew.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = wglew.h; path = ../../src/SFML/Graphics/GLEW/wglew.h; sourceTree = SOURCE_ROOT; }; + A0660F750E89058900D39DEB /* GraphicsContext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GraphicsContext.cpp; path = ../../src/SFML/Graphics/GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; + A0660F760E89058900D39DEB /* GraphicsContext.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = GraphicsContext.hpp; path = ../../src/SFML/Graphics/GraphicsContext.hpp; sourceTree = SOURCE_ROOT; }; + A0660F770E89058900D39DEB /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Image.cpp; path = ../../src/SFML/Graphics/Image.cpp; sourceTree = SOURCE_ROOT; }; + A0660F780E89058900D39DEB /* ImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ImageLoader.cpp; path = ../../src/SFML/Graphics/ImageLoader.cpp; sourceTree = SOURCE_ROOT; }; + A0660F790E89058900D39DEB /* ImageLoader.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ImageLoader.hpp; path = ../../src/SFML/Graphics/ImageLoader.hpp; sourceTree = SOURCE_ROOT; }; + A0660F7B0E89058900D39DEB /* cderror.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cderror.h; path = ../../src/SFML/Graphics/libjpeg/cderror.h; sourceTree = SOURCE_ROOT; }; + A0660F7C0E89058900D39DEB /* jcapimin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = ../../src/SFML/Graphics/libjpeg/jcapimin.c; sourceTree = SOURCE_ROOT; }; + A0660F7D0E89058900D39DEB /* jcapistd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = ../../src/SFML/Graphics/libjpeg/jcapistd.c; sourceTree = SOURCE_ROOT; }; + A0660F7E0E89058900D39DEB /* jccoefct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jccoefct.c; path = ../../src/SFML/Graphics/libjpeg/jccoefct.c; sourceTree = SOURCE_ROOT; }; + A0660F7F0E89058900D39DEB /* jccolor.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = ../../src/SFML/Graphics/libjpeg/jccolor.c; sourceTree = SOURCE_ROOT; }; + A0660F800E89058900D39DEB /* jcdctmgr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcdctmgr.c; path = ../../src/SFML/Graphics/libjpeg/jcdctmgr.c; sourceTree = SOURCE_ROOT; }; + A0660F810E89058900D39DEB /* jchuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = ../../src/SFML/Graphics/libjpeg/jchuff.c; sourceTree = SOURCE_ROOT; }; + A0660F820E89058900D39DEB /* jchuff.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jchuff.h; path = ../../src/SFML/Graphics/libjpeg/jchuff.h; sourceTree = SOURCE_ROOT; }; + A0660F830E89058900D39DEB /* jcinit.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcinit.c; path = ../../src/SFML/Graphics/libjpeg/jcinit.c; sourceTree = SOURCE_ROOT; }; + A0660F840E89058900D39DEB /* jcmainct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcmainct.c; path = ../../src/SFML/Graphics/libjpeg/jcmainct.c; sourceTree = SOURCE_ROOT; }; + A0660F850E89058900D39DEB /* jcmarker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcmarker.c; path = ../../src/SFML/Graphics/libjpeg/jcmarker.c; sourceTree = SOURCE_ROOT; }; + A0660F860E89058900D39DEB /* jcmaster.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcmaster.c; path = ../../src/SFML/Graphics/libjpeg/jcmaster.c; sourceTree = SOURCE_ROOT; }; + A0660F870E89058900D39DEB /* jcomapi.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = ../../src/SFML/Graphics/libjpeg/jcomapi.c; sourceTree = SOURCE_ROOT; }; + A0660F880E89058900D39DEB /* jconfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jconfig.h; path = ../../src/SFML/Graphics/libjpeg/jconfig.h; sourceTree = SOURCE_ROOT; }; + A0660F890E89058900D39DEB /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = ../../src/SFML/Graphics/libjpeg/jcparam.c; sourceTree = SOURCE_ROOT; }; + A0660F8A0E89058900D39DEB /* jcphuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = ../../src/SFML/Graphics/libjpeg/jcphuff.c; sourceTree = SOURCE_ROOT; }; + A0660F8B0E89058900D39DEB /* jcprepct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = ../../src/SFML/Graphics/libjpeg/jcprepct.c; sourceTree = SOURCE_ROOT; }; + A0660F8C0E89058900D39DEB /* jcsample.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = ../../src/SFML/Graphics/libjpeg/jcsample.c; sourceTree = SOURCE_ROOT; }; + A0660F8D0E89058900D39DEB /* jctrans.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = ../../src/SFML/Graphics/libjpeg/jctrans.c; sourceTree = SOURCE_ROOT; }; + A0660F8E0E89058900D39DEB /* jdapimin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = ../../src/SFML/Graphics/libjpeg/jdapimin.c; sourceTree = SOURCE_ROOT; }; + A0660F8F0E89058900D39DEB /* jdapistd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdapistd.c; path = ../../src/SFML/Graphics/libjpeg/jdapistd.c; sourceTree = SOURCE_ROOT; }; + A0660F900E89058900D39DEB /* jdatadst.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdatadst.c; path = ../../src/SFML/Graphics/libjpeg/jdatadst.c; sourceTree = SOURCE_ROOT; }; + A0660F910E89058900D39DEB /* jdatasrc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = ../../src/SFML/Graphics/libjpeg/jdatasrc.c; sourceTree = SOURCE_ROOT; }; + A0660F920E89058900D39DEB /* jdcoefct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = ../../src/SFML/Graphics/libjpeg/jdcoefct.c; sourceTree = SOURCE_ROOT; }; + A0660F930E89058900D39DEB /* jdcolor.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdcolor.c; path = ../../src/SFML/Graphics/libjpeg/jdcolor.c; sourceTree = SOURCE_ROOT; }; + A0660F940E89058900D39DEB /* jdct.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jdct.h; path = ../../src/SFML/Graphics/libjpeg/jdct.h; sourceTree = SOURCE_ROOT; }; + A0660F950E89058900D39DEB /* jddctmgr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = ../../src/SFML/Graphics/libjpeg/jddctmgr.c; sourceTree = SOURCE_ROOT; }; + A0660F960E89058900D39DEB /* jdhuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = ../../src/SFML/Graphics/libjpeg/jdhuff.c; sourceTree = SOURCE_ROOT; }; + A0660F970E89058900D39DEB /* jdhuff.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jdhuff.h; path = ../../src/SFML/Graphics/libjpeg/jdhuff.h; sourceTree = SOURCE_ROOT; }; + A0660F980E89058900D39DEB /* jdinput.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdinput.c; path = ../../src/SFML/Graphics/libjpeg/jdinput.c; sourceTree = SOURCE_ROOT; }; + A0660F990E89058900D39DEB /* jdmainct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmainct.c; path = ../../src/SFML/Graphics/libjpeg/jdmainct.c; sourceTree = SOURCE_ROOT; }; + A0660F9A0E89058900D39DEB /* jdmarker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmarker.c; path = ../../src/SFML/Graphics/libjpeg/jdmarker.c; sourceTree = SOURCE_ROOT; }; + A0660F9B0E89058900D39DEB /* jdmaster.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmaster.c; path = ../../src/SFML/Graphics/libjpeg/jdmaster.c; sourceTree = SOURCE_ROOT; }; + A0660F9C0E89058900D39DEB /* jdmerge.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmerge.c; path = ../../src/SFML/Graphics/libjpeg/jdmerge.c; sourceTree = SOURCE_ROOT; }; + A0660F9D0E89058900D39DEB /* jdphuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdphuff.c; path = ../../src/SFML/Graphics/libjpeg/jdphuff.c; sourceTree = SOURCE_ROOT; }; + A0660F9E0E89058900D39DEB /* jdpostct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = ../../src/SFML/Graphics/libjpeg/jdpostct.c; sourceTree = SOURCE_ROOT; }; + A0660F9F0E89058900D39DEB /* jdsample.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdsample.c; path = ../../src/SFML/Graphics/libjpeg/jdsample.c; sourceTree = SOURCE_ROOT; }; + A0660FA00E89058900D39DEB /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdtrans.c; path = ../../src/SFML/Graphics/libjpeg/jdtrans.c; sourceTree = SOURCE_ROOT; }; + A0660FA10E89058900D39DEB /* jerror.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jerror.c; path = ../../src/SFML/Graphics/libjpeg/jerror.c; sourceTree = SOURCE_ROOT; }; + A0660FA20E89058900D39DEB /* jerror.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = ../../src/SFML/Graphics/libjpeg/jerror.h; sourceTree = SOURCE_ROOT; }; + A0660FA30E89058900D39DEB /* jfdctflt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jfdctflt.c; path = ../../src/SFML/Graphics/libjpeg/jfdctflt.c; sourceTree = SOURCE_ROOT; }; + A0660FA40E89058900D39DEB /* jfdctfst.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jfdctfst.c; path = ../../src/SFML/Graphics/libjpeg/jfdctfst.c; sourceTree = SOURCE_ROOT; }; + A0660FA50E89058900D39DEB /* jfdctint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jfdctint.c; path = ../../src/SFML/Graphics/libjpeg/jfdctint.c; sourceTree = SOURCE_ROOT; }; + A0660FA60E89058900D39DEB /* jidctflt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = ../../src/SFML/Graphics/libjpeg/jidctflt.c; sourceTree = SOURCE_ROOT; }; + A0660FA70E89058900D39DEB /* jidctfst.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = ../../src/SFML/Graphics/libjpeg/jidctfst.c; sourceTree = SOURCE_ROOT; }; + A0660FA80E89058900D39DEB /* jidctint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctint.c; path = ../../src/SFML/Graphics/libjpeg/jidctint.c; sourceTree = SOURCE_ROOT; }; + A0660FA90E89058900D39DEB /* jidctred.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctred.c; path = ../../src/SFML/Graphics/libjpeg/jidctred.c; sourceTree = SOURCE_ROOT; }; + A0660FAA0E89058900D39DEB /* jinclude.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jinclude.h; path = ../../src/SFML/Graphics/libjpeg/jinclude.h; sourceTree = SOURCE_ROOT; }; + A0660FAB0E89058900D39DEB /* jmemmgr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jmemmgr.c; path = ../../src/SFML/Graphics/libjpeg/jmemmgr.c; sourceTree = SOURCE_ROOT; }; + A0660FAC0E89058900D39DEB /* jmemnobs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jmemnobs.c; path = ../../src/SFML/Graphics/libjpeg/jmemnobs.c; sourceTree = SOURCE_ROOT; }; + A0660FAD0E89058900D39DEB /* jmemsys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jmemsys.h; path = ../../src/SFML/Graphics/libjpeg/jmemsys.h; sourceTree = SOURCE_ROOT; }; + A0660FAE0E89058900D39DEB /* jmorecfg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jmorecfg.h; path = ../../src/SFML/Graphics/libjpeg/jmorecfg.h; sourceTree = SOURCE_ROOT; }; + A0660FAF0E89058900D39DEB /* jpegint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jpegint.h; path = ../../src/SFML/Graphics/libjpeg/jpegint.h; sourceTree = SOURCE_ROOT; }; + A0660FB00E89058900D39DEB /* jpeglib.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jpeglib.h; path = ../../src/SFML/Graphics/libjpeg/jpeglib.h; sourceTree = SOURCE_ROOT; }; + A0660FB10E89058900D39DEB /* jquant1.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jquant1.c; path = ../../src/SFML/Graphics/libjpeg/jquant1.c; sourceTree = SOURCE_ROOT; }; + A0660FB20E89058900D39DEB /* jquant2.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = ../../src/SFML/Graphics/libjpeg/jquant2.c; sourceTree = SOURCE_ROOT; }; + A0660FB30E89058900D39DEB /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = ../../src/SFML/Graphics/libjpeg/jutils.c; sourceTree = SOURCE_ROOT; }; + A0660FB40E89058900D39DEB /* jversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jversion.h; path = ../../src/SFML/Graphics/libjpeg/jversion.h; sourceTree = SOURCE_ROOT; }; + A0660FB60E89058900D39DEB /* png.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../../src/SFML/Graphics/libpng/png.c; sourceTree = SOURCE_ROOT; }; + A0660FB70E89058900D39DEB /* png.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = png.h; path = ../../src/SFML/Graphics/libpng/png.h; sourceTree = SOURCE_ROOT; }; + A0660FB80E89058900D39DEB /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = ../../src/SFML/Graphics/libpng/pngconf.h; sourceTree = SOURCE_ROOT; }; + A0660FB90E89058900D39DEB /* pngerror.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngerror.c; path = ../../src/SFML/Graphics/libpng/pngerror.c; sourceTree = SOURCE_ROOT; }; + A0660FBA0E89058900D39DEB /* pnggccrd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pnggccrd.c; path = ../../src/SFML/Graphics/libpng/pnggccrd.c; sourceTree = SOURCE_ROOT; }; + A0660FBB0E89058900D39DEB /* pngget.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = ../../src/SFML/Graphics/libpng/pngget.c; sourceTree = SOURCE_ROOT; }; + A0660FBC0E89058900D39DEB /* pngmem.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngmem.c; path = ../../src/SFML/Graphics/libpng/pngmem.c; sourceTree = SOURCE_ROOT; }; + A0660FBD0E89058900D39DEB /* pngpread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = ../../src/SFML/Graphics/libpng/pngpread.c; sourceTree = SOURCE_ROOT; }; + A0660FBE0E89058900D39DEB /* pngread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngread.c; path = ../../src/SFML/Graphics/libpng/pngread.c; sourceTree = SOURCE_ROOT; }; + A0660FBF0E89058900D39DEB /* pngrio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = ../../src/SFML/Graphics/libpng/pngrio.c; sourceTree = SOURCE_ROOT; }; + A0660FC00E89058900D39DEB /* pngrtran.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngrtran.c; path = ../../src/SFML/Graphics/libpng/pngrtran.c; sourceTree = SOURCE_ROOT; }; + A0660FC10E89058900D39DEB /* pngrutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = ../../src/SFML/Graphics/libpng/pngrutil.c; sourceTree = SOURCE_ROOT; }; + A0660FC20E89058900D39DEB /* pngset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngset.c; path = ../../src/SFML/Graphics/libpng/pngset.c; sourceTree = SOURCE_ROOT; }; + A0660FC30E89058900D39DEB /* pngtrans.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = ../../src/SFML/Graphics/libpng/pngtrans.c; sourceTree = SOURCE_ROOT; }; + A0660FC40E89058900D39DEB /* pngvcrd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngvcrd.c; path = ../../src/SFML/Graphics/libpng/pngvcrd.c; sourceTree = SOURCE_ROOT; }; + A0660FC50E89058900D39DEB /* pngwio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = ../../src/SFML/Graphics/libpng/pngwio.c; sourceTree = SOURCE_ROOT; }; + A0660FC60E89058900D39DEB /* pngwrite.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwrite.c; path = ../../src/SFML/Graphics/libpng/pngwrite.c; sourceTree = SOURCE_ROOT; }; + A0660FC70E89058900D39DEB /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../src/SFML/Graphics/libpng/pngwtran.c; sourceTree = SOURCE_ROOT; }; + A0660FC80E89058900D39DEB /* pngwutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwutil.c; path = ../../src/SFML/Graphics/libpng/pngwutil.c; sourceTree = SOURCE_ROOT; }; + A0660FCA0E89058900D39DEB /* Matrix3.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Matrix3.cpp; path = ../../src/SFML/Graphics/Matrix3.cpp; sourceTree = SOURCE_ROOT; }; + A0660FCB0E89058900D39DEB /* PostFX.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = PostFX.cpp; path = ../../src/SFML/Graphics/PostFX.cpp; sourceTree = SOURCE_ROOT; }; + A0660FCC0E89058900D39DEB /* RenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = RenderTarget.cpp; path = ../../src/SFML/Graphics/RenderTarget.cpp; sourceTree = SOURCE_ROOT; }; + A0660FCD0E89058900D39DEB /* RenderWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = RenderWindow.cpp; path = ../../src/SFML/Graphics/RenderWindow.cpp; sourceTree = SOURCE_ROOT; }; + A0660FCE0E89058900D39DEB /* Shape.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Shape.cpp; path = ../../src/SFML/Graphics/Shape.cpp; sourceTree = SOURCE_ROOT; }; + A0660FD00E89058900D39DEB /* image_DXT.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = image_DXT.c; path = ../../src/SFML/Graphics/SOIL/image_DXT.c; sourceTree = SOURCE_ROOT; }; + A0660FD10E89058900D39DEB /* image_DXT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = image_DXT.h; path = ../../src/SFML/Graphics/SOIL/image_DXT.h; sourceTree = SOURCE_ROOT; }; + A0660FD20E89058900D39DEB /* SOIL.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = SOIL.c; path = ../../src/SFML/Graphics/SOIL/SOIL.c; sourceTree = SOURCE_ROOT; }; + A0660FD30E89058900D39DEB /* SOIL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SOIL.h; path = ../../src/SFML/Graphics/SOIL/SOIL.h; sourceTree = SOURCE_ROOT; }; + A0660FD40E89058900D39DEB /* stb_image_aug.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stb_image_aug.c; path = ../../src/SFML/Graphics/SOIL/stb_image_aug.c; sourceTree = SOURCE_ROOT; }; + A0660FD50E89058900D39DEB /* stb_image_aug.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stb_image_aug.h; path = ../../src/SFML/Graphics/SOIL/stb_image_aug.h; sourceTree = SOURCE_ROOT; }; + A0660FD60E89058900D39DEB /* stbi_DDS_aug.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stbi_DDS_aug.h; path = ../../src/SFML/Graphics/SOIL/stbi_DDS_aug.h; sourceTree = SOURCE_ROOT; }; + A0660FD70E89058900D39DEB /* stbi_DDS_aug_c.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stbi_DDS_aug_c.h; path = ../../src/SFML/Graphics/SOIL/stbi_DDS_aug_c.h; sourceTree = SOURCE_ROOT; }; + A0660FD80E89058900D39DEB /* Sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Sprite.cpp; path = ../../src/SFML/Graphics/Sprite.cpp; sourceTree = SOURCE_ROOT; }; + A0660FD90E89058900D39DEB /* String.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = String.cpp; path = ../../src/SFML/Graphics/String.cpp; sourceTree = SOURCE_ROOT; }; + A0660FDA0E89058900D39DEB /* View.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = View.cpp; path = ../../src/SFML/Graphics/View.cpp; sourceTree = SOURCE_ROOT; }; + A0660FDC0E89058900D39DEB /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = ../../src/SFML/Graphics/zlib/adler32.c; sourceTree = SOURCE_ROOT; }; + A0660FDD0E89058900D39DEB /* compress.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = compress.c; path = ../../src/SFML/Graphics/zlib/compress.c; sourceTree = SOURCE_ROOT; }; + A0660FDE0E89058900D39DEB /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = ../../src/SFML/Graphics/zlib/crc32.c; sourceTree = SOURCE_ROOT; }; + A0660FDF0E89058900D39DEB /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = crc32.h; path = ../../src/SFML/Graphics/zlib/crc32.h; sourceTree = SOURCE_ROOT; }; + A0660FE00E89058900D39DEB /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = ../../src/SFML/Graphics/zlib/deflate.c; sourceTree = SOURCE_ROOT; }; + A0660FE10E89058900D39DEB /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = deflate.h; path = ../../src/SFML/Graphics/zlib/deflate.h; sourceTree = SOURCE_ROOT; }; + A0660FE20E89058900D39DEB /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inffast.c; path = ../../src/SFML/Graphics/zlib/inffast.c; sourceTree = SOURCE_ROOT; }; + A0660FE30E89058900D39DEB /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inffast.h; path = ../../src/SFML/Graphics/zlib/inffast.h; sourceTree = SOURCE_ROOT; }; + A0660FE40E89058900D39DEB /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inffixed.h; path = ../../src/SFML/Graphics/zlib/inffixed.h; sourceTree = SOURCE_ROOT; }; + A0660FE50E89058900D39DEB /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inflate.c; path = ../../src/SFML/Graphics/zlib/inflate.c; sourceTree = SOURCE_ROOT; }; + A0660FE60E89058900D39DEB /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inflate.h; path = ../../src/SFML/Graphics/zlib/inflate.h; sourceTree = SOURCE_ROOT; }; + A0660FE70E89058900D39DEB /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inftrees.c; path = ../../src/SFML/Graphics/zlib/inftrees.c; sourceTree = SOURCE_ROOT; }; + A0660FE80E89058900D39DEB /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = ../../src/SFML/Graphics/zlib/inftrees.h; sourceTree = SOURCE_ROOT; }; + A0660FE90E89058900D39DEB /* trees.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = trees.c; path = ../../src/SFML/Graphics/zlib/trees.c; sourceTree = SOURCE_ROOT; }; + A0660FEA0E89058900D39DEB /* trees.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = trees.h; path = ../../src/SFML/Graphics/zlib/trees.h; sourceTree = SOURCE_ROOT; }; + A0660FEB0E89058900D39DEB /* uncompr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = ../../src/SFML/Graphics/zlib/uncompr.c; sourceTree = SOURCE_ROOT; }; + A0660FEC0E89058900D39DEB /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zconf.h; path = ../../src/SFML/Graphics/zlib/zconf.h; sourceTree = SOURCE_ROOT; }; + A0660FED0E89058900D39DEB /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = ../../src/SFML/Graphics/zlib/zlib.h; sourceTree = SOURCE_ROOT; }; + A0660FEE0E89058900D39DEB /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = zutil.c; path = ../../src/SFML/Graphics/zlib/zutil.c; sourceTree = SOURCE_ROOT; }; + A0660FEF0E89058900D39DEB /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zutil.h; path = ../../src/SFML/Graphics/zlib/zutil.h; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A01269640E6318C000B96A5D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A012696D0E6318FE00B96A5D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A01269740E63190F00B96A5D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A012697B0E63192000B96A5D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A01269820E63192B00B96A5D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A01269570E63189C00B96A5D = { + isa = PBXGroup; + children = ( + A01269870E63193B00B96A5D /* sfml-system */, + A012698C0E63194100B96A5D /* sfml-network */, + A012698D0E63194600B96A5D /* sfml-audio */, + A012698E0E63194B00B96A5D /* sfml-window */, + A012698F0E63195100B96A5D /* sfml-graphics */, + A01269670E6318C000B96A5D /* Products */, + ); + sourceTree = ""; + }; + A01269670E6318C000B96A5D /* Products */ = { + isa = PBXGroup; + children = ( + A01269660E6318C000B96A5D /* libsfml-system.dylib */, + A012696F0E6318FE00B96A5D /* libsfml-network.dylib */, + A01269760E63190F00B96A5D /* libsfml-audio.dylib */, + A012697D0E63192000B96A5D /* libsfml-window.dylib */, + A01269840E63192B00B96A5D /* libsfml-graphics.dylib */, + ); + name = Products; + sourceTree = ""; + }; + A01269870E63193B00B96A5D /* sfml-system */ = { + isa = PBXGroup; + children = ( + A0660EA90E89051400D39DEB /* Clock.cpp */, + A0660EAA0E89051400D39DEB /* Platform.hpp */, + A0660EAB0E89051400D39DEB /* Lock.cpp */, + A0660EAC0E89051400D39DEB /* Randomizer.cpp */, + A0660EAD0E89051400D39DEB /* Unicode.cpp */, + A0660EB40E89051400D39DEB /* Sleep.cpp */, + A0660EAE0E89051400D39DEB /* Unix */, + ); + name = "sfml-system"; + sourceTree = ""; + }; + A012698C0E63194100B96A5D /* sfml-network */ = { + isa = PBXGroup; + children = ( + A018A2AD0EA21A2C005FFAC3 /* Http.cpp */, + A018A2AE0EA21A2C005FFAC3 /* Ftp.cpp */, + A0660EC90E89053100D39DEB /* IPAddress.cpp */, + A0660ECA0E89053100D39DEB /* SelectorBase.cpp */, + A0660ECC0E89053100D39DEB /* SocketTCP.cpp */, + A0660ED10E89053100D39DEB /* Packet.cpp */, + A0660ED20E89053100D39DEB /* SocketUDP.cpp */, + A0660ECD0E89053100D39DEB /* Unix */, + ); + name = "sfml-network"; + sourceTree = ""; + }; + A012698D0E63194600B96A5D /* sfml-audio */ = { + isa = PBXGroup; + children = ( + A0660EDB0E89054E00D39DEB /* AudioDevice.cpp */, + A0660EDC0E89054E00D39DEB /* AudioDevice.hpp */, + A0660EDD0E89054E00D39DEB /* AudioResource.cpp */, + A0660EDE0E89054E00D39DEB /* Listener.cpp */, + A0660EE00E89054E00D39DEB /* Music.cpp */, + A0660EE10E89054E00D39DEB /* OpenAL.hpp */, + A0660EE20E89054E00D39DEB /* Sound.cpp */, + A0660EE30E89054E00D39DEB /* SoundBuffer.cpp */, + A0660EE40E89054E00D39DEB /* SoundBufferRecorder.cpp */, + A0660EE50E89054E00D39DEB /* SoundFile.cpp */, + A0660EE60E89054E00D39DEB /* SoundFile.hpp */, + A0660EE70E89054E00D39DEB /* SoundFileDefault.cpp */, + A0660EE80E89054E00D39DEB /* SoundFileDefault.hpp */, + A0660EE90E89054E00D39DEB /* SoundFileOgg.cpp */, + A0660EEA0E89054E00D39DEB /* SoundFileOgg.hpp */, + A0660EEB0E89054E00D39DEB /* SoundRecorder.cpp */, + A0660EEC0E89054E00D39DEB /* SoundStream.cpp */, + A0660EED0E89054E00D39DEB /* stb_vorbis */, + ); + name = "sfml-audio"; + sourceTree = ""; + }; + A012698E0E63194B00B96A5D /* sfml-window */ = { + isa = PBXGroup; + children = ( + A04C5A920EDDD88B00935061 /* Cocoa */, + A0660F040E89056300D39DEB /* Context.cpp */, + A0660F090E89056300D39DEB /* Input.cpp */, + A0660F0A0E89056300D39DEB /* Joystick.hpp */, + A0660F2E0E89056300D39DEB /* VideoMode.cpp */, + A0660F2F0E89056300D39DEB /* VideoModeSupport.hpp */, + A0660F370E89056300D39DEB /* Window.cpp */, + A0660F380E89056300D39DEB /* WindowImpl.cpp */, + A0660F390E89056300D39DEB /* WindowImpl.hpp */, + ); + name = "sfml-window"; + sourceTree = ""; + }; + A012698F0E63195100B96A5D /* sfml-graphics */ = { + isa = PBXGroup; + children = ( + A0660F6A0E89058900D39DEB /* Arial.hpp */, + A0660F6B0E89058900D39DEB /* Color.cpp */, + A0660F6C0E89058900D39DEB /* Drawable.cpp */, + A0660F6D0E89058900D39DEB /* Font.cpp */, + A0660F6E0E89058900D39DEB /* FontLoader.cpp */, + A0660F6F0E89058900D39DEB /* FontLoader.hpp */, + A0660F700E89058900D39DEB /* GLEW */, + A0660F750E89058900D39DEB /* GraphicsContext.cpp */, + A0660F760E89058900D39DEB /* GraphicsContext.hpp */, + A0660F770E89058900D39DEB /* Image.cpp */, + A0660F780E89058900D39DEB /* ImageLoader.cpp */, + A0660F790E89058900D39DEB /* ImageLoader.hpp */, + A0660F7A0E89058900D39DEB /* libjpeg */, + A0660FB50E89058900D39DEB /* libpng */, + A0660FCA0E89058900D39DEB /* Matrix3.cpp */, + A0660FCB0E89058900D39DEB /* PostFX.cpp */, + A0660FCC0E89058900D39DEB /* RenderTarget.cpp */, + A0660FCD0E89058900D39DEB /* RenderWindow.cpp */, + A0660FCE0E89058900D39DEB /* Shape.cpp */, + A0660FCF0E89058900D39DEB /* SOIL */, + A0660FD80E89058900D39DEB /* Sprite.cpp */, + A0660FD90E89058900D39DEB /* String.cpp */, + A0660FDA0E89058900D39DEB /* View.cpp */, + A0660FDB0E89058900D39DEB /* zlib */, + ); + name = "sfml-graphics"; + sourceTree = ""; + }; + A04C5A920EDDD88B00935061 /* Cocoa */ = { + isa = PBXGroup; + children = ( + A04C5A930EDDD88B00935061 /* AppController.h */, + A04C5A940EDDD88B00935061 /* AppController.mm */, + A04C5A950EDDD88B00935061 /* Joystick.cpp */, + A04C5A960EDDD88B00935061 /* Joystick.hpp */, + A04C5A970EDDD88B00935061 /* VideoModeSupport.cpp */, + A04C5A980EDDD88B00935061 /* VideoModeSupport.hpp */, + A04C5A990EDDD88B00935061 /* WindowController.h */, + A04C5A9A0EDDD88B00935061 /* WindowController.mm */, + A04C5A9B0EDDD88B00935061 /* WindowImplCocoa.hpp */, + A04C5A9C0EDDD88B00935061 /* WindowImplCocoa.mm */, + ); + name = Cocoa; + path = ../../src/SFML/Window/Cocoa; + sourceTree = SOURCE_ROOT; + }; + A0660EAE0E89051400D39DEB /* Unix */ = { + isa = PBXGroup; + children = ( + A0660EAF0E89051400D39DEB /* Mutex.cpp */, + A0660EB00E89051400D39DEB /* Platform.cpp */, + A0660EB10E89051400D39DEB /* Platform.hpp */, + A0660EB20E89051400D39DEB /* Thread.cpp */, + ); + name = Unix; + path = ../../src/SFML/System/Unix; + sourceTree = SOURCE_ROOT; + }; + A0660ECD0E89053100D39DEB /* Unix */ = { + isa = PBXGroup; + children = ( + A0660ECE0E89053100D39DEB /* SocketHelper.cpp */, + ); + name = Unix; + path = ../../src/SFML/Network/Unix; + sourceTree = SOURCE_ROOT; + }; + A0660EED0E89054E00D39DEB /* stb_vorbis */ = { + isa = PBXGroup; + children = ( + A0660EEE0E89054E00D39DEB /* stb_vorbis.c */, + A0660EEF0E89054E00D39DEB /* stb_vorbis.h */, + ); + name = stb_vorbis; + path = ../../src/SFML/Audio/stb_vorbis; + sourceTree = SOURCE_ROOT; + }; + A0660F700E89058900D39DEB /* GLEW */ = { + isa = PBXGroup; + children = ( + A0660F710E89058900D39DEB /* glew.c */, + A0660F720E89058900D39DEB /* glew.h */, + A0660F730E89058900D39DEB /* glxew.h */, + A0660F740E89058900D39DEB /* wglew.h */, + ); + name = GLEW; + path = ../../src/SFML/Graphics/GLEW; + sourceTree = SOURCE_ROOT; + }; + A0660F7A0E89058900D39DEB /* libjpeg */ = { + isa = PBXGroup; + children = ( + A0660F7B0E89058900D39DEB /* cderror.h */, + A0660F7C0E89058900D39DEB /* jcapimin.c */, + A0660F7D0E89058900D39DEB /* jcapistd.c */, + A0660F7E0E89058900D39DEB /* jccoefct.c */, + A0660F7F0E89058900D39DEB /* jccolor.c */, + A0660F800E89058900D39DEB /* jcdctmgr.c */, + A0660F810E89058900D39DEB /* jchuff.c */, + A0660F820E89058900D39DEB /* jchuff.h */, + A0660F830E89058900D39DEB /* jcinit.c */, + A0660F840E89058900D39DEB /* jcmainct.c */, + A0660F850E89058900D39DEB /* jcmarker.c */, + A0660F860E89058900D39DEB /* jcmaster.c */, + A0660F870E89058900D39DEB /* jcomapi.c */, + A0660F880E89058900D39DEB /* jconfig.h */, + A0660F890E89058900D39DEB /* jcparam.c */, + A0660F8A0E89058900D39DEB /* jcphuff.c */, + A0660F8B0E89058900D39DEB /* jcprepct.c */, + A0660F8C0E89058900D39DEB /* jcsample.c */, + A0660F8D0E89058900D39DEB /* jctrans.c */, + A0660F8E0E89058900D39DEB /* jdapimin.c */, + A0660F8F0E89058900D39DEB /* jdapistd.c */, + A0660F900E89058900D39DEB /* jdatadst.c */, + A0660F910E89058900D39DEB /* jdatasrc.c */, + A0660F920E89058900D39DEB /* jdcoefct.c */, + A0660F930E89058900D39DEB /* jdcolor.c */, + A0660F940E89058900D39DEB /* jdct.h */, + A0660F950E89058900D39DEB /* jddctmgr.c */, + A0660F960E89058900D39DEB /* jdhuff.c */, + A0660F970E89058900D39DEB /* jdhuff.h */, + A0660F980E89058900D39DEB /* jdinput.c */, + A0660F990E89058900D39DEB /* jdmainct.c */, + A0660F9A0E89058900D39DEB /* jdmarker.c */, + A0660F9B0E89058900D39DEB /* jdmaster.c */, + A0660F9C0E89058900D39DEB /* jdmerge.c */, + A0660F9D0E89058900D39DEB /* jdphuff.c */, + A0660F9E0E89058900D39DEB /* jdpostct.c */, + A0660F9F0E89058900D39DEB /* jdsample.c */, + A0660FA00E89058900D39DEB /* jdtrans.c */, + A0660FA10E89058900D39DEB /* jerror.c */, + A0660FA20E89058900D39DEB /* jerror.h */, + A0660FA30E89058900D39DEB /* jfdctflt.c */, + A0660FA40E89058900D39DEB /* jfdctfst.c */, + A0660FA50E89058900D39DEB /* jfdctint.c */, + A0660FA60E89058900D39DEB /* jidctflt.c */, + A0660FA70E89058900D39DEB /* jidctfst.c */, + A0660FA80E89058900D39DEB /* jidctint.c */, + A0660FA90E89058900D39DEB /* jidctred.c */, + A0660FAA0E89058900D39DEB /* jinclude.h */, + A0660FAB0E89058900D39DEB /* jmemmgr.c */, + A0660FAC0E89058900D39DEB /* jmemnobs.c */, + A0660FAD0E89058900D39DEB /* jmemsys.h */, + A0660FAE0E89058900D39DEB /* jmorecfg.h */, + A0660FAF0E89058900D39DEB /* jpegint.h */, + A0660FB00E89058900D39DEB /* jpeglib.h */, + A0660FB10E89058900D39DEB /* jquant1.c */, + A0660FB20E89058900D39DEB /* jquant2.c */, + A0660FB30E89058900D39DEB /* jutils.c */, + A0660FB40E89058900D39DEB /* jversion.h */, + ); + name = libjpeg; + path = ../../src/SFML/Graphics/libjpeg; + sourceTree = SOURCE_ROOT; + }; + A0660FB50E89058900D39DEB /* libpng */ = { + isa = PBXGroup; + children = ( + A0660FB60E89058900D39DEB /* png.c */, + A0660FB70E89058900D39DEB /* png.h */, + A0660FB80E89058900D39DEB /* pngconf.h */, + A0660FB90E89058900D39DEB /* pngerror.c */, + A0660FBA0E89058900D39DEB /* pnggccrd.c */, + A0660FBB0E89058900D39DEB /* pngget.c */, + A0660FBC0E89058900D39DEB /* pngmem.c */, + A0660FBD0E89058900D39DEB /* pngpread.c */, + A0660FBE0E89058900D39DEB /* pngread.c */, + A0660FBF0E89058900D39DEB /* pngrio.c */, + A0660FC00E89058900D39DEB /* pngrtran.c */, + A0660FC10E89058900D39DEB /* pngrutil.c */, + A0660FC20E89058900D39DEB /* pngset.c */, + A0660FC30E89058900D39DEB /* pngtrans.c */, + A0660FC40E89058900D39DEB /* pngvcrd.c */, + A0660FC50E89058900D39DEB /* pngwio.c */, + A0660FC60E89058900D39DEB /* pngwrite.c */, + A0660FC70E89058900D39DEB /* pngwtran.c */, + A0660FC80E89058900D39DEB /* pngwutil.c */, + ); + name = libpng; + path = ../../src/SFML/Graphics/libpng; + sourceTree = SOURCE_ROOT; + }; + A0660FCF0E89058900D39DEB /* SOIL */ = { + isa = PBXGroup; + children = ( + A0660FD00E89058900D39DEB /* image_DXT.c */, + A0660FD10E89058900D39DEB /* image_DXT.h */, + A0660FD20E89058900D39DEB /* SOIL.c */, + A0660FD30E89058900D39DEB /* SOIL.h */, + A0660FD40E89058900D39DEB /* stb_image_aug.c */, + A0660FD50E89058900D39DEB /* stb_image_aug.h */, + A0660FD60E89058900D39DEB /* stbi_DDS_aug.h */, + A0660FD70E89058900D39DEB /* stbi_DDS_aug_c.h */, + ); + name = SOIL; + path = ../../src/SFML/Graphics/SOIL; + sourceTree = SOURCE_ROOT; + }; + A0660FDB0E89058900D39DEB /* zlib */ = { + isa = PBXGroup; + children = ( + A0660FDC0E89058900D39DEB /* adler32.c */, + A0660FDD0E89058900D39DEB /* compress.c */, + A0660FDE0E89058900D39DEB /* crc32.c */, + A0660FDF0E89058900D39DEB /* crc32.h */, + A0660FE00E89058900D39DEB /* deflate.c */, + A0660FE10E89058900D39DEB /* deflate.h */, + A0660FE20E89058900D39DEB /* inffast.c */, + A0660FE30E89058900D39DEB /* inffast.h */, + A0660FE40E89058900D39DEB /* inffixed.h */, + A0660FE50E89058900D39DEB /* inflate.c */, + A0660FE60E89058900D39DEB /* inflate.h */, + A0660FE70E89058900D39DEB /* inftrees.c */, + A0660FE80E89058900D39DEB /* inftrees.h */, + A0660FE90E89058900D39DEB /* trees.c */, + A0660FEA0E89058900D39DEB /* trees.h */, + A0660FEB0E89058900D39DEB /* uncompr.c */, + A0660FEC0E89058900D39DEB /* zconf.h */, + A0660FED0E89058900D39DEB /* zlib.h */, + A0660FEE0E89058900D39DEB /* zutil.c */, + A0660FEF0E89058900D39DEB /* zutil.h */, + ); + name = zlib; + path = ../../src/SFML/Graphics/zlib; + sourceTree = SOURCE_ROOT; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A01269650E6318C000B96A5D /* sfml-system */ = { + isa = PBXNativeTarget; + buildConfigurationList = A012696A0E6318C000B96A5D /* Build configuration list for PBXNativeTarget "sfml-system" */; + buildPhases = ( + A01269630E6318C000B96A5D /* Sources */, + A01269640E6318C000B96A5D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "sfml-system"; + productName = "sfml-system"; + productReference = A01269660E6318C000B96A5D /* libsfml-system.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + A012696E0E6318FE00B96A5D /* sfml-network */ = { + isa = PBXNativeTarget; + buildConfigurationList = A01269880E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-network" */; + buildPhases = ( + A012696C0E6318FE00B96A5D /* Sources */, + A012696D0E6318FE00B96A5D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "sfml-network"; + productName = "sfml-network"; + productReference = A012696F0E6318FE00B96A5D /* libsfml-network.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + A01269750E63190F00B96A5D /* sfml-audio */ = { + isa = PBXNativeTarget; + buildConfigurationList = A01269890E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-audio" */; + buildPhases = ( + A01269730E63190F00B96A5D /* Sources */, + A01269740E63190F00B96A5D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "sfml-audio"; + productName = "sfml-audio"; + productReference = A01269760E63190F00B96A5D /* libsfml-audio.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + A012697C0E63192000B96A5D /* sfml-window */ = { + isa = PBXNativeTarget; + buildConfigurationList = A012698A0E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-window" */; + buildPhases = ( + A012697A0E63192000B96A5D /* Sources */, + A012697B0E63192000B96A5D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "sfml-window"; + productName = "sfml-window"; + productReference = A012697D0E63192000B96A5D /* libsfml-window.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + A01269830E63192B00B96A5D /* sfml-graphics */ = { + isa = PBXNativeTarget; + buildConfigurationList = A012698B0E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-graphics" */; + buildPhases = ( + A01269810E63192B00B96A5D /* Sources */, + A01269820E63192B00B96A5D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "sfml-graphics"; + productName = "sfml-graphics"; + productReference = A01269840E63192B00B96A5D /* libsfml-graphics.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A01269590E63189C00B96A5D /* Project object */ = { + isa = PBXProject; + buildConfigurationList = A012695C0E63189C00B96A5D /* Build configuration list for PBXProject "SFML-bare" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 0; + mainGroup = A01269570E63189C00B96A5D; + productRefGroup = A01269670E6318C000B96A5D /* Products */; + projectDirPath = ""; + projectRoot = ../..; + targets = ( + A0AD0A300E7663E1006E7E0D /* All */, + A01269650E6318C000B96A5D /* sfml-system */, + A012696E0E6318FE00B96A5D /* sfml-network */, + A01269750E63190F00B96A5D /* sfml-audio */, + A012697C0E63192000B96A5D /* sfml-window */, + A01269830E63192B00B96A5D /* sfml-graphics */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + A01269630E6318C000B96A5D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0660EBA0E89051400D39DEB /* Clock.cpp in Sources */, + A0660EBC0E89051400D39DEB /* Lock.cpp in Sources */, + A0660EBD0E89051400D39DEB /* Randomizer.cpp in Sources */, + A0660EBE0E89051400D39DEB /* Unicode.cpp in Sources */, + A0660EBF0E89051400D39DEB /* Mutex.cpp in Sources */, + A0660EC00E89051400D39DEB /* Platform.cpp in Sources */, + A0660EC20E89051400D39DEB /* Thread.cpp in Sources */, + A0660EC40E89051400D39DEB /* Sleep.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A012696C0E6318FE00B96A5D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0660ED30E89053100D39DEB /* IPAddress.cpp in Sources */, + A0660ED40E89053100D39DEB /* SelectorBase.cpp in Sources */, + A0660ED60E89053100D39DEB /* SocketTCP.cpp in Sources */, + A0660ED70E89053100D39DEB /* SocketHelper.cpp in Sources */, + A0660ED90E89053100D39DEB /* Packet.cpp in Sources */, + A0660EDA0E89053100D39DEB /* SocketUDP.cpp in Sources */, + A018A2AF0EA21A2C005FFAC3 /* Http.cpp in Sources */, + A018A2B00EA21A2C005FFAC3 /* Ftp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A01269730E63190F00B96A5D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0660EF00E89054E00D39DEB /* AudioDevice.cpp in Sources */, + A0660EF20E89054E00D39DEB /* AudioResource.cpp in Sources */, + A0660EF30E89054E00D39DEB /* Listener.cpp in Sources */, + A0660EF50E89054E00D39DEB /* Music.cpp in Sources */, + A0660EF70E89054E00D39DEB /* Sound.cpp in Sources */, + A0660EF80E89054E00D39DEB /* SoundBuffer.cpp in Sources */, + A0660EF90E89054E00D39DEB /* SoundBufferRecorder.cpp in Sources */, + A0660EFA0E89054E00D39DEB /* SoundFile.cpp in Sources */, + A0660EFC0E89054E00D39DEB /* SoundFileDefault.cpp in Sources */, + A0660EFE0E89054E00D39DEB /* SoundFileOgg.cpp in Sources */, + A0660F000E89054E00D39DEB /* SoundRecorder.cpp in Sources */, + A0660F010E89054E00D39DEB /* SoundStream.cpp in Sources */, + A0660F020E89054E00D39DEB /* stb_vorbis.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A012697A0E63192000B96A5D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0660F3A0E89056300D39DEB /* Context.cpp in Sources */, + A0660F3E0E89056300D39DEB /* Input.cpp in Sources */, + A0660F5F0E89056300D39DEB /* VideoMode.cpp in Sources */, + A0660F670E89056300D39DEB /* Window.cpp in Sources */, + A0660F680E89056300D39DEB /* WindowImpl.cpp in Sources */, + A04C5A9D0EDDD88B00935061 /* AppController.mm in Sources */, + A04C5A9E0EDDD88B00935061 /* Joystick.cpp in Sources */, + A04C5A9F0EDDD88B00935061 /* VideoModeSupport.cpp in Sources */, + A04C5AA00EDDD88B00935061 /* WindowController.mm in Sources */, + A04C5AA10EDDD88B00935061 /* WindowImplCocoa.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A01269810E63192B00B96A5D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0660FF10E89058900D39DEB /* Color.cpp in Sources */, + A0660FF20E89058900D39DEB /* Drawable.cpp in Sources */, + A0660FF30E89058900D39DEB /* Font.cpp in Sources */, + A0660FF40E89058900D39DEB /* FontLoader.cpp in Sources */, + A0660FF60E89058900D39DEB /* glew.c in Sources */, + A0660FFA0E89058900D39DEB /* GraphicsContext.cpp in Sources */, + A0660FFC0E89058900D39DEB /* Image.cpp in Sources */, + A0660FFD0E89058900D39DEB /* ImageLoader.cpp in Sources */, + A06610000E89058900D39DEB /* jcapimin.c in Sources */, + A06610010E89058900D39DEB /* jcapistd.c in Sources */, + A06610020E89058900D39DEB /* jccoefct.c in Sources */, + A06610030E89058900D39DEB /* jccolor.c in Sources */, + A06610040E89058900D39DEB /* jcdctmgr.c in Sources */, + A06610050E89058900D39DEB /* jchuff.c in Sources */, + A06610070E89058900D39DEB /* jcinit.c in Sources */, + A06610080E89058900D39DEB /* jcmainct.c in Sources */, + A06610090E89058900D39DEB /* jcmarker.c in Sources */, + A066100A0E89058900D39DEB /* jcmaster.c in Sources */, + A066100B0E89058900D39DEB /* jcomapi.c in Sources */, + A066100D0E89058900D39DEB /* jcparam.c in Sources */, + A066100E0E89058900D39DEB /* jcphuff.c in Sources */, + A066100F0E89058900D39DEB /* jcprepct.c in Sources */, + A06610100E89058900D39DEB /* jcsample.c in Sources */, + A06610110E89058900D39DEB /* jctrans.c in Sources */, + A06610120E89058900D39DEB /* jdapimin.c in Sources */, + A06610130E89058900D39DEB /* jdapistd.c in Sources */, + A06610140E89058900D39DEB /* jdatadst.c in Sources */, + A06610150E89058900D39DEB /* jdatasrc.c in Sources */, + A06610160E89058900D39DEB /* jdcoefct.c in Sources */, + A06610170E89058900D39DEB /* jdcolor.c in Sources */, + A06610190E89058900D39DEB /* jddctmgr.c in Sources */, + A066101A0E89058900D39DEB /* jdhuff.c in Sources */, + A066101C0E89058900D39DEB /* jdinput.c in Sources */, + A066101D0E89058900D39DEB /* jdmainct.c in Sources */, + A066101E0E89058900D39DEB /* jdmarker.c in Sources */, + A066101F0E89058900D39DEB /* jdmaster.c in Sources */, + A06610200E89058900D39DEB /* jdmerge.c in Sources */, + A06610210E89058900D39DEB /* jdphuff.c in Sources */, + A06610220E89058900D39DEB /* jdpostct.c in Sources */, + A06610230E89058900D39DEB /* jdsample.c in Sources */, + A06610240E89058900D39DEB /* jdtrans.c in Sources */, + A06610250E89058900D39DEB /* jerror.c in Sources */, + A06610270E89058900D39DEB /* jfdctflt.c in Sources */, + A06610280E89058900D39DEB /* jfdctfst.c in Sources */, + A06610290E89058900D39DEB /* jfdctint.c in Sources */, + A066102A0E89058900D39DEB /* jidctflt.c in Sources */, + A066102B0E89058900D39DEB /* jidctfst.c in Sources */, + A066102C0E89058900D39DEB /* jidctint.c in Sources */, + A066102D0E89058900D39DEB /* jidctred.c in Sources */, + A066102F0E89058900D39DEB /* jmemmgr.c in Sources */, + A06610300E89058900D39DEB /* jmemnobs.c in Sources */, + A06610350E89058900D39DEB /* jquant1.c in Sources */, + A06610360E89058900D39DEB /* jquant2.c in Sources */, + A06610370E89058900D39DEB /* jutils.c in Sources */, + A06610390E89058900D39DEB /* png.c in Sources */, + A066103C0E89058900D39DEB /* pngerror.c in Sources */, + A066103D0E89058900D39DEB /* pnggccrd.c in Sources */, + A066103E0E89058900D39DEB /* pngget.c in Sources */, + A066103F0E89058900D39DEB /* pngmem.c in Sources */, + A06610400E89058900D39DEB /* pngpread.c in Sources */, + A06610410E89058900D39DEB /* pngread.c in Sources */, + A06610420E89058900D39DEB /* pngrio.c in Sources */, + A06610430E89058900D39DEB /* pngrtran.c in Sources */, + A06610440E89058900D39DEB /* pngrutil.c in Sources */, + A06610450E89058900D39DEB /* pngset.c in Sources */, + A06610460E89058900D39DEB /* pngtrans.c in Sources */, + A06610470E89058900D39DEB /* pngvcrd.c in Sources */, + A06610480E89058900D39DEB /* pngwio.c in Sources */, + A06610490E89058900D39DEB /* pngwrite.c in Sources */, + A066104A0E89058900D39DEB /* pngwtran.c in Sources */, + A066104B0E89058900D39DEB /* pngwutil.c in Sources */, + A066104D0E89058900D39DEB /* Matrix3.cpp in Sources */, + A066104E0E89058900D39DEB /* PostFX.cpp in Sources */, + A066104F0E89058900D39DEB /* RenderTarget.cpp in Sources */, + A06610500E89058900D39DEB /* RenderWindow.cpp in Sources */, + A06610510E89058900D39DEB /* Shape.cpp in Sources */, + A06610520E89058900D39DEB /* image_DXT.c in Sources */, + A06610540E89058900D39DEB /* SOIL.c in Sources */, + A06610560E89058900D39DEB /* stb_image_aug.c in Sources */, + A066105A0E89058900D39DEB /* Sprite.cpp in Sources */, + A066105B0E89058900D39DEB /* String.cpp in Sources */, + A066105C0E89058900D39DEB /* View.cpp in Sources */, + A066105D0E89058900D39DEB /* adler32.c in Sources */, + A066105E0E89058900D39DEB /* compress.c in Sources */, + A066105F0E89058900D39DEB /* crc32.c in Sources */, + A06610610E89058900D39DEB /* deflate.c in Sources */, + A06610630E89058900D39DEB /* inffast.c in Sources */, + A06610660E89058900D39DEB /* inflate.c in Sources */, + A06610680E89058900D39DEB /* inftrees.c in Sources */, + A066106A0E89058900D39DEB /* trees.c in Sources */, + A066106C0E89058900D39DEB /* uncompr.c in Sources */, + A066106F0E89058900D39DEB /* zutil.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + A0AD0A340E7663F1006E7E0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A01269650E6318C000B96A5D /* sfml-system */; + targetProxy = A0AD0A330E7663F1006E7E0D /* PBXContainerItemProxy */; + }; + A0AD0A360E7663F1006E7E0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A012696E0E6318FE00B96A5D /* sfml-network */; + targetProxy = A0AD0A350E7663F1006E7E0D /* PBXContainerItemProxy */; + }; + A0AD0A380E7663F1006E7E0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A01269750E63190F00B96A5D /* sfml-audio */; + targetProxy = A0AD0A370E7663F1006E7E0D /* PBXContainerItemProxy */; + }; + A0AD0A3A0E7663F1006E7E0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A012697C0E63192000B96A5D /* sfml-window */; + targetProxy = A0AD0A390E7663F1006E7E0D /* PBXContainerItemProxy */; + }; + A0AD0A3C0E7663F1006E7E0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A01269830E63192B00B96A5D /* sfml-graphics */; + targetProxy = A0AD0A3B0E7663F1006E7E0D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + A012695A0E63189C00B96A5D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + COPY_PHASE_STRIP = NO; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../src", + "$(SRCROOT)/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + INSTALL_PATH = "@executable_path"; + OBJROOT = build; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SYMROOT = ../../lib/xcode; + }; + name = Debug; + }; + A012695B0E63189C00B96A5D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + COPY_PHASE_STRIP = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../src", + "$(SRCROOT)/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + INSTALL_PATH = "@executable_path"; + OBJROOT = build; + OTHER_CFLAGS = "-DNDEBUG"; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SYMROOT = ../../lib/xcode; + }; + name = Release; + }; + A01269680E6318C000B96A5D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = lib; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + PREBINDING = NO; + PRODUCT_NAME = "sfml-system-d"; + }; + name = Debug; + }; + A01269690E6318C000B96A5D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_PREFIX = lib; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; + PREBINDING = NO; + PRODUCT_NAME = "sfml-system"; + ZERO_LINK = NO; + }; + name = Release; + }; + A01269700E6318FF00B96A5D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = lib; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + PREBINDING = NO; + PRODUCT_NAME = "sfml-network-d"; + }; + name = Debug; + }; + A01269710E6318FF00B96A5D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_PREFIX = lib; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + PREBINDING = NO; + PRODUCT_NAME = "sfml-network"; + ZERO_LINK = NO; + }; + name = Release; + }; + A01269770E63190F00B96A5D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = lib; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + OTHER_LDFLAGS = ( + "-framework", + OpenAL, + "$(SRCROOT)/../../extlibs/libs-xcode/libsndfile.a", + "-lsfml-system-d", + ); + PREBINDING = NO; + PRODUCT_NAME = "sfml-audio-d"; + }; + name = Debug; + }; + A01269780E63190F00B96A5D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_PREFIX = lib; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + OTHER_LDFLAGS = ( + "-framework", + OpenAL, + "$(SRCROOT)/../../extlibs/libs-xcode/libsndfile.a", + "-lsfml-system", + ); + PREBINDING = NO; + PRODUCT_NAME = "sfml-audio"; + ZERO_LINK = NO; + }; + name = Release; + }; + A012697E0E63192000B96A5D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = lib; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Cocoa, + "-framework", + OpenGL, + "-lsfml-system-d", + ); + PREBINDING = NO; + PRODUCT_NAME = "sfml-window-d"; + }; + name = Debug; + }; + A012697F0E63192000B96A5D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_PREFIX = lib; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + OTHER_CFLAGS = "-DNDEBUG"; + OTHER_LDFLAGS = ( + "-framework", + Cocoa, + "-framework", + OpenGL, + "-lsfml-system", + ); + PREBINDING = NO; + PRODUCT_NAME = "sfml-window"; + ZERO_LINK = NO; + }; + name = Release; + }; + A01269850E63192B00B96A5D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = lib; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../src", + "$(SRCROOT)/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + OTHER_LDFLAGS = ( + "$(SRCROOT)/../../extlibs/libs-xcode/libfreetype.a", + "-framework", + OpenGL, + "-lsfml-system-d", + "-lsfml-window-d", + ); + PREBINDING = NO; + PRODUCT_NAME = "sfml-graphics-d"; + }; + name = Debug; + }; + A01269860E63192B00B96A5D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_PREFIX = lib; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../src", + "$(SRCROOT)/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + OTHER_LDFLAGS = ( + "$(SRCROOT)/../../extlibs/libs-xcode/libfreetype.a", + "-framework", + OpenGL, + "-lsfml-system", + "-lsfml-window", + ); + PREBINDING = NO; + PRODUCT_NAME = "sfml-graphics"; + ZERO_LINK = NO; + }; + name = Release; + }; + A0AD0A310E7663E1006E7E0D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = All; + }; + name = Debug; + }; + A0AD0A320E7663E1006E7E0D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = All; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A012695C0E63189C00B96A5D /* Build configuration list for PBXProject "SFML-bare" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A012695A0E63189C00B96A5D /* Debug */, + A012695B0E63189C00B96A5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A012696A0E6318C000B96A5D /* Build configuration list for PBXNativeTarget "sfml-system" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01269680E6318C000B96A5D /* Debug */, + A01269690E6318C000B96A5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A01269880E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-network" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01269700E6318FF00B96A5D /* Debug */, + A01269710E6318FF00B96A5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A01269890E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-audio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01269770E63190F00B96A5D /* Debug */, + A01269780E63190F00B96A5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A012698A0E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-window" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A012697E0E63192000B96A5D /* Debug */, + A012697F0E63192000B96A5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A012698B0E63193B00B96A5D /* Build configuration list for PBXNativeTarget "sfml-graphics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01269850E63192B00B96A5D /* Debug */, + A01269860E63192B00B96A5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A0AD0A460E766415006E7E0D /* Build configuration list for PBXAggregateTarget "All" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0AD0A310E7663E1006E7E0D /* Debug */, + A0AD0A320E7663E1006E7E0D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = A01269590E63189C00B96A5D /* Project object */; +} diff --git a/build/xcode/SFML.xcodeproj/project.pbxproj b/build/xcode/SFML.xcodeproj/project.pbxproj new file mode 100644 index 00000000..f3936f26 --- /dev/null +++ b/build/xcode/SFML.xcodeproj/project.pbxproj @@ -0,0 +1,2468 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + A0F0BA820D92E4F500056981 /* All */ = { + isa = PBXAggregateTarget; + buildConfigurationList = A02679E40E5CDB03008D4C81 /* Build configuration list for PBXAggregateTarget "All" */; + buildPhases = ( + ); + dependencies = ( + A0B4CD3A0D96B11500DEEE0F /* PBXTargetDependency */, + A0F0BA8C0D92E52300056981 /* PBXTargetDependency */, + A0F0BA8A0D92E52300056981 /* PBXTargetDependency */, + A0F0BA860D92E52300056981 /* PBXTargetDependency */, + A07EA05B0DB657A9007C7747 /* PBXTargetDependency */, + A0F0BA880D92E52300056981 /* PBXTargetDependency */, + ); + name = All; + productName = All; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + A018A27B0EA21866005FFAC3 /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A018A2790EA21866005FFAC3 /* Http.cpp */; }; + A018A27C0EA21866005FFAC3 /* Ftp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A018A27A0EA21866005FFAC3 /* Ftp.cpp */; }; + A01A3AED0E75181300D0BA9B /* AudioDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AD80E75181300D0BA9B /* AudioDevice.cpp */; }; + A01A3AEE0E75181300D0BA9B /* AudioDevice.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A01A3AD90E75181300D0BA9B /* AudioDevice.hpp */; }; + A01A3AEF0E75181300D0BA9B /* AudioResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3ADA0E75181300D0BA9B /* AudioResource.cpp */; }; + A01A3AF00E75181300D0BA9B /* Listener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3ADB0E75181300D0BA9B /* Listener.cpp */; }; + A01A3AF20E75181300D0BA9B /* Music.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3ADD0E75181300D0BA9B /* Music.cpp */; }; + A01A3AF30E75181300D0BA9B /* OpenAL.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A01A3ADE0E75181300D0BA9B /* OpenAL.hpp */; }; + A01A3AF40E75181300D0BA9B /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3ADF0E75181300D0BA9B /* Sound.cpp */; }; + A01A3AF50E75181300D0BA9B /* SoundBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE00E75181300D0BA9B /* SoundBuffer.cpp */; }; + A01A3AF60E75181300D0BA9B /* SoundBufferRecorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE10E75181300D0BA9B /* SoundBufferRecorder.cpp */; }; + A01A3AF70E75181300D0BA9B /* SoundFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE20E75181300D0BA9B /* SoundFile.cpp */; }; + A01A3AF80E75181300D0BA9B /* SoundFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A01A3AE30E75181300D0BA9B /* SoundFile.hpp */; }; + A01A3AF90E75181300D0BA9B /* SoundFileDefault.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE40E75181300D0BA9B /* SoundFileDefault.cpp */; }; + A01A3AFA0E75181300D0BA9B /* SoundFileDefault.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A01A3AE50E75181300D0BA9B /* SoundFileDefault.hpp */; }; + A01A3AFB0E75181300D0BA9B /* SoundFileOgg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE60E75181300D0BA9B /* SoundFileOgg.cpp */; }; + A01A3AFC0E75181300D0BA9B /* SoundFileOgg.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A01A3AE70E75181300D0BA9B /* SoundFileOgg.hpp */; }; + A01A3AFD0E75181300D0BA9B /* SoundRecorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE80E75181300D0BA9B /* SoundRecorder.cpp */; }; + A01A3AFE0E75181300D0BA9B /* SoundStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AE90E75181300D0BA9B /* SoundStream.cpp */; }; + A01A3AFF0E75181300D0BA9B /* stb_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = A01A3AEB0E75181300D0BA9B /* stb_vorbis.c */; }; + A01A3B000E75181300D0BA9B /* stb_vorbis.h in Headers */ = {isa = PBXBuildFile; fileRef = A01A3AEC0E75181300D0BA9B /* stb_vorbis.h */; }; + A01C69C90E3E63CE00ED3F04 /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01C69C80E3E63CE00ED3F04 /* Unicode.cpp */; }; + A04C59AF0EDDBA9C00935061 /* AppController.h in Headers */ = {isa = PBXBuildFile; fileRef = A04C59A50EDDBA9C00935061 /* AppController.h */; }; + A04C59B00EDDBA9C00935061 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A04C59A60EDDBA9C00935061 /* AppController.mm */; }; + A04C59B10EDDBA9C00935061 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A04C59A70EDDBA9C00935061 /* Joystick.cpp */; }; + A04C59B20EDDBA9C00935061 /* Joystick.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A04C59A80EDDBA9C00935061 /* Joystick.hpp */; }; + A04C59B30EDDBA9C00935061 /* VideoModeSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A04C59A90EDDBA9C00935061 /* VideoModeSupport.cpp */; }; + A04C59B40EDDBA9C00935061 /* VideoModeSupport.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A04C59AA0EDDBA9C00935061 /* VideoModeSupport.hpp */; }; + A04C59B50EDDBA9C00935061 /* WindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = A04C59AB0EDDBA9C00935061 /* WindowController.h */; }; + A04C59B60EDDBA9C00935061 /* WindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A04C59AC0EDDBA9C00935061 /* WindowController.mm */; }; + A04C59B70EDDBA9C00935061 /* WindowImplCocoa.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A04C59AD0EDDBA9C00935061 /* WindowImplCocoa.hpp */; }; + A04C59B80EDDBA9C00935061 /* WindowImplCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A04C59AE0EDDBA9C00935061 /* WindowImplCocoa.mm */; }; + A05EEF700E5CF18F00572B7E /* sfml-window.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0C93EB40D9A9CA000B9E0C8 /* sfml-window.framework */; }; + A093E3D00D8BF918002236B4 /* dummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A093E3CF0D8BF918002236B4 /* dummy.cpp */; }; + A093E5480D8BFEAE002236B4 /* sfml-system.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A093E37F0D8BF87A002236B4 /* sfml-system.framework */; }; + A09EEBF70D8C19BF00F6C625 /* Platform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A09EEBED0D8C19BF00F6C625 /* Platform.hpp */; }; + A09EEBF80D8C19BF00F6C625 /* Randomizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBEE0D8C19BF00F6C625 /* Randomizer.cpp */; }; + A09EEBF90D8C19BF00F6C625 /* Mutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBF00D8C19BF00F6C625 /* Mutex.cpp */; }; + A09EEBFA0D8C19BF00F6C625 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBF10D8C19BF00F6C625 /* Platform.cpp */; }; + A09EEBFB0D8C19BF00F6C625 /* Platform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A09EEBF20D8C19BF00F6C625 /* Platform.hpp */; }; + A09EEBFC0D8C19BF00F6C625 /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBF30D8C19BF00F6C625 /* Thread.cpp */; }; + A09EEBFD0D8C19BF00F6C625 /* Clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBF40D8C19BF00F6C625 /* Clock.cpp */; }; + A09EEBFE0D8C19BF00F6C625 /* Lock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBF50D8C19BF00F6C625 /* Lock.cpp */; }; + A09EEBFF0D8C19BF00F6C625 /* Sleep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A09EEBF60D8C19BF00F6C625 /* Sleep.cpp */; }; + A0BE1A200D917332007D4CAD /* sfml-system.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A093E37F0D8BF87A002236B4 /* sfml-system.framework */; }; + A0C93F930D9AA9FA00B9E0C8 /* sfml-system.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A093E37F0D8BF87A002236B4 /* sfml-system.framework */; }; + A0F1E68A0E75440800778F12 /* IPAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6800E75440800778F12 /* IPAddress.cpp */; }; + A0F1E68C0E75440800778F12 /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6820E75440800778F12 /* Packet.cpp */; }; + A0F1E68D0E75440800778F12 /* SelectorBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6830E75440800778F12 /* SelectorBase.cpp */; }; + A0F1E68E0E75440800778F12 /* SocketTCP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6840E75440800778F12 /* SocketTCP.cpp */; }; + A0F1E68F0E75440800778F12 /* SocketUDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6850E75440800778F12 /* SocketUDP.cpp */; }; + A0F1E6900E75440800778F12 /* SocketHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6870E75440800778F12 /* SocketHelper.cpp */; }; + A0F1E71F0E7545AA00778F12 /* Arial.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6990E7545AA00778F12 /* Arial.hpp */; }; + A0F1E7200E7545AA00778F12 /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E69A0E7545AA00778F12 /* Color.cpp */; }; + A0F1E7210E7545AA00778F12 /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E69B0E7545AA00778F12 /* Drawable.cpp */; }; + A0F1E7220E7545AA00778F12 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E69C0E7545AA00778F12 /* Font.cpp */; }; + A0F1E7230E7545AA00778F12 /* FontLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E69D0E7545AA00778F12 /* FontLoader.cpp */; }; + A0F1E7240E7545AA00778F12 /* FontLoader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E69E0E7545AA00778F12 /* FontLoader.hpp */; }; + A0F1E7250E7545AA00778F12 /* glew.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6A00E7545AA00778F12 /* glew.c */; }; + A0F1E7260E7545AA00778F12 /* glew.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6A10E7545AA00778F12 /* glew.h */; }; + A0F1E7290E7545AA00778F12 /* GraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6A40E7545AA00778F12 /* GraphicsContext.cpp */; }; + A0F1E72A0E7545AA00778F12 /* GraphicsContext.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6A50E7545AA00778F12 /* GraphicsContext.hpp */; }; + A0F1E72B0E7545AA00778F12 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6A60E7545AA00778F12 /* Image.cpp */; }; + A0F1E72C0E7545AA00778F12 /* ImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6A70E7545AA00778F12 /* ImageLoader.cpp */; }; + A0F1E72D0E7545AA00778F12 /* ImageLoader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6A80E7545AA00778F12 /* ImageLoader.hpp */; }; + A0F1E72E0E7545AA00778F12 /* cderror.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6AA0E7545AA00778F12 /* cderror.h */; }; + A0F1E72F0E7545AA00778F12 /* jcapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6AB0E7545AA00778F12 /* jcapimin.c */; }; + A0F1E7300E7545AA00778F12 /* jcapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6AC0E7545AA00778F12 /* jcapistd.c */; }; + A0F1E7310E7545AA00778F12 /* jccoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6AD0E7545AA00778F12 /* jccoefct.c */; }; + A0F1E7320E7545AA00778F12 /* jccolor.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6AE0E7545AA00778F12 /* jccolor.c */; }; + A0F1E7330E7545AA00778F12 /* jcdctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6AF0E7545AA00778F12 /* jcdctmgr.c */; }; + A0F1E7340E7545AA00778F12 /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B00E7545AA00778F12 /* jchuff.c */; }; + A0F1E7350E7545AA00778F12 /* jchuff.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6B10E7545AA00778F12 /* jchuff.h */; }; + A0F1E7360E7545AA00778F12 /* jcinit.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B20E7545AA00778F12 /* jcinit.c */; }; + A0F1E7370E7545AA00778F12 /* jcmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B30E7545AA00778F12 /* jcmainct.c */; }; + A0F1E7380E7545AA00778F12 /* jcmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B40E7545AA00778F12 /* jcmarker.c */; }; + A0F1E7390E7545AA00778F12 /* jcmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B50E7545AA00778F12 /* jcmaster.c */; }; + A0F1E73A0E7545AA00778F12 /* jcomapi.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B60E7545AA00778F12 /* jcomapi.c */; }; + A0F1E73B0E7545AA00778F12 /* jconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6B70E7545AA00778F12 /* jconfig.h */; }; + A0F1E73C0E7545AA00778F12 /* jcparam.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B80E7545AA00778F12 /* jcparam.c */; }; + A0F1E73D0E7545AA00778F12 /* jcphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6B90E7545AA00778F12 /* jcphuff.c */; }; + A0F1E73E0E7545AA00778F12 /* jcprepct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6BA0E7545AA00778F12 /* jcprepct.c */; }; + A0F1E73F0E7545AA00778F12 /* jcsample.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6BB0E7545AA00778F12 /* jcsample.c */; }; + A0F1E7400E7545AA00778F12 /* jctrans.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6BC0E7545AA00778F12 /* jctrans.c */; }; + A0F1E7410E7545AA00778F12 /* jdapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6BD0E7545AA00778F12 /* jdapimin.c */; }; + A0F1E7420E7545AA00778F12 /* jdapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6BE0E7545AA00778F12 /* jdapistd.c */; }; + A0F1E7430E7545AA00778F12 /* jdatadst.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6BF0E7545AA00778F12 /* jdatadst.c */; }; + A0F1E7440E7545AA00778F12 /* jdatasrc.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C00E7545AA00778F12 /* jdatasrc.c */; }; + A0F1E7450E7545AA00778F12 /* jdcoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C10E7545AA00778F12 /* jdcoefct.c */; }; + A0F1E7460E7545AA00778F12 /* jdcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C20E7545AA00778F12 /* jdcolor.c */; }; + A0F1E7470E7545AA00778F12 /* jdct.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6C30E7545AA00778F12 /* jdct.h */; }; + A0F1E7480E7545AA00778F12 /* jddctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C40E7545AA00778F12 /* jddctmgr.c */; }; + A0F1E7490E7545AA00778F12 /* jdhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C50E7545AA00778F12 /* jdhuff.c */; }; + A0F1E74A0E7545AA00778F12 /* jdhuff.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6C60E7545AA00778F12 /* jdhuff.h */; }; + A0F1E74B0E7545AA00778F12 /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C70E7545AA00778F12 /* jdinput.c */; }; + A0F1E74C0E7545AA00778F12 /* jdmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C80E7545AA00778F12 /* jdmainct.c */; }; + A0F1E74D0E7545AA00778F12 /* jdmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6C90E7545AA00778F12 /* jdmarker.c */; }; + A0F1E74E0E7545AA00778F12 /* jdmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6CA0E7545AA00778F12 /* jdmaster.c */; }; + A0F1E74F0E7545AA00778F12 /* jdmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6CB0E7545AA00778F12 /* jdmerge.c */; }; + A0F1E7500E7545AA00778F12 /* jdphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6CC0E7545AA00778F12 /* jdphuff.c */; }; + A0F1E7510E7545AA00778F12 /* jdpostct.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6CD0E7545AA00778F12 /* jdpostct.c */; }; + A0F1E7520E7545AA00778F12 /* jdsample.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6CE0E7545AA00778F12 /* jdsample.c */; }; + A0F1E7530E7545AA00778F12 /* jdtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6CF0E7545AA00778F12 /* jdtrans.c */; }; + A0F1E7540E7545AA00778F12 /* jerror.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D00E7545AA00778F12 /* jerror.c */; }; + A0F1E7550E7545AA00778F12 /* jerror.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6D10E7545AA00778F12 /* jerror.h */; }; + A0F1E7560E7545AA00778F12 /* jfdctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D20E7545AA00778F12 /* jfdctflt.c */; }; + A0F1E7570E7545AA00778F12 /* jfdctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D30E7545AA00778F12 /* jfdctfst.c */; }; + A0F1E7580E7545AA00778F12 /* jfdctint.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D40E7545AA00778F12 /* jfdctint.c */; }; + A0F1E7590E7545AA00778F12 /* jidctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D50E7545AA00778F12 /* jidctflt.c */; }; + A0F1E75A0E7545AA00778F12 /* jidctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D60E7545AA00778F12 /* jidctfst.c */; }; + A0F1E75B0E7545AA00778F12 /* jidctint.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D70E7545AA00778F12 /* jidctint.c */; }; + A0F1E75C0E7545AA00778F12 /* jidctred.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6D80E7545AA00778F12 /* jidctred.c */; }; + A0F1E75D0E7545AA00778F12 /* jinclude.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6D90E7545AA00778F12 /* jinclude.h */; }; + A0F1E75E0E7545AA00778F12 /* jmemmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6DA0E7545AA00778F12 /* jmemmgr.c */; }; + A0F1E75F0E7545AA00778F12 /* jmemnobs.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6DB0E7545AA00778F12 /* jmemnobs.c */; }; + A0F1E7600E7545AA00778F12 /* jmemsys.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6DC0E7545AA00778F12 /* jmemsys.h */; }; + A0F1E7610E7545AA00778F12 /* jmorecfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6DD0E7545AA00778F12 /* jmorecfg.h */; }; + A0F1E7620E7545AA00778F12 /* jpegint.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6DE0E7545AA00778F12 /* jpegint.h */; }; + A0F1E7630E7545AA00778F12 /* jpeglib.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6DF0E7545AA00778F12 /* jpeglib.h */; }; + A0F1E7640E7545AA00778F12 /* jquant1.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6E00E7545AA00778F12 /* jquant1.c */; }; + A0F1E7650E7545AA00778F12 /* jquant2.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6E10E7545AA00778F12 /* jquant2.c */; }; + A0F1E7660E7545AA00778F12 /* jutils.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6E20E7545AA00778F12 /* jutils.c */; }; + A0F1E7670E7545AA00778F12 /* jversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6E30E7545AA00778F12 /* jversion.h */; }; + A0F1E7680E7545AA00778F12 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6E50E7545AA00778F12 /* png.c */; }; + A0F1E7690E7545AA00778F12 /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6E60E7545AA00778F12 /* png.h */; }; + A0F1E76A0E7545AA00778F12 /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E6E70E7545AA00778F12 /* pngconf.h */; }; + A0F1E76B0E7545AA00778F12 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6E80E7545AA00778F12 /* pngerror.c */; }; + A0F1E76C0E7545AA00778F12 /* pnggccrd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6E90E7545AA00778F12 /* pnggccrd.c */; }; + A0F1E76D0E7545AA00778F12 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6EA0E7545AA00778F12 /* pngget.c */; }; + A0F1E76E0E7545AA00778F12 /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6EB0E7545AA00778F12 /* pngmem.c */; }; + A0F1E76F0E7545AA00778F12 /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6EC0E7545AA00778F12 /* pngpread.c */; }; + A0F1E7700E7545AA00778F12 /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6ED0E7545AA00778F12 /* pngread.c */; }; + A0F1E7710E7545AA00778F12 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6EE0E7545AA00778F12 /* pngrio.c */; }; + A0F1E7720E7545AA00778F12 /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6EF0E7545AA00778F12 /* pngrtran.c */; }; + A0F1E7730E7545AA00778F12 /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F00E7545AA00778F12 /* pngrutil.c */; }; + A0F1E7740E7545AA00778F12 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F10E7545AA00778F12 /* pngset.c */; }; + A0F1E7750E7545AA00778F12 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F20E7545AA00778F12 /* pngtrans.c */; }; + A0F1E7760E7545AA00778F12 /* pngvcrd.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F30E7545AA00778F12 /* pngvcrd.c */; }; + A0F1E7770E7545AA00778F12 /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F40E7545AA00778F12 /* pngwio.c */; }; + A0F1E7780E7545AA00778F12 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F50E7545AA00778F12 /* pngwrite.c */; }; + A0F1E7790E7545AA00778F12 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F60E7545AA00778F12 /* pngwtran.c */; }; + A0F1E77A0E7545AA00778F12 /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F70E7545AA00778F12 /* pngwutil.c */; }; + A0F1E77C0E7545AA00778F12 /* Matrix3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6F90E7545AA00778F12 /* Matrix3.cpp */; }; + A0F1E77D0E7545AA00778F12 /* PostFX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6FA0E7545AA00778F12 /* PostFX.cpp */; }; + A0F1E77E0E7545AA00778F12 /* RenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6FB0E7545AA00778F12 /* RenderTarget.cpp */; }; + A0F1E77F0E7545AA00778F12 /* RenderWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6FC0E7545AA00778F12 /* RenderWindow.cpp */; }; + A0F1E7800E7545AA00778F12 /* Shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6FD0E7545AA00778F12 /* Shape.cpp */; }; + A0F1E7810E7545AA00778F12 /* image_DXT.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E6FF0E7545AA00778F12 /* image_DXT.c */; }; + A0F1E7820E7545AA00778F12 /* image_DXT.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7000E7545AA00778F12 /* image_DXT.h */; }; + A0F1E7830E7545AA00778F12 /* SOIL.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7010E7545AA00778F12 /* SOIL.c */; }; + A0F1E7840E7545AA00778F12 /* SOIL.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7020E7545AA00778F12 /* SOIL.h */; }; + A0F1E7850E7545AA00778F12 /* stb_image_aug.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7030E7545AA00778F12 /* stb_image_aug.c */; }; + A0F1E7860E7545AA00778F12 /* stb_image_aug.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7040E7545AA00778F12 /* stb_image_aug.h */; }; + A0F1E7870E7545AA00778F12 /* stbi_DDS_aug.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7050E7545AA00778F12 /* stbi_DDS_aug.h */; }; + A0F1E7880E7545AA00778F12 /* stbi_DDS_aug_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7060E7545AA00778F12 /* stbi_DDS_aug_c.h */; }; + A0F1E7890E7545AA00778F12 /* Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7070E7545AA00778F12 /* Sprite.cpp */; }; + A0F1E78A0E7545AA00778F12 /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7080E7545AA00778F12 /* String.cpp */; }; + A0F1E78B0E7545AA00778F12 /* View.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7090E7545AA00778F12 /* View.cpp */; }; + A0F1E78C0E7545AA00778F12 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E70B0E7545AA00778F12 /* adler32.c */; }; + A0F1E78D0E7545AA00778F12 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E70C0E7545AA00778F12 /* compress.c */; }; + A0F1E78E0E7545AA00778F12 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E70D0E7545AA00778F12 /* crc32.c */; }; + A0F1E78F0E7545AA00778F12 /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E70E0E7545AA00778F12 /* crc32.h */; }; + A0F1E7900E7545AA00778F12 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E70F0E7545AA00778F12 /* deflate.c */; }; + A0F1E7910E7545AA00778F12 /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7100E7545AA00778F12 /* deflate.h */; }; + A0F1E7920E7545AA00778F12 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7110E7545AA00778F12 /* inffast.c */; }; + A0F1E7930E7545AA00778F12 /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7120E7545AA00778F12 /* inffast.h */; }; + A0F1E7940E7545AA00778F12 /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7130E7545AA00778F12 /* inffixed.h */; }; + A0F1E7950E7545AA00778F12 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7140E7545AA00778F12 /* inflate.c */; }; + A0F1E7960E7545AA00778F12 /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7150E7545AA00778F12 /* inflate.h */; }; + A0F1E7970E7545AA00778F12 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7160E7545AA00778F12 /* inftrees.c */; }; + A0F1E7980E7545AA00778F12 /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7170E7545AA00778F12 /* inftrees.h */; }; + A0F1E7990E7545AA00778F12 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7180E7545AA00778F12 /* trees.c */; }; + A0F1E79A0E7545AA00778F12 /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7190E7545AA00778F12 /* trees.h */; }; + A0F1E79B0E7545AA00778F12 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E71A0E7545AA00778F12 /* uncompr.c */; }; + A0F1E79C0E7545AA00778F12 /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E71B0E7545AA00778F12 /* zconf.h */; }; + A0F1E79D0E7545AA00778F12 /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E71C0E7545AA00778F12 /* zlib.h */; }; + A0F1E79E0E7545AA00778F12 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E71D0E7545AA00778F12 /* zutil.c */; }; + A0F1E79F0E7545AA00778F12 /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E71E0E7545AA00778F12 /* zutil.h */; }; + A0F1E7E20E7545F800778F12 /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7AC0E7545F800778F12 /* Context.cpp */; }; + A0F1E7E60E7545F800778F12 /* Input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7B10E7545F800778F12 /* Input.cpp */; }; + A0F1E7E70E7545F800778F12 /* Joystick.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7B20E7545F800778F12 /* Joystick.hpp */; }; + A0F1E8070E7545F800778F12 /* VideoMode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7D60E7545F800778F12 /* VideoMode.cpp */; }; + A0F1E8080E7545F800778F12 /* VideoModeSupport.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7D70E7545F800778F12 /* VideoModeSupport.hpp */; }; + A0F1E80F0E7545F800778F12 /* Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7DF0E7545F800778F12 /* Window.cpp */; }; + A0F1E8100E7545F800778F12 /* WindowImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0F1E7E00E7545F800778F12 /* WindowImpl.cpp */; }; + A0F1E8110E7545F800778F12 /* WindowImpl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0F1E7E10E7545F800778F12 /* WindowImpl.hpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXBuildRule section */ + A09EEA9F0D8C074D00F6C625 /* PBXBuildRule */ = { + isa = PBXBuildRule; + compilerSpec = com.apple.compilers.gcc; + fileType = sourcecode.cpp; + isEditable = 1; + outputFiles = ( + ); + script = /usr/local/bin/ppm; + }; +/* End PBXBuildRule section */ + +/* Begin PBXContainerItemProxy section */ + A012F57F0E0FF91B0022FB0F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E3740D8BF86E002236B4; + remoteInfo = SFML; + }; + A012F5810E0FF9310022FB0F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E3740D8BF86E002236B4; + remoteInfo = SFML; + }; + A017FF8A0E51E06400A4C078 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E37E0D8BF87A002236B4; + remoteInfo = "sfml-system"; + }; + A07EA05A0DB657A9007C7747 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A0C93EB30D9A9CA000B9E0C8; + remoteInfo = "sfml-window-cocoa"; + }; + A07EA05C0DB657C0007C7747 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A0C93EB30D9A9CA000B9E0C8; + remoteInfo = "sfml-window-cocoa"; + }; + A093E5490D8BFEB9002236B4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E37E0D8BF87A002236B4; + remoteInfo = "sfml-system"; + }; + A0B4CD390D96B11500DEEE0F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E3740D8BF86E002236B4; + remoteInfo = SFML; + }; + A0F0BA850D92E52300056981 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E3990D8BF89B002236B4; + remoteInfo = "sfml-audio"; + }; + A0F0BA870D92E52300056981 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E3A20D8BF8A2002236B4; + remoteInfo = "sfml-graphics"; + }; + A0F0BA890D92E52300056981 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E3870D8BF885002236B4; + remoteInfo = "sfml-network"; + }; + A0F0BA8B0D92E52300056981 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A093E36A0D8BF860002236B4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A093E37E0D8BF87A002236B4; + remoteInfo = "sfml-system"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + A018A2790EA21866005FFAC3 /* Http.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Http.cpp; path = ../../src/SFML/Network/Http.cpp; sourceTree = SOURCE_ROOT; }; + A018A27A0EA21866005FFAC3 /* Ftp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Ftp.cpp; path = ../../src/SFML/Network/Ftp.cpp; sourceTree = SOURCE_ROOT; }; + A018A27D0EA218C7005FFAC3 /* Http.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Http.hpp; path = ../../include/SFML/Network/Http.hpp; sourceTree = SOURCE_ROOT; }; + A018A27E0EA218C7005FFAC3 /* Ftp.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Ftp.hpp; path = ../../include/SFML/Network/Ftp.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A830E7517C800D0BA9B /* AudioResource.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = AudioResource.hpp; path = ../../include/SFML/Audio/AudioResource.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A840E7517C800D0BA9B /* Listener.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Listener.hpp; path = ../../include/SFML/Audio/Listener.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A850E7517C800D0BA9B /* Music.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Music.hpp; path = ../../include/SFML/Audio/Music.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A860E7517C800D0BA9B /* Sound.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Sound.hpp; path = ../../include/SFML/Audio/Sound.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A870E7517C800D0BA9B /* SoundBuffer.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundBuffer.hpp; path = ../../include/SFML/Audio/SoundBuffer.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A880E7517C800D0BA9B /* SoundBufferRecorder.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundBufferRecorder.hpp; path = ../../include/SFML/Audio/SoundBufferRecorder.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A890E7517C800D0BA9B /* SoundRecorder.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundRecorder.hpp; path = ../../include/SFML/Audio/SoundRecorder.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A8A0E7517C800D0BA9B /* SoundStream.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundStream.hpp; path = ../../include/SFML/Audio/SoundStream.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A8B0E7517C800D0BA9B /* Audio.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Audio.hpp; path = ../../include/SFML/Audio.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A8C0E7517C800D0BA9B /* Config.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Config.hpp; path = ../../include/SFML/Config.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A8E0E7517C800D0BA9B /* Color.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Color.hpp; path = ../../include/SFML/Graphics/Color.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A8F0E7517C800D0BA9B /* Drawable.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Drawable.hpp; path = ../../include/SFML/Graphics/Drawable.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A900E7517C800D0BA9B /* Font.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Font.hpp; path = ../../include/SFML/Graphics/Font.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A910E7517C800D0BA9B /* Glyph.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Glyph.hpp; path = ../../include/SFML/Graphics/Glyph.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A920E7517C800D0BA9B /* Image.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Image.hpp; path = ../../include/SFML/Graphics/Image.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A930E7517C800D0BA9B /* Matrix3.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Matrix3.hpp; path = ../../include/SFML/Graphics/Matrix3.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A940E7517C800D0BA9B /* Matrix3.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Matrix3.inl; path = ../../include/SFML/Graphics/Matrix3.inl; sourceTree = SOURCE_ROOT; }; + A01A3A950E7517C800D0BA9B /* PostFX.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = PostFX.hpp; path = ../../include/SFML/Graphics/PostFX.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A960E7517C800D0BA9B /* Rect.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Rect.hpp; path = ../../include/SFML/Graphics/Rect.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A970E7517C800D0BA9B /* Rect.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Rect.inl; path = ../../include/SFML/Graphics/Rect.inl; sourceTree = SOURCE_ROOT; }; + A01A3A980E7517C800D0BA9B /* RenderTarget.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = RenderTarget.hpp; path = ../../include/SFML/Graphics/RenderTarget.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A990E7517C800D0BA9B /* RenderWindow.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = RenderWindow.hpp; path = ../../include/SFML/Graphics/RenderWindow.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A9A0E7517C800D0BA9B /* Shape.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Shape.hpp; path = ../../include/SFML/Graphics/Shape.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A9B0E7517C800D0BA9B /* Sprite.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Sprite.hpp; path = ../../include/SFML/Graphics/Sprite.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A9C0E7517C800D0BA9B /* String.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = String.hpp; path = ../../include/SFML/Graphics/String.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A9D0E7517C800D0BA9B /* View.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = View.hpp; path = ../../include/SFML/Graphics/View.hpp; sourceTree = SOURCE_ROOT; }; + A01A3A9E0E7517C800D0BA9B /* Graphics.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Graphics.hpp; path = ../../include/SFML/Graphics.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA00E7517C800D0BA9B /* IPAddress.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = IPAddress.hpp; path = ../../include/SFML/Network/IPAddress.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA10E7517C800D0BA9B /* Packet.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Packet.hpp; path = ../../include/SFML/Network/Packet.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA20E7517C800D0BA9B /* Selector.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Selector.hpp; path = ../../include/SFML/Network/Selector.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA30E7517C800D0BA9B /* Selector.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Selector.inl; path = ../../include/SFML/Network/Selector.inl; sourceTree = SOURCE_ROOT; }; + A01A3AA40E7517C800D0BA9B /* SelectorBase.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SelectorBase.hpp; path = ../../include/SFML/Network/SelectorBase.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA50E7517C800D0BA9B /* SocketHelper.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SocketHelper.hpp; path = ../../include/SFML/Network/SocketHelper.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA60E7517C800D0BA9B /* Sockets.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Sockets.hpp; path = ../../include/SFML/Network/Sockets.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA70E7517C800D0BA9B /* SocketTCP.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SocketTCP.hpp; path = ../../include/SFML/Network/SocketTCP.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AA80E7517C800D0BA9B /* SocketUDP.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SocketUDP.hpp; path = ../../include/SFML/Network/SocketUDP.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AAA0E7517C800D0BA9B /* SocketHelper.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SocketHelper.hpp; path = ../../include/SFML/Network/Unix/SocketHelper.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AAC0E7517C800D0BA9B /* SocketHelper.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SocketHelper.hpp; path = ../../include/SFML/Network/Win32/SocketHelper.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AAD0E7517C800D0BA9B /* Network.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Network.hpp; path = ../../include/SFML/Network.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AAF0E7517C800D0BA9B /* Clock.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Clock.hpp; path = ../../include/SFML/System/Clock.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB00E7517C800D0BA9B /* Lock.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Lock.hpp; path = ../../include/SFML/System/Lock.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB10E7517C800D0BA9B /* Mutex.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Mutex.hpp; path = ../../include/SFML/System/Mutex.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB20E7517C800D0BA9B /* NonCopyable.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = NonCopyable.hpp; path = ../../include/SFML/System/NonCopyable.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB30E7517C800D0BA9B /* Randomizer.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Randomizer.hpp; path = ../../include/SFML/System/Randomizer.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB40E7517C800D0BA9B /* Resource.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Resource.hpp; path = ../../include/SFML/System/Resource.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB50E7517C800D0BA9B /* Resource.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Resource.inl; path = ../../include/SFML/System/Resource.inl; sourceTree = SOURCE_ROOT; }; + A01A3AB60E7517C800D0BA9B /* ResourcePtr.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = ResourcePtr.inl; path = ../../include/SFML/System/ResourcePtr.inl; sourceTree = SOURCE_ROOT; }; + A01A3AB70E7517C800D0BA9B /* Sleep.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Sleep.hpp; path = ../../include/SFML/System/Sleep.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB80E7517C800D0BA9B /* Thread.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Thread.hpp; path = ../../include/SFML/System/Thread.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AB90E7517C800D0BA9B /* Unicode.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Unicode.hpp; path = ../../include/SFML/System/Unicode.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ABA0E7517C800D0BA9B /* Unicode.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Unicode.inl; path = ../../include/SFML/System/Unicode.inl; sourceTree = SOURCE_ROOT; }; + A01A3ABC0E7517C800D0BA9B /* Mutex.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Mutex.hpp; path = ../../include/SFML/System/Unix/Mutex.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ABD0E7517C800D0BA9B /* Thread.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Thread.hpp; path = ../../include/SFML/System/Unix/Thread.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ABE0E7517C800D0BA9B /* Vector2.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Vector2.hpp; path = ../../include/SFML/System/Vector2.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ABF0E7517C800D0BA9B /* Vector2.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Vector2.inl; path = ../../include/SFML/System/Vector2.inl; sourceTree = SOURCE_ROOT; }; + A01A3AC00E7517C800D0BA9B /* Vector3.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Vector3.hpp; path = ../../include/SFML/System/Vector3.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AC10E7517C800D0BA9B /* Vector3.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Vector3.inl; path = ../../include/SFML/System/Vector3.inl; sourceTree = SOURCE_ROOT; }; + A01A3AC50E7517C800D0BA9B /* System.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = System.hpp; path = ../../include/SFML/System.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AC70E7517C800D0BA9B /* Context.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Context.hpp; path = ../../include/SFML/Window/Context.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AC80E7517C800D0BA9B /* Event.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Event.hpp; path = ../../include/SFML/Window/Event.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AC90E7517C800D0BA9B /* Input.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Input.hpp; path = ../../include/SFML/Window/Input.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ACA0E7517C800D0BA9B /* OpenGL.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = OpenGL.hpp; path = ../../include/SFML/Window/OpenGL.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ACB0E7517C800D0BA9B /* VideoMode.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = VideoMode.hpp; path = ../../include/SFML/Window/VideoMode.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ACC0E7517C800D0BA9B /* Window.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Window.hpp; path = ../../include/SFML/Window/Window.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ACD0E7517C800D0BA9B /* WindowHandle.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowHandle.hpp; path = ../../include/SFML/Window/WindowHandle.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ACE0E7517C800D0BA9B /* WindowListener.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowListener.hpp; path = ../../include/SFML/Window/WindowListener.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ACF0E7517C800D0BA9B /* WindowSettings.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowSettings.hpp; path = ../../include/SFML/Window/WindowSettings.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AD00E7517C800D0BA9B /* WindowStyle.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowStyle.hpp; path = ../../include/SFML/Window/WindowStyle.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AD10E7517C800D0BA9B /* Window.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Window.hpp; path = ../../include/SFML/Window.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AD80E75181300D0BA9B /* AudioDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDevice.cpp; path = ../../src/SFML/Audio/AudioDevice.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AD90E75181300D0BA9B /* AudioDevice.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = AudioDevice.hpp; path = ../../src/SFML/Audio/AudioDevice.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ADA0E75181300D0BA9B /* AudioResource.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AudioResource.cpp; path = ../../src/SFML/Audio/AudioResource.cpp; sourceTree = SOURCE_ROOT; }; + A01A3ADB0E75181300D0BA9B /* Listener.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Listener.cpp; path = ../../src/SFML/Audio/Listener.cpp; sourceTree = SOURCE_ROOT; }; + A01A3ADD0E75181300D0BA9B /* Music.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Music.cpp; path = ../../src/SFML/Audio/Music.cpp; sourceTree = SOURCE_ROOT; }; + A01A3ADE0E75181300D0BA9B /* OpenAL.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = OpenAL.hpp; path = ../../src/SFML/Audio/OpenAL.hpp; sourceTree = SOURCE_ROOT; }; + A01A3ADF0E75181300D0BA9B /* Sound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Sound.cpp; path = ../../src/SFML/Audio/Sound.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE00E75181300D0BA9B /* SoundBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundBuffer.cpp; path = ../../src/SFML/Audio/SoundBuffer.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE10E75181300D0BA9B /* SoundBufferRecorder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundBufferRecorder.cpp; path = ../../src/SFML/Audio/SoundBufferRecorder.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE20E75181300D0BA9B /* SoundFile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundFile.cpp; path = ../../src/SFML/Audio/SoundFile.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE30E75181300D0BA9B /* SoundFile.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundFile.hpp; path = ../../src/SFML/Audio/SoundFile.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AE40E75181300D0BA9B /* SoundFileDefault.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundFileDefault.cpp; path = ../../src/SFML/Audio/SoundFileDefault.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE50E75181300D0BA9B /* SoundFileDefault.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundFileDefault.hpp; path = ../../src/SFML/Audio/SoundFileDefault.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AE60E75181300D0BA9B /* SoundFileOgg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundFileOgg.cpp; path = ../../src/SFML/Audio/SoundFileOgg.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE70E75181300D0BA9B /* SoundFileOgg.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = SoundFileOgg.hpp; path = ../../src/SFML/Audio/SoundFileOgg.hpp; sourceTree = SOURCE_ROOT; }; + A01A3AE80E75181300D0BA9B /* SoundRecorder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundRecorder.cpp; path = ../../src/SFML/Audio/SoundRecorder.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AE90E75181300D0BA9B /* SoundStream.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SoundStream.cpp; path = ../../src/SFML/Audio/SoundStream.cpp; sourceTree = SOURCE_ROOT; }; + A01A3AEB0E75181300D0BA9B /* stb_vorbis.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stb_vorbis.c; path = ../../src/SFML/Audio/stb_vorbis/stb_vorbis.c; sourceTree = SOURCE_ROOT; }; + A01A3AEC0E75181300D0BA9B /* stb_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stb_vorbis.h; path = ../../src/SFML/Audio/stb_vorbis/stb_vorbis.h; sourceTree = SOURCE_ROOT; }; + A01C69C80E3E63CE00ED3F04 /* Unicode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Unicode.cpp; path = ../../src/SFML/System/Unicode.cpp; sourceTree = SOURCE_ROOT; }; + A04C59A50EDDBA9C00935061 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppController.h; path = ../../src/SFML/Window/Cocoa/AppController.h; sourceTree = SOURCE_ROOT; }; + A04C59A60EDDBA9C00935061 /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = AppController.mm; path = ../../src/SFML/Window/Cocoa/AppController.mm; sourceTree = SOURCE_ROOT; }; + A04C59A70EDDBA9C00935061 /* Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Joystick.cpp; path = ../../src/SFML/Window/Cocoa/Joystick.cpp; sourceTree = SOURCE_ROOT; }; + A04C59A80EDDBA9C00935061 /* Joystick.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Joystick.hpp; path = ../../src/SFML/Window/Cocoa/Joystick.hpp; sourceTree = SOURCE_ROOT; }; + A04C59A90EDDBA9C00935061 /* VideoModeSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoModeSupport.cpp; path = ../../src/SFML/Window/Cocoa/VideoModeSupport.cpp; sourceTree = SOURCE_ROOT; }; + A04C59AA0EDDBA9C00935061 /* VideoModeSupport.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = VideoModeSupport.hpp; path = ../../src/SFML/Window/Cocoa/VideoModeSupport.hpp; sourceTree = SOURCE_ROOT; }; + A04C59AB0EDDBA9C00935061 /* WindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = WindowController.h; path = ../../src/SFML/Window/Cocoa/WindowController.h; sourceTree = SOURCE_ROOT; }; + A04C59AC0EDDBA9C00935061 /* WindowController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = WindowController.mm; path = ../../src/SFML/Window/Cocoa/WindowController.mm; sourceTree = SOURCE_ROOT; }; + A04C59AD0EDDBA9C00935061 /* WindowImplCocoa.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowImplCocoa.hpp; path = ../../src/SFML/Window/Cocoa/WindowImplCocoa.hpp; sourceTree = SOURCE_ROOT; }; + A04C59AE0EDDBA9C00935061 /* WindowImplCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = WindowImplCocoa.mm; path = ../../src/SFML/Window/Cocoa/WindowImplCocoa.mm; sourceTree = SOURCE_ROOT; }; + A093E3750D8BF86E002236B4 /* SFML.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SFML.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A093E3770D8BF86E002236B4 /* SFML-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFML-Info.plist"; sourceTree = SOURCE_ROOT; }; + A093E37F0D8BF87A002236B4 /* sfml-system.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "sfml-system.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A093E3800D8BF87A002236B4 /* sfml-system-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "sfml-system-Info.plist"; sourceTree = SOURCE_ROOT; }; + A093E3880D8BF885002236B4 /* sfml-network.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "sfml-network.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A093E3890D8BF885002236B4 /* sfml-network-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "sfml-network-Info.plist"; sourceTree = SOURCE_ROOT; }; + A093E3920D8BF892002236B4 /* sfml-window-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "sfml-window-Info.plist"; sourceTree = SOURCE_ROOT; }; + A093E39A0D8BF89B002236B4 /* sfml-audio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "sfml-audio.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A093E39B0D8BF89B002236B4 /* sfml-audio-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "sfml-audio-Info.plist"; sourceTree = SOURCE_ROOT; }; + A093E3A30D8BF8A2002236B4 /* sfml-graphics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "sfml-graphics.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A093E3A40D8BF8A2002236B4 /* sfml-graphics-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "sfml-graphics-Info.plist"; sourceTree = SOURCE_ROOT; }; + A093E3CF0D8BF918002236B4 /* dummy.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = dummy.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBED0D8C19BF00F6C625 /* Platform.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Platform.hpp; path = ../../src/SFML/System/Platform.hpp; sourceTree = SOURCE_ROOT; }; + A09EEBEE0D8C19BF00F6C625 /* Randomizer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Randomizer.cpp; path = ../../src/SFML/System/Randomizer.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBF00D8C19BF00F6C625 /* Mutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Mutex.cpp; path = ../../src/SFML/System/Unix/Mutex.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBF10D8C19BF00F6C625 /* Platform.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Platform.cpp; path = ../../src/SFML/System/Unix/Platform.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBF20D8C19BF00F6C625 /* Platform.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Platform.hpp; path = ../../src/SFML/System/Unix/Platform.hpp; sourceTree = SOURCE_ROOT; }; + A09EEBF30D8C19BF00F6C625 /* Thread.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Thread.cpp; path = ../../src/SFML/System/Unix/Thread.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBF40D8C19BF00F6C625 /* Clock.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Clock.cpp; path = ../../src/SFML/System/Clock.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBF50D8C19BF00F6C625 /* Lock.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Lock.cpp; path = ../../src/SFML/System/Lock.cpp; sourceTree = SOURCE_ROOT; }; + A09EEBF60D8C19BF00F6C625 /* Sleep.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Sleep.cpp; path = ../../src/SFML/System/Sleep.cpp; sourceTree = SOURCE_ROOT; }; + A0C93EB40D9A9CA000B9E0C8 /* sfml-window.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "sfml-window.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A0F1E6800E75440800778F12 /* IPAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = IPAddress.cpp; path = ../../src/SFML/Network/IPAddress.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6820E75440800778F12 /* Packet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Packet.cpp; path = ../../src/SFML/Network/Packet.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6830E75440800778F12 /* SelectorBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SelectorBase.cpp; path = ../../src/SFML/Network/SelectorBase.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6840E75440800778F12 /* SocketTCP.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SocketTCP.cpp; path = ../../src/SFML/Network/SocketTCP.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6850E75440800778F12 /* SocketUDP.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SocketUDP.cpp; path = ../../src/SFML/Network/SocketUDP.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6870E75440800778F12 /* SocketHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SocketHelper.cpp; path = ../../src/SFML/Network/Unix/SocketHelper.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6990E7545AA00778F12 /* Arial.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Arial.hpp; path = ../../src/SFML/Graphics/Arial.hpp; sourceTree = SOURCE_ROOT; }; + A0F1E69A0E7545AA00778F12 /* Color.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Color.cpp; path = ../../src/SFML/Graphics/Color.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E69B0E7545AA00778F12 /* Drawable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Drawable.cpp; path = ../../src/SFML/Graphics/Drawable.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E69C0E7545AA00778F12 /* Font.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Font.cpp; path = ../../src/SFML/Graphics/Font.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E69D0E7545AA00778F12 /* FontLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = FontLoader.cpp; path = ../../src/SFML/Graphics/FontLoader.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E69E0E7545AA00778F12 /* FontLoader.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = FontLoader.hpp; path = ../../src/SFML/Graphics/FontLoader.hpp; sourceTree = SOURCE_ROOT; }; + A0F1E6A00E7545AA00778F12 /* glew.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = glew.c; path = ../../src/SFML/Graphics/GLEW/glew.c; sourceTree = SOURCE_ROOT; }; + A0F1E6A10E7545AA00778F12 /* glew.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = glew.h; path = ../../src/SFML/Graphics/GLEW/glew.h; sourceTree = SOURCE_ROOT; }; + A0F1E6A40E7545AA00778F12 /* GraphicsContext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GraphicsContext.cpp; path = ../../src/SFML/Graphics/GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6A50E7545AA00778F12 /* GraphicsContext.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = GraphicsContext.hpp; path = ../../src/SFML/Graphics/GraphicsContext.hpp; sourceTree = SOURCE_ROOT; }; + A0F1E6A60E7545AA00778F12 /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Image.cpp; path = ../../src/SFML/Graphics/Image.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6A70E7545AA00778F12 /* ImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ImageLoader.cpp; path = ../../src/SFML/Graphics/ImageLoader.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6A80E7545AA00778F12 /* ImageLoader.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ImageLoader.hpp; path = ../../src/SFML/Graphics/ImageLoader.hpp; sourceTree = SOURCE_ROOT; }; + A0F1E6AA0E7545AA00778F12 /* cderror.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cderror.h; path = ../../src/SFML/Graphics/libjpeg/cderror.h; sourceTree = SOURCE_ROOT; }; + A0F1E6AB0E7545AA00778F12 /* jcapimin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = ../../src/SFML/Graphics/libjpeg/jcapimin.c; sourceTree = SOURCE_ROOT; }; + A0F1E6AC0E7545AA00778F12 /* jcapistd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = ../../src/SFML/Graphics/libjpeg/jcapistd.c; sourceTree = SOURCE_ROOT; }; + A0F1E6AD0E7545AA00778F12 /* jccoefct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jccoefct.c; path = ../../src/SFML/Graphics/libjpeg/jccoefct.c; sourceTree = SOURCE_ROOT; }; + A0F1E6AE0E7545AA00778F12 /* jccolor.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = ../../src/SFML/Graphics/libjpeg/jccolor.c; sourceTree = SOURCE_ROOT; }; + A0F1E6AF0E7545AA00778F12 /* jcdctmgr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcdctmgr.c; path = ../../src/SFML/Graphics/libjpeg/jcdctmgr.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B00E7545AA00778F12 /* jchuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = ../../src/SFML/Graphics/libjpeg/jchuff.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B10E7545AA00778F12 /* jchuff.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jchuff.h; path = ../../src/SFML/Graphics/libjpeg/jchuff.h; sourceTree = SOURCE_ROOT; }; + A0F1E6B20E7545AA00778F12 /* jcinit.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcinit.c; path = ../../src/SFML/Graphics/libjpeg/jcinit.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B30E7545AA00778F12 /* jcmainct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcmainct.c; path = ../../src/SFML/Graphics/libjpeg/jcmainct.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B40E7545AA00778F12 /* jcmarker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcmarker.c; path = ../../src/SFML/Graphics/libjpeg/jcmarker.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B50E7545AA00778F12 /* jcmaster.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcmaster.c; path = ../../src/SFML/Graphics/libjpeg/jcmaster.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B60E7545AA00778F12 /* jcomapi.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = ../../src/SFML/Graphics/libjpeg/jcomapi.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B70E7545AA00778F12 /* jconfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jconfig.h; path = ../../src/SFML/Graphics/libjpeg/jconfig.h; sourceTree = SOURCE_ROOT; }; + A0F1E6B80E7545AA00778F12 /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = ../../src/SFML/Graphics/libjpeg/jcparam.c; sourceTree = SOURCE_ROOT; }; + A0F1E6B90E7545AA00778F12 /* jcphuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = ../../src/SFML/Graphics/libjpeg/jcphuff.c; sourceTree = SOURCE_ROOT; }; + A0F1E6BA0E7545AA00778F12 /* jcprepct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = ../../src/SFML/Graphics/libjpeg/jcprepct.c; sourceTree = SOURCE_ROOT; }; + A0F1E6BB0E7545AA00778F12 /* jcsample.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = ../../src/SFML/Graphics/libjpeg/jcsample.c; sourceTree = SOURCE_ROOT; }; + A0F1E6BC0E7545AA00778F12 /* jctrans.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = ../../src/SFML/Graphics/libjpeg/jctrans.c; sourceTree = SOURCE_ROOT; }; + A0F1E6BD0E7545AA00778F12 /* jdapimin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = ../../src/SFML/Graphics/libjpeg/jdapimin.c; sourceTree = SOURCE_ROOT; }; + A0F1E6BE0E7545AA00778F12 /* jdapistd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdapistd.c; path = ../../src/SFML/Graphics/libjpeg/jdapistd.c; sourceTree = SOURCE_ROOT; }; + A0F1E6BF0E7545AA00778F12 /* jdatadst.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdatadst.c; path = ../../src/SFML/Graphics/libjpeg/jdatadst.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C00E7545AA00778F12 /* jdatasrc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = ../../src/SFML/Graphics/libjpeg/jdatasrc.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C10E7545AA00778F12 /* jdcoefct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = ../../src/SFML/Graphics/libjpeg/jdcoefct.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C20E7545AA00778F12 /* jdcolor.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdcolor.c; path = ../../src/SFML/Graphics/libjpeg/jdcolor.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C30E7545AA00778F12 /* jdct.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jdct.h; path = ../../src/SFML/Graphics/libjpeg/jdct.h; sourceTree = SOURCE_ROOT; }; + A0F1E6C40E7545AA00778F12 /* jddctmgr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = ../../src/SFML/Graphics/libjpeg/jddctmgr.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C50E7545AA00778F12 /* jdhuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = ../../src/SFML/Graphics/libjpeg/jdhuff.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C60E7545AA00778F12 /* jdhuff.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jdhuff.h; path = ../../src/SFML/Graphics/libjpeg/jdhuff.h; sourceTree = SOURCE_ROOT; }; + A0F1E6C70E7545AA00778F12 /* jdinput.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdinput.c; path = ../../src/SFML/Graphics/libjpeg/jdinput.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C80E7545AA00778F12 /* jdmainct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmainct.c; path = ../../src/SFML/Graphics/libjpeg/jdmainct.c; sourceTree = SOURCE_ROOT; }; + A0F1E6C90E7545AA00778F12 /* jdmarker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmarker.c; path = ../../src/SFML/Graphics/libjpeg/jdmarker.c; sourceTree = SOURCE_ROOT; }; + A0F1E6CA0E7545AA00778F12 /* jdmaster.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmaster.c; path = ../../src/SFML/Graphics/libjpeg/jdmaster.c; sourceTree = SOURCE_ROOT; }; + A0F1E6CB0E7545AA00778F12 /* jdmerge.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdmerge.c; path = ../../src/SFML/Graphics/libjpeg/jdmerge.c; sourceTree = SOURCE_ROOT; }; + A0F1E6CC0E7545AA00778F12 /* jdphuff.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdphuff.c; path = ../../src/SFML/Graphics/libjpeg/jdphuff.c; sourceTree = SOURCE_ROOT; }; + A0F1E6CD0E7545AA00778F12 /* jdpostct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = ../../src/SFML/Graphics/libjpeg/jdpostct.c; sourceTree = SOURCE_ROOT; }; + A0F1E6CE0E7545AA00778F12 /* jdsample.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdsample.c; path = ../../src/SFML/Graphics/libjpeg/jdsample.c; sourceTree = SOURCE_ROOT; }; + A0F1E6CF0E7545AA00778F12 /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jdtrans.c; path = ../../src/SFML/Graphics/libjpeg/jdtrans.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D00E7545AA00778F12 /* jerror.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jerror.c; path = ../../src/SFML/Graphics/libjpeg/jerror.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D10E7545AA00778F12 /* jerror.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = ../../src/SFML/Graphics/libjpeg/jerror.h; sourceTree = SOURCE_ROOT; }; + A0F1E6D20E7545AA00778F12 /* jfdctflt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jfdctflt.c; path = ../../src/SFML/Graphics/libjpeg/jfdctflt.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D30E7545AA00778F12 /* jfdctfst.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jfdctfst.c; path = ../../src/SFML/Graphics/libjpeg/jfdctfst.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D40E7545AA00778F12 /* jfdctint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jfdctint.c; path = ../../src/SFML/Graphics/libjpeg/jfdctint.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D50E7545AA00778F12 /* jidctflt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = ../../src/SFML/Graphics/libjpeg/jidctflt.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D60E7545AA00778F12 /* jidctfst.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = ../../src/SFML/Graphics/libjpeg/jidctfst.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D70E7545AA00778F12 /* jidctint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctint.c; path = ../../src/SFML/Graphics/libjpeg/jidctint.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D80E7545AA00778F12 /* jidctred.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jidctred.c; path = ../../src/SFML/Graphics/libjpeg/jidctred.c; sourceTree = SOURCE_ROOT; }; + A0F1E6D90E7545AA00778F12 /* jinclude.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jinclude.h; path = ../../src/SFML/Graphics/libjpeg/jinclude.h; sourceTree = SOURCE_ROOT; }; + A0F1E6DA0E7545AA00778F12 /* jmemmgr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jmemmgr.c; path = ../../src/SFML/Graphics/libjpeg/jmemmgr.c; sourceTree = SOURCE_ROOT; }; + A0F1E6DB0E7545AA00778F12 /* jmemnobs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jmemnobs.c; path = ../../src/SFML/Graphics/libjpeg/jmemnobs.c; sourceTree = SOURCE_ROOT; }; + A0F1E6DC0E7545AA00778F12 /* jmemsys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jmemsys.h; path = ../../src/SFML/Graphics/libjpeg/jmemsys.h; sourceTree = SOURCE_ROOT; }; + A0F1E6DD0E7545AA00778F12 /* jmorecfg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jmorecfg.h; path = ../../src/SFML/Graphics/libjpeg/jmorecfg.h; sourceTree = SOURCE_ROOT; }; + A0F1E6DE0E7545AA00778F12 /* jpegint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jpegint.h; path = ../../src/SFML/Graphics/libjpeg/jpegint.h; sourceTree = SOURCE_ROOT; }; + A0F1E6DF0E7545AA00778F12 /* jpeglib.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jpeglib.h; path = ../../src/SFML/Graphics/libjpeg/jpeglib.h; sourceTree = SOURCE_ROOT; }; + A0F1E6E00E7545AA00778F12 /* jquant1.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jquant1.c; path = ../../src/SFML/Graphics/libjpeg/jquant1.c; sourceTree = SOURCE_ROOT; }; + A0F1E6E10E7545AA00778F12 /* jquant2.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = ../../src/SFML/Graphics/libjpeg/jquant2.c; sourceTree = SOURCE_ROOT; }; + A0F1E6E20E7545AA00778F12 /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = ../../src/SFML/Graphics/libjpeg/jutils.c; sourceTree = SOURCE_ROOT; }; + A0F1E6E30E7545AA00778F12 /* jversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jversion.h; path = ../../src/SFML/Graphics/libjpeg/jversion.h; sourceTree = SOURCE_ROOT; }; + A0F1E6E50E7545AA00778F12 /* png.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../../src/SFML/Graphics/libpng/png.c; sourceTree = SOURCE_ROOT; }; + A0F1E6E60E7545AA00778F12 /* png.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = png.h; path = ../../src/SFML/Graphics/libpng/png.h; sourceTree = SOURCE_ROOT; }; + A0F1E6E70E7545AA00778F12 /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = ../../src/SFML/Graphics/libpng/pngconf.h; sourceTree = SOURCE_ROOT; }; + A0F1E6E80E7545AA00778F12 /* pngerror.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngerror.c; path = ../../src/SFML/Graphics/libpng/pngerror.c; sourceTree = SOURCE_ROOT; }; + A0F1E6E90E7545AA00778F12 /* pnggccrd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pnggccrd.c; path = ../../src/SFML/Graphics/libpng/pnggccrd.c; sourceTree = SOURCE_ROOT; }; + A0F1E6EA0E7545AA00778F12 /* pngget.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = ../../src/SFML/Graphics/libpng/pngget.c; sourceTree = SOURCE_ROOT; }; + A0F1E6EB0E7545AA00778F12 /* pngmem.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngmem.c; path = ../../src/SFML/Graphics/libpng/pngmem.c; sourceTree = SOURCE_ROOT; }; + A0F1E6EC0E7545AA00778F12 /* pngpread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = ../../src/SFML/Graphics/libpng/pngpread.c; sourceTree = SOURCE_ROOT; }; + A0F1E6ED0E7545AA00778F12 /* pngread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngread.c; path = ../../src/SFML/Graphics/libpng/pngread.c; sourceTree = SOURCE_ROOT; }; + A0F1E6EE0E7545AA00778F12 /* pngrio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = ../../src/SFML/Graphics/libpng/pngrio.c; sourceTree = SOURCE_ROOT; }; + A0F1E6EF0E7545AA00778F12 /* pngrtran.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngrtran.c; path = ../../src/SFML/Graphics/libpng/pngrtran.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F00E7545AA00778F12 /* pngrutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = ../../src/SFML/Graphics/libpng/pngrutil.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F10E7545AA00778F12 /* pngset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngset.c; path = ../../src/SFML/Graphics/libpng/pngset.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F20E7545AA00778F12 /* pngtrans.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = ../../src/SFML/Graphics/libpng/pngtrans.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F30E7545AA00778F12 /* pngvcrd.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngvcrd.c; path = ../../src/SFML/Graphics/libpng/pngvcrd.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F40E7545AA00778F12 /* pngwio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = ../../src/SFML/Graphics/libpng/pngwio.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F50E7545AA00778F12 /* pngwrite.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwrite.c; path = ../../src/SFML/Graphics/libpng/pngwrite.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F60E7545AA00778F12 /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../src/SFML/Graphics/libpng/pngwtran.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F70E7545AA00778F12 /* pngwutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pngwutil.c; path = ../../src/SFML/Graphics/libpng/pngwutil.c; sourceTree = SOURCE_ROOT; }; + A0F1E6F90E7545AA00778F12 /* Matrix3.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Matrix3.cpp; path = ../../src/SFML/Graphics/Matrix3.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6FA0E7545AA00778F12 /* PostFX.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = PostFX.cpp; path = ../../src/SFML/Graphics/PostFX.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6FB0E7545AA00778F12 /* RenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = RenderTarget.cpp; path = ../../src/SFML/Graphics/RenderTarget.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6FC0E7545AA00778F12 /* RenderWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = RenderWindow.cpp; path = ../../src/SFML/Graphics/RenderWindow.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6FD0E7545AA00778F12 /* Shape.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Shape.cpp; path = ../../src/SFML/Graphics/Shape.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E6FF0E7545AA00778F12 /* image_DXT.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = image_DXT.c; path = ../../src/SFML/Graphics/SOIL/image_DXT.c; sourceTree = SOURCE_ROOT; }; + A0F1E7000E7545AA00778F12 /* image_DXT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = image_DXT.h; path = ../../src/SFML/Graphics/SOIL/image_DXT.h; sourceTree = SOURCE_ROOT; }; + A0F1E7010E7545AA00778F12 /* SOIL.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = SOIL.c; path = ../../src/SFML/Graphics/SOIL/SOIL.c; sourceTree = SOURCE_ROOT; }; + A0F1E7020E7545AA00778F12 /* SOIL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SOIL.h; path = ../../src/SFML/Graphics/SOIL/SOIL.h; sourceTree = SOURCE_ROOT; }; + A0F1E7030E7545AA00778F12 /* stb_image_aug.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stb_image_aug.c; path = ../../src/SFML/Graphics/SOIL/stb_image_aug.c; sourceTree = SOURCE_ROOT; }; + A0F1E7040E7545AA00778F12 /* stb_image_aug.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stb_image_aug.h; path = ../../src/SFML/Graphics/SOIL/stb_image_aug.h; sourceTree = SOURCE_ROOT; }; + A0F1E7050E7545AA00778F12 /* stbi_DDS_aug.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stbi_DDS_aug.h; path = ../../src/SFML/Graphics/SOIL/stbi_DDS_aug.h; sourceTree = SOURCE_ROOT; }; + A0F1E7060E7545AA00778F12 /* stbi_DDS_aug_c.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stbi_DDS_aug_c.h; path = ../../src/SFML/Graphics/SOIL/stbi_DDS_aug_c.h; sourceTree = SOURCE_ROOT; }; + A0F1E7070E7545AA00778F12 /* Sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Sprite.cpp; path = ../../src/SFML/Graphics/Sprite.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7080E7545AA00778F12 /* String.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = String.cpp; path = ../../src/SFML/Graphics/String.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7090E7545AA00778F12 /* View.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = View.cpp; path = ../../src/SFML/Graphics/View.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E70B0E7545AA00778F12 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = ../../src/SFML/Graphics/zlib/adler32.c; sourceTree = SOURCE_ROOT; }; + A0F1E70C0E7545AA00778F12 /* compress.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = compress.c; path = ../../src/SFML/Graphics/zlib/compress.c; sourceTree = SOURCE_ROOT; }; + A0F1E70D0E7545AA00778F12 /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = ../../src/SFML/Graphics/zlib/crc32.c; sourceTree = SOURCE_ROOT; }; + A0F1E70E0E7545AA00778F12 /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = crc32.h; path = ../../src/SFML/Graphics/zlib/crc32.h; sourceTree = SOURCE_ROOT; }; + A0F1E70F0E7545AA00778F12 /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = ../../src/SFML/Graphics/zlib/deflate.c; sourceTree = SOURCE_ROOT; }; + A0F1E7100E7545AA00778F12 /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = deflate.h; path = ../../src/SFML/Graphics/zlib/deflate.h; sourceTree = SOURCE_ROOT; }; + A0F1E7110E7545AA00778F12 /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inffast.c; path = ../../src/SFML/Graphics/zlib/inffast.c; sourceTree = SOURCE_ROOT; }; + A0F1E7120E7545AA00778F12 /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inffast.h; path = ../../src/SFML/Graphics/zlib/inffast.h; sourceTree = SOURCE_ROOT; }; + A0F1E7130E7545AA00778F12 /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inffixed.h; path = ../../src/SFML/Graphics/zlib/inffixed.h; sourceTree = SOURCE_ROOT; }; + A0F1E7140E7545AA00778F12 /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inflate.c; path = ../../src/SFML/Graphics/zlib/inflate.c; sourceTree = SOURCE_ROOT; }; + A0F1E7150E7545AA00778F12 /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inflate.h; path = ../../src/SFML/Graphics/zlib/inflate.h; sourceTree = SOURCE_ROOT; }; + A0F1E7160E7545AA00778F12 /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inftrees.c; path = ../../src/SFML/Graphics/zlib/inftrees.c; sourceTree = SOURCE_ROOT; }; + A0F1E7170E7545AA00778F12 /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = ../../src/SFML/Graphics/zlib/inftrees.h; sourceTree = SOURCE_ROOT; }; + A0F1E7180E7545AA00778F12 /* trees.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = trees.c; path = ../../src/SFML/Graphics/zlib/trees.c; sourceTree = SOURCE_ROOT; }; + A0F1E7190E7545AA00778F12 /* trees.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = trees.h; path = ../../src/SFML/Graphics/zlib/trees.h; sourceTree = SOURCE_ROOT; }; + A0F1E71A0E7545AA00778F12 /* uncompr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = ../../src/SFML/Graphics/zlib/uncompr.c; sourceTree = SOURCE_ROOT; }; + A0F1E71B0E7545AA00778F12 /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zconf.h; path = ../../src/SFML/Graphics/zlib/zconf.h; sourceTree = SOURCE_ROOT; }; + A0F1E71C0E7545AA00778F12 /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = ../../src/SFML/Graphics/zlib/zlib.h; sourceTree = SOURCE_ROOT; }; + A0F1E71D0E7545AA00778F12 /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = zutil.c; path = ../../src/SFML/Graphics/zlib/zutil.c; sourceTree = SOURCE_ROOT; }; + A0F1E71E0E7545AA00778F12 /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zutil.h; path = ../../src/SFML/Graphics/zlib/zutil.h; sourceTree = SOURCE_ROOT; }; + A0F1E7AC0E7545F800778F12 /* Context.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Context.cpp; path = ../../src/SFML/Window/Context.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7B10E7545F800778F12 /* Input.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Input.cpp; path = ../../src/SFML/Window/Input.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7B20E7545F800778F12 /* Joystick.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Joystick.hpp; path = ../../src/SFML/Window/Joystick.hpp; sourceTree = SOURCE_ROOT; }; + A0F1E7D60E7545F800778F12 /* VideoMode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoMode.cpp; path = ../../src/SFML/Window/VideoMode.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7D70E7545F800778F12 /* VideoModeSupport.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = VideoModeSupport.hpp; path = ../../src/SFML/Window/VideoModeSupport.hpp; sourceTree = SOURCE_ROOT; }; + A0F1E7DF0E7545F800778F12 /* Window.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Window.cpp; path = ../../src/SFML/Window/Window.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7E00E7545F800778F12 /* WindowImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = WindowImpl.cpp; path = ../../src/SFML/Window/WindowImpl.cpp; sourceTree = SOURCE_ROOT; }; + A0F1E7E10E7545F800778F12 /* WindowImpl.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = WindowImpl.hpp; path = ../../src/SFML/Window/WindowImpl.hpp; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A093E3730D8BF86E002236B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E37D0D8BF87A002236B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3860D8BF885002236B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3980D8BF89B002236B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A093E5480D8BFEAE002236B4 /* sfml-system.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3A10D8BF8A2002236B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A0BE1A200D917332007D4CAD /* sfml-system.framework in Frameworks */, + A05EEF700E5CF18F00572B7E /* sfml-window.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A0C93EB20D9A9CA000B9E0C8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A0C93F930D9AA9FA00B9E0C8 /* sfml-system.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A01A3A810E7517C800D0BA9B /* Headers */ = { + isa = PBXGroup; + children = ( + A01A3A820E7517C800D0BA9B /* Audio */, + A01A3A8B0E7517C800D0BA9B /* Audio.hpp */, + A01A3A8C0E7517C800D0BA9B /* Config.hpp */, + A01A3A8D0E7517C800D0BA9B /* Graphics */, + A01A3A9E0E7517C800D0BA9B /* Graphics.hpp */, + A01A3A9F0E7517C800D0BA9B /* Network */, + A01A3AAD0E7517C800D0BA9B /* Network.hpp */, + A01A3AAE0E7517C800D0BA9B /* System */, + A01A3AC50E7517C800D0BA9B /* System.hpp */, + A01A3AC60E7517C800D0BA9B /* Window */, + A01A3AD10E7517C800D0BA9B /* Window.hpp */, + ); + name = Headers; + path = ../../include/SFML; + sourceTree = SOURCE_ROOT; + }; + A01A3A820E7517C800D0BA9B /* Audio */ = { + isa = PBXGroup; + children = ( + A01A3A830E7517C800D0BA9B /* AudioResource.hpp */, + A01A3A840E7517C800D0BA9B /* Listener.hpp */, + A01A3A850E7517C800D0BA9B /* Music.hpp */, + A01A3A860E7517C800D0BA9B /* Sound.hpp */, + A01A3A870E7517C800D0BA9B /* SoundBuffer.hpp */, + A01A3A880E7517C800D0BA9B /* SoundBufferRecorder.hpp */, + A01A3A890E7517C800D0BA9B /* SoundRecorder.hpp */, + A01A3A8A0E7517C800D0BA9B /* SoundStream.hpp */, + ); + name = Audio; + path = ../../include/SFML/Audio; + sourceTree = SOURCE_ROOT; + }; + A01A3A8D0E7517C800D0BA9B /* Graphics */ = { + isa = PBXGroup; + children = ( + A01A3A8E0E7517C800D0BA9B /* Color.hpp */, + A01A3A8F0E7517C800D0BA9B /* Drawable.hpp */, + A01A3A900E7517C800D0BA9B /* Font.hpp */, + A01A3A910E7517C800D0BA9B /* Glyph.hpp */, + A01A3A920E7517C800D0BA9B /* Image.hpp */, + A01A3A930E7517C800D0BA9B /* Matrix3.hpp */, + A01A3A940E7517C800D0BA9B /* Matrix3.inl */, + A01A3A950E7517C800D0BA9B /* PostFX.hpp */, + A01A3A960E7517C800D0BA9B /* Rect.hpp */, + A01A3A970E7517C800D0BA9B /* Rect.inl */, + A01A3A980E7517C800D0BA9B /* RenderTarget.hpp */, + A01A3A990E7517C800D0BA9B /* RenderWindow.hpp */, + A01A3A9A0E7517C800D0BA9B /* Shape.hpp */, + A01A3A9B0E7517C800D0BA9B /* Sprite.hpp */, + A01A3A9C0E7517C800D0BA9B /* String.hpp */, + A01A3A9D0E7517C800D0BA9B /* View.hpp */, + ); + name = Graphics; + path = ../../include/SFML/Graphics; + sourceTree = SOURCE_ROOT; + }; + A01A3A9F0E7517C800D0BA9B /* Network */ = { + isa = PBXGroup; + children = ( + A018A27D0EA218C7005FFAC3 /* Http.hpp */, + A018A27E0EA218C7005FFAC3 /* Ftp.hpp */, + A01A3AA00E7517C800D0BA9B /* IPAddress.hpp */, + A01A3AA10E7517C800D0BA9B /* Packet.hpp */, + A01A3AA20E7517C800D0BA9B /* Selector.hpp */, + A01A3AA30E7517C800D0BA9B /* Selector.inl */, + A01A3AA40E7517C800D0BA9B /* SelectorBase.hpp */, + A01A3AA50E7517C800D0BA9B /* SocketHelper.hpp */, + A01A3AA60E7517C800D0BA9B /* Sockets.hpp */, + A01A3AA70E7517C800D0BA9B /* SocketTCP.hpp */, + A01A3AA80E7517C800D0BA9B /* SocketUDP.hpp */, + A01A3AA90E7517C800D0BA9B /* Unix */, + A01A3AAB0E7517C800D0BA9B /* Win32 */, + ); + name = Network; + path = ../../include/SFML/Network; + sourceTree = SOURCE_ROOT; + }; + A01A3AA90E7517C800D0BA9B /* Unix */ = { + isa = PBXGroup; + children = ( + A01A3AAA0E7517C800D0BA9B /* SocketHelper.hpp */, + ); + name = Unix; + path = ../../include/SFML/Network/Unix; + sourceTree = SOURCE_ROOT; + }; + A01A3AAB0E7517C800D0BA9B /* Win32 */ = { + isa = PBXGroup; + children = ( + A01A3AAC0E7517C800D0BA9B /* SocketHelper.hpp */, + ); + name = Win32; + path = ../../include/SFML/Network/Win32; + sourceTree = SOURCE_ROOT; + }; + A01A3AAE0E7517C800D0BA9B /* System */ = { + isa = PBXGroup; + children = ( + A01A3AAF0E7517C800D0BA9B /* Clock.hpp */, + A01A3AB00E7517C800D0BA9B /* Lock.hpp */, + A01A3AB10E7517C800D0BA9B /* Mutex.hpp */, + A01A3AB20E7517C800D0BA9B /* NonCopyable.hpp */, + A01A3AB30E7517C800D0BA9B /* Randomizer.hpp */, + A01A3AB40E7517C800D0BA9B /* Resource.hpp */, + A01A3AB50E7517C800D0BA9B /* Resource.inl */, + A01A3AB60E7517C800D0BA9B /* ResourcePtr.inl */, + A01A3AB70E7517C800D0BA9B /* Sleep.hpp */, + A01A3AB80E7517C800D0BA9B /* Thread.hpp */, + A01A3AB90E7517C800D0BA9B /* Unicode.hpp */, + A01A3ABA0E7517C800D0BA9B /* Unicode.inl */, + A01A3ABB0E7517C800D0BA9B /* Unix */, + A01A3ABE0E7517C800D0BA9B /* Vector2.hpp */, + A01A3ABF0E7517C800D0BA9B /* Vector2.inl */, + A01A3AC00E7517C800D0BA9B /* Vector3.hpp */, + A01A3AC10E7517C800D0BA9B /* Vector3.inl */, + ); + name = System; + path = ../../include/SFML/System; + sourceTree = SOURCE_ROOT; + }; + A01A3ABB0E7517C800D0BA9B /* Unix */ = { + isa = PBXGroup; + children = ( + A01A3ABC0E7517C800D0BA9B /* Mutex.hpp */, + A01A3ABD0E7517C800D0BA9B /* Thread.hpp */, + ); + name = Unix; + path = ../../include/SFML/System/Unix; + sourceTree = SOURCE_ROOT; + }; + A01A3AC60E7517C800D0BA9B /* Window */ = { + isa = PBXGroup; + children = ( + A01A3AC70E7517C800D0BA9B /* Context.hpp */, + A01A3AC80E7517C800D0BA9B /* Event.hpp */, + A01A3AC90E7517C800D0BA9B /* Input.hpp */, + A01A3ACA0E7517C800D0BA9B /* OpenGL.hpp */, + A01A3ACB0E7517C800D0BA9B /* VideoMode.hpp */, + A01A3ACC0E7517C800D0BA9B /* Window.hpp */, + A01A3ACD0E7517C800D0BA9B /* WindowHandle.hpp */, + A01A3ACE0E7517C800D0BA9B /* WindowListener.hpp */, + A01A3ACF0E7517C800D0BA9B /* WindowSettings.hpp */, + A01A3AD00E7517C800D0BA9B /* WindowStyle.hpp */, + ); + name = Window; + path = ../../include/SFML/Window; + sourceTree = SOURCE_ROOT; + }; + A01A3AD70E75181300D0BA9B /* Sources */ = { + isa = PBXGroup; + children = ( + A01A3AD80E75181300D0BA9B /* AudioDevice.cpp */, + A01A3AD90E75181300D0BA9B /* AudioDevice.hpp */, + A01A3ADA0E75181300D0BA9B /* AudioResource.cpp */, + A01A3ADB0E75181300D0BA9B /* Listener.cpp */, + A01A3ADD0E75181300D0BA9B /* Music.cpp */, + A01A3ADE0E75181300D0BA9B /* OpenAL.hpp */, + A01A3ADF0E75181300D0BA9B /* Sound.cpp */, + A01A3AE00E75181300D0BA9B /* SoundBuffer.cpp */, + A01A3AE10E75181300D0BA9B /* SoundBufferRecorder.cpp */, + A01A3AE20E75181300D0BA9B /* SoundFile.cpp */, + A01A3AE30E75181300D0BA9B /* SoundFile.hpp */, + A01A3AE40E75181300D0BA9B /* SoundFileDefault.cpp */, + A01A3AE50E75181300D0BA9B /* SoundFileDefault.hpp */, + A01A3AE60E75181300D0BA9B /* SoundFileOgg.cpp */, + A01A3AE70E75181300D0BA9B /* SoundFileOgg.hpp */, + A01A3AE80E75181300D0BA9B /* SoundRecorder.cpp */, + A01A3AE90E75181300D0BA9B /* SoundStream.cpp */, + A01A3AEA0E75181300D0BA9B /* stb_vorbis */, + ); + name = Sources; + path = ../../src/SFML/Audio; + sourceTree = SOURCE_ROOT; + }; + A01A3AEA0E75181300D0BA9B /* stb_vorbis */ = { + isa = PBXGroup; + children = ( + A01A3AEB0E75181300D0BA9B /* stb_vorbis.c */, + A01A3AEC0E75181300D0BA9B /* stb_vorbis.h */, + ); + name = stb_vorbis; + path = ../../src/SFML/Audio/stb_vorbis; + sourceTree = SOURCE_ROOT; + }; + A04C59A40EDDBA9C00935061 /* Cocoa */ = { + isa = PBXGroup; + children = ( + A04C59A50EDDBA9C00935061 /* AppController.h */, + A04C59A60EDDBA9C00935061 /* AppController.mm */, + A04C59A80EDDBA9C00935061 /* Joystick.hpp */, + A04C59A70EDDBA9C00935061 /* Joystick.cpp */, + A04C59AA0EDDBA9C00935061 /* VideoModeSupport.hpp */, + A04C59A90EDDBA9C00935061 /* VideoModeSupport.cpp */, + A04C59AB0EDDBA9C00935061 /* WindowController.h */, + A04C59AC0EDDBA9C00935061 /* WindowController.mm */, + A04C59AD0EDDBA9C00935061 /* WindowImplCocoa.hpp */, + A04C59AE0EDDBA9C00935061 /* WindowImplCocoa.mm */, + ); + name = Cocoa; + path = ../../src/SFML/Window/Cocoa; + sourceTree = SOURCE_ROOT; + }; + A093E3660D8BF860002236B4 = { + isa = PBXGroup; + children = ( + A093E3AD0D8BF8AD002236B4 /* SFML */, + A093E3B90D8BF8C2002236B4 /* sfml-audio */, + A093E3BC0D8BF8C7002236B4 /* sfml-graphics */, + A093E3B30D8BF8B5002236B4 /* sfml-network */, + A093E3B00D8BF8B0002236B4 /* sfml-system */, + A093E3B60D8BF8BB002236B4 /* sfml-window */, + A093E3760D8BF86E002236B4 /* Products */, + ); + sourceTree = ""; + }; + A093E3760D8BF86E002236B4 /* Products */ = { + isa = PBXGroup; + children = ( + A093E3750D8BF86E002236B4 /* SFML.framework */, + A093E37F0D8BF87A002236B4 /* sfml-system.framework */, + A093E3880D8BF885002236B4 /* sfml-network.framework */, + A093E39A0D8BF89B002236B4 /* sfml-audio.framework */, + A093E3A30D8BF8A2002236B4 /* sfml-graphics.framework */, + A0C93EB40D9A9CA000B9E0C8 /* sfml-window.framework */, + ); + name = Products; + sourceTree = ""; + }; + A093E3AD0D8BF8AD002236B4 /* SFML */ = { + isa = PBXGroup; + children = ( + A01A3A810E7517C800D0BA9B /* Headers */, + A093E3CF0D8BF918002236B4 /* dummy.cpp */, + A093E3770D8BF86E002236B4 /* SFML-Info.plist */, + ); + name = SFML; + sourceTree = SOURCE_ROOT; + }; + A093E3B00D8BF8B0002236B4 /* sfml-system */ = { + isa = PBXGroup; + children = ( + A09EEBE40D8C19B000F6C625 /* Sources */, + A093E3800D8BF87A002236B4 /* sfml-system-Info.plist */, + ); + name = "sfml-system"; + sourceTree = SOURCE_ROOT; + }; + A093E3B30D8BF8B5002236B4 /* sfml-network */ = { + isa = PBXGroup; + children = ( + A0F1E67F0E75440800778F12 /* Sources */, + A093E3890D8BF885002236B4 /* sfml-network-Info.plist */, + ); + name = "sfml-network"; + sourceTree = SOURCE_ROOT; + }; + A093E3B60D8BF8BB002236B4 /* sfml-window */ = { + isa = PBXGroup; + children = ( + A0F1E7AB0E7545F800778F12 /* Sources */, + A093E3920D8BF892002236B4 /* sfml-window-Info.plist */, + ); + name = "sfml-window"; + sourceTree = SOURCE_ROOT; + }; + A093E3B90D8BF8C2002236B4 /* sfml-audio */ = { + isa = PBXGroup; + children = ( + A01A3AD70E75181300D0BA9B /* Sources */, + A093E39B0D8BF89B002236B4 /* sfml-audio-Info.plist */, + ); + name = "sfml-audio"; + sourceTree = SOURCE_ROOT; + }; + A093E3BC0D8BF8C7002236B4 /* sfml-graphics */ = { + isa = PBXGroup; + children = ( + A0F1E6980E7545AA00778F12 /* Sources */, + A093E3A40D8BF8A2002236B4 /* sfml-graphics-Info.plist */, + ); + name = "sfml-graphics"; + sourceTree = SOURCE_ROOT; + }; + A09EEBE40D8C19B000F6C625 /* Sources */ = { + isa = PBXGroup; + children = ( + A09EEBED0D8C19BF00F6C625 /* Platform.hpp */, + A09EEBEE0D8C19BF00F6C625 /* Randomizer.cpp */, + A01C69C80E3E63CE00ED3F04 /* Unicode.cpp */, + A09EEBEF0D8C19BF00F6C625 /* Unix */, + A09EEBF40D8C19BF00F6C625 /* Clock.cpp */, + A09EEBF50D8C19BF00F6C625 /* Lock.cpp */, + A09EEBF60D8C19BF00F6C625 /* Sleep.cpp */, + ); + name = Sources; + sourceTree = SOURCE_ROOT; + }; + A09EEBEF0D8C19BF00F6C625 /* Unix */ = { + isa = PBXGroup; + children = ( + A09EEBF00D8C19BF00F6C625 /* Mutex.cpp */, + A09EEBF10D8C19BF00F6C625 /* Platform.cpp */, + A09EEBF20D8C19BF00F6C625 /* Platform.hpp */, + A09EEBF30D8C19BF00F6C625 /* Thread.cpp */, + ); + name = Unix; + path = ../../src/SFML/System/Unix; + sourceTree = SOURCE_ROOT; + }; + A0F1E67F0E75440800778F12 /* Sources */ = { + isa = PBXGroup; + children = ( + A0F1E6800E75440800778F12 /* IPAddress.cpp */, + A0F1E6820E75440800778F12 /* Packet.cpp */, + A0F1E6830E75440800778F12 /* SelectorBase.cpp */, + A0F1E6840E75440800778F12 /* SocketTCP.cpp */, + A0F1E6850E75440800778F12 /* SocketUDP.cpp */, + A018A2790EA21866005FFAC3 /* Http.cpp */, + A018A27A0EA21866005FFAC3 /* Ftp.cpp */, + A0F1E6860E75440800778F12 /* Unix */, + ); + name = Sources; + path = ../../src/SFML/Network; + sourceTree = SOURCE_ROOT; + }; + A0F1E6860E75440800778F12 /* Unix */ = { + isa = PBXGroup; + children = ( + A0F1E6870E75440800778F12 /* SocketHelper.cpp */, + ); + name = Unix; + path = ../../src/SFML/Network/Unix; + sourceTree = SOURCE_ROOT; + }; + A0F1E6980E7545AA00778F12 /* Sources */ = { + isa = PBXGroup; + children = ( + A0F1E6990E7545AA00778F12 /* Arial.hpp */, + A0F1E69A0E7545AA00778F12 /* Color.cpp */, + A0F1E69B0E7545AA00778F12 /* Drawable.cpp */, + A0F1E69C0E7545AA00778F12 /* Font.cpp */, + A0F1E69D0E7545AA00778F12 /* FontLoader.cpp */, + A0F1E69E0E7545AA00778F12 /* FontLoader.hpp */, + A0F1E69F0E7545AA00778F12 /* GLEW */, + A0F1E6A40E7545AA00778F12 /* GraphicsContext.cpp */, + A0F1E6A50E7545AA00778F12 /* GraphicsContext.hpp */, + A0F1E6A60E7545AA00778F12 /* Image.cpp */, + A0F1E6A70E7545AA00778F12 /* ImageLoader.cpp */, + A0F1E6A80E7545AA00778F12 /* ImageLoader.hpp */, + A0F1E6A90E7545AA00778F12 /* libjpeg */, + A0F1E6E40E7545AA00778F12 /* libpng */, + A0F1E6F90E7545AA00778F12 /* Matrix3.cpp */, + A0F1E6FA0E7545AA00778F12 /* PostFX.cpp */, + A0F1E6FB0E7545AA00778F12 /* RenderTarget.cpp */, + A0F1E6FC0E7545AA00778F12 /* RenderWindow.cpp */, + A0F1E6FD0E7545AA00778F12 /* Shape.cpp */, + A0F1E6FE0E7545AA00778F12 /* SOIL */, + A0F1E7070E7545AA00778F12 /* Sprite.cpp */, + A0F1E7080E7545AA00778F12 /* String.cpp */, + A0F1E7090E7545AA00778F12 /* View.cpp */, + A0F1E70A0E7545AA00778F12 /* zlib */, + ); + name = Sources; + path = ../../src/SFML/Graphics; + sourceTree = SOURCE_ROOT; + }; + A0F1E69F0E7545AA00778F12 /* GLEW */ = { + isa = PBXGroup; + children = ( + A0F1E6A00E7545AA00778F12 /* glew.c */, + A0F1E6A10E7545AA00778F12 /* glew.h */, + ); + name = GLEW; + path = ../../src/SFML/Graphics/GLEW; + sourceTree = SOURCE_ROOT; + }; + A0F1E6A90E7545AA00778F12 /* libjpeg */ = { + isa = PBXGroup; + children = ( + A0F1E6AA0E7545AA00778F12 /* cderror.h */, + A0F1E6AB0E7545AA00778F12 /* jcapimin.c */, + A0F1E6AC0E7545AA00778F12 /* jcapistd.c */, + A0F1E6AD0E7545AA00778F12 /* jccoefct.c */, + A0F1E6AE0E7545AA00778F12 /* jccolor.c */, + A0F1E6AF0E7545AA00778F12 /* jcdctmgr.c */, + A0F1E6B00E7545AA00778F12 /* jchuff.c */, + A0F1E6B10E7545AA00778F12 /* jchuff.h */, + A0F1E6B20E7545AA00778F12 /* jcinit.c */, + A0F1E6B30E7545AA00778F12 /* jcmainct.c */, + A0F1E6B40E7545AA00778F12 /* jcmarker.c */, + A0F1E6B50E7545AA00778F12 /* jcmaster.c */, + A0F1E6B60E7545AA00778F12 /* jcomapi.c */, + A0F1E6B70E7545AA00778F12 /* jconfig.h */, + A0F1E6B80E7545AA00778F12 /* jcparam.c */, + A0F1E6B90E7545AA00778F12 /* jcphuff.c */, + A0F1E6BA0E7545AA00778F12 /* jcprepct.c */, + A0F1E6BB0E7545AA00778F12 /* jcsample.c */, + A0F1E6BC0E7545AA00778F12 /* jctrans.c */, + A0F1E6BD0E7545AA00778F12 /* jdapimin.c */, + A0F1E6BE0E7545AA00778F12 /* jdapistd.c */, + A0F1E6BF0E7545AA00778F12 /* jdatadst.c */, + A0F1E6C00E7545AA00778F12 /* jdatasrc.c */, + A0F1E6C10E7545AA00778F12 /* jdcoefct.c */, + A0F1E6C20E7545AA00778F12 /* jdcolor.c */, + A0F1E6C30E7545AA00778F12 /* jdct.h */, + A0F1E6C40E7545AA00778F12 /* jddctmgr.c */, + A0F1E6C50E7545AA00778F12 /* jdhuff.c */, + A0F1E6C60E7545AA00778F12 /* jdhuff.h */, + A0F1E6C70E7545AA00778F12 /* jdinput.c */, + A0F1E6C80E7545AA00778F12 /* jdmainct.c */, + A0F1E6C90E7545AA00778F12 /* jdmarker.c */, + A0F1E6CA0E7545AA00778F12 /* jdmaster.c */, + A0F1E6CB0E7545AA00778F12 /* jdmerge.c */, + A0F1E6CC0E7545AA00778F12 /* jdphuff.c */, + A0F1E6CD0E7545AA00778F12 /* jdpostct.c */, + A0F1E6CE0E7545AA00778F12 /* jdsample.c */, + A0F1E6CF0E7545AA00778F12 /* jdtrans.c */, + A0F1E6D00E7545AA00778F12 /* jerror.c */, + A0F1E6D10E7545AA00778F12 /* jerror.h */, + A0F1E6D20E7545AA00778F12 /* jfdctflt.c */, + A0F1E6D30E7545AA00778F12 /* jfdctfst.c */, + A0F1E6D40E7545AA00778F12 /* jfdctint.c */, + A0F1E6D50E7545AA00778F12 /* jidctflt.c */, + A0F1E6D60E7545AA00778F12 /* jidctfst.c */, + A0F1E6D70E7545AA00778F12 /* jidctint.c */, + A0F1E6D80E7545AA00778F12 /* jidctred.c */, + A0F1E6D90E7545AA00778F12 /* jinclude.h */, + A0F1E6DA0E7545AA00778F12 /* jmemmgr.c */, + A0F1E6DB0E7545AA00778F12 /* jmemnobs.c */, + A0F1E6DC0E7545AA00778F12 /* jmemsys.h */, + A0F1E6DD0E7545AA00778F12 /* jmorecfg.h */, + A0F1E6DE0E7545AA00778F12 /* jpegint.h */, + A0F1E6DF0E7545AA00778F12 /* jpeglib.h */, + A0F1E6E00E7545AA00778F12 /* jquant1.c */, + A0F1E6E10E7545AA00778F12 /* jquant2.c */, + A0F1E6E20E7545AA00778F12 /* jutils.c */, + A0F1E6E30E7545AA00778F12 /* jversion.h */, + ); + name = libjpeg; + path = ../../src/SFML/Graphics/libjpeg; + sourceTree = SOURCE_ROOT; + }; + A0F1E6E40E7545AA00778F12 /* libpng */ = { + isa = PBXGroup; + children = ( + A0F1E6E50E7545AA00778F12 /* png.c */, + A0F1E6E60E7545AA00778F12 /* png.h */, + A0F1E6E70E7545AA00778F12 /* pngconf.h */, + A0F1E6E80E7545AA00778F12 /* pngerror.c */, + A0F1E6E90E7545AA00778F12 /* pnggccrd.c */, + A0F1E6EA0E7545AA00778F12 /* pngget.c */, + A0F1E6EB0E7545AA00778F12 /* pngmem.c */, + A0F1E6EC0E7545AA00778F12 /* pngpread.c */, + A0F1E6ED0E7545AA00778F12 /* pngread.c */, + A0F1E6EE0E7545AA00778F12 /* pngrio.c */, + A0F1E6EF0E7545AA00778F12 /* pngrtran.c */, + A0F1E6F00E7545AA00778F12 /* pngrutil.c */, + A0F1E6F10E7545AA00778F12 /* pngset.c */, + A0F1E6F20E7545AA00778F12 /* pngtrans.c */, + A0F1E6F30E7545AA00778F12 /* pngvcrd.c */, + A0F1E6F40E7545AA00778F12 /* pngwio.c */, + A0F1E6F50E7545AA00778F12 /* pngwrite.c */, + A0F1E6F60E7545AA00778F12 /* pngwtran.c */, + A0F1E6F70E7545AA00778F12 /* pngwutil.c */, + ); + name = libpng; + path = ../../src/SFML/Graphics/libpng; + sourceTree = SOURCE_ROOT; + }; + A0F1E6FE0E7545AA00778F12 /* SOIL */ = { + isa = PBXGroup; + children = ( + A0F1E6FF0E7545AA00778F12 /* image_DXT.c */, + A0F1E7000E7545AA00778F12 /* image_DXT.h */, + A0F1E7010E7545AA00778F12 /* SOIL.c */, + A0F1E7020E7545AA00778F12 /* SOIL.h */, + A0F1E7030E7545AA00778F12 /* stb_image_aug.c */, + A0F1E7040E7545AA00778F12 /* stb_image_aug.h */, + A0F1E7050E7545AA00778F12 /* stbi_DDS_aug.h */, + A0F1E7060E7545AA00778F12 /* stbi_DDS_aug_c.h */, + ); + name = SOIL; + path = ../../src/SFML/Graphics/SOIL; + sourceTree = SOURCE_ROOT; + }; + A0F1E70A0E7545AA00778F12 /* zlib */ = { + isa = PBXGroup; + children = ( + A0F1E70B0E7545AA00778F12 /* adler32.c */, + A0F1E70C0E7545AA00778F12 /* compress.c */, + A0F1E70D0E7545AA00778F12 /* crc32.c */, + A0F1E70E0E7545AA00778F12 /* crc32.h */, + A0F1E70F0E7545AA00778F12 /* deflate.c */, + A0F1E7100E7545AA00778F12 /* deflate.h */, + A0F1E7110E7545AA00778F12 /* inffast.c */, + A0F1E7120E7545AA00778F12 /* inffast.h */, + A0F1E7130E7545AA00778F12 /* inffixed.h */, + A0F1E7140E7545AA00778F12 /* inflate.c */, + A0F1E7150E7545AA00778F12 /* inflate.h */, + A0F1E7160E7545AA00778F12 /* inftrees.c */, + A0F1E7170E7545AA00778F12 /* inftrees.h */, + A0F1E7180E7545AA00778F12 /* trees.c */, + A0F1E7190E7545AA00778F12 /* trees.h */, + A0F1E71A0E7545AA00778F12 /* uncompr.c */, + A0F1E71B0E7545AA00778F12 /* zconf.h */, + A0F1E71C0E7545AA00778F12 /* zlib.h */, + A0F1E71D0E7545AA00778F12 /* zutil.c */, + A0F1E71E0E7545AA00778F12 /* zutil.h */, + ); + name = zlib; + path = ../../src/SFML/Graphics/zlib; + sourceTree = SOURCE_ROOT; + }; + A0F1E7AB0E7545F800778F12 /* Sources */ = { + isa = PBXGroup; + children = ( + A04C59A40EDDBA9C00935061 /* Cocoa */, + A0F1E7AC0E7545F800778F12 /* Context.cpp */, + A0F1E7B10E7545F800778F12 /* Input.cpp */, + A0F1E7B20E7545F800778F12 /* Joystick.hpp */, + A0F1E7D60E7545F800778F12 /* VideoMode.cpp */, + A0F1E7D70E7545F800778F12 /* VideoModeSupport.hpp */, + A0F1E7DF0E7545F800778F12 /* Window.cpp */, + A0F1E7E00E7545F800778F12 /* WindowImpl.cpp */, + A0F1E7E10E7545F800778F12 /* WindowImpl.hpp */, + ); + name = Sources; + path = ../../src/SFML/Window; + sourceTree = SOURCE_ROOT; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + A093E3700D8BF86E002236B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E37A0D8BF87A002236B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A09EEBF70D8C19BF00F6C625 /* Platform.hpp in Headers */, + A09EEBFB0D8C19BF00F6C625 /* Platform.hpp in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3830D8BF885002236B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3950D8BF89B002236B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A01A3AEE0E75181300D0BA9B /* AudioDevice.hpp in Headers */, + A01A3AF30E75181300D0BA9B /* OpenAL.hpp in Headers */, + A01A3AF80E75181300D0BA9B /* SoundFile.hpp in Headers */, + A01A3AFA0E75181300D0BA9B /* SoundFileDefault.hpp in Headers */, + A01A3AFC0E75181300D0BA9B /* SoundFileOgg.hpp in Headers */, + A01A3B000E75181300D0BA9B /* stb_vorbis.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E39E0D8BF8A2002236B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A0F1E71F0E7545AA00778F12 /* Arial.hpp in Headers */, + A0F1E7240E7545AA00778F12 /* FontLoader.hpp in Headers */, + A0F1E7260E7545AA00778F12 /* glew.h in Headers */, + A0F1E72A0E7545AA00778F12 /* GraphicsContext.hpp in Headers */, + A0F1E72D0E7545AA00778F12 /* ImageLoader.hpp in Headers */, + A0F1E72E0E7545AA00778F12 /* cderror.h in Headers */, + A0F1E7350E7545AA00778F12 /* jchuff.h in Headers */, + A0F1E73B0E7545AA00778F12 /* jconfig.h in Headers */, + A0F1E7470E7545AA00778F12 /* jdct.h in Headers */, + A0F1E74A0E7545AA00778F12 /* jdhuff.h in Headers */, + A0F1E7550E7545AA00778F12 /* jerror.h in Headers */, + A0F1E75D0E7545AA00778F12 /* jinclude.h in Headers */, + A0F1E7600E7545AA00778F12 /* jmemsys.h in Headers */, + A0F1E7610E7545AA00778F12 /* jmorecfg.h in Headers */, + A0F1E7620E7545AA00778F12 /* jpegint.h in Headers */, + A0F1E7630E7545AA00778F12 /* jpeglib.h in Headers */, + A0F1E7670E7545AA00778F12 /* jversion.h in Headers */, + A0F1E7690E7545AA00778F12 /* png.h in Headers */, + A0F1E76A0E7545AA00778F12 /* pngconf.h in Headers */, + A0F1E7820E7545AA00778F12 /* image_DXT.h in Headers */, + A0F1E7840E7545AA00778F12 /* SOIL.h in Headers */, + A0F1E7860E7545AA00778F12 /* stb_image_aug.h in Headers */, + A0F1E7870E7545AA00778F12 /* stbi_DDS_aug.h in Headers */, + A0F1E7880E7545AA00778F12 /* stbi_DDS_aug_c.h in Headers */, + A0F1E78F0E7545AA00778F12 /* crc32.h in Headers */, + A0F1E7910E7545AA00778F12 /* deflate.h in Headers */, + A0F1E7930E7545AA00778F12 /* inffast.h in Headers */, + A0F1E7940E7545AA00778F12 /* inffixed.h in Headers */, + A0F1E7960E7545AA00778F12 /* inflate.h in Headers */, + A0F1E7980E7545AA00778F12 /* inftrees.h in Headers */, + A0F1E79A0E7545AA00778F12 /* trees.h in Headers */, + A0F1E79C0E7545AA00778F12 /* zconf.h in Headers */, + A0F1E79D0E7545AA00778F12 /* zlib.h in Headers */, + A0F1E79F0E7545AA00778F12 /* zutil.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A0C93EAF0D9A9CA000B9E0C8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A0F1E7E70E7545F800778F12 /* Joystick.hpp in Headers */, + A0F1E8080E7545F800778F12 /* VideoModeSupport.hpp in Headers */, + A0F1E8110E7545F800778F12 /* WindowImpl.hpp in Headers */, + A04C59AF0EDDBA9C00935061 /* AppController.h in Headers */, + A04C59B20EDDBA9C00935061 /* Joystick.hpp in Headers */, + A04C59B40EDDBA9C00935061 /* VideoModeSupport.hpp in Headers */, + A04C59B50EDDBA9C00935061 /* WindowController.h in Headers */, + A04C59B70EDDBA9C00935061 /* WindowImplCocoa.hpp in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + A093E3740D8BF86E002236B4 /* SFML */ = { + isa = PBXNativeTarget; + buildConfigurationList = A02679DE0E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "SFML" */; + buildPhases = ( + A093E3700D8BF86E002236B4 /* Headers */, + A093E3710D8BF86E002236B4 /* Resources */, + A093E3720D8BF86E002236B4 /* Sources */, + A093E3730D8BF86E002236B4 /* Frameworks */, + A0BA42130DDF0E3F00039094 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SFML; + productName = SFML; + productReference = A093E3750D8BF86E002236B4 /* SFML.framework */; + productType = "com.apple.product-type.framework"; + }; + A093E37E0D8BF87A002236B4 /* sfml-system */ = { + isa = PBXNativeTarget; + buildConfigurationList = A02679DF0E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-system" */; + buildPhases = ( + A093E37A0D8BF87A002236B4 /* Headers */, + A093E37B0D8BF87A002236B4 /* Resources */, + A093E37C0D8BF87A002236B4 /* Sources */, + A093E37D0D8BF87A002236B4 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + A012F5800E0FF91B0022FB0F /* PBXTargetDependency */, + ); + name = "sfml-system"; + productName = "sfml-system"; + productReference = A093E37F0D8BF87A002236B4 /* sfml-system.framework */; + productType = "com.apple.product-type.framework"; + }; + A093E3870D8BF885002236B4 /* sfml-network */ = { + isa = PBXNativeTarget; + buildConfigurationList = A02679E00E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-network" */; + buildPhases = ( + A093E3830D8BF885002236B4 /* Headers */, + A093E3840D8BF885002236B4 /* Resources */, + A093E3850D8BF885002236B4 /* Sources */, + A093E3860D8BF885002236B4 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + A012F5820E0FF9310022FB0F /* PBXTargetDependency */, + ); + name = "sfml-network"; + productName = "sfml-network"; + productReference = A093E3880D8BF885002236B4 /* sfml-network.framework */; + productType = "com.apple.product-type.framework"; + }; + A093E3990D8BF89B002236B4 /* sfml-audio */ = { + isa = PBXNativeTarget; + buildConfigurationList = A02679E10E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-audio" */; + buildPhases = ( + A093E3950D8BF89B002236B4 /* Headers */, + A093E3960D8BF89B002236B4 /* Resources */, + A093E3970D8BF89B002236B4 /* Sources */, + A093E3980D8BF89B002236B4 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + A093E54A0D8BFEB9002236B4 /* PBXTargetDependency */, + ); + name = "sfml-audio"; + productName = "sfml-audio"; + productReference = A093E39A0D8BF89B002236B4 /* sfml-audio.framework */; + productType = "com.apple.product-type.framework"; + }; + A093E3A20D8BF8A2002236B4 /* sfml-graphics */ = { + isa = PBXNativeTarget; + buildConfigurationList = A02679E30E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-graphics" */; + buildPhases = ( + A093E39E0D8BF8A2002236B4 /* Headers */, + A093E39F0D8BF8A2002236B4 /* Resources */, + A093E3A00D8BF8A2002236B4 /* Sources */, + A093E3A10D8BF8A2002236B4 /* Frameworks */, + ); + buildRules = ( + A09EEA9F0D8C074D00F6C625 /* PBXBuildRule */, + ); + dependencies = ( + A07EA05D0DB657C0007C7747 /* PBXTargetDependency */, + ); + name = "sfml-graphics"; + productName = "sfml-graphics"; + productReference = A093E3A30D8BF8A2002236B4 /* sfml-graphics.framework */; + productType = "com.apple.product-type.framework"; + }; + A0C93EB30D9A9CA000B9E0C8 /* sfml-window */ = { + isa = PBXNativeTarget; + buildConfigurationList = A02679E20E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-window" */; + buildPhases = ( + A0C93EAF0D9A9CA000B9E0C8 /* Headers */, + A0C93EB00D9A9CA000B9E0C8 /* Resources */, + A0C93EB10D9A9CA000B9E0C8 /* Sources */, + A0C93EB20D9A9CA000B9E0C8 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + A017FF8B0E51E06400A4C078 /* PBXTargetDependency */, + ); + name = "sfml-window"; + productName = "sfml-window"; + productReference = A0C93EB40D9A9CA000B9E0C8 /* sfml-window.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A093E36A0D8BF860002236B4 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = A02679DD0E5CDB03008D4C81 /* Build configuration list for PBXProject "SFML" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 0; + mainGroup = A093E3660D8BF860002236B4; + productRefGroup = A093E3760D8BF86E002236B4 /* Products */; + projectDirPath = ""; + projectRoot = ../..; + targets = ( + A0F0BA820D92E4F500056981 /* All */, + A093E3740D8BF86E002236B4 /* SFML */, + A093E3990D8BF89B002236B4 /* sfml-audio */, + A093E3A20D8BF8A2002236B4 /* sfml-graphics */, + A093E3870D8BF885002236B4 /* sfml-network */, + A093E37E0D8BF87A002236B4 /* sfml-system */, + A0C93EB30D9A9CA000B9E0C8 /* sfml-window */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + A093E3710D8BF86E002236B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E37B0D8BF87A002236B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3840D8BF885002236B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3960D8BF89B002236B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E39F0D8BF8A2002236B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A0C93EB00D9A9CA000B9E0C8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + A0BA42130DDF0E3F00039094 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export HEADER_PATH=$BUILT_PRODUCTS_DIR/$PUBLIC_HEADERS_FOLDER_PATH\n\nrm -rf $HEADER_PATH\nmkdir -p $HEADER_PATH\nln -s Versions/Current/Headers $HEADER_PATH/../../../Headers\ncp -r $SRCROOT/../../include/SFML/ $HEADER_PATH\nrm -rf `find $HEADER_PATH -name \".svn\"`\nrm -f $HEADER_PATH/Headers"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A093E3720D8BF86E002236B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A093E3D00D8BF918002236B4 /* dummy.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E37C0D8BF87A002236B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A09EEBF80D8C19BF00F6C625 /* Randomizer.cpp in Sources */, + A09EEBF90D8C19BF00F6C625 /* Mutex.cpp in Sources */, + A09EEBFA0D8C19BF00F6C625 /* Platform.cpp in Sources */, + A09EEBFC0D8C19BF00F6C625 /* Thread.cpp in Sources */, + A09EEBFD0D8C19BF00F6C625 /* Clock.cpp in Sources */, + A09EEBFE0D8C19BF00F6C625 /* Lock.cpp in Sources */, + A09EEBFF0D8C19BF00F6C625 /* Sleep.cpp in Sources */, + A01C69C90E3E63CE00ED3F04 /* Unicode.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3850D8BF885002236B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0F1E68A0E75440800778F12 /* IPAddress.cpp in Sources */, + A0F1E68C0E75440800778F12 /* Packet.cpp in Sources */, + A0F1E68D0E75440800778F12 /* SelectorBase.cpp in Sources */, + A0F1E68E0E75440800778F12 /* SocketTCP.cpp in Sources */, + A0F1E68F0E75440800778F12 /* SocketUDP.cpp in Sources */, + A0F1E6900E75440800778F12 /* SocketHelper.cpp in Sources */, + A018A27B0EA21866005FFAC3 /* Http.cpp in Sources */, + A018A27C0EA21866005FFAC3 /* Ftp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3970D8BF89B002236B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A01A3AED0E75181300D0BA9B /* AudioDevice.cpp in Sources */, + A01A3AEF0E75181300D0BA9B /* AudioResource.cpp in Sources */, + A01A3AF00E75181300D0BA9B /* Listener.cpp in Sources */, + A01A3AF20E75181300D0BA9B /* Music.cpp in Sources */, + A01A3AF40E75181300D0BA9B /* Sound.cpp in Sources */, + A01A3AF50E75181300D0BA9B /* SoundBuffer.cpp in Sources */, + A01A3AF60E75181300D0BA9B /* SoundBufferRecorder.cpp in Sources */, + A01A3AF70E75181300D0BA9B /* SoundFile.cpp in Sources */, + A01A3AF90E75181300D0BA9B /* SoundFileDefault.cpp in Sources */, + A01A3AFB0E75181300D0BA9B /* SoundFileOgg.cpp in Sources */, + A01A3AFD0E75181300D0BA9B /* SoundRecorder.cpp in Sources */, + A01A3AFE0E75181300D0BA9B /* SoundStream.cpp in Sources */, + A01A3AFF0E75181300D0BA9B /* stb_vorbis.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A093E3A00D8BF8A2002236B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0F1E7200E7545AA00778F12 /* Color.cpp in Sources */, + A0F1E7210E7545AA00778F12 /* Drawable.cpp in Sources */, + A0F1E7220E7545AA00778F12 /* Font.cpp in Sources */, + A0F1E7230E7545AA00778F12 /* FontLoader.cpp in Sources */, + A0F1E7250E7545AA00778F12 /* glew.c in Sources */, + A0F1E7290E7545AA00778F12 /* GraphicsContext.cpp in Sources */, + A0F1E72B0E7545AA00778F12 /* Image.cpp in Sources */, + A0F1E72C0E7545AA00778F12 /* ImageLoader.cpp in Sources */, + A0F1E72F0E7545AA00778F12 /* jcapimin.c in Sources */, + A0F1E7300E7545AA00778F12 /* jcapistd.c in Sources */, + A0F1E7310E7545AA00778F12 /* jccoefct.c in Sources */, + A0F1E7320E7545AA00778F12 /* jccolor.c in Sources */, + A0F1E7330E7545AA00778F12 /* jcdctmgr.c in Sources */, + A0F1E7340E7545AA00778F12 /* jchuff.c in Sources */, + A0F1E7360E7545AA00778F12 /* jcinit.c in Sources */, + A0F1E7370E7545AA00778F12 /* jcmainct.c in Sources */, + A0F1E7380E7545AA00778F12 /* jcmarker.c in Sources */, + A0F1E7390E7545AA00778F12 /* jcmaster.c in Sources */, + A0F1E73A0E7545AA00778F12 /* jcomapi.c in Sources */, + A0F1E73C0E7545AA00778F12 /* jcparam.c in Sources */, + A0F1E73D0E7545AA00778F12 /* jcphuff.c in Sources */, + A0F1E73E0E7545AA00778F12 /* jcprepct.c in Sources */, + A0F1E73F0E7545AA00778F12 /* jcsample.c in Sources */, + A0F1E7400E7545AA00778F12 /* jctrans.c in Sources */, + A0F1E7410E7545AA00778F12 /* jdapimin.c in Sources */, + A0F1E7420E7545AA00778F12 /* jdapistd.c in Sources */, + A0F1E7430E7545AA00778F12 /* jdatadst.c in Sources */, + A0F1E7440E7545AA00778F12 /* jdatasrc.c in Sources */, + A0F1E7450E7545AA00778F12 /* jdcoefct.c in Sources */, + A0F1E7460E7545AA00778F12 /* jdcolor.c in Sources */, + A0F1E7480E7545AA00778F12 /* jddctmgr.c in Sources */, + A0F1E7490E7545AA00778F12 /* jdhuff.c in Sources */, + A0F1E74B0E7545AA00778F12 /* jdinput.c in Sources */, + A0F1E74C0E7545AA00778F12 /* jdmainct.c in Sources */, + A0F1E74D0E7545AA00778F12 /* jdmarker.c in Sources */, + A0F1E74E0E7545AA00778F12 /* jdmaster.c in Sources */, + A0F1E74F0E7545AA00778F12 /* jdmerge.c in Sources */, + A0F1E7500E7545AA00778F12 /* jdphuff.c in Sources */, + A0F1E7510E7545AA00778F12 /* jdpostct.c in Sources */, + A0F1E7520E7545AA00778F12 /* jdsample.c in Sources */, + A0F1E7530E7545AA00778F12 /* jdtrans.c in Sources */, + A0F1E7540E7545AA00778F12 /* jerror.c in Sources */, + A0F1E7560E7545AA00778F12 /* jfdctflt.c in Sources */, + A0F1E7570E7545AA00778F12 /* jfdctfst.c in Sources */, + A0F1E7580E7545AA00778F12 /* jfdctint.c in Sources */, + A0F1E7590E7545AA00778F12 /* jidctflt.c in Sources */, + A0F1E75A0E7545AA00778F12 /* jidctfst.c in Sources */, + A0F1E75B0E7545AA00778F12 /* jidctint.c in Sources */, + A0F1E75C0E7545AA00778F12 /* jidctred.c in Sources */, + A0F1E75E0E7545AA00778F12 /* jmemmgr.c in Sources */, + A0F1E75F0E7545AA00778F12 /* jmemnobs.c in Sources */, + A0F1E7640E7545AA00778F12 /* jquant1.c in Sources */, + A0F1E7650E7545AA00778F12 /* jquant2.c in Sources */, + A0F1E7660E7545AA00778F12 /* jutils.c in Sources */, + A0F1E7680E7545AA00778F12 /* png.c in Sources */, + A0F1E76B0E7545AA00778F12 /* pngerror.c in Sources */, + A0F1E76C0E7545AA00778F12 /* pnggccrd.c in Sources */, + A0F1E76D0E7545AA00778F12 /* pngget.c in Sources */, + A0F1E76E0E7545AA00778F12 /* pngmem.c in Sources */, + A0F1E76F0E7545AA00778F12 /* pngpread.c in Sources */, + A0F1E7700E7545AA00778F12 /* pngread.c in Sources */, + A0F1E7710E7545AA00778F12 /* pngrio.c in Sources */, + A0F1E7720E7545AA00778F12 /* pngrtran.c in Sources */, + A0F1E7730E7545AA00778F12 /* pngrutil.c in Sources */, + A0F1E7740E7545AA00778F12 /* pngset.c in Sources */, + A0F1E7750E7545AA00778F12 /* pngtrans.c in Sources */, + A0F1E7760E7545AA00778F12 /* pngvcrd.c in Sources */, + A0F1E7770E7545AA00778F12 /* pngwio.c in Sources */, + A0F1E7780E7545AA00778F12 /* pngwrite.c in Sources */, + A0F1E7790E7545AA00778F12 /* pngwtran.c in Sources */, + A0F1E77A0E7545AA00778F12 /* pngwutil.c in Sources */, + A0F1E77C0E7545AA00778F12 /* Matrix3.cpp in Sources */, + A0F1E77D0E7545AA00778F12 /* PostFX.cpp in Sources */, + A0F1E77E0E7545AA00778F12 /* RenderTarget.cpp in Sources */, + A0F1E77F0E7545AA00778F12 /* RenderWindow.cpp in Sources */, + A0F1E7800E7545AA00778F12 /* Shape.cpp in Sources */, + A0F1E7810E7545AA00778F12 /* image_DXT.c in Sources */, + A0F1E7830E7545AA00778F12 /* SOIL.c in Sources */, + A0F1E7850E7545AA00778F12 /* stb_image_aug.c in Sources */, + A0F1E7890E7545AA00778F12 /* Sprite.cpp in Sources */, + A0F1E78A0E7545AA00778F12 /* String.cpp in Sources */, + A0F1E78B0E7545AA00778F12 /* View.cpp in Sources */, + A0F1E78C0E7545AA00778F12 /* adler32.c in Sources */, + A0F1E78D0E7545AA00778F12 /* compress.c in Sources */, + A0F1E78E0E7545AA00778F12 /* crc32.c in Sources */, + A0F1E7900E7545AA00778F12 /* deflate.c in Sources */, + A0F1E7920E7545AA00778F12 /* inffast.c in Sources */, + A0F1E7950E7545AA00778F12 /* inflate.c in Sources */, + A0F1E7970E7545AA00778F12 /* inftrees.c in Sources */, + A0F1E7990E7545AA00778F12 /* trees.c in Sources */, + A0F1E79B0E7545AA00778F12 /* uncompr.c in Sources */, + A0F1E79E0E7545AA00778F12 /* zutil.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A0C93EB10D9A9CA000B9E0C8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A0F1E7E20E7545F800778F12 /* Context.cpp in Sources */, + A0F1E7E60E7545F800778F12 /* Input.cpp in Sources */, + A0F1E8070E7545F800778F12 /* VideoMode.cpp in Sources */, + A0F1E80F0E7545F800778F12 /* Window.cpp in Sources */, + A0F1E8100E7545F800778F12 /* WindowImpl.cpp in Sources */, + A04C59B00EDDBA9C00935061 /* AppController.mm in Sources */, + A04C59B10EDDBA9C00935061 /* Joystick.cpp in Sources */, + A04C59B30EDDBA9C00935061 /* VideoModeSupport.cpp in Sources */, + A04C59B60EDDBA9C00935061 /* WindowController.mm in Sources */, + A04C59B80EDDBA9C00935061 /* WindowImplCocoa.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + A012F5800E0FF91B0022FB0F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E3740D8BF86E002236B4 /* SFML */; + targetProxy = A012F57F0E0FF91B0022FB0F /* PBXContainerItemProxy */; + }; + A012F5820E0FF9310022FB0F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E3740D8BF86E002236B4 /* SFML */; + targetProxy = A012F5810E0FF9310022FB0F /* PBXContainerItemProxy */; + }; + A017FF8B0E51E06400A4C078 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E37E0D8BF87A002236B4 /* sfml-system */; + targetProxy = A017FF8A0E51E06400A4C078 /* PBXContainerItemProxy */; + }; + A07EA05B0DB657A9007C7747 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A0C93EB30D9A9CA000B9E0C8 /* sfml-window */; + targetProxy = A07EA05A0DB657A9007C7747 /* PBXContainerItemProxy */; + }; + A07EA05D0DB657C0007C7747 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A0C93EB30D9A9CA000B9E0C8 /* sfml-window */; + targetProxy = A07EA05C0DB657C0007C7747 /* PBXContainerItemProxy */; + }; + A093E54A0D8BFEB9002236B4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E37E0D8BF87A002236B4 /* sfml-system */; + targetProxy = A093E5490D8BFEB9002236B4 /* PBXContainerItemProxy */; + }; + A0B4CD3A0D96B11500DEEE0F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E3740D8BF86E002236B4 /* SFML */; + targetProxy = A0B4CD390D96B11500DEEE0F /* PBXContainerItemProxy */; + }; + A0F0BA860D92E52300056981 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E3990D8BF89B002236B4 /* sfml-audio */; + targetProxy = A0F0BA850D92E52300056981 /* PBXContainerItemProxy */; + }; + A0F0BA880D92E52300056981 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E3A20D8BF8A2002236B4 /* sfml-graphics */; + targetProxy = A0F0BA870D92E52300056981 /* PBXContainerItemProxy */; + }; + A0F0BA8A0D92E52300056981 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E3870D8BF885002236B4 /* sfml-network */; + targetProxy = A0F0BA890D92E52300056981 /* PBXContainerItemProxy */; + }; + A0F0BA8C0D92E52300056981 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A093E37E0D8BF87A002236B4 /* sfml-system */; + targetProxy = A0F0BA8B0D92E52300056981 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + A02679C20E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + COPY_PHASE_STRIP = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = ""; + GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; + GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; + GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + GCC_WARN_MISSING_PARENTHESES = NO; + GCC_WARN_SHADOW = NO; + GCC_WARN_SIGN_COMPARE = NO; + GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; + GCC_WARN_UNINITIALIZED_AUTOS = NO; + GCC_WARN_UNUSED_VARIABLE = YES; + OBJROOT = build; + OTHER_CFLAGS = ""; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = ../../lib/xcode; + }; + name = Debug; + }; + A02679C30E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + GCC_OPTIMIZATION_LEVEL = 2; + GCC_VERSION = ""; + GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = NO; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO; + GCC_WARN_MISSING_PARENTHESES = NO; + GCC_WARN_SHADOW = NO; + GCC_WARN_UNINITIALIZED_AUTOS = NO; + GCC_WARN_UNUSED_VARIABLE = NO; + OBJROOT = build; + OTHER_CFLAGS = ""; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DNDEBUG", + ); + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; + SYMROOT = ../../lib/xcode; + }; + name = Release; + }; + A02679C50E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = All; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679C60E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = All; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A02679C80E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../src", + "${SRCROOT}/../include", + ); + INFOPLIST_FILE = "SFML-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = SFML; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679C90E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../src", + "${SRCROOT}/../include", + ); + INFOPLIST_FILE = "SFML-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = SFML; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A02679CB0E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + "$(SRCROOT)/../../extlibs/headers", + ); + INFOPLIST_FILE = "sfml-audio-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "$(SRCROOT)/../../extlibs/libs-xcode/libsndfile.a", + "-framework", + OpenAL, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-audio-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679CC0E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + "$(SRCROOT)/../../extlibs/headers", + ); + INFOPLIST_FILE = "sfml-audio-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_LDFLAGS = ( + "$(SRCROOT)/../../extlibs/libs-xcode/libsndfile.a", + "-framework", + OpenAL, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-audio"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A02679CE0E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + INFOPLIST_FILE = "sfml-graphics-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + OpenGL, + "$(SRCROOT)/../../extlibs/libs-xcode/libfreetype.a", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-graphics-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679CF0E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + INFOPLIST_FILE = "sfml-graphics-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + OpenGL, + "$(SRCROOT)/../../extlibs/libs-xcode/libfreetype.a", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-graphics"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A02679D10E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + ); + INFOPLIST_FILE = "sfml-network-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-network-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679D20E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + ); + INFOPLIST_FILE = "sfml-network-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-network"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A02679D40E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + ); + INFOPLIST_FILE = "sfml-system-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-system-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679D50E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + ); + INFOPLIST_FILE = "sfml-system-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-system"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A02679D70E5CDB03008D4C81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 2; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../include", + "${SRCROOT}/../../src", + ); + INFOPLIST_FILE = "sfml-window-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_CPLUSPLUSFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + OpenGL, + "-framework", + ApplicationServices, + "-framework", + Cocoa, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-window-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + A02679D80E5CDB03008D4C81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 2; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../include", + "${SRCROOT}/../../src", + ); + INFOPLIST_FILE = "sfml-window-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_CPLUSPLUSFLAGS = "-DNDEBUG"; + OTHER_LDFLAGS = ( + "-framework", + OpenGL, + "-framework", + ApplicationServices, + "-framework", + Cocoa, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-window"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + A0C9DDC80E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH)"; + COPY_PHASE_STRIP = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = ""; + GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; + GCC_WARN_MISSING_PARENTHESES = YES; + GCC_WARN_SHADOW = YES; + GCC_WARN_SIGN_COMPARE = YES; + GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; + GCC_WARN_UNINITIALIZED_AUTOS = NO; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CFLAGS = ""; + SDKROOT = ""; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = build; + }; + name = Development; + }; + A0C9DDC90E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = All; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; + A0C9DDCA0E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../src", + "${SRCROOT}/../include", + ); + INFOPLIST_FILE = "SFML-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = SFML; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; + A0C9DDCB0E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + "$(SRCROOT)/../../extlibs/headers", + ); + INFOPLIST_FILE = "sfml-audio-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "$(SRCROOT)/../../extlibs/libs-xcode/libsndfile.a", + "-framework", + OpenAL, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-audio-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; + A0C9DDCC0E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + "$(HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + HEADER_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../extlibs/headers\""; + INFOPLIST_FILE = "sfml-graphics-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + OpenGL, + "$(SRCROOT)/../../extlibs/libs-xcode/libfreetype.a", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-graphics-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; + A0C9DDCD0E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + ); + INFOPLIST_FILE = "sfml-network-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-network-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; + A0C9DDCE0E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../src", + "${SRCROOT}/../../include", + ); + INFOPLIST_FILE = "sfml-system-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-system-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; + A0C9DDCF0E8BE5D10084CFD8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 2; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/../../include", + "${SRCROOT}/../../src", + ); + INFOPLIST_FILE = "sfml-window-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_CFLAGS = ""; + OTHER_CPLUSPLUSFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + OpenGL, + "-framework", + ApplicationServices, + "-framework", + Cocoa, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "sfml-window-d"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Development; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A02679DD0E5CDB03008D4C81 /* Build configuration list for PBXProject "SFML" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDC80E8BE5D10084CFD8 /* Development */, + A02679C20E5CDB03008D4C81 /* Debug */, + A02679C30E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679DE0E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "SFML" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDCA0E8BE5D10084CFD8 /* Development */, + A02679C80E5CDB03008D4C81 /* Debug */, + A02679C90E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679DF0E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-system" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDCE0E8BE5D10084CFD8 /* Development */, + A02679D40E5CDB03008D4C81 /* Debug */, + A02679D50E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679E00E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-network" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDCD0E8BE5D10084CFD8 /* Development */, + A02679D10E5CDB03008D4C81 /* Debug */, + A02679D20E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679E10E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-audio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDCB0E8BE5D10084CFD8 /* Development */, + A02679CB0E5CDB03008D4C81 /* Debug */, + A02679CC0E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679E20E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-window" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDCF0E8BE5D10084CFD8 /* Development */, + A02679D70E5CDB03008D4C81 /* Debug */, + A02679D80E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679E30E5CDB03008D4C81 /* Build configuration list for PBXNativeTarget "sfml-graphics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDCC0E8BE5D10084CFD8 /* Development */, + A02679CE0E5CDB03008D4C81 /* Debug */, + A02679CF0E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + A02679E40E5CDB03008D4C81 /* Build configuration list for PBXAggregateTarget "All" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0C9DDC90E8BE5D10084CFD8 /* Development */, + A02679C50E5CDB03008D4C81 /* Debug */, + A02679C60E5CDB03008D4C81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = A093E36A0D8BF860002236B4 /* Project object */; +} diff --git a/build/xcode/dummy.cpp b/build/xcode/dummy.cpp new file mode 100644 index 00000000..2115020e --- /dev/null +++ b/build/xcode/dummy.cpp @@ -0,0 +1,6 @@ + +// Using this only to produce a binary in the SFML framework so that +// linking this framework doesn't produce a "couldn't locate ..." error +static void dummyfunc(void) { + +} diff --git a/build/xcode/sfml-audio-Info.plist b/build/xcode/sfml-audio-Info.plist new file mode 100644 index 00000000..6b32efc4 --- /dev/null +++ b/build/xcode/sfml-audio-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + sfml-audio + CFBundleIdentifier + com.sfml.audio + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/sfml-graphics-Info.plist b/build/xcode/sfml-graphics-Info.plist new file mode 100644 index 00000000..3e66fac3 --- /dev/null +++ b/build/xcode/sfml-graphics-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + sfml-graphics + CFBundleIdentifier + com.sfml.graphics + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/sfml-network-Info.plist b/build/xcode/sfml-network-Info.plist new file mode 100644 index 00000000..1ea2bc5a --- /dev/null +++ b/build/xcode/sfml-network-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + sfml-network + CFBundleIdentifier + com.sfml.network + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/sfml-system-Info.plist b/build/xcode/sfml-system-Info.plist new file mode 100644 index 00000000..3d2c3142 --- /dev/null +++ b/build/xcode/sfml-system-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + sfml-system + CFBundleIdentifier + com.sfml.system + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/sfml-window-Info.plist b/build/xcode/sfml-window-Info.plist new file mode 100644 index 00000000..383acd7a --- /dev/null +++ b/build/xcode/sfml-window-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + sfml-window + CFBundleIdentifier + com.sfml.window + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/templates/SFML Graphics-based Application/Info.plist b/build/xcode/templates/SFML Graphics-based Application/Info.plist new file mode 100644 index 00000000..af9a1cad --- /dev/null +++ b/build/xcode/templates/SFML Graphics-based Application/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.yourcompany.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateIcon.icns b/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..d4713d5e670b8f92a16d59f414e8a7264d3dd213 GIT binary patch literal 40702 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 literal 0 HcmV?d00001 diff --git a/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateInfo.plist b/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateInfo.plist new file mode 100755 index 00000000..d830c09f --- /dev/null +++ b/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/TemplateInfo.plist @@ -0,0 +1,6 @@ +{ + FilesToMacroExpand = ( + "Info.plist", + ); + Description = "This project builds a SFML application linked against the System, Window and Graphics packages, and written in C++."; +} diff --git a/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/project.pbxproj b/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/project.pbxproj new file mode 100644 index 00000000..31673d05 --- /dev/null +++ b/build/xcode/templates/SFML Graphics-based Application/SFML Graphics-based Application.xcodeproj/project.pbxproj @@ -0,0 +1,235 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + A0072ADE0F1D0EC500B4A594 /* sfml-system.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB6CB0F07CFF2000AAC7B /* sfml-system.framework */; }; + A0072ADF0F1D0EC500B4A594 /* sfml-window.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB6CC0F07CFF2000AAC7B /* sfml-window.framework */; }; + A0072AE00F1D0EC500B4A594 /* sfml-graphics.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB6CA0F07CFF2000AAC7B /* sfml-graphics.framework */; }; + A01FB6C90F07CFCE000AAC7B /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01FB6C80F07CFCE000AAC7B /* main.cpp */; }; + A01FB6CE0F07CFF2000AAC7B /* sfml-graphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB6CA0F07CFF2000AAC7B /* sfml-graphics.framework */; }; + A01FB6CF0F07CFF2000AAC7B /* sfml-system.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB6CB0F07CFF2000AAC7B /* sfml-system.framework */; }; + A01FB6D00F07CFF2000AAC7B /* sfml-window.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB6CC0F07CFF2000AAC7B /* sfml-window.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + A0072AF00F1D0EDD00B4A594 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + A0072ADE0F1D0EC500B4A594 /* sfml-system.framework in Copy Frameworks */, + A0072ADF0F1D0EC500B4A594 /* sfml-window.framework in Copy Frameworks */, + A0072AE00F1D0EC500B4A594 /* sfml-graphics.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + A01FB6A90F07CF6E000AAC7B /* «PROJECTNAME».app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "«PROJECTNAME».app"; sourceTree = BUILT_PRODUCTS_DIR; }; + A01FB6AC0F07CF6E000AAC7B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A01FB6C80F07CFCE000AAC7B /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + A01FB6CA0F07CFF2000AAC7B /* sfml-graphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "sfml-graphics.framework"; path = "/Library/Frameworks/sfml-graphics.framework"; sourceTree = ""; }; + A01FB6CB0F07CFF2000AAC7B /* sfml-system.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "sfml-system.framework"; path = "/Library/Frameworks/sfml-system.framework"; sourceTree = ""; }; + A01FB6CC0F07CFF2000AAC7B /* sfml-window.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "sfml-window.framework"; path = "/Library/Frameworks/sfml-window.framework"; sourceTree = ""; }; + A01FB6CD0F07CFF2000AAC7B /* SFML.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SFML.framework; path = /Library/Frameworks/SFML.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A01FB6A70F07CF6E000AAC7B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A01FB6CE0F07CFF2000AAC7B /* sfml-graphics.framework in Frameworks */, + A01FB6CF0F07CFF2000AAC7B /* sfml-system.framework in Frameworks */, + A01FB6D00F07CFF2000AAC7B /* sfml-window.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A01FB69A0F07CF63000AAC7B = { + isa = PBXGroup; + children = ( + A01FB6B20F07CF80000AAC7B /* Sources */, + A01FB6B10F07CF7C000AAC7B /* Resources */, + A01FB6B00F07CF75000AAC7B /* Frameworks */, + A01FB6AA0F07CF6E000AAC7B /* Products */, + ); + sourceTree = ""; + }; + A01FB6AA0F07CF6E000AAC7B /* Products */ = { + isa = PBXGroup; + children = ( + A01FB6A90F07CF6E000AAC7B /* «PROJECTNAME».app */, + ); + name = Products; + sourceTree = ""; + }; + A01FB6B00F07CF75000AAC7B /* Frameworks */ = { + isa = PBXGroup; + children = ( + A01FB6CD0F07CFF2000AAC7B /* SFML.framework */, + A01FB6CB0F07CFF2000AAC7B /* sfml-system.framework */, + A01FB6CC0F07CFF2000AAC7B /* sfml-window.framework */, + A01FB6CA0F07CFF2000AAC7B /* sfml-graphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A01FB6B10F07CF7C000AAC7B /* Resources */ = { + isa = PBXGroup; + children = ( + A01FB6AC0F07CF6E000AAC7B /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + A01FB6B20F07CF80000AAC7B /* Sources */ = { + isa = PBXGroup; + children = ( + A01FB6C80F07CFCE000AAC7B /* main.cpp */, + ); + name = Sources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A01FB6A80F07CF6E000AAC7B /* «PROJECTNAME» */ = { + isa = PBXNativeTarget; + buildConfigurationList = A01FB6AF0F07CF6F000AAC7B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */; + buildPhases = ( + A01FB6A50F07CF6E000AAC7B /* Resources */, + A01FB6A60F07CF6E000AAC7B /* Sources */, + A01FB6A70F07CF6E000AAC7B /* Frameworks */, + A0072AF00F1D0EDD00B4A594 /* Copy Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "«PROJECTNAME»"; + productName = "«PROJECTNAME»"; + productReference = A01FB6A90F07CF6E000AAC7B /* «PROJECTNAME».app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A01FB69C0F07CF63000AAC7B /* Project object */ = { + isa = PBXProject; + buildConfigurationList = A01FB69F0F07CF63000AAC7B /* Build configuration list for PBXProject "«PROJECTNAME»" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 0; + mainGroup = A01FB69A0F07CF63000AAC7B; + productRefGroup = A01FB6AA0F07CF6E000AAC7B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A01FB6A80F07CF6E000AAC7B /* «PROJECTNAME» */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + A01FB6A50F07CF6E000AAC7B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A01FB6A60F07CF6E000AAC7B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A01FB6C90F07CFCE000AAC7B /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + A01FB69D0F07CF63000AAC7B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + }; + name = Debug; + }; + A01FB69E0F07CF63000AAC7B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + }; + name = Release; + }; + A01FB6AD0F07CF6F000AAC7B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = "«PROJECTNAME»"; + }; + name = Debug; + }; + A01FB6AE0F07CF6F000AAC7B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = "«PROJECTNAME»"; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A01FB69F0F07CF63000AAC7B /* Build configuration list for PBXProject "«PROJECTNAME»" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01FB69D0F07CF63000AAC7B /* Debug */, + A01FB69E0F07CF63000AAC7B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A01FB6AF0F07CF6F000AAC7B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01FB6AD0F07CF6F000AAC7B /* Debug */, + A01FB6AE0F07CF6F000AAC7B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = A01FB69C0F07CF63000AAC7B /* Project object */; +} diff --git a/build/xcode/templates/SFML Graphics-based Application/main.cpp b/build/xcode/templates/SFML Graphics-based Application/main.cpp new file mode 100644 index 00000000..7a7335ee --- /dev/null +++ b/build/xcode/templates/SFML Graphics-based Application/main.cpp @@ -0,0 +1,42 @@ + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Entry point of application +/// +/// \return Application exit code +/// +//////////////////////////////////////////////////////////// +int main() +{ + // Create main window + sf::RenderWindow App(sf::VideoMode(640, 480), "SFML Graphics"); + + // Start game loop + while (App.IsOpened()) + { + // Process events + sf::Event Event; + while (App.GetEvent(Event)) + { + // Close window : exit + if (Event.Type == sf::Event::Closed) + App.Close(); + } + + // Clear screen + App.Clear(); + + // Draw apredefined shape + App.Draw(sf::Shape::Circle(200, 200, 100, sf::Color::Yellow, 10, sf::Color::Blue)); + + // Finally, display the rendered frame on screen + App.Display(); + } + + return EXIT_SUCCESS; +} diff --git a/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateIcon.icns b/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..d4713d5e670b8f92a16d59f414e8a7264d3dd213 GIT binary patch literal 40702 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 literal 0 HcmV?d00001 diff --git a/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateInfo.plist b/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateInfo.plist new file mode 100755 index 00000000..d5eb9fb2 --- /dev/null +++ b/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/TemplateInfo.plist @@ -0,0 +1,6 @@ +{ + FilesToMacroExpand = ( + "Info.plist", + ); + Description = "This project builds a SFML executable linked against the System package, and written in C++."; +} diff --git a/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/project.pbxproj b/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/project.pbxproj new file mode 100644 index 00000000..345f2c7d --- /dev/null +++ b/build/xcode/templates/SFML Tool/SFML Tool.xcodeproj/project.pbxproj @@ -0,0 +1,209 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 8DD76F650486A84900D96B5E /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* main.cpp */; settings = {ATTRIBUTES = (); }; }; + A0BAFBE70F07DDD2005BC41F /* sfml-system.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0BAFBE50F07DDD2005BC41F /* sfml-system.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 08FB7796FE84155DC02AAC07 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 8DD76F6C0486A84900D96B5E /* «PROJECTNAME» */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "«PROJECTNAME»"; sourceTree = BUILT_PRODUCTS_DIR; }; + A0BAFBE50F07DDD2005BC41F /* sfml-system.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "sfml-system.framework"; path = "/Library/Frameworks/sfml-system.framework"; sourceTree = ""; }; + A0BAFBE60F07DDD2005BC41F /* SFML.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SFML.framework; path = /Library/Frameworks/SFML.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A0BAFBE70F07DDD2005BC41F /* sfml-system.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* «PROJECTNAME» */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A0BAFBE30F07DDBD005BC41F /* Frameworks */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = "«PROJECTNAME»"; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 08FB7796FE84155DC02AAC07 /* main.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* «PROJECTNAME» */, + ); + name = Products; + sourceTree = ""; + }; + A0BAFBE30F07DDBD005BC41F /* Frameworks */ = { + isa = PBXGroup; + children = ( + A0BAFBE50F07DDD2005BC41F /* sfml-system.framework */, + A0BAFBE60F07DDD2005BC41F /* SFML.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* «PROJECTNAME» */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "«PROJECTNAME»"; + productInstallPath = "$(HOME)/bin"; + productName = "«PROJECTNAME»"; + productReference = 8DD76F6C0486A84900D96B5E /* «PROJECTNAME» */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "«PROJECTNAME»" */; + compatibilityVersion = "Xcode 3.1"; + hasScannedForEncodings = 1; + mainGroup = 08FB7794FE84155DC02AAC07 /* «PROJECTNAME» */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* «PROJECTNAME» */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DD76F650486A84900D96B5E /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "_GLIBCXX_DEBUG=1", + "_GLIBCXX_DEBUG_PEDANTIC=1", + ); + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "«PROJECTNAME»"; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "«PROJECTNAME»"; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + 1DEB923308733DC60010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "«PROJECTNAME»" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + 1DEB923708733DC60010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/build/xcode/templates/SFML Tool/main.cpp b/build/xcode/templates/SFML Tool/main.cpp new file mode 100644 index 00000000..d44df20f --- /dev/null +++ b/build/xcode/templates/SFML Tool/main.cpp @@ -0,0 +1,10 @@ + +#include +#include + +int main() +{ + /* Your code here */ + + return 0; +} \ No newline at end of file diff --git a/build/xcode/templates/SFML Window-based Application/Info.plist b/build/xcode/templates/SFML Window-based Application/Info.plist new file mode 100644 index 00000000..af9a1cad --- /dev/null +++ b/build/xcode/templates/SFML Window-based Application/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.yourcompany.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateIcon.icns b/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..d4713d5e670b8f92a16d59f414e8a7264d3dd213 GIT binary patch literal 40702 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 literal 0 HcmV?d00001 diff --git a/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateInfo.plist b/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateInfo.plist new file mode 100755 index 00000000..7b0ab256 --- /dev/null +++ b/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/TemplateInfo.plist @@ -0,0 +1,6 @@ +{ + FilesToMacroExpand = ( + "Info.plist", + ); + Description = "This project builds a SFML application linked against the System and Window packages, and written in C++."; +} diff --git a/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/project.pbxproj b/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/project.pbxproj new file mode 100644 index 00000000..6dbff7e0 --- /dev/null +++ b/build/xcode/templates/SFML Window-based Application/SFML Window-based Application.xcodeproj/project.pbxproj @@ -0,0 +1,233 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + A0072B1B0F1D0FCD00B4A594 /* sfml-system.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB7880F07D338000AAC7B /* sfml-system.framework */; }; + A0072B1C0F1D0FCD00B4A594 /* sfml-window.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB7890F07D338000AAC7B /* sfml-window.framework */; }; + A01FB7870F07D328000AAC7B /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A01FB7860F07D328000AAC7B /* main.cpp */; }; + A01FB78B0F07D338000AAC7B /* sfml-system.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB7880F07D338000AAC7B /* sfml-system.framework */; }; + A01FB78C0F07D338000AAC7B /* sfml-window.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB7890F07D338000AAC7B /* sfml-window.framework */; }; + A01FB7F70F07D381000AAC7B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01FB7F60F07D381000AAC7B /* OpenGL.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + A0072B2B0F1D0FD800B4A594 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + A0072B1B0F1D0FCD00B4A594 /* sfml-system.framework in Copy Frameworks */, + A0072B1C0F1D0FCD00B4A594 /* sfml-window.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + A01FB77A0F07D2C5000AAC7B /* «PROJECTNAME».app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "«PROJECTNAME».app"; sourceTree = BUILT_PRODUCTS_DIR; }; + A01FB77D0F07D2C5000AAC7B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A01FB7860F07D328000AAC7B /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + A01FB7880F07D338000AAC7B /* sfml-system.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "sfml-system.framework"; path = "/Library/Frameworks/sfml-system.framework"; sourceTree = ""; }; + A01FB7890F07D338000AAC7B /* sfml-window.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "sfml-window.framework"; path = "/Library/Frameworks/sfml-window.framework"; sourceTree = ""; }; + A01FB78A0F07D338000AAC7B /* SFML.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SFML.framework; path = /Library/Frameworks/SFML.framework; sourceTree = ""; }; + A01FB7F60F07D381000AAC7B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A01FB7780F07D2C5000AAC7B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A01FB78B0F07D338000AAC7B /* sfml-system.framework in Frameworks */, + A01FB78C0F07D338000AAC7B /* sfml-window.framework in Frameworks */, + A01FB7F70F07D381000AAC7B /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A01FB76B0F07D2BC000AAC7B = { + isa = PBXGroup; + children = ( + A01FB7830F07D30C000AAC7B /* Sources */, + A01FB7820F07D309000AAC7B /* Resources */, + A01FB7810F07D304000AAC7B /* Frameworks */, + A01FB77B0F07D2C5000AAC7B /* Products */, + ); + sourceTree = ""; + }; + A01FB77B0F07D2C5000AAC7B /* Products */ = { + isa = PBXGroup; + children = ( + A01FB77A0F07D2C5000AAC7B /* «PROJECTNAME».app */, + ); + name = Products; + sourceTree = ""; + }; + A01FB7810F07D304000AAC7B /* Frameworks */ = { + isa = PBXGroup; + children = ( + A01FB78A0F07D338000AAC7B /* SFML.framework */, + A01FB7880F07D338000AAC7B /* sfml-system.framework */, + A01FB7890F07D338000AAC7B /* sfml-window.framework */, + A01FB7F60F07D381000AAC7B /* OpenGL.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A01FB7820F07D309000AAC7B /* Resources */ = { + isa = PBXGroup; + children = ( + A01FB77D0F07D2C5000AAC7B /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + A01FB7830F07D30C000AAC7B /* Sources */ = { + isa = PBXGroup; + children = ( + A01FB7860F07D328000AAC7B /* main.cpp */, + ); + name = Sources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A01FB7790F07D2C5000AAC7B /* «PROJECTNAME» */ = { + isa = PBXNativeTarget; + buildConfigurationList = A01FB7800F07D2C6000AAC7B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */; + buildPhases = ( + A01FB7760F07D2C5000AAC7B /* Resources */, + A01FB7770F07D2C5000AAC7B /* Sources */, + A01FB7780F07D2C5000AAC7B /* Frameworks */, + A0072B2B0F1D0FD800B4A594 /* Copy Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "«PROJECTNAME»"; + productName = "«PROJECTNAME»"; + productReference = A01FB77A0F07D2C5000AAC7B /* «PROJECTNAME».app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A01FB76D0F07D2BC000AAC7B /* Project object */ = { + isa = PBXProject; + buildConfigurationList = A01FB7700F07D2BC000AAC7B /* Build configuration list for PBXProject "«PROJECTNAME»" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 0; + mainGroup = A01FB76B0F07D2BC000AAC7B; + productRefGroup = A01FB77B0F07D2C5000AAC7B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A01FB7790F07D2C5000AAC7B /* «PROJECTNAME» */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + A01FB7760F07D2C5000AAC7B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A01FB7770F07D2C5000AAC7B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A01FB7870F07D328000AAC7B /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + A01FB76E0F07D2BC000AAC7B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + }; + name = Debug; + }; + A01FB76F0F07D2BC000AAC7B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + }; + name = Release; + }; + A01FB77E0F07D2C6000AAC7B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = "«PROJECTNAME»"; + }; + name = Debug; + }; + A01FB77F0F07D2C6000AAC7B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = "«PROJECTNAME»"; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A01FB7700F07D2BC000AAC7B /* Build configuration list for PBXProject "«PROJECTNAME»" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01FB76E0F07D2BC000AAC7B /* Debug */, + A01FB76F0F07D2BC000AAC7B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A01FB7800F07D2C6000AAC7B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A01FB77E0F07D2C6000AAC7B /* Debug */, + A01FB77F0F07D2C6000AAC7B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = A01FB76D0F07D2BC000AAC7B /* Project object */; +} diff --git a/build/xcode/templates/SFML Window-based Application/main.cpp b/build/xcode/templates/SFML Window-based Application/main.cpp new file mode 100644 index 00000000..16d4d335 --- /dev/null +++ b/build/xcode/templates/SFML Window-based Application/main.cpp @@ -0,0 +1,54 @@ + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// Entry point of application +/// +/// \return Application exit code +/// +//////////////////////////////////////////////////////////// +int main() +{ + // Create the main window + sf::Window App(sf::VideoMode(640, 480, 32), "SFML Window"); + + // Start game loop + while (App.IsOpened()) + { + // Process events + sf::Event Event; + while (App.GetEvent(Event)) + { + // Close window : exit + if (Event.Type == sf::Event::Closed) + App.Close(); + + // Escape key : exit + if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape)) + App.Close(); + + // Resize event : adjust viewport + if (Event.Type == sf::Event::Resized) + glViewport(0, 0, Event.Size.Width, Event.Size.Height); + } + + // Set the active window before using OpenGL commands + // It's useless here because active window is always the same, + // but don't forget it if you use multiple windows or controls + App.SetActive(); + + // Clear color buffer + glClear(GL_COLOR_BUFFER_BIT); + + // Your drawing here... + + // Finally, display rendered frame on screen + App.Display(); + } + + return EXIT_SUCCESS; +} diff --git a/dotnet/MainPage.html b/dotnet/MainPage.html new file mode 100644 index 00000000..a8001135 --- /dev/null +++ b/dotnet/MainPage.html @@ -0,0 +1,71 @@ +

Welcome

+

+Welcome to the official SFML.Net documentation. Here you will find a detailed +description of all the SFML.Net classes.
+If you are looking for tutorials, help or whatever, you can visit the official website +at www.sfml-dev.org. +

+ +

Short example

+

+Here is a short example in C#, to show you how simple it is to use SFML.Net : +

+ +
+using System;
+using SFML.Audio;
+using SFML.Window;
+using SFML.Graphics;
+
+namespace Example
+{
+    class Program
+    {
+        static void OnClose(object sender, EventArgs e)
+        {
+            // Close the window when OnClose event is received
+            RenderWindow window = (RenderWindow)sender;
+            window.Close();
+        }
+
+        static void Main(string[] args)
+        {
+            // Create the main window
+            RenderWindow app = new RenderWindow(new VideoMode(800, 600), "SFML window");
+            app.Closed += new EventHandler(OnClose);
+
+            // Load a sprite to display
+            Image  image  = new Image("cute_image.jpg");
+            Sprite sprite = new Sprite(image);
+
+            // Create a graphical string to display
+            Font     arial = new Font("arial.ttf");
+            String2D text  = new String2D("Hello SFML.Net", arial);
+
+            // Load a music to play
+            Music music = new Music("nice_music.ogg");
+            music.Play();
+
+            // Start the game loop
+            while (app.IsOpened())
+            {
+                // Process events
+                app.DispatchEvents();
+
+                // Clear screen
+                app.Clear();
+
+                // Draw the sprite
+                app.Draw(sprite);
+
+                // Draw the string
+                app.Draw(text);
+
+                // Update the window
+                app.Display();
+            }
+        }
+    }
+}
+
+ diff --git a/dotnet/SFML.ndoc b/dotnet/SFML.ndoc new file mode 100644 index 00000000..89133d9b --- /dev/null +++ b/dotnet/SFML.ndoc @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dotnet/build/vc2005/SFML.net.sln b/dotnet/build/vc2005/SFML.net.sln new file mode 100644 index 00000000..2dc845cb --- /dev/null +++ b/dotnet/build/vc2005/SFML.net.sln @@ -0,0 +1,62 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C# Express 2005 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-window", "..\..\src\Window\sfml-window.csproj", "{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-graphics", "..\..\src\Graphics\sfml-graphics.csproj", "{46786269-57B9-48E7-AA4F-8F4D84609FE6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-audio", "..\..\src\Audio\sfml-audio.csproj", "{0B202C4D-A457-47FE-84A3-031DD878C6BE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sample-opengl", "..\..\samples\opengl\sample-opengl.csproj", "{160AE11E-138A-4B77-9642-EA74F9A79B4D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sample-window", "..\..\samples\window\sample-window.csproj", "{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sample-postfx", "..\..\samples\post-fx\sample-postfx.csproj", "{9D4738F7-34EA-433A-A765-AF85A52A174D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sample-sound", "..\..\samples\sound\sample-sound.csproj", "{16E177F3-A0FF-4091-8521-562E0EBAA3AB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sample-soundcapture", "..\..\samples\sound_capture\sample-soundcapture.csproj", "{F2F48990-F81E-41BA-AD01-168F6178C807}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|Any CPU.Build.0 = Release|Any CPU + {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|Any CPU.Build.0 = Release|Any CPU + {0B202C4D-A457-47FE-84A3-031DD878C6BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B202C4D-A457-47FE-84A3-031DD878C6BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B202C4D-A457-47FE-84A3-031DD878C6BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0B202C4D-A457-47FE-84A3-031DD878C6BE}.Release|Any CPU.Build.0 = Release|Any CPU + {160AE11E-138A-4B77-9642-EA74F9A79B4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {160AE11E-138A-4B77-9642-EA74F9A79B4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {160AE11E-138A-4B77-9642-EA74F9A79B4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {160AE11E-138A-4B77-9642-EA74F9A79B4D}.Release|Any CPU.Build.0 = Release|Any CPU + {C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Release|Any CPU.Build.0 = Release|Any CPU + {9D4738F7-34EA-433A-A765-AF85A52A174D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9D4738F7-34EA-433A-A765-AF85A52A174D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9D4738F7-34EA-433A-A765-AF85A52A174D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9D4738F7-34EA-433A-A765-AF85A52A174D}.Release|Any CPU.Build.0 = Release|Any CPU + {16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Release|Any CPU.Build.0 = Release|Any CPU + {F2F48990-F81E-41BA-AD01-168F6178C807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2F48990-F81E-41BA-AD01-168F6178C807}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2F48990-F81E-41BA-AD01-168F6178C807}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2F48990-F81E-41BA-AD01-168F6178C807}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/dotnet/extlibs/csfml-audio.dll b/dotnet/extlibs/csfml-audio.dll new file mode 100644 index 0000000000000000000000000000000000000000..0727f7bf908810a3bf89bce5de00db4f7eb2663a GIT binary patch literal 102400 zcmeFaeSB2awLg3&a|j0{`VpC|IzQgaVQ7x-iP`Q<>I^hh5tEZ;rXu~ z+Q8Gh4^8FY?;LXQ?{^Q``1jx;k$=aH^1b}K_U>=B5N@+2!3sgBwoDS9cC4OnrX3V= zuDrk^34+5S2>0u$*9dra;Ms$3dZK6i6QAhM{1zV3;r?>UBINKK01+&G@NfNVceO<* zvI)XMzeQL}+4oz7XE|zm$@uHA2;)=1|1VhtcSiE*kIQ_P>^=gW9-V;GLHYZ2k#Db! z;AwxZ(JpGML7!Q`BM8f`TXp9hkvq`7xk#n92aIognSTMKUZ;Zzk{zkb3|#b`@fQ$; z?(0^qUiB@c@wTGPyiWSg_zMueRo`BD9{}H;hKvpaj=nSg0)lXJ#_Jc4UvS_H4t&9Z zFF5c82fpCI7aaJ417C393l4n2fiF1lzrlfiOWsu$NAl{DD=m(l_zSaR{kc487A2i1 z_ez$?l(6=Xqk@mL&eS5q22 z;XflknO)UaGpkyWY*{?p;<)oEYEv*2Zg}e8w=IssZNXT%*Ky~+P%1m7M7%cE>h&}v zXH|h{x!=}b?sZXKLq=sAiI_fCjdBXjGKIy>P4YHJc6(4?VYMs1Q&Tg2;PyR>r5 zj|;mM5YeCO@>v{8Wxi5bpi~ycYKr@iYSBK-18G#9WLAgTY}vK#+<9L00Vf(nGj>6{ z;98)q%aF{-UaY^82V43p z5uu?bB8nmiO^`MEt7oI~;c-yelcrK0to*Q|QJOC^eLdeVyK)|(2J{B^S0raqPuNV%pV_Ml? zlF9yDg38hva6pttZC!&8URXF7b55z%Du+40AsfB&K(cVpr^n>+oYjX(zKIf%c&Sra z4k}v~>6C~>ghYy}JqCT@yr2)Weq9rERn8=UmF9uDPByiyH)ZKuJDY%jHX{3?MmAsVPT}HyC2O`g5z$v;CEhrKE=8D(#ir zvnrm;pf{kmzshV?cKhW~32H5Rq1mu%RY6u-9$V-YYm>WCpObi^%)qBj9=F&Z?N&mf zoNYm<{o@FzrrZCAtoF;pj^PB9!t5{=^@I}BR({FiP~F~^sc2+!mJ4t4Hi<+$q#lil z-k`eFD;k+j0!81G!0gjN z8=KrpQ@+wvpfnY2Y${foN}Bs~*CGQHEiueK1jHl`{OBun3&Zn(RPPSbw~SoUzk;lH z5E83#XuqE#2wmOLsl}D<$fTDk&TF(dWB@!0fPIxEtg@u5yDc{{=@BBLreI%XLDyjF zJ)D2wWY?a3mHB4Mfs;)K;?Uak-zLb%#?s={Ftw?)I5QjlDG_s6E(_XVonRq$&DjU# zUT}pa zl$<4iaCA-6rrsq`ffOAkg?05|Hrz00U*U;Znyph53-Z&HfPH$2s3Iu4l)W)$lGjlA#Cm5I(FGO4GHrF zHqQzDchs)11e1FS@ivLkMm6NwhAOGZ04>9IgtkTmETw#Ur z%7^oX7Jx)JEB&7*ld&cT+p)3SJ5!rK2@&>ow_xx5dsNN7LM>%Gw1+2i5t~;Gn8=OA zmBseXZ%{sZ8aSv+?VVpiLSd5aQrb(jUjZp_e}}$w#A6tzN2UPPAMgM$-mT7H%j`6d ziNmd4r@ix6Xtcc2>$G&VdS?puuK$I1R!O{eabCXzIq^ck@n~BVFZ!y?V zz-F^r+mL3dERnalNOqKJuRBPhsI+?X@n4W3f_eV8xCrL^`%@z5Ijaa3WQkzszQ`nW z#!L&RxT^*o!71jP)ao$GK&CHLCp`*@4Z*x=FC65ip7XZr-@%s=k@^)3Ie`%YyjlmJ zfZA2N!kU~lrgsk{bP4-?qbZ_jp-B1#MmrC6}5}j zK6$MqKux%d6t%Mexi7rotpqb2b<3@DBvKw52JDUVMAo07M5lTGTz}6>56v;i6@w_# z2ps`(*f@zzPtICP73F3$lfX!8n+$5Hy{KPIscx$E+#rCkM|!veADnrtyufjFH+AxOps!-W61jmTyY{vFIM+5+&nbwBb66m6;{uJ< zYqcayEog~6p0sy80UYvzQBiIi6{1(^MAX|@_4RoTP}P+H^Y`03*8$3?6(9lhR^gyh zOunLJeK-vn+3ek#Y z6L~Lx^$Nk!3$70b0G6`&tW*ppXFUpC)`wC3{imnBKaqO3Z-s)h`C_nTvThZB!OcKw zUI-rrekc4KIAm5p0Qu9I5JtZ4F>)w!8Bd2wk;nZ*;4}Tbv$%*T`wXwa*<%y<{NXJA zAy5!S!7e^fch7}GVSlVU+qL42PQerN zFt9(1rhx{V37X0$wq@ierY*!=%7jYuF9lDH%YZi_Q~A`mbL4Xu9_$OYPz%ojl&)@P z3ZFv_;@-mU#l0-K9qGOJe+~ci z%u4w*B2`1$pAM5hU8`O~{xrH*cd5bt7j$7TCXL|+OlX#0CkU~2v7tYAGnll(Vob%8 zvtA_XCa(}$rhrfE0 zNjv=R9;fNwqy3+qrTuy2u0_1%4Qx29zzx#8Um;T|Q0rNx)YTnpl)!}m=Ylmd8;!3D z!8t0Z#R!UtNKpF|CL*ymu_48UOF?}XTozX57|AK@))^9HlTDVeum~&*O_p$%m)Q$R zmzF`7OoOx+;TLupsST=IS!);}V$)h?2Pg97ZTUPAa!lL=H~<&ca<0Kg2H>*9wEN*e zFgqBN<|l_%kFv{1z%XOohyH z8nibzu{Rpiy;?+*5%j0cdHQ_O@b7i!UhhJLu%I#MLLP>U(W}pd@92aY$1UBu5H1*s?C@}yfwF`ZCJ!48Bk2*-R*gTS<2MGmD z(nx4%Hd{j|Fdc_8l?$O-=ylg3-(lo?wI>l`V_)w&0V!HTQgnhfz%Y<z|%0L?04tUNr-ozi!+yeBa z2Y0yp*;7K)BeE)~KI#&)fp>d@~#V6Y}|6}S+8 z$e~|~P6sBo8~!RsJ%U6|@H0pT;*@d5!#U}hq|;zD)x|8FhN-BZKSfStSASXTX>LNP z{;JanIMR%Y^?ETK5#hy$S%I=jVg()TXqZ(Ai)@vs+)s{*KO{CqFHlNF#i86Rg8A@^ z{4=6c6^ogmluG6!;unN3C(Q1blsWh~2R<9&3rcB(At{P9DU}B7W_Bib;Ga9SS#Oi1 zP>eVa!XctYNs;hmQ-bv3P^u(0brV8LN|kM6(9su|A*AgwjXSMgN5{Gu0#n(i=uOBW zW@v{YaO~?1+OPI<N#GXVT=(`z!P|+$egxq4}j(m?@$nniS8@`c7 z|Me!Wspr5IAiKn7K#tjrj_-1{x>;mF5iw&}RsYRmbdqw5I5Hhc{+y_&OdYW*w@46t z%y-E?pskgnz4KBM%mxw~i1um}o$`m2goU zTEQuhZspQCiG5ERaj`n|5p1i-#z!tdbME)=U=K;r?{IBgEuxs*PbN%DdZ^7Pltc9Fj zh^`E?H~T6bg7zR9!P6lntC*wsb_XI0RZ{U{N2FQ*2KeocAix6v|EUhXsm8If3L$6* z0(8Ix0PQ;Dj6A^c&&a^PoC@SpM?_}=nDAfD2z~S-LI~AjpZmWnvNfW;YXRhKcNb6@LS;kC62f#$Oo~`t{xRV2E(MRb2vTTI?k9t_W;1Al^ znEfB(or9DFG0Cv1A9W70cNH2LFa$(y;WE%bkJ$vN{%?p=18fG!aAWXmZoVjMi-8CsFLtkp%sw-7?n-Zd^c%X#szp5UtJEiz zq5@M>DH@Y9g$$X3X$#DmMC3Fp1x<};1P`Y>g|1{I*Wc>RGjaOid`GSX7d%=AnpW3< zmbeJ{uSk1A4K1vX3=$@#7^9f7$i&231b-7*PTnT&?K!a`pv@-2Xk5fdh~9FNX2MYD z9tpYp+}CfYs}E`aG0yp!2hR@gl;J@jS9_aA4V0j96Lam~rx=Z9_O3yMit{3u69H(cr2C@KUbxvo?Mbrb$Y+zgxNEE@~ADgNo^q zO8}lv4d!(tzeu~>sK0Bl8P&T{6@rMf0OAF#CkPrLy?NUAbu{Ka26>x1$oOcJ9!aO2p;|h6lc6MrW~pSX!PcOC1`jOF1`Kh_CMIZiq}_H9_CN&`Eg5@33$+ z^{FzG=S9WB!9`ub5CDGU{$jWL~6JRqMf*87zyOlDGYSmqX(HVs&n*DuE_DAE5 zo8n6rqhr~cpzqkw=gkOiXQgxbqV+A{=^AW6RM)}~d`Rv=PdXa3+RF_$5KF?*vaIm+ z)36#1Esx+cr2Xs&8Gi{guZ0x6#FMsBPoe-I#kHH~bT@H22DJ7oDX0&baO}gsxk`rm zF;R4A9cHeCT*=H$fEp8`=C49Dm1{Qv0Kh@biwBZ(o0d#AzhL16P=n3pX0#T59%M!e zhP3;5lQFZSCg_A_|u#11puD`zdQ()>Jn20i-x927~K z4Z{k85Lhlk!}tasCzy#ICk+;Zp;%2-7S-B+fE0k+GUuSqlsVG-ON4krC~c7oFpB%) zL*xGORi-^hctl*=oZ2-->;JTmg$uXd-`dMi=M#`9zR~LX{w#f^Ifkw41V@kEL~pH` zO@mL}UF?#(l#6NqMm(ph`@yj#G4VlEVuJ@(xQ~Dx{!{3KCQ)gUlqOr`w)Mokb!#SR zJKiTFuSND_Nzk?y`rtpM)Yvc|R4OI*7Tdk%awxd7ek50)zuv`scPZD(!xp(G2b)&L z8e`72N?4+K5#IoUc%_5KXDuEc+B8<_Y-YEl@~vmjS4+Lw_J{H#a+z3Zb99 zJSFV*?H>9pn&Pbs873$7Zx(WO?TK0oyL(xw+t)KRep)`{W8+!mgH~GDO+-Azz=r)h ztj5uzHwh5|8kJqJz;1-Y(2O9W1Tf+>6)X?cX~UO7LdNB7UReITt|TNCFc>$M@OHpP z?t_hNa{CfPr_R=h8W)=kr>qX{2Ta>!GI8uJAn{UJoq*!IVE0_6-Rt@oA=j)F(kZ?*0JjOc)_AB@e&m&YG5V0 zx~c1Rm%|y2Zj5L{WI=dg!Si%2+CL} z007SwpV(zVF00ZkA>vz!9hFa`nTji@G`SSoVdGJoycFlA9StPD5EEKrNK0^fK^648 zc?Lb)>4sc;pybEuNgT8nA*Be=a!vCVf-E4bQbN96kXw}y(h%U6 zw|VNw{a#J7O{$89W(1)#h92GpXzvGSw3o(T+P);|cnb9rQM~pyOnm2c89qIMc>N#&rawy>`>2n2bq!1W~dRWZH;b_Rf>|B)yOjBWJrv690t~jd^x+W0ozn|`+K7$Ak#rA9je8?pldOY*_6Nv5gAqrpXcj_75jpq z-~^hotnQR$r9CEw(IV>_YT1p?TCL{b8P?UWCz)pJ%z9AEobGegW9+w}IvQG@p_;TK zADmIgdwNo;4tOsdX%^wSMxsBg>HU?d_#dAM($*=o*8@-TYNJmik`mr0e4WDHd4T!^ zjMP>`ae1eFmp`Bn^0ak$%;=ON4T~D7PHEtyL27J9r(oxh$U9{Z?-XzzwdY~$*PGg7 zG(nt=Zpkq^MIY^UH=|d0r&3EPwDcRFDZOnqn`JU>H2`ch*_>n}@k-F|Y|ay|ks& z%_`kWm=c|M^RPEKYSlJ z*fIC@rxA~FYYFOgP&B?t$!konHqic8#Cy!;f@2M=U7Fi2uA!N9ljv`f=&2!G7sfEa z!yfmbul10Jv24%VqpxzbCM5t$YY1+gZVW}gv5LwpQH+&-AhdgAyowi|L} zLw95Thd2gYqmSVl-D~q{Lx1VoWAEGtu5yoQ5Xm*%ur~Y_RIKxz^nbQ`lJ>LRNlfig zES+!N?jNqR%hP3XU@CfqsJ;j@6Rp1~7&)e=>0J+eZm*Ny@?g|o&%bG|Q* zahlD}79B}AXShdrPkEcLvHnU)u{ zJA5Auo$@ExuGNh(Z1}5`VorZ;utECAAhPS~8!&Ox9wUVM=E$N3*!Mr< z9TBy3Nz+7-=SuNw5_sB8Xt>I&xvT6yreHnhHc7e77Fo6)wD1|@BLV`O8`qLAGSGnBo_P+zU z{pd}|ZFaWx4S%A+E)S91_6}(#^j^sAKFBR3AqyLULvAUN*Dg`**8MAlI_>LVi7B_9 z47qg{Lpa@M%C4L1cRhthePdLVY@*AzeduJwZXJXrM0mbANBb@D`zg=3wjif$;()y|^1ceHN-b+9MR|ttr9=ES#=7?<# zS^Wn|cl&!+-@tp2$0;S>$)O~>SMtAU3Muaw-v=adyR;7I6VVQ_#()o|R|A&4!2>#p z)!$5)(kV1?kXs!qX$H*?PV%>ltBt`D9&niJJ~00nj7eiQb&_KKcxd=fabayJMBCGkI(YsXq7l_KyG>DCd`ki zCpgOsQla5+L00UhDIerK2_43Kq@fNc+_a~l8O=*hi|AyIpRotPp}#SJ=3_YloJPz9 zy$H7el0yd;5JYQ;l~npajV;cL*uz-x{})&Rxi826Y4jKmu^28M#lOKmNEE6PF`1{3 zo~|_94tV_IX1{lRjQ%;A@)wqRJv0hHv1vr`&@Of|=|0jsF41N=bg$MNht5 zgSfc9oJ;aS(j68N)k=-Qup3=_B3H9Y8@VO^fz_7~k?8)r*o?ar2b?eJQ4(WOAddOp zGwVhrPN)&&lCRTDhr#6M7*ck)uhc6H|F0KP0ZLZNkMX2LR%4hZV+7lVy}B)n;E2O= zy~cew=>*P^eVRzSV!RALRF*2ebLVN7~rR}5+g|BFj{e><0C3SE(=$T$6Bxy2zwzMK`Me})*QNoRs{|Gc5a zG6SKa6>8z0QXGolWY6H`FItUTDyL(V}pFj2qQX;m9sbrbmnJ(5K*WOhk{HyA*Jku?t}7@Yp_<2 zbyk@D9dyh9dL6ZHEb|(w&FSS0qXU=8S#O(d({6xR>$HRH-FkBWB&we}J!``i`n#ju zi+(cqOYPE5!tu#C)$zOMxcm@Q^pMHNbX_~hW#fD@>PlBcQ3*_L!0o2wK|=@5l+OS< zfdidYLbad$XU1VdrvaNjg&js96m36fvXlZOQ_<1y8_b~1d{Z&cO6c!dZ6}f#9s11p zLkEjkw3o*xKez?4Uejy7VRju@ty{#&F&%4u?&Wi@sKGNf7HL}pkGg32-$F90g2?SmhC8dOGik^Q{& zO#8{X2IcavuxbDEEN{Icdik0*Kd2YE6eipPE%_H>39PJ`igh@!k^F3_My054*}3bx z2KB8uTYXbd-w&ZFv@cLehJfRg|NQEWX)hkw% zXd84?@U~$Vl?dE_KaG#jm60OAYqv}{q1#qeX^S$U5#4c9Py_aIK)VnFE8n<1#^Z5r zG%p#sh2>(b#s*zlQD8yZwdV*?oRh420Jj@J5vvjThuZQjknldR-kMKBZrlYx?p=+f zgl!b?Ku>3^BlVgwGpswoA!x=rTdF%;hFM7Qh;D{9U#u@4i zeI+Dfgy5Vc z_cZm=(Ob?5M3jDtYV_W@7?MQrVTr32ig3-sj_fRJ?E!%yt!^O84%4O)B1DIz0G+X1 zu$iD+?#E}Xc7^6~ zOYglS60+(a=k+hnE`p&u6%9WPJ}-|rbxk&WCN!6ilyvC#!=!BT4Zq}yl5LaGzuGgf z-2J&rfxN%6h)i3C9P$1y!pO$+$=~-tv&gi=wf`q`6fl^JFIEa*+;4%A8&fEX%TqYn zfuo4EL2ZPaY6mDzHByJa%z&R|z)#cR<0<%51+Whvo?##4(c*AR$u*gquAh2_^g+PH zv>Fq|mSSY`#i<~*4<~CVcN)R?EjYY9B_wy_UJ~s6!qOm4Vj!KbH1y$k3|8}K1b`Xz z;I$luNs-vso}k2XTpK|Z2b1sWMy6{K7GMD@wiF>blu9n8WH6VxU-PFPRWGCm4&3kMB>asa<_@Zk%h!(BC%y5ahgb^EF|w@3dboC zvyl9jl8F)_3(0y)CZ0@?0H+$i!bCETlJ_u%aY{zBkaSZr zQKDrbd6<%klEYa@zGEVJKMToMOeAk-A(?F=*_nkTfzg9gvMmcqoRW!>?kprSB@-pD zWg%HTH{7Lp!HCQ6>pLefdeM9C9bNbWI_{4@*6 zS4||3W+9^2mx)BWZc>nLsZK!bQS)fz3WYunW%*Y{vP4O+G&`*ZF}t&JS$* z`GHM4KQP<*fn9KZU{lWz3_FU>r|Wai4{Xx;fr;k_W<5W!obv!f8%rR;79l;e$lh-Z z0GxNnAs)l6)8oDHk|}13WpUA$iwLIeah5=clTMXb_p|LYvCijztJSei^e0wL^1RyC;V4>-s}!-UQI1_T+QUzgCt$O{&BggWI?IVMFw1-7@nM^+34A8wiWFc+W#m%& z$Sv$H+%u9#E5GGfK5ejFikTHou*?&ElOMMtX(qkXwh9}~x!7$s{}6jnYP|$B^{sNs zM=i1{upwq=ebxc2s==x3+OuwIE8;U)ZUSy*H`7zT13l>c5Pg=%bwUX=lVsfVg0oV2 z0wz>wqrBGTScQXO;)qr57HLQP3WN*_FleLQ@N?`zZ3cf4U$Dry?`TdpeS%0LVh0|2dX-dlk+Go0S*m)k*YIRVWXUgk%W9Ol< zv3YcsS>mm|nM0tpbTLXrRs==gRuiDHUi;B&+>6fig*)^lb6X9$^xy#;a!9*zkx4I+`!8?;z)}+XSY&0UL=AT_ilsS3Qa z>AZ6qymK48a~Ztz8ocum@06NAe`Ps_96`I2qow#lWl>YqmmLjWN-mD}>;FD&mLP8{ zqIGMGIH;Q(-YVV{x7idYvI5i+9ng?M;y*t>Ol~q7vJX8B6%Q3Zg)Abc>8l zPxIsDQtb*)P+P=lp`M;s6m=K`P#+I}7egxTqNhH|p3j(_lb#<4MvJiCcPt|!^vdIU zLr;qcp}dv{IBXTKEK(|q`*UBT7N;h%Y5bH<9J^(SjtKLQD^M^?yLaw{^5P))SHXKR zTX|PtXH`(U>_=3XRM!^N1RWEWQ08=-HUI@F&?9p2kk-iINv#0C`*vP)7Q9IxZa#wa zV#;$BO5^&$$fcMc7h~aByKyzGcCgA~sHgq;IBn`jAjq7x$)g1(3a*bU^*W%BCE5C@ z)8F_H2K`(avnG>ogFg)|q>Ldg_mwl0@lP*j$*(RW1yDv(BA6=~6|=Q;FAL7H(@OVR z8@}9Zt%C)eN=-4Xs)4F%#f}CBaYp$YX}2s#!D??c*lK@%aBOfZ0A}ata!F0tzDREZ_8T9~kZ<+JdNP;qwB($tNuloPCU7XMJXV;b7N^nDd49na28w;@l|5E!Ow^yIPME zAS+!a_gLi*CoCZZ(IXdz*#j-scddQ?(8{KDGnG&ahQ-JQSQL5@(^c3OM4z+p%WIbj zQ3*>cEg%e={pD_Jn5|kSADqC##%y-WO5cG0mXEK6!AUP&78eWSH}S;5^@k{R zeVh`l-Gu}HKLJ*3k3F*-OzW|%{|p|MVBdT_%wQJx!2bdJ);;lISK;>fL8(xTQHe|t zHh}#^L&JsJt=;Pn)#I;lfW_llPRtpjk*Bc7I(T&<{;Y$Aaaf7n@nJFkp-9-o^@r^E z)8QpH6#q~v?72EAB!&1PsW2Yz=JlvBbng$OYrIJa2*Tgw6W3<3?duOElUE2=Q^dJz&qLU2rr5muL~mQ}`;!W;#k$VH5uAd^PMb7}O;$lT ztoz+woFs#M!bYT9s>@f$+KYtfWESu!MUV8>ZNlh*6-}UTS{@v1n7q|~j8YBJ-n#?wPpFtALLSc8;VEeR=5?6B7WCV%) z@zy_KSJ(7LemT&R_1g$tZ%5ljf_-nz#Bhr|65Am`v(Xe&II}2Razf)wvWWtTKunhpGJ;7 zb{POhrkJa#N&8mk73)944@(I&xZ69A;;Cy-yF+e$)CI=KM=WrQ|417Vk0Xag9>wL# zL&MlK1~udI$RBl)bn7D7n=O(F63LIm!X0Obq#FN7D(uY?Nn%8QIjY7VXNDra0z>Z@ zxtuk6=s^(~4ltvioYXs=oXbkdM)b!oP{h7fyaMLU-$PzX`_->_kmeiUM+WwO#7|>c ztOt<0w9~zA*eE0Sr(NR0=8W0tTwR>M7o%qv#bhKY2U_0-V z`BGi z2oyb^6#dQ96+K_)>KoZy)rhOV7YpA!gR8^w-%EvWWN~#Q7dx3z$4vtK)YX^Xr7Xn$ zjCN_0?V{gsarwRV4W6~?_mCU^Ui;=S3{_(@2|YPN;JbuS=oJ6J8WFAU&D=)P@eml0 z%Nf>NlH>=wel_*R-6;_4ccq46OImaRopTWFTYAuVT-mDMe?pn4!@WtI9F$?pjovo!uY~yb*6I8!(fQYJ z9W*$|4dpoT?+;?(TW9d^Wc&|OVLxmnXCZ*M5Ct%oiuglf53jX#6XV}{_qBAa6dWtW zS`2L4D7L$W2-7Kt$>|q2ft^W1RGu?Lm;B9xY4SB>Dy=jW=Wkd`% zx+mjC(k+y(IA0<5zQftE`8a7J1q8B}lXiw*#e7+KxftV81Ha$rdb*B8K7vgVB933n zpNXqS;jt{YZ@u2Wwb=J*v;rm!b{AFw$-z|eb(zU?Q^^-)CVz=13%;?4tLp?8@pUsG z|8S|gaXcCki#W!p%r}e=Asl3r!s^Gg`(RK#_B-rSSC1SRRJ+v)bue*A9aFUfarH0z zRSZhnt=w;ww4Xczwv1tIT106vF^O*H!jnT=i41)J)2=XJzk?)yx!1PNira26&pGXY zCF!d=sRTnJ8$ikU$(;DOwQI1BCED*HlwoyJF=hS{kpUYiKfb|y$Q~jmp8`UX@h{3f zxW`gT>`43(lqc2O$JNi(gX+@UaX{DrVavhrLfHvwS~9U+U36Ui950K;qp$8yH0@8| zV#gb(LJ&l!Bpfu5u^p6x;tq6|L>RUwj`0c>=@l%Ri0Ik9{)+5#*qcenOf_Z0Tv zP9P2TBYuRN;&;}6$Q`cT1TV288FrXlFR0F54Si_kXY(mD|bS4Y8SbK2H zpmOE9ixr2*pqbhEDg_ zg; zcVi-9{hdj427D%Z9p1hbaSKoUki)8?zpo{-X3QD1Z;b<2bNryI(TcmjO#+deN@HPX ztyy>EO`ZCvShm9dj1@!+8&0OJ^&5j62?zc8~6sP`k0w2XoYw`Wyhi4G=ku zZL4SFsE+SKYd?qu*H(E=D7{befB}qIAz1tAxJ3RLlZuY^0wG!;w|lU^=YBF6*kM}Z zW#K$)+~2c$nm@j33ef6=DPfO+osPrTxU2*IfmM_Fq;{1J5t!sUBOC0%>36D(*0q!G z$$V$#WR9g7(&8eLa)KcPoC9FzILS&F7m|^Ppgc)P=PNb$Nk6cVNPvx==!5Q(U(9Yo$?=?jFOGcwOpf1v1CA}&(^=hPW z(?I87X|8 zpUK{{Z_UTzgvI)%zo+$2{AfaDk#!uQ)L6CsQbfiJ_s|6#;d15Ps>bI24H3eEzb4(* za;~9ObVwjm!R(z&Ko<(=O4eT)!TDgp-z8DOx!)aa;pUdSGF zG;TCK;_BZ(EvCP|4b)OWZ_lr^S0FK|ea7p+ z5(K)i%0nGEea@iKg&1$rhLOLV-i?vHd{j#D(UcOf>mk(Bzkvje{!GFQ0OT)5J`L(T z{z}WJ664VLVGtfB#gS~BSn~I`-7Y6x?Vc5`u=Xw$>DRE)KA~-==WPxQpUoIPv22N- z9Z@!PpgKbzXn#Ce@C9rO5wZ869G4XSXyIU3nN=BAgsy$9bJ&lmD0_=50$?@ERXux; z_&#XXb!Cad^P7707NKsO0U{AK+rvqh$6f2nK}fDnh{^aVMpxh>&_3<&4YJ%OSvobb zQVFFMj;6h@H>C3dN%~DE4eRCs?-Zkf^M$jbo_s#2Sv|Nbe}QJh)SNWU}1m z5%9AEkbrgUbO~Lh3>@hxtPf!U<`*rL;sRZXQ&i2GgEOVFshUUBdz9GzahX8~5 zu3jDk1O>68Q&^18cE$CG-XXS^!+uP?;U8)Z@BPF#r0_R|m%%)jt_Mfh?ON7`sLbS! zlgWt7h*}{ah&%7EdXk8n>s}wZmR!xAR+TFwF3Ct~Q*&cl=pgVwiCQP8YCXu_+GLaV zKF1rmfGDyw`-U2II=E}hdz9?kK(b@qEDS*Z7qFY%F}3YB>f~F{88)Lcen#Sb*8X@9 zc7P=CuXeQ|cnC?uQMdoLe4e+fyYNDW`{Hb!(_gZ7`L7XbfkI|y>LM@8o>Q9C-uZ|doCM>yOoFDDBL6eMZ{d!W#9Y}F<)Q%h}qV}Yz)b` zK;TdK!qo-8rU@}-W_faag7w9Rb1*vxw_71-QhH5v}CTk(Hs2X4%Wi2K!%oc#&P zDZf^vkQK5j1bj3KX97q7a3HTcQ6Zcaz(zjQ*)dos=7LVezY~IDO&|nf@46dO2%24B zix*|{XfEu3r|ssLIMom>w93u4+n?V>GJrPwjzAE=Z`49Uc5x<^R=`p$>|;yxcf?WC zP1Apl2>!LR<9o9x|4SJ<%~== z;B%c8CK#t*0(>Q-G;-Uf6GpEQ~A?vMHy@bg+f}Z z*{z1XARg(~f(>26jq5`%xzBlaikU2d@3pvT@x7J%=fr}ou>q*i!Ts1b+gjMEXV z+rX!M_6C;TX>4E+rhj zn{hl`h>4Gpt%!vu;zx22?gW^_idYi9ar-VQH+nyh6}_s8&&7(KOT;PWeNw$VItgLd zH!N(mJ5gRB{*8R;Z{*v~nNM~L;tip^kAxC|6`~#+w?LG?udM=aPV1QUgq7~>a#Nm< z!j=T(W@R8hmx&<#nV9&DNxI7*UG5Ws+GUBp2VgJM4NLewFpYO)iTww^h8+N>3s6;& zG8gx=Udtud6g-=VzT5mpnuUO~$vtT{x>Ib_83^uyG6y)OiUp|Bk;pxbmqo8;zz|o@ z14ue6kn>flro6xwbN+iGN3Z4*v)!DfZm{%Q#8TQc2e$gra(iqXehb>+wC>Iz-sam4 zX`nl3TojMQ76~T442D9&T;MU(o)9Diy_ytzdx*VmOLW&T{jiYXozZ;S)OT7w^KyOH zRb7f+21Fj(K%kG6*hN4a2r%I{nO-D>?OW!Px=V(-KSB*Kb)FPn9-rFQOgeu%bbhw( z8H`L%!~YfS4;}x1p#80(wC3v`tf}?$&Z71B0U=|aa~9vgY%r;R8+K3`>JM+^w_q9i z^lp3=S>KBlP4U0mKE?ND%yt_eXA14lk9B-+wg5T9%IRFvb--h=I!V{SI_#UVvl1H5 zy@S{Trnlha?*zbZg~rgzP9AfQApI=>+qnUBXT{z{ zciTYf$mMWC4-X3rM-D zi{;SoA7I%qR%#(tYHQ+Zv>l&rTIchpCe7;=F80u!S%HEkOTUGi7yyQ>e8GE z@K`OMF@eIaL|_6JX;QmU(xon%Xzc|f9DekxJ?7JGB6G` zKygxsPeBpu*zbJ3JdAJno#T%e_V{{yf3`p0=X>+N&A$Z42?|LgVtgb=?zP0q zAE6Dt-k9?rt$+3(Yn6P*taOQmh)<^~{)TW-MxtsQt3ZDxdxF?{&eD?VI%}prGP4+K){9LBRZR+6I2!0P1$d(_Fa*od-;>PO&0KQhs} z56n-mJDFVop9hz#(D}h}rbg*3p6l^X=VIN!0}f%)uIohm_eknu`TyuUMfRE;Idnxs zy*7jI#-!DjE0E&ByiI;Xls~cf`_K=b)^}1H4XE2G;KUcBzC!&0H_#Px{*(~0w`zU6 z*gIMomOc1{Co;q;1PsCn|EH~c(>M%*>Gvi_3-~QzKYjvw6SD>EFLmN)|LAeMeQRji z-Fpf!msKhfY{O=1f-?ta`g|6p{xE*q_yLK2{H*u@_Rtk8Hsy zI@S8N+?L3(cU?z;qf-`p=hb+iMIHPW>;fRcHcr0brWYG-dhMM*#JVwCFoB=zYaGXl z*gm<vMG62k}>oh>F z(e5AR0jhh_0V>Pu6re(}%y{zEso>(Jr$?ot>6kL2R^(cH&K+&BZ@G(fNFP0EgOxrH zzg3@yn|}3Qn}<)S)2gwD5n|c#J!}J+!hWQOJRU~P_RcFnIylZk4%Rlx#E028S^YuQ zcw7;0#7>a5!}cw-Gs6$o$2#%ALK5rYoTncjoWjr(wu=#_n9CZ+W40Zvae^&z+J9@i zwQI0-PVL=;#CTTkux=sV*TyQeAT|cY>fgtYnqX=#Vu@GYhU;)~5f$WO#BS}ug7_iJ z(73XII#RAUZUHTzkAw-tY+em!$Q1`gB4{(MI1c{`UCkxq-|&zj8IOP3W=n|#W)uk! za88kEn@`?Rd0G_Cmp@o?F z(Uv#fUsz$|{e^!0Chs)rt&%HPqh{Y)a)lL~9cS}#>C!3m*F)&9ub-vA66h}*^%vAU zSWA7j4BN5gZTRsk{4fVOoi=L^v6^dMf@Sp?Vqg`ANgp?_%|NFLQa@qe`d!lyB)K7Y{r?q1upF1pL+LXO!IRmBpo!LY|GFXI zAbfrI|IiTJri<741my5TFJ=7Fez9X6Hv~V)Gz7Cb=X67GoH-vR{jPYQ*_we3fOvLH`2S335x)J@PO~VWR|ez8%Vfw|Rdu8b9#!ElXJ2`^Ae8hq9&^6O+9udKSP^GK*PhlJ@TQN3I7WnDGqwJhdJpj?s~zFN`a~_8S=$iS zPI6O1d-x%-uo!QXc=d`p!L3`kU><}!nG(qwGOHB_<%;(KqzjjQ^S_bzTQP3!H6`<5 zN;pk2ckX=I?Xd{jntRZ)&0Y_l>EiR(yajlQiN67P0`9=asf?KWFZ5CyTbGfb0|3rx zKdDFg&QkK5;p8}A7-)x(7p9!PU6b{1C)7lE1qN8CFYH#k<)ql!N_*AFWyD5*`b`oi zJ95=gwe#7051R5xqPjExs-tkZtwRUm){|!X2+}=Q9kr_16J>xREQmy}1(VgQj;52J z^%j8z$jOu6_>2FI1M${>0$V7J+&wIoTtkkn{rTP2y|INCTG$aQ{Pz?A)c$@djBKAgGuaEb7CF$=(@2mTLew;h<_fh9q&BA$i=19`@FcUV(c zl=a)F%S@mBWg&ot;H}@m9%0%X?7&-?{h7MZiATC_kx&1EY(Ee=8?cKff%xL=Hu$(G4!;+9`P zQWsAk@}IZ^QT^kIJC3WRh@I0+h+a!+&Z6GjO$E2{f{VxTL?yeaB-RGT5_gQz3c($t zYU!9BbyrJA^;o=m^Fbl$itql69yX5{(~IIH*Vs9>ZbUU%pr#z{2^OIoO4p>PZbhZ z5;wpZAz{hnOh#p3j0hs9THpOEoGHax1LsUeL1Iis$!yMmOQp0Pk>*ThNiZg(g{3uiuo5{Y06I5X@avb&N*IQTM+_`>(nkN_c`*0o0!=;vmkCFL7M1i>U#9KbbG zYWV<;c+My7fjPzLQcMN$Bm$P^bPzhc(Pd5^&eLg-IpS#^@sx+jQ6|M%UFJ%$;!=E#0~G%#2DT2OKekh;Y@VJeZSe&5TB>ms_W%7s zb^C!sFe@mFL@J%lS4dwem$(#PskFpPJN44oQtRu3t>P#oLUGu)3nvPGFoi7Y@32>t z_GdbK_wS?ONPjkFv-tfZA+c->A6SM$RZu82a+!uk^+NE7G+n`#9max8FC^o@5p269 z1(--I1Eo+PXeGM*IP!a-y5tPyH-2E4&>biGJVY6=02cLv7#C;S#X8fF1j?u&nC8)$27LMQ za3HbFEo%Y)b~Ugx5m>1P7A69BQU&UwmBc)H2J@B@^A@UsU}9N74FnSS1>it&B2c9U zsuIhJc~y&odR<5>Pb@3a>k8;~6{~^j#Ih3l4B)do5ukk3QB8G}>vfb+9Yyx<$KVp~ zH!iN^@s092L=9+vSOxBML}W(a<*Y0?%x+zVAG#XE#DJBpRN9Us$`L`p>Nn)Z;EbEE z$6wacHU+uER-oL>#f>YJ61@(JXPAv9H_Vr?P1H ze2nBNUf_k$P8elZ?_~AxrpIH|KRn3l569e(AjH-ab8cX9U&XjmKPGp3z@aOMLzBQE zB|2)~JPD2`d)HS#fk`2@>>}P)|GtW!E~^+zEEln+`*(Or%o9naCMT>=9W-FOTI%Ej z;L;mKRu2Y&4(9=~gqNsgw#0IDl$2O5(epeTsqQ=}Q3iFDph4Rq$@4`t;dWbM3al=k zPeWAt&H3OeZpC67}{hl=p|a&(O=vD~H3 zb0@H%0~N>XJg7OT==_89ahOWF=>;XJmv48eW!}VcbiOCC+@sF(Cd#-W!RtJ3E>LJU zm3*5@dg%ov-=>m~j{L;(e6=huu{=+mm!Bx(h6=Cq^2jKmP&a*Sqmudbf|A>)WS&}9 zlvrM*mK7wH7pU`!5@khDNP3-Dpe`z)LNCzAi&V0RUQqHyDhaVGNh~i>%Zd}ri`980 ziLw%P5r3UmtS%z^F#i|y@wD6>KztDsqXWZoPhkCU2UI}rUZ&nYA@>I4{(yfVG2f#O zBC42}?!LtIZwoRF84a*e)J6N!I(O4 zEKxSbeTV`QjUp}@w;w0HDJ|k+0q+*FyL^HacsW<#d3+F_H=Zbi-5n=Y;ez3%c0Y%jLD-^MdW*#ha)MEv9=+)aQ6C<{hIY%fX!pymW2A49`eI6_oht2N6O zQWiM7Ktr*Za|%tmVRk}h{!E^)vHG!?7+?b{aD8DtLBvxSj#2Fk-j}xpUZ&}u9RJJE zN&kR-%TxU2b7jF8e%wsoWxwDxiq%$G_I{=;=w<^-y*BijQh$(7CHH=a69DyZw>QSB za*PDbwLevr1p~1vD@^#_aS%!G+hVsR6|ic-+e-aTrD8Xjgp+F(yIK8C5I0bZ>9@xD z(!lw$&4Q2+g2DG3v_w_;o-qrn=(cxJ7>`xFMuf*d^T+Km+Po7BT75(nVt+WLSC8J1 zVz(ssCfRnr1hp5NqlQi@3to%e@_CBH<8mC-90YAj;~4rH%woA{ZH)Okz{W;He>e&uGo8FM^ zFjm{^C;Z!2-NM=7KoAE7q}w50{Q( zrVdw7*5EO^V~gRVkHQ%F6Yz0vJFNC3ZleQXgZNUnBLVIaP2w<`m%F{rt3DApv!B3lqK zbNCia#1{TUQlR|R7B}sWR4o8WRJkyfQUfLO5l3SFgkgdE9I)|Vb_KlI;>3J6O2JDA zl)!$1(m}OO!z=nBtYOep0|kls@JKPLIH?_Ya}qS(sri5&C1{r#9;Hzg4laguc;xeK z1dTTeQ_wpqC1`Sb;Od0OFp{eQ@~+4O=0iKZi3E*zNr$FT1H7Q{ag6nLIggu^1TOMd zN)bkW!3ZNGLa5Ybyz@DWwcEeG0~QBo%Gc8gre6R0PUCeEy`FY`0_KxmS{*K+-+~#V z$#+pqti|t%+qahIAx_NT>2Kq#<)qFS_`Yv1xF3Z%|IZQbmuq~(B! z7s_5#b63|1`{u_0V1H?IRV{u0_JDos3xw7F`~j5D_kDmhc{l#?dl^`brqykrFaGNb z(+Iv{V_*Cl0M13+t34OgxcEXnt)6;}i9rCkE+@gaJOom9AhRq*Y_ zp-+7iRjmByQq27$Zhx&2Z}GVnr;!DR+T>k(u7DYg%J z&1p6La>rN$o&3IEdHp!T$ja+u_%ser@Pj^B{`w`Z+NNcnpQB^>k@Who_91?I2xA!~ zKaFHMSY_{$>B-pNf9YJlr-yIvAF0*myhS*owAp{8JYxy3~3 z&rYqHD6iAD<7f=j+dIib8Y}g9fB7nqVxD9$lG%o5pdr3Dw5_k<<_X-#q&I;U_WJxh zukCecCT668*c0Jr0jpR#`~vn#zfML1js6&oSYZh>P5TH>@DfI*ve!G1hl9o+laoT= z*LHmz{W5gJ$=>t*m@?y^I|ax)z5h3R z?*blGbv0n0Nd^cIoB;wvh&bw?(L@aQKTprYOP;-@K@_Iy$6 z<;zWTh;nTCHF7bqJ5rGys7gNR2=Dy^j9yN=T3Y1U*RvK>YqKAR=xQ!`7Ui%+oq-_%9$=z z;(ssG&cpvsrhDr*{Ab&mWy-vN?`=(TA^9O?XJKr=>2Y{6V_v0}XCJA2yy% z^0XNJ=MDQasL|9{mt)s7!5!^*I)18S*FcGn%Fk5ktWD?08>IThJ*V$AmBOC5YcPq% ziK-u(_>M>S5ezIt98cVzBeCLGrvCov&l?Y|>x=f-bM&i`qBbVI7>U@|#J%WwF%UBZ zRkN7>sPD?6He`4gqlxEq?20?k5N}et>(-N|sdCk|C!kG%g;lJ{(`D=&RBa3Qn*eqg({~{ft*ab`u=O>;u z1e*s7{UWF~7l}O*L>IUHh&JThK!bZTF|q@j-CGesbBy24rX@cyOH`B^57idxa-J)Y z&qXcW`mk~)r+$x0O!E$ss$hNiuFz*O>MOI^!Vfxj^>1x>q)YCRq(z_PK{T(h*wtb4 z{a0dV-MR=3`4#2ZxEC+h!xCRgJd~1$m6bJSR$?(eiCLP!QwhjdE*^61iscr?DBq3s zdrZOVO*qgHsmi7`ee(=SpdI!vsm@!Jf}l1~yYHq8`dDP!6yv zjyL@U_HyNLWSZ40#OhN;F*TkI{RsV$dn8ZcdyzkGI7gSWd84?9=s}*FQhD>`pnxVf z78F{~267_zz8@C%CMjDhzJXa%xCw1@&c1!TZSKdPwDftKRnN2E9>&|ZBY10D`fyH(r!Jvp5XrizkwSC(m!TYqi2X;iY*#~wEGCz3}Hx=)~ zqcH>9=GZ0avu3<0_M=nm!I(?W5_9U=U`*cnv@OMsh@@zjm8UroL>*$qjQF;quiw!r z5p9=tjAZL?N<_zCNwlB&Zu&@cwRwC-Hjml&`qn8&<5{!WxKrr5*5y(R(rlcd#Al-mohnov6@HRTdBH%A4&ai>|(5x?oOJ^wM5~@!+#@=RK!Tp>A<|u zar317e|4&XXmGGOB&a|>$2ioYv~y-K#?;gqVw)Obc5CTXBeISq9XHr9wLZp9U53crYFVq{Q`)mpjC|!< ztNps&tq;_PQvuT5k=#N}|Hmq5VDoetlk@$8;bz6IzJ;62d)XhVKN+pAR>{>LK1E%U zn`s$oaz=0sG1a|}^>t+27ok5X)Blbkp85vsTju|0o_5yXZdWoJ8KrFRI<}-r+~wA{8z{KI`HGr{jeswJCvzck+$8P>k-Y z(`RY=kwDVMqkZYYj$SC{qYl_Tuh+aUU5q64jFnV;&2!SpXubjFM30KG-*aYNnBGdr zqyqiO;NdwE>42|;V$YilWO%^4VTRPA?M9ztFt5-}Q+X?5)NA1-pP`X3T z0x)*Zzu{k`9`Hh3{ip0nxboCIBwqxu_g4LJIZp3+e%)xRJT`5+Qdyta^;!7ab)R)s z^~EU3^EK^cKU(u%9LVeR{Apcu{kq^9REDfUWv~XN6xcn_`@-uFb$S-XuKqiT!S*O& zyQA?6>4Y<48J`4h9LXL+JsMNm?@3wvLz)~x_(<>T3B!z6JIX0i2&`LR#_N!Gkz?2O zj$L7KXE5W{uErS$m^OJcyPU5Hb-uRCc|@plv~nI0_o?@S#!hvXWPLxVq$wV1JmhG+ z77>+vqutSXIWP2oQQoMOfYciA@K2`o;oQ~*xOWUt?+v0PIn$D6_a3xr)~A9P&PHZO_1){ zb;07+3@?1r6mOMuQ|Cc)7~5`)#sjNAVk=dO679Wv3CWvNe@gWJ!$m5r=Yqrej$P9S z=}Jl3oNUqCE{w3(jy3h2>T8#Xp~ZZsZvTO49muikra`*Wgfw-mWsPa!V0+E0Dkv7# zxl=<~5t5kw^_wg!K~zF94CaiM5wjvsk+oS)71b-XSo))1Lu36@YA8^Og^ASfk(Ch(g&F}(3Ops!NqJwcPp=ChVTA4oNxr|H zpKkGm(T+LPITUzGmhGREnWMrmPM>}z1jFS$Fhuv{Z2#_3Z58S3`(u4=jD}qT?;vFo zXPBFMhPoqbDM7(v)kmdIhpFFT#!?YJ!ezP6Q0gV&7w^w0IfLX$JeHGZe18g*wM2S8 z$1ZR`f94V{pw{=w#Nqf^f97(3W|<%RD~rAU#V-GkHcOc-j`1&!YTbB02&hDz>Rgma z$@<-Dc;oG-*U8vqKP!G+R3VVX2E1LLWA|s<^}&88=L-DUTwvhzXGe04f$nbrH@kh= zPX7!}nlnz&r+8bZcyUEl5PQfQrbGzMNY@ei9PFHJ*e9PDM6L~I^Ha1)aBC8po0??c=5La&f-ve=7Dc;JFn&>nFQS>o1tfZ2e(lA9 z#z%Nl>)WkDrWi`8Z;tY)05vD|MhPgJeh6Gg;1;R?WW?gIuB*d}++S~mqv|UI?^wr{ zX%dFsWcP(&3*2Ul+bf4<@r$lM&{=o=O^(KJLWD@@|F`6`>YR|zEaGCejxlEAw`nD0 zN0u_9!)3W3)^o%Ws1;W-;Mg^9;K)GM$Winvfl?e1$1erGJ*qa^I!{DQrlJueVOcmT z12zA^^3hA(^Krq|MuEnq?<9Dl0+lxZ<5EmKGk`|puj)}u0cM>9TSpVWq#3y&S652mq22Rtl*3MupVt@V9k`1lqQp#NByt4Z3o-;S!Z0*M1 zSa^ao6%?On*)fb}QEr8n@2_zAZ;EZ5uEdvd0ZJWey_+r_{x9-}sW>@#3_7E-1FVn* zycjThU5y{@(z-+&UC;M2=lJY0-((iUS9^`!yTEd$)Bi*RM0rP~tgiG8VGi|^P-kB| zq$a@Q>8`~$$33%1rBnZz%QqwC3E`G6&BRp}8p#{IHHd6ps5{6w(%`?Y2eN!)=Vz*9 zlITeM`Cfm*;+xHl2a^xX0HksXx8~%{%{P{kDb8NEI8*ZNwK1Yp8~AP|l;{hZ!{72> zD2r5Rhv(bTNN3T2QDh&sSuy1=*$_M5@qv3K_+omD>8`FUss2s&p1iE(1r6c#iOY1$ zyI5%yi-2*NOcd$tkpJxGsx2>BLd$nF-YareS%kYpEKEhVn&!~jeYkImFs(L9mBc>d zrQkCitX>-vQC;CPB)k~pb2LumRS`6RA(WHi(>h#c5<-?`l~0icO;AR47banc{%@YV zc*h-f;;YSIU7c6$wm&JR9G^8!KlV1|xVUoS9Wqe&^Nyji$Zsy-hynGDydvA(Sn*{sN=#0Q z=)cCX>#)4P=-Ab)+~{g4e-gch>+HjsU$BB2$({~EIMLuCHuZlkvRvFRL{s$r=)`|1 z*FT!BHIXB+;fnYPaYfUo{?k$VnX2DO;@2gr$OM}5BJ-FI8#d#h%NKBMB@m+%Yo&TSA> zN2X)-UoH?3{8~n66kJ0o5%`1tD0N&sUOHv868E^x419j{KjR^vNcEo^rObvM-*lbv)8Ll;0-5bUrjX$L7y+p z=lyS}qE#8Re;sT^+w-luUzT<{0S{)Nqn3)G-dPED*}f8gDVM zh+PVsx1ZJ86b2#o8VrS|MhKd#<_MPLImQ>`yRckjVwnS))Gs4Z@mXER6mcz6y&8K0 z?Us8q_SSr;ucHfa1m-zMNqxD1lHC7$yg!EkW`% zCI^pogl%g3WIvNyryzQ22ft{V8GU~Q83%u7d+9GnI_myzyYyw|vYu8);P0eNUgHy3 zf|nBBv~9MmkTq?yC-5-)Qp|?BSV*Em3}t{-8%u#yEwDJ>k=-pMX(OiD)DFycy2zK{ zB~H-N>X=}h7-jucNiY?`L?PBsDOceGqczHMR5L~#PPcj59h+a5H6VCKzl^mu>SaTe zTr;R=ZCq2o?+e^&ZVl?U)a{89(rv!!yp2_Fm$B_AQq;q;qN;ge#`s?a+sB3$slWU6 zjdcVux9Q`~?ClJby(x@yvOTYS_&g}4!#}gFdq8h6(PTR@^TwP*Gye9=ka@j@F?9Z< z8s1Q8n&#jDqs3RFS|D9alJP4dw{8rMK+L6ITetZ`;|K4Bm~*86!Eh>TY6@j^50qjD znLZ3A?yr9;UPd&I#tdPTltwNFVx=qds!k+Q@m%b+20M_<_(`%oRu##RfOU+_B;BYE z*UOXiXN>+3NMmwYmtY?-&WKqj(cJJ2Z_V_&NvL(Bq$icV{UD!A1|L*m>}pv}Z}a5` z%SQ>SCw7355sl`Jq$1RRl zh`ql>0e1z+o@OUdZib9D4*vp^t*sAHU(OiKJY>1*Q{Pao zlEI-x6!*@~HWz3;KU7(cVV-ukrLQk_{rLdTEZuN*(B0Um0;Z09n- za~hu*R&u_fi*NSdAyZ8M9Wvbv4xMB*R$YuYCx@Za740EIr%M7!55O(W96jagrOo00 z@Lw4+d|DKUjP`$5a58p^L0bJ-Fn159r1Ov1&?DS=Z1Z9r-r_dP4{Y< zkDRV)!P5Mq?zyuhvf-pCg`jlwn0qHLNYhX9pLX#ki{p+hcS(KUth_8Mayc?SQiBLu zO-DcC?Iv_d9Y0h-hS=H0akdfzk=M%F#q+gtiD5L7;t>KcpMJ@)MQSukd*E^DviIzA zJk@aHe3VNX&Fe`V4Pq&g1Dy<S-RZ&mM3g4d{o2O9MRl(dKOZCCRdCX1Wd~z+Zx2nQnOs)z? zE5fA~BB5 zIxT~X%olBFk%HTQ&hnE{E}>cEoIs_L%XcI@mW`KaF~8I?B)FeomLJ@3nq|mXU$$k~ zI;4PNjVN*w{=O9DKU7ghA+1$W${=scTx31#?NkR>5T9%^>}tr6@~l7JxBg6DN8=kL zu8PyK`8&LJ73nVnSwqd@9BL2BGtvK*@?`C-t2|rmN7Gv(|wuq9HJ za*LB!PN-1IEm6F3JV#zBdmz0fMznnwwwPt#LfN;tYJMnP^&L{P=>r3iPO5>_eXG>< zs9yylH+9j&!jTPpY^B&els}l#TU>IoRWSW`dm3o!&tO*N{$M6+a?hE;UiGzC{-nN= zA<0x|PN=UWNTM~ZLi5YQy|1QO=@X~7^r){yJ=repNfbdF@9ZKn`c5I>oA^e>!m z&88*7GZ2INy=r0G;{Wp&_RpGqvP7aRZHe8!C`RBc)}(nF%=RUM4S&bxzhML;q>Xh6 zV_xQ{)y5cQS1Q``FYm3`@>;*7{$G99-z>7gvE_9Lrk~@?swh@OV|UAjIN|5$19RsXD-jnW4_cyRcl~tD5m{wfu;249{e_w^{W%%z*3O`d z6ve36I5CVQGf21I-Z7wi{Z5aPBwYGvL~lZP^W5+@<8k^3`cu=Wpc`{zB9%SwBlo<} z!#W4^|6^VHXOTPd!k-o8f#GpfoM#{>((``J36qvkZom)43Asi!0(FCYqlS?O2MwW4 zBAsF#3zJV+)sbc9eA#)6&I7SX{ke1%bBsq+M;}uVyqN`-*y+O+m$^Chl;^d4{it_( z{byn8$Jc++cl}uDL0%Ice`c;9GVBp-x!H5_a*Tfn`{3RCHs8BKEu*UasNY8DqBG;{ z=qu}S`kBV}=-A9+a+`I_GMfY|qm)F?l9Hidz>KM`2qe1us{g#covzspo*2)E>tfl3h{+Lu#C()prl1XPwgrjqVzS!a#LAm*B)pT|%LsFj zmp|9opjhWD*e@IGk>--s3N6R@^b;up*bn2cB36w4yyMXqJO^w0eE+nR4f9-`BY;#+ zih|LM-^4=++|1<&)Tr;D=1hA|ZsIZBpcSrH>v4HO`L2dV`V%soi8~dD9PN3o#;*S} z?jsVr2%IrWN5B=hH-VmqE!pXILzGtPTVzco#`c5^eS{uT=Vq}t19s81i}6MWWI!wx z$OH94d$ZT>d9!BgVup&L7T&DI{$mhUY7(Y@4MkG#gd(ojH3@+Kj5hyOl0Okc1!iAc6e`VW~{ey>8d{Pk#aLWAt0?sBC-wK_!c)-*s`Ki~OOa zPZ0edY?^KlHWag*S3B$BWXeYa%$TBxX{bYFxMF6ctwV z)jCmjs97DDb=EQjVP4l2s85pNqv(=7saRZcHvF@r>3`Jp*rTIOC+oY!esr{h7Gdz~(2Ve7W|ZJH;!5kxAgJ=mr=z z--#ZPQ3+UgAtMcU-1~^KX8jAA0Z6ebild7WGaD6~N68EV?h!NIrdYx(`BUMnH=YvW zY7(mWa506cDv4Mxj`n=YSzu}z*y7C=gvv^5@U5#Y$qTZD7*3{dLiu!i;(I8TGQ@__ zQJ8L{y{ABnW6P_s8>?`g`j1uFs3AM(V*`)5_ zK)+WN08%;7pemgn^;>m=cXW6&|BlQx{xAlqDndTeL&TcrW$?wDYu(r&3K43NJB2yi zX+)%hB8>f^(OflumS{FbSa=6Iim_zF=^Y)Qc_Ui$jStnLwbbGP;%nZfNfYPZa1o0Z zS2mnnVwd$MR*__@oi_greP9w0Z=CvpIw8 z3I|daRif0OG#gC4N5Q#&hu!zzJ8Zr;>;EX2ZN69P{wS&vqkYd};l)V2kEu;nadwBLfWF%ra*X@#|Yo;bDM zD_RK6nDoi8`z#L+9^BelJ770C(c0rB+}nhcKE|xD);0Q?zdF<#+Wz`5&+2&H43sRqQu~f;5xcK`T4|Mt6 zWxh3~yC)lWsBrV#ldZK$D~2uCpJ_K%;HjUfZ%JTDSQcvs3gdHegt&(0rpyuEA>90p zMasc<@8OPA-eev%{N5@8Bw&%m^H5=^{>cqov0nvOyNlSM@*?;J8Lu;H?VOV zWbG7i#kCrZ6j*ky@ec}}RW-alvqgBh9pB9c1-+azJN&bpd?WV~z8D3uK6?_ zmbzci(I68@A?+YXS5V|})r|LKIBU^Qa+>5hA&)mo2OesPEWfc;|8C>7!k zwl9@QH9O8Jv+cFf7}MNjzmOX)`*G7HTHH*+MNy~&J#MbS^s5^seWNV(a`;)WQ7R>y zLym^>2-c(uxx#QJ?$a&z2uDL6?)pZ#tU{zQrE+_BoQb{t1RujivCY`!1q%Z9y)bH( z#i;zbEYA(2JnA{4Op|@8UoZvooW+#_$UF@q_BDb`ksOG++jR4*%S??O_&~P0?a|Ae z#BRQ}rk#Zuo%uP&-*m-8#ng%BZJAdjsiZqI8t2hFkQAQ z7cTD1HGH_(ZIo|QW|UE)(7EbrhuNAkhx?-Rz9i1r-nB&~r`6wbNl(R?|3Pd%3Q z=-48iyBWq|Ub(49ZlICHvX_q#g52wsc3f?izF79%W5u%YOQ%2L)vYh)Oi5I>^x)u2 z(1){znE*j(jkaY*hQCfuj>g<2@m_X3`X|rzG)t1DY0BiC3wMcE(;!!z9a4qZ7s3x@ z4h!qJNzaS6GE-GA!b1*jWJcFs8Ju5p_ue!;PmY%+fJss{la$LHJ( zcVyDYilsWps6+pwpa^HyyP{A1vz@s_jyE197BLb(K~DEub(PG2rE=egb5r^Ra?p&g zXFrqJHpi|JLi2|;a)#Hhk6AJZjn%9=3NGNd4Dq_ydAS}I}uR*4ruJTjLgdN)rWku3Uc z9@Tw10)mP9^DuQ< zg{-|I@LffMKDgMwtwHz&s)kKG35_)kj|xVmR?m{=YPnWe&KF7j!0KQN_u{egh>nAa zZ{*fZ+f?+XZT;lbwxnsI_?uD$O!=`o1CVGs$+A(CG&k^skYaRfCRZ?f z6CRs5qSrK|vq@?EG>1uk6atA@^NjwqAoFlUorwj%(t0S9*f5$Abf5Lc;3mK;l+aFP2(X?nYIp=v zKhmfYuNK5$U2UY+lsRbCbk%;sbFVvQGK()s?uEDaS^=&>NzUrt06k$Qc-_ z=Dh1x{aLFK&|s1q_c|Je5M0JXfz+2FJiOER15*a}R_RY1Y=Ln;Z-kVa5@qX#w|_($ zs-GR0X!frU-(TqKWb|D;SQ zH1##cn{UPb%rN6BdGDLcyWJQq@50``#!z0Llwm>+pZyFwpNui>^so_6*TK^Kf z#+@Rsu19Sx(>x;<;W<@gFAA4WgzNV4)~$bC9U!E2*>6> zexYhN?QyoK{F)8YvH2dHDV9OH8pc~TVCRLYV||p<-)hW$m17;BsF1S<>37SR-Lg8J zHP|jA6J?To|8VKGd!mxjX-$}2&K)o_Kr?t<*Lo?0^u!f2nDMNWUhz4jl4R@mQZ|jQ-n%h(+5kx?yT8tHPq-Z zX|19q;89HvPdd7X8I-Ax&bW;!5S|>`?$Js`wb^*}c4?*Z>TeXaWwVu@HQyKx1zTsQ z{arR|0x*3(I951rNTTRP6$xCzGL)|#s0pl){s_Wr`~DAt;3JQ+_}d02*p6I ziFT4h(uNC(^dsF%d8?y(F7WNBpZ(0U31E*-3z5s);n=gww0l8#x)8L77ur|M2 zoS(QrDq3r}=V;A69es*hX-(26UC~8iQ8u zC&G5(Y>bU8A%cZ;k-g^Sj!Wn~GVHY@6Azi|!+G`t>4U?}{vzCyVXt`)^xCStCr{HM z2DqN&E#b(|zpEOa@qqbk>Sx@=oAgR8(M{7G9yar&um0$BaXjL=TjZ}Ja6)~~mPQw_ zdr)n8OgCkGbgZg1s{B>08Ah`(YmEoI7Vl-Pp;1&yYD)u;|Ar^)ds1T2LIiRm^9y5; z`AP{HVe%Rwaw5$5M2)On#VMnkGCLiOD~Ma1vY1_{B|?`FC`mg4bNGe0`U8DEf0Tr3 zwu}COM3(y$8Nn{H`yUWh3C6Ij`mhD?_)fm`yBo-^HO?HcR>qli-EJ@bof`S^8Y%&e z5W?Dd^=GE5bnKpW_L^qBv5xqx)Umj6GecLiN;jzOD`mTW&I+3`wcFzlgw`7+P5o|( z8Axs9mxZ+#-%oj5b#=LG{24V|_ZN`fOjq5XwLT$tF{q0eJO^a6p?+_)D2f?@Oq=7; z47*J7JZJnFk<8Y_2>lZ6K%=OX+gPm5D8WKaV4G52_vDtX8mPp)NbnAKu95h<(2c=j ze@2pJzrk89*)2Um$dVW9jOwtjT1we)@(k#6a+S(Er!>;tkt}XJ&x(rP;C4~pk#*d- zIzo@&pmDva%%9~hLAI0uUY6nP(#33ZOHae#1KYA!%|Uw9`0sbukuDFh;nvE|80k=j z#TIoe;9~hN9u!FjX#FDKsxG3myGe-M5|!H-LnlFu07W$?0dl`<`T zKkL0S~Ph-c8Y4XR)7oBYBr`72jP#xuY?aLZ@ePa>LA5=AH_XZtVQMm1jre7~-^t z^CPQ2aafIv^?bG}Lfy~o>~IKQ@srFmlvTr9W0}mAk9Bjg_99cB9x$$yb*ux%K3Vb* zF{0XAVzY%)vBW7)K73xq+CP zhlG0eb{C?be2>Vq@Haagex(RzJk+XkE+w0+IT{8cjVZ*2aGooql_kx|Gxi-5Zbim@ zZc`R_%vLRxqN^^-i`Y{=(OiGh%jUo-Q$urrQbKEA$lR#DHcRu3$TJ=~D!5QzV#U)< zzS<|_sn5pDPMV&Vs-qT_huNk>JBcBRi=sDH{!4Mq$-FTlDbdgcs9 zwhMVJp;XJN=xsXvY-zHiS3O$KMfEIsu8gcG66t#DTbS`!7PmYvQ?g0ISV#Rf8f8bH ztyJlSlp598i=80cU`Y*2EZ>(l`-ANcTKC)4eK)i&ImJQb&-B;TdPp+s2+2X6D=^f= z9r?0*+`+d#MY)M#cWCIh4zc6%W{lhT?jR**QjgZSCpw-;cTXIoMXI_XijvFeA&!>0 zli#L%D8OWHdi>Om!*w+mz4(6knfgy7*m8Nh1N-vTed9iV@%;{a+}kg9guhMA(f5;N zlJVFEDN1^r1I9036fUsh=xEqa)@dc_!knMJVwH)b;SrokHJyP{89dGM$vJ`qQQ-Wn`9z+r4dHXfoZ9@#T&(cwTjRy zH%N8&M9_{pb2e#*g-kVksNS z-QAxgP6qo*we~ydj3SJK&(Ill_k}&$zq#@2w6s6-I$zhX7ERj~VJk3B-q!glE>yxZ zIeBrPcfJa(Y0#ev?&SRJIdk(2G0j}xk|bM`W-$@Oo>wv-y*|!HxWFVk_YrKSPs<6a zn4T|@U;=ZvR6fs$vr<^ZRo5Vw{lC7g8ks}|3uQ^Gyio}gx5i_>0o@rzm1B?Uo>iAz zB{I`29R0OGWcXaFa{^U4nP(C_Pi3HyrWsGZBRN9Uc^66@XV4HOMT1VG6qPrmsMf5X zNHp)4iwc!gS8&h}EUAz8eyOBnph7bJ8BeHshEYW-{iqfR*qwK5hLg?<<2{rcqHPRm@N^r8f4LGy)e?fVSd4f@C z%)+=a#&&8`%Hk!C#^1o*?n9i5ZZ6nO5?yF>b2w_A^p>zmRzY%^Q`w+IZcV1&MJ<}n z_;v6*Yh8$CZsD7pElQR&l^CVNEqf=|>1`5Nj_Gs2eHz5d`SrKow2=B9CZDl{h+5>o z5X~i(p-FP6G^bOvl8t}vBV;XyP5V-taOgo}D9gYjGOicT<{B-?4q=+}OH5Uh(;#xiy!fwS-frsRzr{QlDHmb4 zYD;L({uy@vj0pdXo(3`CEs7mdE6q@?X|l$nNyzNTeGv$e4=7wpeB_EwBmx(&uuj7Y z%`mQRakk2mHb<^PBz#wRC%r)Du=w7g^eIw(`sp(x=X4%fKz||UcWrvMz4N6NTIaB6 zRm0f#*k{*NH3;Hs?JIdWKNYADA@4rOD{+0!+AHs!!=e;UtSzuyvDkO%Pv%P=20g-W zc1a0H=NPYFBISxL`p#j?aSq82`rl^$&!7G$^n6&q$}?VoB~)qjm&nA?bnKXLxr9-T zEBRHcfeb+!`s}`y^H{_Ct7pkhK01e`lK9Vd@LE4fel_of0lOP6Cgc8gy!-8|CD>b^ zN}t*}EFDMkWOpC4yVv!7qfY`^d1Fu=zv3TkLnH+Wk!^#T@L;SHDPx^TbF5=`9|dWu zTPG0)HxQ5pPKoUqbQ~o?U)V?c+h3!I4|k49fQg-BlGJaq`kldV&ZdR#h)?#1!6mOd zzhr4Yn=?>*wsXRYNE!=Lm!m4)e)+~9kvDI{4E$ zEE1&pDVm{^m&Q*PEclsL0Z-1BLrtH==CsB8>o3=g79?-U6uZr7?BK1{?p_kk`~AEx zP>1{|iCh$Ep7C9fa`hfqRy(0{kUTk5q!0R-JnH?qmdQWp6lfidhe>()PonwN*Vy%o z-1z4{bq24F=)~ss8yJXsTD>Dm42JL~htOup>wKBP^xrzd6W`1D$;X6kY+eyo;O)QS zVq-bmmmR4kNgNI+iRGuYkNAT{Gp6Cy*t}qYw;zcAflG;7Lb>=cF2Qesf0DxW-U44l zE=-7(;+SNI1Dbbqi9C%hs?%BEb#!{&G5PY-IZQk{`$z`c?*Xaj8Asz5$;~9mikXvv zA>`-MEqA^S`5lUKw1vF`p!*SFU&s8;al&zZl3fa!;~0&{7I>37$4LovzP>;|(-EQf zqXma`9;tud?)kj>gB;UZz=F1Q{ID@Lkr4F7Ce9jbAY(6fvJkc&znLVd42=PUj@0y=%qdI%` zdL#1laypL?SFRj$G>8@@F2-l{4miq?yUubtDlUX~SU7~&uQrMkin)wa3eR%A|lz^?ieSexd4oM@&&&bJW|&?AE=88xK7)!z8h z+R;chJ<`2Fw!Z5&&@FYYuRkK&8&UNyVTaE0HQn1x_djbLqBa_Jntr!)y>ItXc1;Bi z?MKS&=|w&IybQ!6um$wrj_|#s4h`J9pk0pZce(Zpx=KeR`4t~~+`&=Jr;l8AP;VKd zF>mx7tQw&2U9e5pke2(e)>zYT)H>S96wCbN7EThH^YLVYz&GLKE9{C-&TYe`! z#&7ZFVaL^D&@1Y3(N6W~^N4zk*`Xd+Kgi?$@Ahfq!3x384y&jAXGeGjG9rHVhI}_3 zXHwkSCz^MgX48Hmoa9u+()~h8|Afrk_5n#6=4obm=eLwAPztJ6z-;T9@@Vms>GE-TYOU% z3#g@?vz%)tG9Qe?R`#rj&fKVu_o&yj8>%eq%Q((G2OE-?Rj)km9oU*72Pvq`Z|pa2 zBLOOVu#&$Fx_wSOcz_Synz`Enkc zc%8$Jko5%}g)1VAHi@SwQBtq-HNsi4j@RP>E_DcGoXD2cenC(!e&|Gpbewcfov$e= z*XcXn`C5HTjFNjn!p%1RhH;qO>?fHbMV_>3V?IR70khL>3uf%k%isNAqRsiV{CHaR zQ`HWg!(>XfV#w-r)dvNOCCnodMt;63j8uHV)e*ptOXQvUu*CYgCib1!QItw;;sr%bqKn zf}IP*B~DLs?=>zyeT37p7RNeVB0V)7%M6o{f6XR|-4!aa*{B2U{?0L)l67Y(!Ok&f z)bA;NP2oATev)(xsPze}8BE|q&!S{!$$$5;IhRu__!AK(%BcY$?l>a>)y&3boK1Wt z+h1gK`p$5hk3|`mkOneNE&rLs+s{=U%l)hyQE3XyC9OI8Ny-@tCA-dQ&Jt<2Mjgd3 z3wBDHI#nX|MQ0R~a`K;^{chTmp4KO+s-50Jjr+a*PapZ2wDFE5d4UWp{|wV0U-z9& z^qrxLm#mzki?yCI_)9zmWrUN_Ar})RW}Heq#cZhGQ#XORV_@S)*swpa_qcQ5DgQX3 z=k#m-agxB|f}3ghktN%u)K1X5NU0S&V)t6juj4YSFjP@^2TZz%5>eF&W(K=7i#^hl zy$cF6kBpac=()LW6}IKvKVLrxzg=4P1NVO`?nUp#a~?=+cKlR)7a82}!UZI1G>jAX z0cD)I`EAB7tNBK`M%sk5pZdMd_J#}1Ai?i>q2JgjWXMb~W6(&Z zp-gjy*rSZ6rF#^+Zhd9kufAfeFYZNGvtSGVE73jiKWKfcnk$23%`AyXUbEb{6B}`PV>Jg(izBh({eR}uz z@|U#Q@4y6G2*2BJ>Gi$3*Y|{;-%=iS@Cpir?-xV5@Tv2;jMbc&)jJNi@{H_{WHM)3 z^WgmMiYy}?7g;N?6Yer8Adtuygmn}ofpF7_4bnWLc>v)KEar}f?isCdE8WZ|N?@yk zQ0Y&{Ei^w@gnUyz5+>UiGDSEQN?$X<@{FBI55AkeWaB|xg7jTYK4uUO$^?%(2?KX8(P&jk*0)eo92^$@t)dZjy)O8JG8E?|SwUWA?RXV%;26{8}B?Grj4(zDM-> zzPHzRXn5$WKgk&y85edA+f3t@5uX%dtg)VW^5xitsN9MdJfd$7Z9x)uMXWJ4g#P|; z>F#SVi4>Oj32b-g2=2%(+%&i64PQcMXG623>Db2HTW~iVyV*O+s(G)G?>yr*#+uYJ zGB1gKIc+I|(E6}l#oBJhvZ|aAw+)wIeGuZ#T-`-n6!}!s0=0rZhXYN|8;9bBHea+w z%MA+a4PCSdA>AAh{7Jp=-`9;l68sU^<9*&3I<^Pak6}=r@$vh?90swPSZ3&)+A(0)p4(iN)m5c)*EN5O(1z4Cp6oXa=(vbW&&OEcfJvIuFQmYXC@MUm_qV5DhFMn z_a=q#g}(hqOCl$-i|v8v0)eRfrmokvHJaVp$b)nyBx zgph_7!z!*hmXo%|F@4(Fo8dxB$cpyAlfFSDLHd7?{(E7)(r?#s3E>CnnCs&?xXXUP ztW)g~SU=gloB3}01tMv1`Q&e)S$B#Rz6%(Aa3vpF8UBou?W~!yT5ytIjr$SXpQaJ- zJ}D7jMcqiHBC*>daE?yG`Kh3D7X^V?$J0wQ^M6rxO=+71!nE+93$O*U>38E zRA!&MACnMXD}>I)Ozm~pr+##NtnxcxP8nISG&%H>phi@12jWg;$tSw{O1A$GgC z#9Fw7sK6|H`bydz5UpAcy1QYpIDw3c6&aBrwSLuh5k z#lK+x?luYXIju`MmY9xqmXh1w#nIxAgrB9nRH&(DsALJ%9E^H(xBsQ4f0_7i5Bd-4 z_75}tw~K!r{()J0g7u-zeA)eq_${|6&?&$9v>&Dy5rL^^^&8G49yER}8LXU0ut`?1 zt~^Tk9ZAAvy204?MJy8ch*~94AC#zJDk`O6Rzow?$NCMYNFYl>9g$FPvr=)3yV50&T#D zzy(um+CiT3w*zaR#lW6)o3;u#%ll{3Y}&7Y6~N`dyHjmi3$PJL2QCK&0Dk~aIp79n zXWF#;fT-y{b8m}I|G~o-UZ$QUIFfh#yf#cKn+j@%m$(XJMa&5 zW!?Y|15W`vfd_#*f$sobU@4FeBmq|emjcm%6NmurfsTiOUBGL=hrk7-eGQNe6a!Vj z7T`f(CvX^O0W{*v-!POB#sF*s*JT6jzSfERW7iW7cm+5Cd<@tplQs|oTm?)7ZUDXo zlmQLEJ-}~(eZVWgNg$Fk84X+q+yE>DDuJJZ^G;w5Py%EF*8}lD3=j!?#)P$XirZ?J6l; zRpctK@Vb^36_vY6%S*kbg=MAR21D#JNOjHZa&Z-xR#kf?3C&2bIh{_;`4T&)_w!!K zdm4}x@}4C0Tke{6aO%p!%4@5Oys7i9hqek=Sw;CRT50(z5?k&H@hgR@LT^Qt)M@Yekv-V@KQiEYzUtCtuHveSm9CXVD=Vtj_6n|jEVPZ& zocHmp<0*VUMOx15Ler}j)|d=i>MJgW;V`ur?kXaLkZ#(_Dk$0>VMCLb!pSLISy@(8 zO&N5*FQYWP%0<(r1xqr-F}^FT3#JsQkP%nI`x&8henr|ArQI|NzpVPOywF={GN>y* z-Qm6tUun6;(vZA=HQw&fnl>eCT0zGAc?Hv^WY5c;o1yI>AC>U9al7K~Y1P3seC z*Se~F<>kHWj)^B2c%o}y(>THt?#N7ZK)IfR&4A-XGhq+mDQW*(&? zD&eYV|59)*<{J3B6gdMwUHR~{5WX&f$GBx?O_?TqFD@%wCeNJo>$K|S*J)Go=4yqj zs`$>~yIPw)GiRRomzP$nQkymIOTWf1q^!Wx&0DL^_P`?Yf1=A*ertKf z>T;`sXj&QkZ7$NB$CsIPR^#2Z+^n;gN@u1Ta910VQc`_ccUrya4Wa34;tL-%?bH;0 zCLeRmOyjxa^GiOR%#*+4;wJCYtCnio9-$F6cPG%DZdbb$0<^Qg{NSZoOS6gd?ersr ze~Ug=Fo~|A=pgnUL;PQVuPRzb_uHeJ)}pUvj5EZP)!XTNjss~x$ymlMQKtK;q2!DA zG~kH153~AJzMZ`9!A-_9GbA(r!#`1qaZeBs=pvZBK3B3F7= zR*3U8mCGqG{(^(Mh1_Wpe_hY9-nrZ&m)M*$7+0vs{4kc)=JQr{Y5^*FpJ&CDIB4prztHr8 zc!C6n;f zh$rvzCp<~xJ6qgB@JYCH@gy{^LQu$9v=_dud~ffCPb1v9@P)<|e6jFkM=zc< z(|%5bq#^nInD4WeoA@hQ`00`NkT~MM1l;izucsTc{YZC7`;ly431n()n&sc83IN}$YcZqW@ zI?@OybO`hj^I64`k`q_JdL(m z6M{$T(`LT61HJ2nggqC(gYknz))4MQ2u?{R)J^CTx%n|+&LAhgN^Xjb7kcC`G~dC# zK=6oMP5l}iB8w!x`~-2#L+zIROUkf(d#KD4 zysw1B38sZ}k2sQ+@aA0oLvJ3UmaQcZwQ08jO~6jzCBOha10pe2H5y0;mH|GX3HUki z9Pl>q0T4dSrVRsPfg6D(z((L9-~jL!;0%yB+@>u6HUay9-hYz!grPR)rG4(YP<(eX zKIk1rzQs?%P9>~--(bZN-oA03ICWN7!Qn)iK;rlQ6Th?&$6*(1s$9ig(vW8=afOEM z77Zc66>U4Lbfms5A*{s7>Xn|j365q9#~~|@r14;{usEqdi6ej6tjEaHAe^+JGd$Z+ zD>$dnA38JO#fzW!+-yHJYONxRs9JibB;v{CoceY5OoFY}$Fk+M~M5uIxNvhlhl{ z?>u1>Lc+G3Cu}xhB`@=>IKsjcx}~zVsK&^XDO9F@^cHVFwNC_Lp`n z{I5Ju92aqdZT`XYgiQ+xd*nP}b3?+OJx|z5!b)4Y-HIc0$D&;FC8ppI zByMfi99qUh5+>*;@@=~%6I;&Vm(843+R(?y$51&Ll%r1caRi@?bL1JsD`_4fuGEJF z!UW|j(pQDc!cD@SvdTv4Mu~-s*B*btdgB^yrV-0C*haRUCr-8%R&X3VPuRMUupgf% z>`sf8--poRLdU2F;ns(wJwIgcqEoxw zHnF#qgyB)Ng5dTD0 zJo7@ni&tsd^*v({WJ*sL0u|tr!%o7oqB*`IU(r;xlZ0)FzPOto>1@WxK4CCiZuxCJ zLe4aCnn+3+rSYB4qLsG`S-cs-L`R6x>btxvtwnsB(X-hT#CTu#ccHJkNL$+Vo#U;j zWIERMUCJ_QFmAE7pzB?@F`X~?Wg_M~BlMd9m#FV@)1MqW_%`VdI<3WJ+05#UHIzU# zYjxRdBovi&D7A?{|*Wqr7?Eb+Q)mY0=jT7~itiJ;vkF6nG{R8_2S)RUntVu=anwIb((B4 za%Mh^`d76!o0=|LD&@-{0gs|8?ZGekWL6bX1BC#o9woByeq13yDrUio--vQ zZT`2o*U&b3a>D-_Q})#Kv~OVrWv_B7= z>?>bZ=)0xFTTrxSSy81dgqw*hm{KsCAQJ~pW;32$J8w}}5~UTC+PO=yi@^Ca3T6v$ z%7|a-^Oko-HZ!=?SA1R+GbpVYf}_;LvFv|>L&`fkeDdV+{{s$FyxHTYz-nI1-?VQD zJwyKI_-0D{tNTt~R#a7G@+y&vZ?=!~l|4jg+V}fSE~0q{%LuamgXmN8t}|=waBcEr z_vGvZZ(4S8f*J%kDS^ba1ykl{Pf@ks!S{81^QrQau1#KDQs_;;Qsg}^zsY#&wanbZ_3m;s?Ux1O8;Ol%Gjh}+L|?)qH$&pVX6`_B^h2&i87C< zm@!Q*uoS@xx)jq2$}39Ciz^tZN@RvK6{|CX9hs(G*9X0>l@+Us3aYhh<$YNtqgr>L zm1?M=Y46#KtBM$JjqX#nyl73OmMCH9?-;T7xvd%j z1Fxbrns$Y)U}@1UrRCi&QkHYAvRo;lm!T3QCDgMyWb0nv}jvF;mYb;==Dpl#>xdH6&1Il*P%@o+-f+PCbfaBIV+Wg5~H4 z@J1+x%LV8XmQ*ZH>+()ZqyDIoNPrZVvAY%7Yn+}{y0ogWYV9;CQni*DlDavJpSc{(zz|o9CY=8yt~p9OZC>fh zqAAsoR3vZbSO^K~qdu5z(`2P&u?1()X|9~j-px(u)UtQ8mAg)yfQ$FzJeL5+SyA3O z7(c+}z>V+i;szw}y&Xv4J&k9!Jb|se*U1yu$$K-;BRrivmw@LK@0H><06(A-*b3|f zw#)lKAQHTQQ-E&`Z~_=Rl+j%wvt_bk*JOXIA zy8tI{X*{z9cuxQ-f#bkdpczQO@5lw<15QCtHcuCz4I&-jxX{SciCZ?$tvt5_Tg9Je z0{0cY(ybYWMhUTGr4P*f&Kpk)&@CfiU@CNW9 z;K)Y@9!LY`1GfU-1~vgd0safv5BwSE0POQwBLuDjQh^(Qe4ret1GWOc0Coc}0)GWg z1F|9?#xA^_-P^ueKP^J*uMN-!vbr)zyMVO{r#2Xsr=eOD+Udi!5n8l%p*B(*rNw9$ zvA%M#=F%?FF4Zp6+}arJa_tKC%C6L|(&Dsu?P_%4uGJE>vD$T7B64$_HeQ>cC2J|# zM9rh6YLi$un#^j`6m6I3x(L(+D%%vHiup+N1LbRvhI|x z&1d!HTl9wuwMAN}o{}t7R2K&qtqKqd)5|KB7MA5zl=%<_J-xCks!{MpUiNgJS6D^g z7wU*q`zkbeoeK@lU1(;B0(QYPwa}4?8n%cgu=jSJrIfR~JgjAvu5Yq3g+8v_XKKp_ zBxyQLjhWI{L zhH&ngA#vy~d^2_2deNg6!K#Z{pDSN(t{w(;nyu0#FX!^?F1mC1QV1rpuZWF*5B{AC zhq(-R?$p0b^_S~j2+k1Ct{Ql5@8F7Jk7NtZnOSLgy{ly?QoKVdXD^?x%Do^xHx1n$ z!8QOSQy=2s=a>6xmR|(f_IT%)%u?4^eC^cIH4t#qt2xC zs#lg{uQV-JQta6zRFd7E=j4C4x7BWXMe5mldU*!hP;cj6qM^5UcSGyt^W}o>Ca+6a z^orBfL_^(!f}@9)j~@P|7womc@CD~`qeDK^IR+u=X2*7pL5b5S`m6xf!^&) z8o@a-A;v73FUCE5>+0(@+EFPOG;dN=CPnh=@eLET@_UU3^`Y3 zaPE~ETzX`N?{j4a=bo7nhjV5|JbGsaw_c>Hf;q<&;v1)LIPeVzzTv<(9QcL<|G(zI zLhg15!d5X(&EGX_9aQ*aqoANl78cEoGfk6lp<&dtDy_OWE$z#Gs{1$lcq;_DwITQ? zyXO{FD?O34yxw7h5rTAuK0|S+crxrytE?(rWyb1FV^^5;qT)hdnKvZpm-5pU_NH5I z2@R(zfGsR6oIktux2mFQX(=nH1kDlu>mNIj*#CPUCF;MkC8fFsBwaRgXws5j#w7jX z^~;lPd~|G5wr5gOlfl=SPm*OJEHb|UGanI9!JZMKbTKHYy@-}i@%TXlQPxaNm0A2;Fl zvE%+6K55+IteN9Hg?ZzCf79}DXU9~J+q8DWxQ*}l$JHFYb6n%{`^U}Q^3b@%!rzV? zW9%9C#x;k=JwN5OaZ|22F)lysqjBFYwvE5(h5qCJxqry``)0+AH++|mzi#^2@!rF! z;};K}Ilk!9yz$RRE+4=9t*Y_&=4==r^Q3=#)o<<`|LFMp$8T8l(D-pz|8{)q&OPH# ze1z?_@YlvK>3C=S=qEoM|I;+vgpP;$Px#=zArlT=95Z2b#^n@~10@B=`MrRPxfO%ailoPDpNBl$w0!4`(EQ_+V~w z;vLJ9QLagTx!;E5TUYp#zcc^N7JLds7sPfdAd$&8eo;@p(_^kpd}{i{-J zf2m7xPxYrfaP^%jxBvQwDa)SydCK>{w=-qXz&$C&(+;K#oc?Ocb(g)9^4?!RNV(_* zZDOBm`cF)V9y0Nl_l%l2?7zlLd}4LN#G3a#69-&AV`A$Sxf9>DEt|Mz-)$2;d+H{( zU+ABBAneYG$JYOF;a`NXzGJ14&X@{<$)E8^h9rifQ3{`mM`CieUB2NM_mQu7?? z)8DiBy}=$w=_pUbcgA@BH7&t&%WjXSuw%MsR{K29qNkU7?!Wyu&-#1nJb(D0$@A&! z-}6kL`$Nx^6+ib}an(-GU+#a>GvxVJ&xk+0;&J`xFP?GpKkz(MuciLt&4|?d_6<(` zj%QS=ZSI)VdCr8?!VR9(gFC0E{`FV$QjMCWsjnp6mij_vUFtoDno=kJ`g^I(?jNQ; zlk)S_#!nti{cF*aso%M)HTC!UE2)p&{Fl_VgFi_9e33TE|9Hftx9=T1DeQt#lLD8F zne_WNuAQ{<2G69lRnsSZuWa6=#)(TOUHXs8Nmt!iH);J(nkF@U=X;Z8oc_V2`Tc)B z>BD`GPC9eVlas<1v`$(%>y=3hFZ|1-7yoo>(#^@*_5V+M*B{npb;ViYG-nOXlp0M& zG-)B;_x^g{`x^%(ra4L?9%KFj6cvOC8kQ9$k6^Q@iOb50$_mSsnl36!npXZ=v5AwC z6;9h+)<(&Sl4|D#Y1-QJ?4SL$@B2LWd%xfJ*S+W5b3f-i_nvdUH{99ZlHx&jMcajT z#D|GCW&J2yeV(#=)EIkJN|yCIr`f8yM1+Vl$%%3->v%bAa~g_7rNIQ6Wylyqul0J=?cCz#$D7t z(Vg5n&7GWD>L8xng&Pf(fCJf3Qla!5Vg5&med^o&*)Od6^bLRY=@(YrpFOvPH+1h+ zg!NfadSh_H-{IQHYN+CAWh0Ac<;^Q8E16L~68xFuw6fxq1zrNAMVmWo2E-a#eQ$G4sJEtzdrQVju!UN^A$`{6mcCksgVb)xN z6XHX6ER%3mZx2$k)4)$H?V7BF_yxV~1}P|oA&#I%HkEU{o(nXHuZQI^Rv} zzn-_5;Qg4MK6b*G9Po{G#SlA73dbU1U-T_qbBq&I*!is;=OclvA4pz7$dwJ zx8V112mUsRBMD>#5o8M4KsJ$=$Xle1l+jAMlkTO}Y&F}=4zof0TE3dU#NXz9eCbd0 zTl{1GXMSa{GUz8R5EI3Gag#VC`p7x*3E4*tQEBQ%^_<$S_NpdzSbd}h=omdzkI?0M zvHrDwOP^x&qg zh|16^v=OyIpuzwTd70jPug+`mn!IMO#cTBj<5Ae+2{;e0#M|*6{CC`sXp%>klUK+g z@);RM4ZV)ep=ERsBkUUXGjHs_}TtFejwfy{}5k_L2`r~DX~nKZ>o^@a|B}Dc-{ZgK|IPntFf%9)%7Ut3b+9{V56%)pMTNLU zREecxxu_NQiU-A`;tBDz*e#BT&&4pAB-7+C<*(#^Ia*Cog=&XtQ=h0by*)8@Jd%}KdzqB!qxQ;NWBkCB?aw)1rAEEO-p7ctLm8gyBe-9(^u;`AP+C=z50;;lRmC5FbJe# zjG17v%zX2jX)(vla7(SUm)mhR+veJtw%9JRmA1;(*kyKwt+i|HLw19G-tM)B><9K- z7Y{ie#<^Lp#Lah0+zPka-RCyA9qyom;FPH7a1#~{MFfpO;{tDocPaio zj3FV1$$MlHokee_Kc~m(M|2pwh+WJm8_mYCtJ!sICcBBPWOuXs*;DLgwwL{m9b|uD zCt-dJ;}`K1KAMl=SMkZbg5ScQ;CuK)f3{!lFZ8SZyZ!t9t^O;1GmQ8Vm^*`lq`(E) zFz!{seZgiJ_qO1Z;9PNu&@i87i`&E+81GlbA4P}wj!ck3X3ClJ7P(q(kUQjC@gV0y-Rf0)%e}k3XT2AJC(WM3srU*!9_Qjx`~rR%@B))7$z+;O zXVX$Zh+4{+WU0WJJ*<;`!J_#99>bUN_52`6`AdGge=8uwgTV_x-P^&5;9}v6vEnh1 z#$oOsu;UKNMIiPlDvCp2V!iKs8rs>2Pm)XNRctwXfPIIL;~(>1&9ImVFvv#eEYJ@zXaBeZG@K$;+cpu`2*gLG91^f=afv5YE{8E1djNZV& z3u=O6!O1|%SLJ8&Y*nON&3oo;+u)*_dfs~zs`36nR#D91g>60k`<$K2ZwP5_hy0dM zHKNI60a->KhES{7yo~>vzsTR2bFwu6nO|-}wn+7v3-_Eu-+uQAO`+$AMK4*8? zckTQ3L;EpcM_)G-&?D95xF=l;PzC>a0yM>=Yr1t$KAMe6(e3B~l;S<=J?U*aB~g34 z-vLg)d+@^$jy8>ykQ+%Q zsU_>l7IJ{JlE0F8dI?RZW9hr}1kGgGfUVP630uULvd7p*>=Tfj6s}+{{)Au0^LRC1 z&hO(B{2YI>pAR##)L-B)@^AMu$DB9A({vik)JY*e9Aq zuAD0K%A9LyZT_&QdvmC~H-niq&yCStFgQ z({+~4(Yb&vg}PF&(6xGJh>8ji^x6W;G4Q`v;=~~_UuHAKluI}M~3>t!x z5keUtp}D9C|$;UbXc8oUOt#dWwI zH{vGTj9bC(>clZ1&5dAd9fMIGLgQ%$%>@ZtL~G~@T2D99ZM2mhrSH>r+CjT$42xxn zES+V76f9zESv}junpp?yV*Pm%r#y>K<(0gK*YYiV8{f&Bcsoc*oS)=p_*tNXYW#YC z3*c89gmn%Kk^>r~g2WUC z_@_U%-aYH-kIilW^0L5^rMLdw(i?9H+;rpO#ka-+U-)8RX?$_u%Zmdw*E9xhx%K8R zUN~{$grHq?@Z}#ra>Lg)zwG>bvu@qXH}ZT%&40dple#|o^3Ce~mY470`h(OrU;c_p z|MAOrsq2qko}#Y5dU>I`{@nil5p`|&@=fhh_Q;k*YF(~b?lG=ala^iSynD%2^s$rN zy36$l{|@qxzp`aqz1;MwXRo^FS@0!)&eat-MdeF<`V?1@dP64pPJYzYxsh9QTeJbT>8aDx03OdFOwM@xR!9OJ}Td3q<-}G5e7cOz(*MP z2m>Es;3Eutgn^GR@DT<+!oWuu_y_|Z0s{kX*CySYIlp~_?%l>;vvFu(tV$}Cq{B5q z-5nd>Y(CJYyAqo;qrY{7=8}x|-@;7$^hb5?&EJl+-ldu` z)4MUnzirznL2Hf}hs;ySH83{F=LIkU&-i?JTJiw$<^kj}?hFQ6GNmz~N(^`aib1){ z)iN4TUI(Z)2P&ua3SWs1zqZt4)M*iOX{*B0)ZT$QzYM~Yb-rYs)(YItAMh3b=Lz5| zHK$$>C7uD(Qj4vFi&0pMXJsddF*=m@KCwSB`~^;IW>v?`sVfrB+JD6 z<=y$TW4#oAJXi%sO~x=FSNs)!UD_&*jonPfT!RWK@VuzDO z#&XS=0|V0Lm^_6XZOP@_+U-xgawIYAK@e$!p+}md%?OiUDn3`B zpQA<13D?_vM#GbJdMiz^i4OkM_da8$)(B?0_cpf}(~@vVObe%DV>6{IMGoWM@SE|= zjapxKuTaGJs>bU+=k@ee{`e;(-FyxImdX&-j9T3|B^l9@dRwc)na`EF($&2;HYU8l z7n@*QDg|fu42`w!!f}7>*6zK?zAs*s+0)r^u`8zWy4t9-P;nZV9jlOXfpZr-JoGUd ztrAa5{WGm~g_r2@lXzdPQey|Xg~cMq#z<;bFc1Yczc~+j>|cg70AgEmiPoC*+WQFLn8VmH!J1$o2Q#%~LqGa9GRZ(NMC)Ma_h(v`3UlEKn4R_v7rX#W9 zttw~S)N90qVC$H5ydQF5=6rz>=$c6d~tYa-cfF!#X4itm1ox6R@^=U4QdQE&0p z$>1B-vYujpRuot7o!2)9<-K}}9kv)^;WYDtYZbF}_r}H!2ufY4daZj4529Rn&~p#{ z)m3f;$z?MWKv?{QNS=}t$;9xyEDDvTZ?~m#R?uhEdWC$k`R%iMyHz9uiCZW+i+9zzzM%bkFQ|{J$q;izd08Wx-uwsn-WW{H_9U-|?k|b( z7pv;V71XYst?I6(>7%N%zOgBs)d)4^3<_|K)wS3LcZLFRCHUS8CJe>xffX{C1UZoY9}0 zsSn-KVm4S=17wwy>yq`FQJi##uh!$5acJmF1;uR^6v@v4YBH)Dm+O*kE-+nY!&I*g zos7l-5F`z->d8cb+M33yH8ZPvqE$VYS3z|DqwZ<*s!FCJ84~Ld_uB47rvvs^Ib&SncajISBIaXDtOQGP~ zct5;SLjjg_UxB0yU1YsIjm+7augVsbtJtOL?c_~QTb0l!YQEVFYjB5pg#z8Z%f}{q zGY~@5R+9&2NO}d;vx4m-RKKS{;$Up!Ed%8~Pg8o}_4ql)96f66FsBGYKhtR5M@7^i z3eDIT`yF|u&$&VyxI*2?x8 zs&i|XSJZ4Q(UVj7IYxONDKDbu3XJM;(g55}qjcxi(R|jGZZPpVSBurBNJnD#53wuL;A|soxU>s$Jj;PhvRm~8eXh9xAYpehJ{Mz zD~HCp3`&7;-l1Q?0LuWTt#yHPR5@*{@adfng(0nH*?6nBp4z*yd$%b1<)>qgw3Ht* zrYC2doOsop=+nA)uQ&uAvPhF`Vjo+Ut!2vR8^})kMzt?KFUF+U7Y{Wa%f4{>n@O(t z$*F9AGs)%jH_=98zNZPMe>>dfNku)W6`thWp!ZHqp>Mt(ZqrjyJ+(qNp1ZTi*k|0T zg}Ts#B%1X~8Zb9Gt zjU=Bsb<5PJ1Yv3>xkO&`a!N0+vzW1N62socCa{>U^I%e^ukfT=Jp0nd{uf_5 zylG~v$apnfr>ExV=_~Y9o6d_}&WmT#S7@ngv~-=8YSs3oRdT$@*qR=f9&11H`J3sn z>Fa}@w3}aVx` zp2kqgy4uMtJ(o{T#Vb;GR6Hh=o3H;U6TBfyPx3Fn*L|G zl&t$^FPENg$ZyHI?ml@)$nToe2Dvxn*VwqAP*)2^75pv6k??yZU3W^)RZCyg96M7D zSIRf9|M!O;`qZ2I``#`xp6c6wZt+v`iDr^)t;Rr`l-6jpY2AC{+SJ~m(~K6q{2A+m zSLK5Zedf8v8^W7cv||g!Uz zzSd-mZdYO4qLW^3S|z`hEBWZGIY>OCLoz#?;~KquYhL3lSOJPc8&g$%QS&A-Ag+O& zbkBOUq1o7Dc9L`**0Ixg#uDQj%?q!w*hvrTrCo9 zpwMy(rOfM$fmVf4i_NpY*c@QSz0tUGv~oAv_HJTWhZ6eqHm!NNGh|w!g;(g#6Z$_y zYaoP22qE(7iE!g>h%mf7gnpk29FRepm#^cSr}m0L;0YhWFQNu-$vRJbT-%ghajdM) zJoL~*6PAxrw(c55tkG7)x3c3XKDle~3 z5_}DoP&JrOt53={WR1jJ`}_s%+dRu@-^RSw?K|<-{SvkZgQyPU+45aSi~V*aDWwg> zrW$+7cZmTofkAun&IuYr94@-?RSy?N@?I`p3fsn} zG$Ul^85bohjoXv~cpDw8ZrtWcF7X(*d6P@L#%;dj5-BLr>kmH_-iHhP0*71bZqc?-Q#slU8FikF14#!(dc>^ZopNjWF^n_jm$dllU;Nmv`(N2BNyy-iL&@AnJB=sc7RngJp)@F#?H)Z(Sm~ir$J=EsfCz z^G#lWo(docB{un68Y9uv++d)AQY02fFlYNf3Vfl0k6itK6aULZ@ivG(@Ynlau+eh< z7tA-?|H7T^e-R_j_P@yMqx~;r7}fu>5}X{%{~~~2hVN#Q%Nht#?PtSFJj=#neY=K= z8A8gt*f8v;EPDmm=cljqEE~hSAq{_z%g!NK7weB9GXn=tD^5EH-yhOHL52S}{)sb3k6UenJz@lQ|({t3H|W%7aTpP&lMKjCG3jw{3)$3Njc zmVZJj7XO4@^RGlBsDg48i+{pvda0tPO}RnBz~prKJ{YOUD?suAw61NjhC` zcyMW$_FQu&wZ(M$UL8^4u<%50i6g4(OCp9Wta2>i{%x3@U3|`jHixoaYh*jqg z4=g+1X!bR!x-%trcL=_k{fW1=r6KCa$nXz+ygL*Bed36g?C>ouHg0jXVKojA z1I(W)9S@H`ya&g_#%0V^%2dWsDYD@&f5z}9%Zd{F-OT@B)gF@BJ}Kl>N*>VGO94`r zD#UnlWXiTiTCU5W&^!GrKDxlSmH~UUz`o3fnk*~-bGUz5k#R8mPW;@3nc_b;GqRES zrKW{0?!GHZYC!xPSfH!lFKGJ}e!e`{xWX5aZ^S>_eYoWAe*m7u9ZX1Gg!5|X(|D$a zq}3~YOHUS0Wo5Rs6dp?fK39H31 zE8hrn78ysnGt0kZNko%~#CW60g-gsgq={EiSl>?Zs}w(6=PMtGq_l8K`&y)Ys|-kj zDc?UfmUc@}6dTrAygX3TEfBgE2qOx*a^Q(QipqK$N1FnU58HG3;sgD$Rn*kpNNzGe!Z_TVcv&8XA&x!XRpY^wl-*$d$_Arww5u)q z5aYpro2hCM^*)^;ZJsX}wIM?|Pk1N#2+`VP_>6SfjT$22pD6@VI6r#`mnD0D>Z-k$HO~wVH0cDmUAZoXaDw!$9 z?L81H%KUaZBdFNPiLq`OTA35}j&lv|6CEW3G??ux`ON0a^F;Wq9(du+=09Dk$b@Ew zhV(N5L0fEE`T!;B_%HP+?n|$+IX&i1ycXin6nCb1>(5}Uv8o61J6&{QQ()uN-qBK( z6r3156GnySLfo?<1ra(t%0nd(iC?!SSjE-Hb((@}&rdNhi$;ZFgEwCqw{45AVYrLF zNOY9Bdg=nPj>Z;+#kr_XZamTUFL#P9;@wCW(OhO+>f@%N{eLEsxW_pAUdS@FcUoPb z9Vib>oE5@Z5bu-avdS zkmVcXkPZ=sF9-tKD2cyD^SQ$P%g3!PJ{&%{^zDK#=gXJh%Yix>-n(Ruw7>3Rmzg0io(Daz#ZhCXZ|_WmVb$2dF%j`T zMg4nc`nz{K&sJA8tMjV?SFA2=3Rvl0+Mw@yeXlz`W)`13-!y)(7J zzQL!`^R&G)^}+wyw>8bZzIUc)-|zNqNze1lr{f=4%HYCav1 zvA@VsO!z-XA8Ym_KPD<@Tg5P>$5qm`8$>5MyxeW(4xF5B{tD(c2=akam4Y2}JgVQA zoNAbvXM}9wBPI8oOF3b)#_wxl4^GtijkK?Y zL7Lj{<+r7MF27N8GOM3Judx|Ml`N)zWWu;yf|ndpb++0t)lTUhty;w-mV9(}R6+6{ zC?K?mbr^La)cp!$PDT0VzPE~Ex3oZ9y&+#W)!Di!;^-#z$pq(<>?~+=$f)xgb5K56 z0!5+{?2@I9%c3jATUxG7PlnIq)q?)}Asb&xV zC_8Gt&9oDR-_(&U{Kz}G!f`@uH}@cVQn>CaV7>blyRn|rVK-qWD_<4}(PZ$9m)~7GloCy+~dEq)8^;))kf*o_leN%I!8Hy0MwcVV8yp}wCJ%S^c z6SIHk=@4Ltd8Gxe%-}xaMnH5_Aj#(eG)YYAT1gg2Xf#0bHyZOi3<3aXr4EJ&^cX0A zk}w@#Y?<*)`L5V4-LI`Gn)+JzmQ^~Eq2?JxB#hO{rjF>V`{X9GJA9<$^if~nme0%Y z$>tyIn2~#7r4D@@Y~G+Y-ZmSWdz^O1dQ826KfjvjCJ1Pszg_qI5jweE}$_ zM^mlA7N)>lr-|74rZd4c2l&Fx{&?L8v1O173r`?iPAQtK)@ao7^hH)vyg_UBzk-%B zI{Zx~4}|B1Z%8}kjo0(Y4C4?7eP5>;FX!_>XWYCYMi)8K$n?@7+_7!hw0 zey;Z=!BoVbY!)rNraqA94FXvtH77{?Uzzy`ORkOW{fNJd_-A6=LsGT^_s`Kule#=PNPa`+u4z^tLE$v04o=AOw{XGjk&q*JvI zoJH*&71KLHmc3wE1EFwhh1@A*D`U8&(HtHly{T99uEg%lFHo)!SylFJVTL*t#1r03 zZQf;Bz2Jqr!l{grO~yI_TKPu`^Y_*IZH1p^&L{ ze&KkaOo4uWVQo`;$)>77pM~@F!?b*jR_zS#VBUzZuE(5}Wi<&L@{6)1n3?{^hlGgI zMQicor{5Oki|HUX9D^*BaLKy4!4QuDGzw#!HM4@3@)TTC7wBQg#LF2yI84^mUEDM0 zV!o{8>C!dy9?eyhTE){0+LxRoJUfjKD`Dtla|L%*MqOocP9*?}#W)RpQ?K+*#!-^h z&X9@jucp9bLHoa)YyYv=ADO3a`Rnz0*$91(%^^WY+s(0}EskgS@>ds)-W^g}vz?xsI5Fx9v*b{!TL*`u;d&5t6oMJppP&o=_j+gLArcsC? zd5U}$(%fQhtk7M>v0!yE?ncH=iPzlmSNbona<1L`o} z8dCnpf6VbiVz?%+x2(6s!HI-oo=2@rzzHd`A>mMSrBP;ROD5B9M?3{3{wSn^ol1dl zo8hM0ff6-EGD05DQi{y^6{tA}3Zb>G`nvF&v5(6zsZ3^n_}Ok&W1eEy%d&v6IAB?U zvwy*LBmA#2zMF$%R*LY5&exC9`NY(T4z#8v;s4FK_C}qxQfgU-V}HE`$vwh@$l#?MvO*re`2Mcjn9df7}XWDP-)AMqe$^DZvr9r7^Y#xRso2UW{)1`uGsx5R7=BrzK zz9aPGJd+6l9DM~@tq0R{!Eh?#UZZ1;cWsHkNtkB&21aN$n*8C79eQ}6Lqkvon^Uu2 zGVf&++PUf#XF*wf{6OunOeqa5S4cE!D!u3TiZ~ysX12pkZ1~=ePb%E4nKh*{rA;xa zLp`%iqseTL?$$?x5=S!e#fjO&T4L3(D}Jt3H%k^~T@-3*$dvlYg5SN_u87yw&}!uyM$UC?ObogA-$V}L+4pw*RMog< z?nQuik$~4^vMMQ>58hY-Z>WpUhPKP3j+g2dx)*B2G(oCdKkF))%!%v!7g1_HL7-NC zyqQnp%`}NOWBNvhMNh>KIIbJ@nehMEZYxHT`G#>$m_0*=@+-79N zhVnj_vWgF80*+@qVzt;R=BwwDq$C9T*#wuU=D*O-{ zgXivEW)lfy-aDiltsXU@&)j@hnaor7lD>uXIo7EER{-$&@?GIQ%f^^9=<-LtFWwPO zmn6nZ|H1sDllz%vQg~5udbI4zP92$=Dx1F0)o6Yvg@3>H6_)V5(qJ@s5kkOijwTVK z*`8>`nZm42;-vhQS<8atRYtIaLV&Q%C{aXEZNK$oJq@(3sZ^nt{sk;XINjTMS`jGA>kZ2 zI63XDR)_;z!VG-b2d zjlQ4_6w9Qu(d1Jjs${JPd_XXlSt{9TWf_&bLnj>4?BWBu=}`e@C0!FO`=+pV3y!!x zSr|!S<_=Yhr=_70mxK8+Ri=+JrNF7GK>uh3=IaybOg-JNF^qUCHa1Mhnr(Irvj*EV zd@%NDi8J4&4C`=TW2)?1u``IN-N~#n>n98SG0X}RDvqbcS~nV6Fml0^#s5q4`Tv;n z=Z9ENYv{?@KGlOm`V2hY;VFL$aR9m9yGy$E!^9)G;&H|PgW>03|4VUTjC@bb|B;f! zyCBmT*kwAoUxfWLus%{PG682Bcws^sOR7~7CdVeh(*@TwMV|c&ho--Q5yKBW00LRZi*W&mlZ_4v{ zO8bUzJYJ{PQ8*rff;G)gT3;xR|7W-#rD?447#qt6gt0d)`%+3%3%v?iZGsGQ6LDxn|QhSv%|~ z4py^;@5nA|fD`%&A0&2yU<(#$pwWgSE#_w#zoO1)>L|tphA0Fx6A!qR$Kj33rYT-kvZ7nEvRDs4?Et8z1j}EPLbjWWQ4-dynT`(t)|$<%gYl$g zA`dS6eC{(A?1wwD?ZN=|rDpsqDJ#Z=J2VN@kpKr=J=y7qAHd(aqO&T;j-Sb=m&BD@ zX6=X_30OZq%=+=Ez2QL%`=CB{)oKb>#JTbHOeWH3o_P-X&MA>KHsNO+HHEinNwo$(fnaM(K-7r^^jpo1}>d@`UtHu$tS7=Ug zOa6;+vO?W;%Bh8K0P8~rX@0td7NNnbfCQpoC~JIc)0fUG)MC6Za~xpX+nu2T47m3l z{Tv>`7S1@H^YE?5SSR_!dV8HDWw1^%y8{Al2^nbr%T5t-0)6zeltP)>D@!+FOf{9t zM7=Sy#uZUf3v#3Q{A`A{n?%B zev$fJ!Y>G3FJGv+uKWO0##e*+%vhFXMm6NCusuF3U7f{9FSV>*I{6hF71ppNYb@VC zUVsjrmCDOCHl8q#>>uY^m}wDYlri9{lE_nNSjoSD8Qzo0EOg8K@2m#NKw>qSA^|d) z-(~2-@Fg~JVPK&|1NqHuII1LjO>mY|UPRU;o6E9UC)ioPZ)auof7GrzBC9#f`fS#d z?5xY}tPT(Y0BcoU=Gob-6!?rUT0fV)14d#zy%GdjK=0p>B21DAK!KD-7 zX5%Vbd`!V zyC_%_{$oj(vTVVEd8?TvM1Uqvvk6fJ&V%O9f9nvUUI-B&v4%{u0)mH9vgQ+_%)A`T zScIq-LP&YD6d_*4ptG`CgeWupcGg+JdLe|$stEDl*{l{J%FNfO$KnPH2q{$&;{I$_ zix6ez2C{DpXihz+2T|UUIrkg`r@||Q9RCpXn*49s!9TU;6U*oLLuE0t>Hg1SO-Q{a6H<#=2kb$em6;E) zSU=TKZ|q?7ROU`Dt}%c7gly}fsXb?$_5X;I-0I0&rI$pn&9i0v{@r$=dzu#J#;pj07F-iQs*d1(*%T=6T~ zy@5$yXz4MphNqx_9$9!!yZ%pOT+ir4UlZ#4SDMXhJ` zCSH0UPfi|$Q7J&izdk~t$AoA4mfvVZec=s_O)bl!L^Hn~esjf@zY>I(KU@4Z!CX@8 z+nP8sWtR^kM#m$j{#4m&D}IuGZNPYaIqOncy~KE8`pL0U0j6Id`BU2h7XL|59nF>= z6{ZhE7Hmu09;X`H%eONBoOmizzN`3cmXQzr2dMXIOH0XIX6S83|AO+q>#%RF5~zPf z68;Ibo{Fdk+3tW*5Ts){%4esuq{?0}#kwlBCCV^MUBf$Rh`4BVLasg=Ug}vo7N*dL zB+1&niK{V5RevSB5Xlx9xY+YT091T47KDV`H`6%dPf=Vw6hBI=8~Ir)1q{OCCPBesyPO=bHzLpY3~loV_5sWL?zV<1SgZ!d>$4 zpGJRQ)H72u6df}|anH;mG8B)Vp{-|TvC(Jwz19e^v`f74z?!K0l88I*UlT35BvKUj zuDP=KlKSGfuB;HOk*U4>Y|G|9+s#tj_Y=VDV+26Zw#KdB zf_zpXyC5-~P@}$bpHw*9gJ|w&nfbJ*e19)|A12)`c7Tnht!j0eL zm~j8^{~iVRGgi_la2G_Z7r_7EhlKw#09{631>CatNyu(T&~8V-YR96&cHmz+W;@O~ zx*aDSvmI*dBkZj$IeTmMuupfnY>O+|6-4%2G91j>U|qowNsgI_v=IN?N%Y>{X26WCx@B#U!?9PhibBxLu>6hsS6aO!B(pQxg-_P5TXe z`{OvB4eix5JYvqmw$8KdBWAcTfdT|=R45nYKBAdj(ft=-uu%)~)>1hyvz6bd;I%3z zT`ITONmlTO8ZcMwIBTgsYCiq)i0YpxOem~=KkET(l8V}S0~A;gHAStb!tBPk1X`x> zsf!VrLmMm}jtF(zw@Re0%p*afFd1;xTobxn0*?t2g1+V_(3;aHULP5o@N( zD(SjXxSY@q;qftEYz0{e(o|f(UBxH|&0saNe+TYM4JLr)vWBPa3 z3vTcGh5SxWskN@y6h7F~TXOf;NFCDEep950(d=@ZF?8r&cD{2S6L%3wNtfl7E{nM9 z{4T2zl-5vJ%IKy4g8(%`z{2m1YeHtvF2;MnZ=OqlVPc~@tYBN(Wjt-Zwhg$SX63_g zxM2>KK{_$Jgh23b8pN%#nfz&BuQzu*O>Uen=GZB;YO`5#Cl}%x)$oEfra zQdprLmC6osI(_UR?A=KFZ9SkaZLfeB~;L=*7R9P8fuPVWAXs@~vz0&UIH)KT`^FH-;fkK{(%x~gcN`3ta`Q$xy-*mpE|@Bd*>L-gxxVvhl&Cgd(T};&hTeWYakuc*_#~^42cNlQv?lp zf(!rCXchW)Z*T@rSe`QeFR~cfekwLDzTd)&WQjCoo+T{nN@983dhzDY-;Kp+JN(>P zyWia1y(@OeW2B+963Z%NnVs26Y@A(6SiS*hDH;X}(O+RKZq^u!av zxxDroUBPOu%f2COSG75)a4Iv z&d%q(Uef&y0n5UMnAa=YZw5BH%-_(`_8SCFzF8!c-${kUTMjC;`lb28ki2+;3)`GN zFSwZ%oJWc<0a=CSq{Qr$adwJR+xF$9NY_sDZ&1zO z$wR~(#Mn_{ma__Vo0DgyN{ z%b!B_e8g)Qm1PJgokMv4DBJMwE9v?JDC&MqHct*O(BzW11F!$pfz&b&L!~%lda!DV_9k1 z>V?IOF@9p9Ij<=bMeT>(vCph+e}I<@i*rqVgEz+A4#Mn51DXQRY5upYMalcUQSe5{*L*5f>E3ru;#qSM1 zLXA25UwIcEAPJLc$&qoGOb_y4+rtg{_R@n8KHn&&e;~zi&>2qzH}hCHbfYV-UZ{34 zoslWMS8yV|SUu6Ahig1lWAWtm@=a{6HFUJSQ4gXDTiSc1hcMSO{vV+qeq<#%`hhlA zV6R9yViq!Nr3Ua>d^cEeC6V>wl% zkdkk1JgNeM6fAX{L*#X{q21Gi8Y+JD6>o9D~rCapjf+1$coRzo{$w@ zgyY0MR7Q=2Nstr)oaf0bf0jk_Xc5UCnz2(Q*_~L8G{2(3EdKL|=KqFV@U7kaP{DUJ zzwuS_|5}Y@DYnLHzbaWFSo%KIexbM1{#KeV&$;Gr%bYK8& zASvEk`_)}guwUH;+5PI|Jtu0Y*V+Bfd2OGsfiG;7{poq1w?94Ks{QG?+WXVX_j&u% z^Wxb1(~~!Ee|iNk@Jue)e|>Tm9we`DKR?R;tM>Dg^78lV8@0T@e80Y9;*UTAiHPo8 zN&By}_WHNTa1IN9BsE^5{DIbaI%Jabbes+Ud3%<<-x2%$7i{-W&LM(T6-6JUg2Hfl zYkh#6u%ZxrrE}g22)6bwWIWfCn@>m#Pb=_O)Yy_03(gh2=rv!EK%hH=^Oy){pdNu& z*>4GW;D3k3#ZizS(Kb51056Z<0A2ALSDW92Kl0GS zi(~T}dGq;grpDn8oOW>m^ZZBR7g-xW7#D~v3H~|$3AgHR5i5psV+g8c%hvae&q)5* z%L|MF);HxzC-bjPd6Pe6d4M%)c_aCqw*5`{ebn;)*8EQ6vi#0{j^C->;&*QH`JGJp z{Lb5B@jE#!ekac;{JyZ#ocJfzO%tJV0_Ou&a6Zrlh35ky61#F;j#{EVYJBX%3iJQT zDHsQ_35b++Vv*x!_hGeE%Gxf@Lu5I-dDXJ~6oX1FjIhjx&J-uf;kR+m1fcL;HxCWTNXdDOk#mRm+J5|8at9>S-N3C zXk1I)5N(mG$n#=n;Y*lk?~SF(&6Xwx(cuvnDvt z)=+P)zDuwFhv4|7Gun?Zk%SInX8`3Bvip140sdyCug+MTTMk(z%OR(!<&a|mo8Bgd zYm_0#l7*O{%@K20j7*a>6~yLl)58bj-ekLSpt57Wmi)3lbRK(TEpo*sCNCskxH5i9 zGBk8D@pkgWabLyBc95)f-X3zLYBl4}CEdfo;hf(ht1rV7;!&f4vz|h(_!&L(Lp|4q z)RMIRnIV~9S*q=4!yi}pHXZ$UNOs43Ru(VRX+85osD29Qzl@B;7T0TXvX9O{dFT$~ z6jk17qm?(bAbgQi)^o=w3+EeQB$GIt#F*51JJMFnaW@9%r4g~kPMVj=fm2t>;Z6~a zF@=_#z~N4Wp136hMfxLJTc?$DokcG|eimd3v^BwYke8fBmoP8aB}l|$#EN+QF!W}8 zH0}iGJ^8*->3y2W#!>YCjyM_qM)a=uKzdgwdRO#ZTVd0?Vsv^R7H754yTYM28ME{b z5y5WJoARLd(dFgS`|V?tRY-4T7JVps)7p{ruJ~Yji~3^3>t{K{{uX1EW~`uZp3KH# zEU)**Ke1MhV{A0u&lU0teIKS6RqgET*S~P=j&CJbpHtq ziGX|+)%-H|)7nUUP7>v8y_;BW*0~Zbatf-Z*?79YuEJ%06#!K_I$^17Cttzh_IiEV z{EAqcbtU_?6@*3fSCjpptn6#%RP@wW^t4tG7eGm5Fe`a8bek%FQeOFAmJc{Nlj5yi z>npGkrFhx39zEA2r|R8qovJsR-el-P>+PhxN`HGu%E;BpUazXkiIm;bRw1}g^w|z< z!A8XV_8;JeTGo*f=xm*>hbe@2pR7xyTVRh}PO6#}yuPrTnoB5jz5wIPVLZfnco0g? z!}}zd%AJRoy2h@v#r!1oQJD-RjQ3+{XHE2nj z)6x8oiTYvqUzMTw{~Wc_;VAwmLyrHig>)h#qw_yi|E2sNS~D}$6AkrTE@p?~|Ilds zPvQvv#|nf0IVcbQ54lXmpCT97K#KoEHvflg{tpTNhZO&leU0F?PG2)eqH23uLk|Ck z%m8nM|0y5-&z3)5K7juz-s1m|#s4AUf9$%^`9DM%xk{h3`QNG2;{TBO9_c-8YFDL^ z{Qt_|mj5Bt@%f+n6#tVkkN@fa#0Aj7e)#c^K_@m8(hw*X*buUZ8*Ny+Bz6#xUYdwd z4tBgmmP`lOTTTlfa3=4>gb0OSjDLntD^izxA_T5wd+(C2ln;C z#j>GZhb->PmKT0e3W|SDfZ_bjUXO&wAYQB6aZ~(kCjRd=1Z)G%?DdrV{RRhNTmh9 z#_q&W%&(XE4|VpVIf?psL0B6=n8mYXe@##uihEN{9(4f0*Ky%u{anI&TT#zhXc`5Y zh7lDv2{f0ENK~6aOPq=i8xQA>U?7|S?3#D2OB#pQvZ_kjmNR7R1L{@!_+z0VFAdIRQ8g8bP(lz;>&e2Qo)pb=1q zwn#~=@}Z=8PDzSU{-*7@OIA0-`3&7ya%4rR{T1z5!jwg>Jzo%sJ(2dHzZLTAlifMY ze7ji-f1o_0X5~Jm_GME}wX7MW+L3aW+*tCyGhbwmyB^&<3#~<2cX zwDp0r9tQnzB-hx{_qRGE(ShcMHWoVm`k?eQJCJ0*YRn5v5D$#q%(ULXxJUR^5p0FK zRu!OE^wH#>WSxb_tFK|S`fia4X;co1yArFof`d8fEaZ5(N_uW%lRDG28cSK097!By zr8^%ybK(N542iNUgmHu4QJcVb?TNwn^VU)D@wBXt7OMey1U7*nPzb?Sjsbx^X-564 z^6Ss8oM1x3(bbScPu(Y!u-oPq)I$@WqREvSFvxU>Pjs#MPf{UMAdXI@i*pvs!t%HZ zHCOCZa%+_5THPlh=KBxNAIFei^sb%o`+0W9a`dynvHyJNV(SySN5<^I?!zrcIzBOF z$b0jP0@FbR@h4Xca0GZi%1wIQV8GZ;JZZ?hU!|v3YUV##FK*D(8;^Or^Tld;;Tj}Z zk}tgG7qVZp%ZqA_H(s!aI0#FtnF+=llTUw0&E!lT;yr%ucpZA`=w~GnpXP_9d^UD}m4QfFtf&&TW5pyPX zqor%)7kWRKqjzFBIKtoHbkJ`Z_eiU-!&1MLo2jp{Q3_ERYLn}+>~_r~A!fAcxxN#fiB z#qUWJzM9XfdVv1$JhqD7tk(CgDRZy!_V{~zZq^lt`{RE^#mkl$f#SCli`aPB=#Os` zcETSQ3#!A57XB0)MeXE#^Ptjw(lq#2nHJ_xX0ejtly)DRg=W8K|2L&^amhF`AnPv( zF%z9jlslS(lUhoqZi$*VT17&o+%co>Wq$x$D*8qfsgiac^AObtr?up$yKUR*{X(t% zs0Axo^syhKD65bEb&qO<4h?3dwhkc&eT|YK6@m_}gYUcbblWA#eGEYMhq&%FpsfUNu)+L&Q}6RzI6{MEYP|CcFL1O5i|*7D8Pt>Z9O-EmQIviMrfPRp z3z{Dg{!$gfxtZOClbs-%`Z;c~T~w9&GiJ8ufF&h0Q!9Apco?l`=Avx=X5-@TNo~C+ zQQNcaw^yHg#B0VOfw;vwG6#mxQym)V-U!Kly2P=9D6`@UISwM( z(cV+HsHg6hHt3qj*SFxWv*Q+y|6_;v0CsCkE2VzsVO!#V@OSp^L>b z)^lI>nHse8KS~sk^*+5??sF_B{7K)0l<9+C5dWPgeMY)yFp!RFY4`J+(|!A%+SiwU zJAL4V{c_}e&Fy1e7@X3(F>OBL-ghY7J2*al#^9A&dcMQO#_C5XpUwBiu9x0@qmldt z&!ZgSo#<6-@zqepgV3rKUn1eXv9qmZV55ALxAnEk57=xdb{B_Q&Dd--u&ipc*4BUb z25N+u%3_hVP9U9(o)q0&nd<2x4WQd&b^>6++Q!HdPJaJlc+_ePfyX!{rQMaB+sB^Y z1&~-({O!v3{U4MM^_N)_aW!tmn5J(TU+|EEtF1*l3i!0o9_zQMe5jRYENGStu*S4Dm*+ zIx2IPAK5P?aGuT_L9gUrHM~}1-v3|LxJk4dF9TSZt4RWU3>?V?sB)-Sjp3sEnP!yG zFU`R8tLJIff73;~{!2zQYb`mE#rltkEp#lHhhF1bq9IDw)qF~J zAPE^8x_bq`gJRCgF>k&TEk{Wl+m2731g=6xUtT$W%JH9QIW~$)*3Al?0=5;k6*Quh z%TBbEY^zR{R-wqS7D9<9{j^F}qy_e0#=r$tpi0C5hQ&NW9~= zzKCByCo?9sGBfnaV?xMVD>J729mw+WX(?ORD4s%VrF?zDP%<_+-baH=^FF#RRiQpQ zzD5ZT+VD>Wo^y@~dg6$Cg>%Y-0xHqxANmY~$2;7|11NVigyQOy@2-?*Cw+WCWcQ0& zy4FS4-itZAVQ{O}ucv!ocvbc6CC1~(W!g;l?t4AGVc*l~r#OtRRvWw#LtyZWu7a;N z+SWjcAtR~5cll;3$JO-?K25J;_Lo>oA$kp0kJK;6#=LeMVFkdlkIx^BcknU zwPcfL@aEu*!Py>x>}GTc8T$661)wpvH>8kxM`Ba8GKyrsekNuT zmKD>SdQ>8k8M%7dxqlq|DO(oHVW^*ab3dDl+FJmzQ&Gv+N_gG*xUxOs<2e239|(?U zYOzl&6MM4r@m|VelmEjg=7kVf)_U9fR1!fZ8kqg63r^7rAI`c_-z(`7P}suKYJ=ju zt>z+ng@~+lr&B45nwMgA$w>?!N52No6TK+9RVf)Y;1O0RS-0)^EhX!AssWGKuOZQT z)(}TM@fA;H!6+)MLJfF&fsLA%j?es7E--!i3WlZDMk?b}7Fm>Tze^1G_g7(C;pK$K z&pH;)+$)Y&ARU^qmCwy@GK`2M2D})|KHTSD`lU2$R`6VD+c`9%OhBd~0*cLN?wQBRlszJbEp{2U7QbL##_0o*#6};C;%khWr>?U&1(f1i z8I@DY{z6Xq5TMm*#V>%=4{S!7v#E1<)zp3jrGi)Cic^IvPJt`bmTioPEyk$GGDby? z-(^5n0rONSeit^WpzYR^4DfUO{z0uc%4p&PToVY`2Yp$@>6mt2PF4{aId=OcFC;us zJc($et36!&gFQ0RgZKevUg5~WnKI^N-=k0I)~mtdtl;9*@?)}KuI#@q?0!0!Y8K$gWSvn*Cw$YPabtIV>PtfjS{gvCAt@QU(@jUS+Q96MpLl94A*F!zb+ zG^cE_Mr%DbPqEiG{B*g+Pcs8HJLUQTOW8Rmw>U#THJ-$uJocyA`IW@*jKcZeS$T5^ z-rR-{A!~$%6)|GyH3MxX+euZMQyp zmk&;q^N@}0&p*Yn$LJts9G01T&_QIGOL>0W$L-wDLq#p&xy)#CrMF0BBWmm(br2gHcEKBfvr8IBB4=w zi}KD%WNLuVLdL189#Bm^bRDW5F+r#&LWXMd3HI2f5E=GepDVM>z`UhszM)KV%M6aF z!jN&2ln95+V_tIS1A z5Perz-!9jD{(wCfkv($Dnv0lby9}d(avE4BZhw|A(Nvk@v^{HqDE2ep%VZx8RZvka zO2U(tNykd=#D~B|OS|ZMn$7zlbYfEwC$xQ>negA@eEvJee3LrH$_EJb%qy`YwfRFL zi~(yF>~cL7__N{ev{cS}%zl*+Ro{dsb_IR^SNlq9jkOve~%JOzih3 zmzWfiF#Q~IbnKGiyRAYT=HZH=0yvE6QA%p2QiVoMQL7?=&x>nJtYr_o#B++bxr$+H z`RmpI|3GelpVF%3A_#GDQj+MCAQH8i{bV(5VQ-*y0_Qu;Cx6Pb9MDtRj*&+^sqg!>pbJ(I zg{i8^onQ6zEh3nC=U3VBNBJQExg!Who`<2%!;vLWvj+)$PtJbH!0*@eJQHL|jzE)R z?vhQf7!hBxX_%8i_70uKvB>4SEbPB3*nh5X=-lGxj8z;bQPTApM!oj2He}QbGH&QI z&n@2YtA`$XXhQi;b&%A{3$rKb93yw}Kp3Z@7n8u)xXX0Db&i!9JbqR3@v@V!FaQ0^ zi11+Xi*mTsi(lb>4o9dU2b_Ua9?f)SoM-Gr`8f+N# z)AAz{whJ1dqszQpa@YEtlXwQ@B%Vg|zv#vjn?^ZSij#O|+*O>37PA+1ai)Ag4)u|P zcxFg3O`N(+FdIj6HJXnTydbzOeuvX{7pvk%J&4EF5uEpn$slK(vyHh%@Zy4Hz+?)&4pY%5O}Oni2eU`gP!&t9>| zR^p_c@eIB*+>C*O^J$Pre{v+=5KvhRVmrQ+@l-Eq)42T`khO=V%Vu zyzC;;SE8;sZ-zh}PO0H15^a`kWzDAu!i1yorX@QF5Dxd&CV@dRVM7b8=y3zHr{_$9jK2at!Wz@ue5ihd0fPpDcxWvYB5P98n^e zIy%4iIQeb(d}QHEz?ht#@3&$Rq(L?hrU_q!tE_S)gX1KT+L~V&;}>Q=Wc~_CO*bw}Wl2J%=wzG+X<;HP#2gJh$gC_}icSX4P;lh_F39}P-NKAm zx5p`T-&2+Vj=4RrKtXO6d9+VV<+?J)1-eBf^YmYQC=&5~XGh2tJC{;qt*+Xjl)&#) zv#%jFr^2kD$C6c4sk#bf84|D1WbE%;#S*Z(&QwNJnO+BiE-RmFY+%9l0SL zL37rmBR7lYjMS$i^CZ`z^x95TeR}Qv^83Jp@*BA`z4l&}_#O4QB)xX6di z(iip(*4@xbrE7LOsiDd*U#;p@l_s^|UM*OzK*HP`#DR;0N!)fa(ca*t|5YK{uF;yXJ!59DJ5NX{arD%T*wQakm1{+O$_> zY&)I>-CTylhU$4lO#_Pg1uH>s9b}QW$QZr~D?(iiMhhC^i;aJj3NgZOX*T{t8p$E@ zz82##L3lAu>wK)2J6FtWBWl1xm2sr=F*O&x(p- zFF&A0CK51v9Zqxe^&`9zue+YqCBX(LF)ZE`YyaVLWs@6fljw34snud_JuR*j+A1#Q zGV1_=ZYTIyVvcmix{OLq*D|V5&KB%uIJm;1R?iLC#~vT{EPkIfRT` z*4!s8=3S_33%>#Np7S5ndz@H&G2w;hlv~R`G~tE4q>ICJOV^edW~TJ83&)Y-%Wg*R zH!ki$heApr3`MGG?PqbPUMf?tk}hIrZ%{vSi}+{xKzF`9FiI}*9cK!1!G%sfjz4i~ zweuawrC7P_*(SyZAs8bs;9?=0#>xacfL=TT(1Pj|Pz5PA05ow#WzQB?CjKQ~+HAJw zkmkaqxS6a6YhDR!0e`NQf}fuejn7Pe6B=f>CbuIu80M^o?WXn)j16MgS?7Bs6$2%e zs5}NoxU8+LlZvBy?iMolC`N!O6PuLbhX4H8e1EBTgugU@M|B_ETLX0@_Hde7sZ;~n z*Z*TPf&)WOI)m7Jj{FiYz@AOWt%Jiz3 zlsCghi4KzqDjAztSa%!SP}xR_d0JGoU6cw91r&CnFwwB4BA1E^m6Vd@baxwWsF4CcPS-%lUg&gXew@6Y@5{`@7Rxq&efGCi1&5T zvHiZT6Zm~ybRgf?MI!mWF8Xw?_jQrdcwZN3W_w@P|Ka^kG=X1w6z}_4wqn-z{ha-4 zx)F5P`+mIi&hh`h-uFZIbe13a{Z8~VAM}1FU;WiS^L;;b!)mtoJAG~=^*Frmhkn7_ zc)t?~t@r)Z)2GJ!ekebB-_POs$@l$SJx5;jki2-m6SdC&@%>H|?acT6_-Fur#QUA7 z{~I@`=m*c~T|Z{;qva*7M=Db3d!1}rk&Y+*WLNFeK=d*S`dvbLb)xE{|EzsF{1=?t z>5DF3=wkJ@E$Z*SigVVi-IPGz0qGCo_L=>jpN$*TPXOXgKkMl>9G(63|KWZWWf8v2 zo4wq%<#;TF)~v;dNm+I92?_vTt9f!xQ`(@C=9-{s#`c?wzH0 zO`Z;(OpKo7q$?mw?SJ!NA_@1echM6+v{O5fbnEw~=~>7P;ioX~s+T)m;oA3{%l9w( z^CJCu*Zkv3nCG75zeHY(;oq9EbiCr_{iYwQ>bv*5banjZ(gWe~`uowY%QoO$3aJ&B z(rM9nq!Ztt(Kq%Dw-2Fy=o@hAZ1|=)le$)BgZhb*hMx}8XAQTH(BEoiPTv#$G3uY> z_^JwzR^V&KWc^T`*&b?nWwpmn)gJiWN>ZjI-F5|?OV=D+pxz()b~ZgJI&0;(8cx>g z{gi81Kd{`af9kTS^t8|IKcW&O{h>ZKh*oIoqks0}8FrM!7ssNUl18&Ij1Z*z7q_E0 z)<^1Db?Ov!D>;6v6kwf&h1r`ZG&#k$mOlH!=vYJyUkATJ&5M68Hwyepj7y=vSvx(Q zxZF3(E(R3?WtbBCt8teF%R?#xmVeX&f$(L?_~oNm(yf1`(+Iq;r@y?mdu(;`nb&;D z;oC7HJ8@;`AKn%6(o?{QdC#kR4r0CN>zo%lp2N2^Gb- zE4Sd)T?gIt%x;W=|EcO2_s7Tq74d#_h5h%B(BIq@ri-6<`F=uwzDs|uq(9HmpSk)f z%}3Qwq9?l6g=qgFO@FjHtfFpo3Vr>(&b@z~Xa7d8{w{s>y>fL{)zDJp$l!QvuQxE$6V07O26Af7`4ZZqJ7J=19x8A7C5EQBK(12I} z1`v{Ll+Qrfc=RG=GvaWS3FdHhqDl6t0&esgFJh(j;mHq)=dV&6@2^dp{qd_Ak3{h^ zQ#5q3dZI#S=solfF?&&K|K3g)Jx^kMVZ4u?0HGq&p70#%0s5WaIR?Kyl#$T%q?$_q zd7B!#$Iyz5Mz#83hn3-eI&mfIle8G!KR=VK_T7elhX3~8r^fVN>L7Qk4sy5ZAa|?o zao-3j_THvWBs96C*!WpvJ&T>8ec z@8HCpkyLvfea#;Jk*cPYTg(|Qlg>DqJj2lpkw#~(*psLf`f>sfSeTb&iw9`oY8wBC zcD&Kgkad=#tw@yIP)1vK=t7bH&80M62$;9YM~#|8M}_+R^ho==s>`;6Zd zrPfIe=hPeJTc>ZJ0@h3)ODEiuY1xuqaUq=q0`FF%(cPg>Q@N6{Av{O_96u2?U!yWn zGi0K}O zt)M4HjjLG8N?kP{wH1ExbDDh3wDQj4%Pt{X%`D;JR(3TfB-NflXUC<}O&tN$%A673 zUPLt?+eHPyti^H1ZqFxtbkYC6%7J52HE~!DDzaJ2Fh{K%bq>^FYo>ikjbn5+q>-0S zapUBRU(CVNff;nZq=j6dW>-RXKi$?zO}cd+om-Z^VcahWt3lN1PO5F7%I%~V7wn&( zhtafPztMw@+|*O6IXb--0UgjEGd{!fp;qtCq0eTy#qk7X>w3~ne^G&Q>Yh%j#S>4| zthq~e(eH^jt(ndqOsc^vG_rN$T9!5lybSGr_j%ko)qRkcj11`a!r3@mcWNp0Of)%7 zA?V$t%b|x}lBgDP!_O?~r(ZbFj&DAeatBZ!Hsxf5yh{e@iH@c#r?a1-4~^X}*f@9$ zdAD-R%a}Ssp7e7dxC%e|d{rqq&zh&^)$H}ehp7RLMxj?!Pyw=^!uROg?>4SVXp5SC zvcPgUm#!%|Lj(GmX@XOFMYi2+HroT?-U-e+4dH`0QflturG^2V;(``7nsIzf{ zCv+0cr+7d%XBFKqNe$}Xqj%y_cg!VimT}spuSl#D@uq2c0^a1>uTH@$_p5WTx+9b` z&pZ|D|5-)nAH3bhc}BMHp3?ngx+6?yGJ4O$$xEL$XXaJ|uL)ER^t!>Kmg%$-@;uk1wce18nP4-mQTj=Y!=}T#4 zd&7KviXMAXPgc>x8_|RGmM$aL?A=>#q8I$SR_Q;d{!fo()bx3l(GCFX%4ZF|3M~8E z9zIbo`Eb|tyijtJ`w7GzT!R;^aWSy#Vm)O)P1)bg;>)wrcj_2b)5 zzhFY0+)ww_@yysd_U&ErKKZ6+aQt=j<8ZgoGkTOD@qc)~-(|R!f`_#{ zbbpLy?=^V8lAc1k&tR!f#@DXXV|2@hhT3|%z#=DW!mliety!(F zqI}k@UPr$5mvK*sMlp@Q^kCxiE7$42P$quU#ORvpZ{ztYdPxjFU*)CH&9YF;2M&Hb zdy+ey^BtAcuBl7@w(EcMsEY@vnD|lZ;2Ns4I0CxaO%F`5A+3^An{w_a@==dZ;dxLh z3+;%id(p1)XQ=k-UJQK_qXpwWyMN26C??(5+Mhu41I-Soa%x&S8_;uNp6r*|H5D$I zo*bo`Q15YDL_Nsyq!KyP`@babe>EF}#C-S)<5#`Gz|)lc#l&Z7-uK*?Np}+l{^s(L zW4ZxHFVj?i`_$jb>hBcwcZT{qQ~jMoe>eA&(a-761N7%t^yfkP^C# zP2}#qpD&@oMo08ehWM&dwHH-1zAxSHGDReCT+dkcSK+-HlmSX7+S_SQA`-|9%+Ki& zk6iEm`PltI-{t3eVy^m?CG;)+sdR}?Ph91C=@Ocf^g$|p@ai+bhvfyg;a$$_xu(z4 zL%HI={Rs$!78q{In;tru8MLFkF{&19lM_MH-GN>E@$E9bQvy$s;4vrf{-F8&|NdYK zU2V~$RQMV{e}9qj#Xf!CPv7ka)EE2o#ebUmZof!93XrqEr~pr*kP{A`9+vUc2N67; zEu#mn=;N;<_|JP{AEysg@I`o^1u7EHC!jRu`!4VTZ1cec{O}i@VgA3BZEtQ#f}=rc zkw>sjBHG4x-oT=>(w~jPPrJ@igX@H)o-WSio){m_iw^2D|!+oR!UEY zNJ*(JnMaaj$}38Dh-kJP-u3D~XfG4;xzs80Qf`JQnMD6KMW_;a|yjtTHlQ`#R}hy=fUmI+tuf(Gd{1r*z=ha=xYsn|KVM%^? zd)6vW+LWL_NQZO>;5Pba?}CJbiF+5g>>R4?9I&)eC9GcN3LU@6rH2f|E9oDR`@q1` zD4h)x_GHo1J?edF^p>>h9FMEwJyW&xX?l-p;?n4ztqbUTXJ7M0yF8d$qn$$PGvh0-2%TSCLZ@`W+A8p-QO~pBd zignUf|3#-(EHd2VQt$1}uU(V<_J)du32R*EoYI}Je$V;Q^^W>kcD{1I`GR#z>CLq_ zq|TBX?YoVlKC%xXw?i8#w+h!e=g*d#xnA^Tzii}s6;=QA4eE)5D_yH`KbuN;Z`Q=s4uAJrJ7rXo5CLV@%OxNp+@v(1o=JD&}uEKYGoc z4c!UXII3&F@;83H=`ThHkrd%CRpuNuWs!iSolMgtZDyJ-X^3ftq(w|KCCy=)C24?Z zj-+0uxspzN-K?KHNr#!{OWMb@K+#^)W4%bm}^@9zv4pOe-ZFVp=6>lxel3T}*2wZDm?7X)V)6Nz0iwOIpmdMbdnx zt&(Ok-6m-&(>6)HOgkiSCHK z>DV{SI`c~!W11pqAJbGxyO{U6S@N?UuBSX^*6hOnW7*WV%CAjcHWU zVy1nP2ATFtn#XiN(oCj?PNMGX)DtSNvoJnN?OKrO41-x*STVT&SC17G>xf8QXf;Vq*LEDYsV+4 z&NNxl7*oHbeN0m%?Pi)PX&cjkr1ebGB&}qcE~&;eL(&4KnUZEP&5|_0G)Gb&(_Bg2 zO!Fk2EH~>cUs9cEfuu2}K}n-b3nlGjS|n);(_%^MnU+Xe$+T3`GNziO#Z1d24Kgj4 zG?!^e(oCk6k_MPoN$O`>EvbiTt)x@mG3&Qp(lMrul8!KKmUNJ5i==%_TP5vbx=qqH zrfrfoGVPGGl4+-;8q+RG3z>FHn#;6D(sZW1lKPqMkkrjID(U#Q&6@0!beL(sr2R|> zB<*23C}|thAxRsV#w4v|IxJ}^(-BF7Oh+ZnVX8}-#&k^5WTxYix|mK#I`%EIb|xi_ zF`bgMkEts|%)i}C-I8u&>XEdbsaMhvQ=g&g443F4p@v^M06`CpM-Qb zPTbP5)(ic-Ug*Snp+E_Z`$s|Pv)PnI3MDOPS|n)!(_+xs%V+s74H?}{3(`TPge-Wy zQY!PzF=Y`=(ln-JlKPpJOX^`7l5~R0S}ExW(<;!}BCyKeXlAQb(m|w}^j!Yhxopus zmi;8#55vA**f+wS@89*AvPiR}T})e!G(ZC+RTLWJw2^ z`X%jSnj&d8(^N^@m)xpDBwJNZQ3TC}|7RLP@Kb z7D-ylv{=#trX`YQGA)%fg{dZ~n`xP(W8XJNNV%j#Ohc0HU|K0@2h%D^8<|#18e&>2 zX))7!N%NRCN}A5JS<+;tEs{=s&y1~A(ov?{BpqPdCTS1T4oSB$?Ub~ZX_usBOuHp5 zWZENX4%1#q159^F>SY?0bb`l0pQOV~`$1X)ARHi;jeN2-jbuslzI(oA?8d4Gq?xREytc@EgQhIfDrpAOZIb$! zwn;k9FKH>$0Z9v)4oaHGbV$-nrZGtaOot^+W;y~oR}EY9Z|$vSydgS> zjFJu4uP$>fF=df4Neh^cOPa%ULef;GlahLvPDwh>F}RkBd3}VbThc+M9!YmF^@1K= z3s(H)^=ACVbP(~8n&VHF`Q@0hh+onarYVwon5Igq-)=aH1SIWenkH!{({xGenPx~@ z&NNffVy0P=<}l5XG{7`hQZLgyNhfYIqsW(Zlxcya{Y-rok`^*8 zku;NOsietFHAyGx%qYqv9bsB7=>XG^q&-Y4C2eC`C22j=YDq&(Yb7maS}$on(?&@% zm^MqA!n8$FH`7*0$7{`c*d}R=X`7^dOgkj)V%jNbE7LAXtC@C7TE?_T(n6-alIAeo zA!&eVR8lX~K1nBP%!vCX9cDTpX&=);NxPU1N!r3RCTTU(VM#TnBa#*}9hEePsV-@N z>6oNGrsI-M@(ep6=?K$FN&A^jN!rcSl__T97N%~{nKP_4zxJ4up|*_EG-Z(#Np~S3BE=>*qczN8~e3nU$28U&r$c33fL-mO&6eE+79WOLlV z2||bGK{M$fQlx~&{hMOxG1ZhsN@n+H_ZQBu75SBl{4|+gHRo3*sm8Q?b}zYv%oQLUCbw9XD(kRnvNjsU=O4`h{UeZdYjgpoyZI(2TX^W)kOj{*Q zX1YyM7t=OL$GO%zBpqbh2|BZnSoN2~^%tOnNEc~&e0R@g$1PylYiwT#`yOH6dsOx< zY+nWY9l}0(RQ7#MX8U*1L8MRE_rsp=KeU*#$bh6(Oa~<`WjZ8j0n?bI=}db}>zrw3TT< z(rTt@l4?xTB@HsokTi#BrlbL;S(5sg=14mEV>9AhNk^IHNjktZU(#Nt1(LQg4NBU` zv{2Fz(;`Vrm=;T#&$L9+Os1uhrZCkc^)M}yblmK+k#b3gnT90oV_GR`H`6LfTbWi% zTFbOn(lVy?k`^&-lr)!VGwAH2QmaBI=ksw337zL-txew;lGm zHGapS!})%Q4k8^&Xq@jm>3ELPi}P*rPfU9k9Ynf>efLq>SKVpam(W3^N7(nmp6Ba4 zQx@4FX&Te0q+X_dl8&1Njr2=8$aFx`Zl;5hwlE!%G{iI}X(7{LNpqNvNE%=|3Oaj# zvD&N43{GpMgNRNRJb#bPZ7td>wZ*J&FC9e2h5ZEVxxOd34kslYW;!KlA5+)oKDzt` z>^~F!-DJV#_snfg>(^4)@p$nnGw1UH@^jx|pIh}e$o`}7pDg_Q;h*F0Hf50%N!ysF zO4`gc0QwQ_SAVxz|7CO#Nh1r6KV9Y-G-Z(tNi&&dO6q5tC8?Wfj-+FE8SW#wlE#?k zNg8FEFKH*!0!f>h1|_XzS}17=(;`XpnHEc$!L&ruWTvH(PI5bFlIl#$Kxc0q>R%nG zF799DB%LuI?~tE|4*T5dU(Ky%`&QCHq*4iu`LqiDxqlU#vPiY0c}#01O=DUwsfTH! zq+>rd+qYTLL8dK|_AqUgbQ{xclGZY9leC;^hopH-J0%S;?UK~Tv|G|C?z=sbjxg;7 zovS5{Rj<_^p?l2sD5QhP4zlF&7L|EtnzBfrqyeV=l6sg9NIJ&tF(~OU(;-O*nZ_jD z!E{*CPNpNEb49Jyqfp#`M@c%P|F+7{^}{~5>MLdjr}fc6WK0Q-{yPr;+<&`FS!4qA z@KRa%xqoKX{}}R{6!}ffZaJgde7FsE+@G?PnLOWG`A0ebZseaM^3Od|{+4~=y=Hyo&_N_m*yqEZ z+b3YkA_bCqnFb}D*k)uIDU@`WX_2ITOp7J$Vp<|;3)50btC(t%mNG4qw18>3q?t@Z zlBO`Nl+?|%O42d25hB%+4l=C;o!LXUrHy~JGE^nEcRd+6=MSsBy38uqTInFtsD#G+ z&@6q|a?7;L?pupWf30)-%e>F*AE|T@*(Ut8Nq=5b7U__5l1tGksm`=Z(m|%(pfhVr z3&H`{PY+4vs2|V$W_c%2-d-g%>Su@aHp=CVN;<%_Ptsnd{gQSt9gwt{>7b;QOot>b zWf}vW8L_i}Snc1_ZpOEb4kE*3$@9sG%)8o@MMfnpW2#FUWI85k2Gem#{Y)n$bupck zbmRe}sF5j2qfA{{Vt(ml>Xx*bsYlXkrd~-kranmvm?le_$95|DMYc(*F>RAHpJ|7rX-qpoXV!xizqi9I&p7ELU8LpsyJxfGScq|1~=c1YU7G%9Ho(>_Uynf6PX%XC1}G^T@~Gh;^#R{8UOVaA_M2azGtbNn%x zW3nlW3`;u2en#fNS)^Ig2`)#Aq&m}9Nn=d6N!rh}4Rr1@TkSE(66sYv|myW(*a2*yUbBKDCsEE zAxQ_A#w6`!IxJ}$(-BDtVya78!gNg1e5T`)W-*z$`q&}uol1~2CtOwUc z)GmDf(3!d=jWP8|+RxN0X)jZsq@7HYC2eKum$aT~ilmiHQzg}y1|%(FnkH#J({xF* zm}W?t#xzq>KhrEp-Ar>N9siA4zqyhQGtHBc(`rd; znbu0GF|C(0$g~l3W+`Wx?~@-g=PMT-M4HKp%iD6K9PIgy?bBi3D(tr%m3=we7s0+w z*moS2{rJOX`G@Hs(kbk_V9)bGpDBxUOWMV>N75Fiy^>Zj-63fy)2O6*O#37aFzuJr z#dJW@VY6BygOc_z9g?(>X$*AsHn-X<&~4V2n+_twWWnt{GPku@9~85F9_&Yjy?#{o zBfmHO57I$oOxTaZp4)4ODT_=<+R1cM(pIKZl2$QwWs7`En7Sp+XX=qOlc`tI6sA5& zT}+cD)q9L!BYsH-nWjkE%QRKePNo4#TbZUwTFo?FQjKYbq(P>cl4dc@k~D>Bj-)Q8 zxsr}PYDSzV=@8R=Nux{)B<*4vl(dy;p`^7;izF>)S}bWX(-KMZnU+eL$yAdxm1&uz zUZ&-ePCjDRLrBt5rj?QoGOdzy2h(avJDJu>+QPJ6(rTuSl9n-Tmb8dzi==r>TP4k4 zx=qp)rfrgXn081y@jJ72Iwc)p+9hc}({4$-nf6H9%CuL~YNk6R)tE*l4KnSMG>d7! zq^V2?B=s;IlyuyjHX}ol#+b$=jWQjUw3F$Gq|Ho6C9PztgU)tFu+9g*KNwA+P0|b& z86!QP560)R#VW$G&tm%k9YiLC{p3;E7qfjn?5BjiD`$?fJN(zPeL3viWW(k69F=_! z+qc2qE9`woWk1aJ{jg6K_Wq-?FL}(Y|2#T~qzL;|*z@@?!<0n=lKPpZN$O^rF6o3> z&`1X8%s!!oV8r)-GfCpSKc>~o&$ABu-0BZ`+s$~==pd4#gvR}|T=?a9yrwLYC+T>v zVI0Yqbcktzq&t`fCGB8ZC}|_pB1uC`izO{)S|VvK(^5&(m}-)GnU+a9&aF}|=@8S9 zq`gclCEdof3Up=*+G~3pX(gy&ZqI5mn9-i)^7GomKd+Ua*B|z|)!w6KLuvzb5NT9G z^ZQ~tw%WVLlto%3-Nv*P^hgnDQ;>2z+mxGG@85R*(d>VXbP#D%LZdt#(sPw5i*!n= zG3}BxpJ}(GX-s=0O=j8)I(I}`AA}sw4iY=t$Ex4P$IW;`bP$Oup%G7?^jmDoBK?x) zF&&UJo#~*YKBhyGPH;RiNn=chL1&9n>p*rK-w4U(h_7IW8DAzHL`Id+h)^n_%4(0%U1oU)=pf>{7=an(bd70q;94`Ne7=a%TOq32h$=+E14EcTEw(O(k!N> zlKPoyl1@HhmZ412L8j%Bb}|h~TFHD;Ci&qdlj;^|R?| z`i+#NrqIU{vftbM*v4y=H~I%Z&|#jYSFhFPQMrsV(T}Y}AII;XkiT~io@M-CO7#by z4J}N3c58A%?TZy}FMY8(C*iY6ckN#C(pfKr->!Q%srDzSF4xw=1@v)J?QJ+NSTJ4v z{&^LPsz1o6@NDR%-#v9*v#0v~^EaPWf5tDU#_G@brTY6<>hDhV_pj;i_^YI>{@{Ym zpR7NlL($pQd*?&#s;*j)kXdo|T-v?!ku&|IjU`@M@u|bbd*`DVB%7%|zv44ey>~te zO}e?{Th7@#ALS*<+)5+I>Wf{uB&=9ieX+6#`Sl^ySk#xy&)V?;1S+r4srp$zM{6dv z>@o%Qi|`2)sz9VjxZhChX2oKB0)+~VoIKxdC@d%V00LD-A)mgX!*o)=2uQ2`EB(^) zIrMvJS~(rH|Av@;8h$?Q0=%%Zrq9Er{Vg(b(=YU-7%%k1x3>B8emx2Zh2CAi7z(Wb z`R%74G}1DWUl;Ow2FVm8A4KwTO45(VamEjE#!32HzcowW4ybvNSCdk^S^Y4pefk%= ztWZF;iTxzs0AIs&)ZR@@{|b^(B!7owE|Q%{K7!{U|XNqEG*onKy+6sx>3; zd9W^rbq}oH`5)r2D(LrYouvQTw2rm|YK1Ui<}CO(`1Zt+K!wqcINa)&gpdHJ(W7h=y7B;@c|`UHd1m2lCL4ziBF$E@-IlXBKahe`zT32YsEFalbBi4H`&pH zYSnPns^nH>MQ!;d4;zh64Fjr`LH-S=d>6}4H{Lafm~z$Y!&Fy|wnLy5!SY)&FK=OGcpG4A+ zV4K@aYheTafHR^3OCc#@jS&~y2A)DRk5cVZ-T(+DpZ@l z&Cvyc)=B323-3Cr;qPqe(_enV3Jg?hhP>S=|A#G~H02Z%s8$L27N`85EKkyxJ;{{} zs1-xK+^HUAwNL-jPOB`ST0Z0_JLRw0@?uj?WdYSPAb^5;lKk&GkRh-3$n|3>mABu;rhO8nr-SfocVi`<(JOS)Qb?Fy+y9KrIXEe@sx(0w~&li0LmO z=|^%L$vz~#NWO*S?~$B*iIQ(4`AbTQPWBEl6-SD(y&0X%+}f;`NcD@L&|+k-e^Z%S zF-_Q}YUeXd&0Wvtxe*F&2TU`ZrvGKr(>1jz8m8ukXyarEfz|=bci*AnH>3FP64PI& zq?p>@>E*jNQJd zf3Mmw#*0-bv__bwJ5A@YDJ_Uv%xh+!Z5nNdK&yo1+w`;NVwO*2OPc@fGJxggL2u)Nx7xqvNGG_~~JbXf1Jg5| zrpK_UPrvRdtBj!9#0w-JA9vJ%hviB7-o1uA+7772px#Ytt&fh{7ZTGSRmRr(`B*ki zF?JxLnC9+7bId@Ybs?upr{CjjQ?)q}rsl>(bI3!XwZQaZ6ru`+@DkHM>ny|~&M8UH z+{Y0BYNarC!8jkr$HVxo|2Rf{5*yR`)-?otFIfc#)CR~zzZ}LrFiwVXmNK@gelZ*S^qcL1 zgKEvNUI^<-Sf32*58iZyeTr>8XvYDnmB9L0CAY%%v;1^pXCN9Yi?-F67n0F-2()}y z-a(dHCj6dCOuyCX_cYGPr}x^W2Gvqvz1r#bbX)$kT})7I>Uoj};7q5Z_7r0JVkG;K zJOjxENOmFlF(lu6gOV*so{6MRNpbc{C1x&>)Mhw@Xl{fv&La?L)nu+egpA6N(Z`X| z{VF4?VLrhb(e-1$(H*HrfojFDE{AnKtj~h=SDn@Ywx+Ytz2;QbYS%P%HYl_-sqatV@8 zAQ?n59m$7~%tG=rNZyZR3X-2ivKdJ?lIJ3M3ngp%GI+6*K}=P1l75O=JJEJPZS*+` zX|+;Y{q8(grx-i%&?x5aJ9B=4LhFaAAAWo2sQr9m`a&ezkX(x72M19MYv^Ti#&mzd zECy9As8)~6o>g+I92c;h?sr(F2Gq)-zSpV#9II))J7DzyP^}R1Z#(4|vOLAuW`iKj zEjH#%2!)mj)1_pprO;7(7BM}bajs7!OH^TZ7Scj1;L-JB2tB?#LnTzDN zoOyqqn3;EtnKv~CsFs7gFM)Lc)|bKhTqHe6egVl;m6_GDd7N32{;pLAfZEuzl-JvF zgk?4Ca#qv)`kd8NpxO}Rdz|tWw)_fHP9+7^c0k@ja;=k&+Ak-j*CE-AWImENsLZUA zUcs52Zfrk6ySwPwWouG}K&wK&InH8yku81t*X&Y*YNe1bg5MzgeuMd1S!cm|9ju>4G8M@pBzI6!%pO;9W=Z-dhK!O$+W|E<^7;{s z$DStRt6}^@Wo!-7YuMPQ-(?!p`2kdmk&PZya;rv*ZTT-vITajKi$eZ!r+hujlk~@| zq5*0hP`~ppNB7^rY8vl$SwOXV$orh~jkf%mKUDW}jZb+jE&DEeF=^unxew z4Ayrd=|=KfNY)}bwvUqEMzR9Q7?R&X^6NBa&}YvZgPSPsx?U%pvantJSKYS}NJ- zJC)q(kl$l@lD^oKN815457c+S*Ti1(^?hRct;*Qy{6Ao08n31?RVS!6Og8#zSoguY z3f6f}>zi!r)9jLhYTdA2tmIZnZ)SOtzQigipw;EKQA^7?sF+GN4F_P6tK21q6 zoAh3NY)@(<;<+s&g?`x4p7a5%&vs>#8YHl2kT3a zj3Id&lIJ4XkL2x0rXtymWId86AlZs!1CsM7Deg6GC8pZ?bmNgOoO3ei*#_&J1A$gc z=6e4>D5G*@6h=ndDJjN9BWFZcevg^!)GRwAYE&q+0_1eFGPRneiA{a_=zgoefofTh zf5j>P5z9|Eo?1eY%_o+Og*gOT0G5kUWG{;RV`BOOBq#bP*^K0Sf2ZUyl6N4fQ&KE& zenL#uOp2x+eu5kG!6$R6356CVd;LM=)QOz#L{9gqoUA_HV&|kDlR{4BBU0vi4hpRW zIbDmKYLU}j$f*#?G9>RtaygR4Nd6Sb&nZ9FlB|`OIj=QZ-5XHLMb;jrwrc$zR;L&b zOQBTegHmREP-tl|eQt#Oy5aX{#PlbT)b~*G=SV(`WIvMIkZeP;8_9c-yaUM=B=1A= zRwS#CydTLeNR}YkhGZ#{K_nkQat)F>NVX%n0?9NaBS>CI$(p`&p0+xOnbX!8_8qQ`D^O@v$mv4lREnH_i=5J&IdySP zN&1skZvfN^Vf?|X2;b@r53-uBe-0R9kcKR%mIL{-B-hg5>mg$L4kVM2d>F|GRc6*g zt(!BWuEh@(wb5Ncb5fz@3KScbMz7hkA-v}rddNX*p|6Rp=QVohQ_}Lo5A+O#^*oj9 zfHAjdqht{2RYK!=svUG}Jx|q->`-@6NxPZ$fzI~ai21n1fR+M3{QOA2ax-gr3b{O4 zbPyR(LZdu`NAh9C)5rE*upbikG1&9-udSvmGAwB=(-BF_n2v(Z9;M~qKWx_LB>d}S z!Oy3S$vk76=lJY-TKSc5e))6|nGpF+%KS1+S!C)X@*Cv*x{;sjQoDR^I=1Skne+2V z8e-}NoxLWE7T3lg<@WX|H?y{P;1#pJJaiCARzjn_{YUa))lUoCSHV6-*r&pt+gmeb zk$|LyOw%OIVVVv)dz6-c-4tv6bP&lP3vTaBnP(^GnKgT!R({E^n)TtLgGi3ZFL!oJ zqrNTs0=7?weV(w-KPvku+qc2KK-dRi&-K}8$|8l5mN6|lk}s6lD)0E;%y@_CAW|&+ zmB^g?Oj)E<(oUwDq|HprB&}jvE@=tVkfeD`D7b;wOot>bXBq>Y*;nR%-m>Q6Nix6_m)?pKADE)!x~TcU<@DgeMbnF8^axvU zdNEXZ7&A1gp2IXA*!=(J3C!<&7Ym*vK7qN?EGE}$h1Xai{3U{Nak0I|Y2+^vgkf4# zcqtywqY3rJf#VJ?+?y9T&b5^ewb&@Fs$M%p%cv+Fwf~OJgZf`6DK4oVAy(m`lA)DO zHA)L7ik}{aG51rI(C-M_SB#V1-HOnRLr|B)t1`qfr% z#0OdzEN*jJj7tlOj~<6JX9RqrwZLSx)8s9uNu6mzZGca-N|>ZNP2QF!N&0TnB-)M- zv{G2SiANRl>8Sl3V*1~ZOha-4$w4H&Nd6beU6d4~0$V=yG{$7;1k!Y_Wjo z4P^m;cf!G?SqULuQ%8Uty43yy5A8pgp-D1750golGO2qb>9*f5rHB2G$w>`)bB+yp zau$W$ISVU1HTx23-bkqUSIvis@CF}Aw|<|bz2g(d`@-)neR0WnlXpSg)1k$6(a;H7 z7hdG4IIdWu!c+Y5`6Q~T3i#(I-TF8>RVd)=?I$H#V&{A!MkOXw zbNEzq9BVX3_RE`J%YHej?lzJnP*a{md58dyLx4Nr@mJrl1H>MI_?_p;0Cye(We=1$ z2_<#}#J>Th73EGpl&w&%7RoLtFC`_SSdet7N^EI}|L{T<( zAvetrhuleZ?@&9P6QYi7g;4X9d#5T}KjnkzOW*f(yLPa3BL3)S53k2wls;2IQa*I%67e#y{lvW{j`VeyqlvfDl<4|7U^nMDIRZyNOl-PC=KhEhr3Cc1k z|9hPs5q4z6|Nfc7y%$0GtWaXJM*J}-?ar&lb`Z)3gc6%I;!RN6u^$ibxlrCHl-Q>c zzt-v9o>{IGO6<#sFLQcV^_hV@&k{;($%rR8y{p($p?ts8jvc!(;;*GUVpl!b3+3}d zi9H(e$Dy=iS8X);HYtB0l-Q&ZzXM7;c2!Ot${z?Nwr<3)cY0T~6oYc5P-5#w{9>o~ zWYlLA%1;R;Hgv>Ka(c(?xV;z353jXj$6k+ke2F7=<-HTimxL1AK;k>0v}0G^o1y%* zP-2Hj{4OZ%*j0U2LHR?W#14`8H=W*9eQHpy5lZYEiGSYdUA1NrluLvXTT0@m%;G%{ z$^@arZj<;MpLWEqB1(ty<*(VbgpDZiJy6=Qt8)6Gd{8K{MZkQ1c!rYlITp zSK{AsdRL=({4G*mC6w6N5?}80uFjD|P@XH4*z^)V-Rb=V)kC11FO=916MyR*N9-!1 zE+`Lt)s7t-V&eOtv}0F2c^j0!6H4rbiQfyQ9lNT}S}1Q9N^FCPZ*h88y)FdhdZEM? znD`Y=@2Wmapbe)9L+K#9jpDLZQT-m-v6vto6|Aq*CXMASsP=#++x2`8Z?D zPpW&AY-XM@=I>M`%cWe@8RM=JyB4vhCVmU~6t$@8CJm+grch$LO?(}cb}gzlOosCF zLW!L?@y|eMpD}0~uWS3nI4MsNN^H`JCz=t{S@IF8Y!&esDL*1&K1Wv3dTVCH?wzV9 z;9RC6j%>6e#vY&ek3Z#zSk;eOIDJnjvArjL9h7#&sy7THj;{zMcJ{=xp|m5m&u5<$ zO6=;1pWyVaYOx=A{%?a_PHgCjzkasEyNaq8$`^zZdwJqdKxundW2OVjUkN4l@x zWwB6V?@&CSl;#5Oz2nTTn@&oj>o(6hTDkA;CZogqu9_WEDI3*yUoW=n1)G!NFVVHI z2xK7wNk;LW5K8P@ivJo)yYJ$neY+RRJB1Qkn&Ll%Qq&+s-xeZlbc$c?bWCM;ZJ+!P zDf5I9o15YpPRFX_j6ivsP+~7re1XI9PSwZ*P>x??hmE~U@!_)^VXIcz0p(ty#Ez!; zBT(95t3lHR4`sekV%t+Z)9HOaYN;B^ zj|nAqM8%Jt#d|rF6Ia`@V@Fhc#1%nVD3r%Rnd|hfCiQ$MKP{AAC{K2H-<}20 zd?8u{(Oa}y5Hp-|oCf8Ab#?_E59K~6?XZpY2$a7Q$|NZ7h0+dN4GeXE=ysv>LAk~0 zU7gFO-k?0!3*`w=Ug7kv!XATisZgE><(W?JsvE_iTqu+$LHXa0Ibv50sjm0_w$_e4 z8Omp&v}0H6jeg|$d!bwm7xtEuuz^1<&947s+^O!Linmso&x2SPVcIX zwjs|8h0+h@Sq|^p8zDMTh)#v*&>4=f)f`g=rM|`v`!pzrpqvqQ8I(^7<>^rV21+|@ zH6jb4Y!S*7D641jo(JV7p*#c1wNCFRqbk#(%oWOyL7DFKuDYfl%9DliOep6$y{k%h zLpfGx$DRshEX5JKs-=lBQtlSYk3;zoly>ZDl?5aCqO|0nvX~+hLy#(ch`ZiY8YTq^`uD z70ORR`52UT*lKERMxGA{Wg3)CP}*Uu`Jfic8-?;5D6e&Tx3BK66v|ISxy+23Df$DR)5YqU@mv8!dPhH^eHl%Ij}aVYKBRi1@V{z51}3*{Y9 z+Oew{E(gjV2<5p@Uhnj-MtM4vD}^!x%8Q-e)xb!G@>4>29+W3Jy{mx{#Wm!IEA80N zhcbSuBX-r@-N^GLpwYprd70L^sEO$CqRXKt@ zuNKPBLAipIxB~EO*3^aT5UGsSKi%)2bN!F+e-3#nE||IY_ZU~|eUyn>`yUM2HF6=` zy-Y(1?h=!3eVqoXav8N;&gl=|Tpglst{x?unLZPZ?=?Eu=Z(T=7JObyK1H>u{@+4s z{Ys%+2IVp+?WtMymRcy!63UC9OoGyCFXMi4Ih5~z#f~@|%GYSxHZQTV6U>M;QXb{q zfn&&KX2kBDYP4fvs%p7T_{@RN?~+duv082iQMzk{@?t12hjK>5xlo=bl$Stx29$Qh zssx!(9wU^OLirAj9pRnq=$izPeW;YSF>Fz@_bY%KM&>oq(m*!w`@P= ze&Z+QN7SNmSE*v-%o?0;)S#DgP&N1k;qNl|JJ%V5>IqZ-rjng1lwW{yzF9K*=4>mM zY=V>@QL+W-(F-cBo>{U5J5~Q2r5sereto4~XL;~<7qzBcyW59Qs9GUf4pBLYRHxf~ zof={TA6+2hlK$`^?KXz=4la;i_*wy9ZqwI-&0kl(dMsaa-#;*;KWzS3U^wewXTL45 zqrV)^eoAw_*$=GwW1Ho0&iUiWcNbM(Zf2hs3ZMD#c^3J!YuvcVt|qm@_jmE zivFw?E$S}mKfh$h@kJ<~hteKRYAP>Bp4)};OHlrTl!%yS%rh34^GDf7N6a&3oUY$z z_OV3c?qV@Vyj=J!fY0+#I{QRJDcAOVlvKE-}<5*@t2`|g+{lC zSk+Ail>3D8D^NZPrR`nafKXrc-Yb+rC>x-(y{q$UD)QVSlq;d!=>Xca^k zIUTFBruvdFAe5`2^f?`?CBRgi^8DZmJM2Oz|3#mPu+?NZ3gw_su7Pp~ly=yvf?`nq zQYhC#`4cGZu&FGr?R`*I3FSH{wOPD(LAgpOi=e#3>0M1i>I=Ozp}Y#pWT$ug^72r= z9sAW#{+nu0#IEYI72b!0@){_kP};GphSYJ{_8XxrhVpJG?bxX-uI;tRvsx(ELs{nZ zu4<_q%C$nd0m{pq-c@%mhB93!H$v%mdRN1?0LpnnSpwyoRD&XRRn9CZW0%{t^i?SP zptNIGJtP&%hlKKLQ2q=`J9bs`9w=*t@>(d%o!->~U|c8V)k0Yc|EOip&VXe$9_GO{ZLx5Z;wLsm=I|YMIf@nRt>41 zY-ke7Z$SAyr(@NSUC8rVq1*)JR~(LwIbD56woE9$3FRl9-c<#)BF`kDEQ9iY)E#Dq zT@U4J%k8kg1?3A+T4C>`6$Cx@0_EdE`E4kF1*ILks>%{5?-0uGKzS1>)hR#e*7dy3 zEFz`3nEyHXn0r0X_wyS_H1llX-l;B>3n(wOA~{8PE{EqtXEYu}lZ!IGk!Q#KT`2d{ zz!uS{d^4fkBb1w=e3+DGG(V>N)WRa&ie}F9yt#-uY`y2+sixCZj$yU%w*~$#Mak?I zQ4(Im2JM)caVJ2QT>-O<4*fmxGZ@;25 zsyh2`{)X~4PD-;y>G`}l>%lntAHJAN-04Q^=ccJNz*4e#uCq?-jv3$=+)ep{#=PE$Z1bz1Ko{ z;PZCuH$k}%O1s~w5m5={?}YMZDDQ>Rj$KXu>IsqCh4P0`ZgF~7^QF3nv|cEyp}fNB zUDc8X?@NX97AVhjdRMhn4CO+hycNp-()bs#tJW-l@^86z>@`q6OG@-@>T3nG$WwhS zkCaEzzq!99&$7CmA3n4_hq6(V)h6Mz7Eafqcy@)Wkke7TT%oLkG9600!d1wrP@XK5 zw?R428M3NyFO*}K+9BT#WsJs@@J=auoDa&~LRk;xLr~h@RcBKV!LeHhBqgt8IJ1y1jDYm6S7f^z&4JN70h zhw17?#7-TG9$STSuTcI7%15BIV&9H4kN$uV{TQMqi0rUcKkGntHwtAll-D{P8{-zr zD~0k7D3>`MtHGTnL_dKj+38rdb~Um)bg>=rolyRpdZ&n3^|f*+hlH{P$|#gp#5<`! znWxa-2<2T+-VLQ4HkHME_^ete?}oC>>0MP&C)U(!h4QCRUgq?!^3+hybfIj8((m-H z7DI(l&J)UepnQ`~G&5t*gEE$5*V50R?1R#doo=kTwx>b)kWl^{%AY}L$4+Z;*LHP- zxK=2)L0Rtft|m(#^1NCo?}c)O)4S>%>Y?2Xp}Y^u6sLF9?o+Q(o(qKXekk8gbi}S| zehkXtY&-TgDEpzbV^<5-7?h6)+Sg$d0%J%D>PGVP?dwP)3FF7f^PQ(mXwE z;y9YEIMnm#AF&=eeEnlSNmk8)d`UR{C7fPpI;Cg10(7V}s|e-O%jq%=Eg4>xiO zDUY(VR+G))*DI=IUdlyv*6S^w$Fw~}J`b*)S=m$AM3^gN4?}jYsA+Yw8i(vuA?t?B zgW|i4ZF_au^s2gz8`krFBeg#${DRsWR2cAt7SUcHV+$-c0j=J8#_uSHHR1lX>lz9I zKH4ngp$$d8FfC8&o=&>$YjhgeI&a3#7!P)j#IXbDeRl&1VVHF5r$|bBHvGN$?^4}i z50JXvn{)pT`s)YueExsv>`j}Vd+XMR|Z zeK5b`yE3oikk{r7DjzJUkGM7IxXq*6(e<)ls7PN%A%#vsEo{B)xEbLmB~bT2hXk}G z=prgSRlbkL>LAUB%2DqBE&gT%iYlj}vgDb>-8JtYPo-9sy7|T@&O>JJF41Y&pWoz7 zYg##7_hKlGb~>z_uK0LUWkTI_=oH%faMIROXz#KJ{}S_DiJ%?R)ro(FOJpd=x&hM}xY$5BsH3R_#<%MG8f(e^w~5dpQ2IarXCN z(^SgJ?H-603K6ye$2%ah9jp07T~GZj({_x_!SU}q9aC$%w!4t$?}ZW@gX2MmW8?1i z_i;-bVZf?~H;-!ko25&t`!e;JSxTrHt^d4&5z z)LYb+)a>!3Iyc&bN3dOY>K<+heBOPYUCY>-96!$)0u2Frx)RDVp~Q~l_%V(UjIDz~ zC@&LA>_m>gLZuKbr>Z3vO21HI19JRPDD45Su5vP3k1TIl!HvRwN+_|@Ildc8I}Ce(et51OFg8KQTcNa@Pz`!@=lUf}c}yF&H6Q%0nqW46 zO+{+lwp}tg_xGoEf2lZkt}rLCO>mQNgw4=ux#HvH%8%Z2ELR4?yToQ_dPR&gH8Aji zdl&t-8tr)wFZR$;aHSTc`FfQe_{kx><{_w`ZXAUBrx*JmrTx^K66iG``Sdmr%CDE2 z)m1y+O~21oaneHduU7th4|Rav1ulB6S#JV;BAnKY`RLUhp+M@o@XelOH@k0GFuk}E zKkv4|oxQ=ssdZ~tuccZJ1jB#QzyH%i)3k#+wdRL@-{$$@%iVOHaJhSvo7yYc*bq!d z87qVO%1fz-_0g_eI^U;;LgC^-8m%}2RAMjQdXmv_Qp0jrIGfbzNe@rztA0WGx`OM- z#lD}>;R-i(!(+o=_AKe&_5QpHF4sv(53g~N{{RURUrc;))w-a5`{N5->-6(-;m@~z zBmF+yHFU7s=L#=Eb*|LUrjN`D)tae3*J+iiR{zv&)GED2C8~Z8ET}(jBK;BLfGc_< z{rH@jtMO(Z<8Rd88dPA~(Ntg>Dsb7|ho)6^`LTG-pb_C;MHQ1l6`U1Zxk~@WB~)0w zrq5sZMhMHjbgH=wQf4+JQp(qmpz16Qb@s6iswm$o)Y+Z)9HGw0E;H$2U--*Lm91H+ z7yfa9YmI)0Tv1KYdfKeAWU3}q*(&`V`Y8AS`k>ZEbrsaxe{A-^dyE6SV%D2Alk6H8 zxMj>w6W{|yOHS}D?Q5tFBvWc_xF?WG|JK~>_pPHYvjSaagX&cd7@jbBZkRyVZ-w$Vsfvr0cu=yGWq z9aAsNr7F(dbV*P@8&%vD$RjD0Eua3OUYNgbC0)&wHG~4?`|<*~#&^-bmGq%Ye`=MQ zx`M0p-v(W-O$n4y(Wa||`o$|Kho_Pr-b-)Mr7TWb*_52S3jKd?Uf^_>e&`iyl%7Ba z<+1cY_)iV=iV&OD-lgKld6 zWNJBD27ALRJWF=%nw*y%+iZ@9CilIhbHHVBm zj^{j<(Jp`foUD?OMU?)R+4yH-2jbRkLSzLby@2&c+Q(2lPMCUDR9p(BEmQF(-vJ;jx;r zz-oG5#Z4aP4C(0ZR=oe5THIixh41rOd4)bD734b8d@ z%O@+&H*K1(oZ94CsbBYXsu?vinC9M9n%6du(*tVLVMF?{KcK2SGbi9(_O7i{vZ!(>=cP9HCyq`ZSG^-EV% z;z}>Qk$IC#f3e}v^tz@ihZ~kp=X;sT+ZRH%Pn zM_|olc=^<-pnlUD>PuHnu54N}wMx&xC(FmF0gc|2QFkD;aJ7Er?^It>rzxZH#0h27 zwD#+VJigKgQ2rowC7w#@9E#VVn8_ec7Nrr0!f`tLg(Y}ZPanOcfoe^Yldnd9W7 z4b#V~EIdsb%E+(92nQ|vDljq|LS`1;2aHSx9hv-+GZ}DX@?*}VUu078WtBmn$eAKMmnt)((Dmj6{JPZbNa^jr>75|L?gVAKA_&E;1{Q+r(wD^Mm0d+ zJJElOOX##mw?Dj81E@|+#|KZu5goV=dT>M^sd$}6G_5DsOi#}^hc!~6)@mUXO~0o8 zuu+|FAbV8D@1)GbUoaLxt368wcYRyY#?1ss&&6|H5xIY;ZSh@HA}jhL+!gdcE|9`T8|=ho)Dr)00o7TKD!+SIhoi z!08KOc<+X*cDo%0;RKqPjtS}$brb`wgIE4P%)NhnRK?Xl zzMH*CF0f=5TwsMLOICH=hHvF@VeQ1 z=gyotbIzGFXU?3N3-K_@U86Vu0foFMO&$fEX_J8YtZ7$s^Fh6N)ZUhNKyOAbGy0`b z907z5>Q9*JN|>6RFf~14s+cf!V&E8gsBAyQ|$>;%?VR=2~$sANJO1|2~&TcF!iy7 zsaq4KHYZH2OPIPMVX7-(YHq?*W5QHj!qn5}6Vc&F!qlA!Q#U6}l@g{FCrr&sm}*U! z`r)}m_#RG}`eee?tqD_W6Q))sOf5*5YEPK@@kkpQp}#`P4geYjr5brx4jx89tN zYaT8at}0v-t`1y};o61kFs{Gh8o`yePj9y4nvctks|HsiuJ7S`0@rR_f5G)OF5Po_ z^K@KUxEA87#B~p@R$M>AwG&qlt`oT4$0hdY%~#{f#kCaIDqQPuZN~NAxH@sYfa^_M z=W&^P_2z4F72qnx<;T^8>mgjf!qtWAWn8CmCGFRnt+;N)Rfy{@Ty?nGaXpIbx48D> zdJWfyxF*7)u;J3_lMF&~N~-AL|0YbFWSpF4GHXvB&y=ZGSf)*%VZAbvFmqP)jrN;< z)%a)6)w6ALK6j0MZY25I>oTs7&v8Ti1MV}kK7ZpEvcEVlC-%*;<{~IiKVv}-%+y6JvL#1`Q=r=+!&cTO7k_3o91it__yNg)^7i1m@%d5 zS2u8LlPt<0CLZt)jwNtUW=|FDG0cD78Jqva&2|KBwiEGh8p*#ocS17#J|p5!%^^@pc|4E(jL)+==`~D5A!@l|T0iChMSVFt;^te8<0e_Hc3QsFYQ`L4y83@+z-)yx z&7E`Hp94c!dDQ+Ga=;hc4TJDW`xAIzcUX=uwzM7Cka8mV2%6r1{>0?{_*KpSUy6?X z$^JOyISacpm%VJ-@rvWfTH__QFw=uKw5Ea31wxMve-z-DRQ8_8>~) zRR&yCS!i$`9(8KRhnVZ__yFk5@EC>+Ltfl9^t5uk^gV_4**f*ULzpW2P&J|F!#hGD zN!_`H5Xm_Xf;c{qih+^j=$0n9)nETNryOgww<4pX8+A&!8gMnzd#1f7iuAVH$puf= zy?SIincSx)i14_5?Hl(5eCi9l1~T%;!N2`8;AbX=U#G$UB}{Wv?NYa5Ap|b6;vVNT zJ&-R}oC5!$#SA=%K-bL{TXKdR-DoqRX)v{SQ;W_<9ozB-s}Nc#tQDAHFo|_D%T6@< zF=Sbz!)*TBm=us_5^f+<+xIZzV-N9{Y+*SN$bgUg<|gjgaF7Ep+tl_E@~qMO@G{%y zQBUF}P|1UbwYlNOBsOAdyAxAMN5B$aeXMR_C+4|M04k&v<<;c7a>F6&QY*0m8touI z#aYvLuvug@=Qv)LqkS3bvsg_=naUpL93n!cMubX*YQ_T*VFhNp#cUqVS#?F|AONlt zQdGFLZIpZll872zju9#1?r?lyYW)>vLT#f_ubbmOfn7xl1A(N`m)K_elb}(k$n2KG zF4Uf@3fG`v$fNT2O-AOkq0iw|!ijqL+H7l6atK0m zb}R!+?+6JUY?)0C>*3WofI14$l62FSgT#jYfR%OXKDq^~8DIP?_OSO#N%(0Rh;|Z& zN$Lus9hzUNzWh`4KKOHUhR~%PJ!pL~E;q^Zvv`F>V8rE}-buI`aB+G6vGyLY$I1K2 zD?|mU_2V7P>CR?+Z{vV6>Q~3K95~RO}+W5-$PjBPX+WSk}`0>=y(N0=^J~arX3I+L)RLep^JJ$gIYq3T4qu15SY(8{HjtR0hNyP)#|O0y303L8%lKw^81hu4CWMfY!|dF?6Oa@8B-m%-4FhtXlo3>K&8L3X)EZ~(c@I9HGgWx|VW9J(3Z03U3xwPc7LhZU5 zE?daEpMboy>LR%nvpsCHeJ8jNMaj;p16Ki=>2jAvp~X1GB``0fOJwkXxs0Uad-aZy zwLd^Fdz>Uj(_)Id5a?BEYOXSYnlq@$IAZ{ft1MOD{SjAlZfF>H4q;I2feu-PYc*C1 zFH=ng*bE2aLpANv3N~D(ntp;8aoX`R)wDr-kE+IL$GvG7r@GL3ZbHR*4O{k+-j6Jq z!2YUF7EeOTHAp@MRakzJi3NW^$5+Ij;*X zEsUCh)m8GoLSO-DDj&a61Fn{ra^L=I&y(bt+qz7x-v!RZTo|tV2YC(XPW=Y3U^hkAa7JH-IpkK$HPqaZ$Hn6@1ucyzkIm2c$Gy>?fP0~R71~4t zd?kr+rKglun6LW?9fCdyaz6lNcs=U$2*%plu4a~NYrA6zy9r^8s5-UtULbsP3}IRi zaH~Hrf@(?!% zaK^+T1@7%Hk6Sr&>M(0k|5beQ;zPz7l{@!05A z-#qn+JWfYVrD*I5&RwR}7{5x_FdhlehE@!)eRUi&FGDLaFPDE1;pNu=#|~aDjbL^; zF9|W?;tI~i_rHBve|TL>ies96JYpKt@_us((=J6dj%Vb42Q$d!ZS z#}c91^ia4XTov=eLr4WCHm{$i3#5gxzmA2qCuvBVlYu7!TPS*2wz5`a+09MJXi&TY zTPt8JX156rk5Cnuq%05=v$9YCT((qjObJX>^w9)mff&6#e3-*a^0GQnnTJ200MAJ9 z+~OEOj~GB2sb(z=(4)6;jmPa}@aH7L_x}Mt(aRMj*lk2F?MeEG6O7Z7Qc!Oi;#VW@ z=jh_!M_=quG#-NY!=ay45ZQVx6; zh~VvyJW3x`D*-xS9`+>i0^rYQe#6VE?nisv8ReiHwXQ{x}lrgz@9fU&r}#T;u#X(2bEHoGOREnB>o9Mzs0;rIMQz|9li35}pp})0 z&G(}x32bC=67ZKChuC^C@Xh9pb9Ag;fLgL2_ zJQA>jErDs29WZ(ZC-~GGu~v=26ecv@Bi=6mb}_J)XGmo|$|7;_>pt~uSi_VDPd+j* zuTZ8qkWFCk4bJ3M->X%v+`<-#&~ZRhSvrP@OBhVU(sRBQxQM_7G+!h@J$97YIu_W1 z9$Rpc4YafTPM=q4Gqt@Bma;np$9lok`gh#tVM5XNDkY{kMgm_$uu*e^O&6FNth8YT zzNg5hQ_rChJRPFHmYMVJvIRsawY)oRSg_~6$bJ_B6`t>LBKwcd^XwfZwxG)vtg76;6a1?gfe*|efUH7b7ajKtY#nxI;G~_=!5g)= zQ{pPEARJT1>NH2HoDA5(YEA&R+WH^_V6g~dW1^6PMPy|$#VXZ;Gj)(!Nx}F*Y+4aD zKxoZe-dDcYIJP9c#;%3{hQs(*`il+yWlns5v8#8)$~#fnr}P&O#yB(c04odg7!|jb z-DcK$PLq#{Z*8CamT+Z=9xM{cISNED~vY^Ck$#zT{Jzw{YZXTxA!fztIZ) zxCQrEdB}XC^3G^^yiZgf^du6Bj<7U^!Ys`l(}QN3orVJ+kp{_zphF9E9}Ay}DFo3p$MK1+=yZN@f-bo)0!6 z#}+CY#8dJh0+r)?nOmD+Qlzo5?F@ZCN=k9SeGxNI;j}?1o8vv{YPJMnm2F*Rq4exa zgh#0smqWzN)i6G*l#G>^b&!8Yo)F(T`(Kc!UuGthr)}sdm&?=P5s>3QBu|#llqU<9 zCrj`yOGKV9n@S{4U&5LMmnRBbl5<(7n>9D+em}ke~90<&*V2oZs-pi2F3`#F?=TC z_qF73ApK#B@*5dr{O)@{%5T5}zb}Uu&+lI$cOqEh`OVGde@lO$wU_dn#_`YQ_rGIL zPSZ)BZBOpME}=d7hYm1&%%1!zP5fa`0%V*$iKol$NsPV!jy=g?aC`EevkC1`7GpzqKbV9SbZ$k0rQ>x*fMCEs5+&Bwk`qLTkXDv~YXUqEipNO9BHs6FPv~ zla`1*X^GgA7P2QT+@3`Cx3%mYC6=Je60EXB?MaK;j5lOY0zT}?82o3b0PIPC*X&7) zW=~qko`haYY)@JMW31A-9L89knmuVzS0X)F%?aREbK4*Q|Bv=0=7Z=wn0sN#=gn4b zoAuHG3RlqTDe>!s;^YQnr>CwHd z$AabL=VAC*9sC1aI8RoCePV^z4WF6?@!T{Z?PpVnrj6rNtNJFL^!L^S>}9MJSm50@ zOE+_C38tAjaD9arTLfUbOdg71lMZaE$Dv~cI_k6N0vJ{;Y@yMySXWQ$M#c)Swo`ZT z&uB$DQm{jY8}n#~4(*_V5i=R|BMTBXvJFeAM0=J2KiI{XnX$rdcMJsX1fUG;`nX5H z%bw`V{91cf;1*3~mcnoQpf=Re5^j+Y;TINi5gY3i2{O$t(yNv1s+FKAW)dRI5p0l1 zaWvX9qA(pR>{-$rP{F3!AY5fWum$^zUQp-JDhaS5R0j_bBqa|M5~VTbKj!>P z{J<>rv-$DoG3odOeth%H|9|*#E2&_j{(p!cXxbP*N=YSrCO^O@KEHv88Z*P*P_9{` z=}l?;^d^2j3I35ws7ciM0&`HQf zccMa62E;NPuLm+wG>fG=78y-)J|-+A=k_uU(r*E2`N}a^ZD&{$Np}p0<8>+>_&i|% zH-p>gm|>DXfbQW?+-varf?9hC6qcI5$hdAfaInCgsEw|0Sq8G%%0 za=483^SMVSQZsu&npTFo)n8$JjHiPeZLCkm(1~q*`ZW|dd_h-x^)J+b*?&v9H!ZKR z3N68y3*6GjyOa2S4GZ?|yw^b^Vp|uCf^_WgIyRV!HT2B=>?lySwjDRMZiTwSA|Y0x z29xbWWym-?B+O8n zpjnEHN{Lvt{7%yJa33|omicSuD~^}g3-t>^!fbbiPkj_yq5z7$LfX)idBpG%UqPM* z1oTxRTStLmc6a6nUY~mJX_^QavA>!_tiT6qyDQuzfvT6Fpam5kAGYzRcOxg*pIu6o z_|!aJ&>Af`&cO)#Ni$iQ==OR@M!1^%IoWL`f=9J!Ez9Y`iVZ+RPl|EgJkpm5%YTGz z_q_bc^_()FRvz|S#Ax=#v5~0dc(MK_&fDXlca@mg2P!(Ai^hWhSDQQYf)B-CP*+2k zHTNzVxv;-)BZ@ztx!-ZF{+6*a7( zQM*6N1VA7+n1w`#!?O@P3vEcZ(EiKAc^XhF2U>MG&?m+N<)$#U!0An!DPjU(tnzt0 zw9_*}iVA|JSQd9{ZA5nfZ< z@qkgw@&>XD9+xj9MH6&xBph5`ozoRxAX}iwcu(aL<7Me$~>AefBx6n!awwOXl?2CA~FmF=rgQ*V)leAHNWh&JieAw&m^HTUqT2gW}G zarkLnZ3jB&G_922cbf@wS23;GMIYSp59MPIUb)N9&%9x-vs&sDYAs*y3x1dGT^vXRVaqjNCc2M3%q%B%armlC>;d z1uckGIA~qAjgl1)&=Oe`);1S`UMQ^5aRy_9Y`_FQ-f0=*ImK>qh-;r>TR0{jls=|m zh3W_ssik^3YcJ+#8i6MBTG>J%bi}K^e-}x-af~#aOWNGhEbpO)!|%bCa8k`BQrU=9 zvsh}BR3_%*q)KI?Pon@j92jb0KjbwowRqil5qVl;MQw-?nn_(R-L%W#_JKE}e}#rc zY#_S(>E+NoQMrkV4Cj};JBp3QxOi+5F)qRnC@XY(BiqKYDTRLFd>hwfE`LGFfPn=z zly&rEv}*pV)!$@UjfQ_pRns-9vJxxSyHJZ)&G`ltS%mT+_!#A(Fym!y$G2ncRt8osmkqZJzQ4U1ZoVRT!*x1|7>4!Vh5BAD?zpi*=C`9Z3`lq)q z+7H%F=TvwApwLr1!kSS|QW9Ng)vMSRs)$xlyhySs3lV9EuVP=S9%II7(`4i?*lc)7!)G zbd=cE&LoX$;q6Jm@)NZOeOV-}t+i>!ztb8Y+kFBAFpSdw{6@P4dV^FqeF0#sp2 zw(t(VKq!s%?_@q!=(()Zl#6!-827cn*wQCoWxJa)ny$BNc$C*Ppn^{6M67ugI2- z@Q_wHJg;+h+n{IoRQP-{+Z$GA8}_z!ZA|4GVg`*jk8afInvy%|2hwTRNk~FvltgtF z|HM_J2x)BD$Nvdv4((y5olpice$!;O9gvIOgtFRN+=*rZoC_s;TJnG9-10Lml88CjwsYG-W znB*JNI)ez3f8-f-6y5N-Zu#8mCet%C^mfu880uX}o44UTEgNz~l^V)pe8ejG#wp`K zu(N|#5EKW8vYSJB&oBfWt-#pq^TzO81Iv>hBX};yV+2pC@wsS?0Js;G$`0=36=A2H z4NR&~jX2McM9#nr7|ujEgeYdAM5MS6FJc6Y9VOps2PXs^ z7Lv?-Nk6!q-YZoFY+WH{9an1yASgvoX7VR^rH1_In z(hxK@yyl2(vLdhCRUUn{WZbKDg)Kc#Pzpa{p*LkA-Ith^5{ptYzMgo*tk{SXh5kq2 zuA{(4_}JqrQYy_#r3E?)LF(fxQL12cT9hhlZwlcbYYYiS!p4w+7OM_*D3vRe%2mD2 z@;ms8)r!lnxN6Zvyi4YdiBRFraRmvBk0~Y6)Z6L)vZfLi@dW+krfO&?2pOpKE0wj1 zyZkZ~VnpcGQBye~2!-Ahss@KqDCi#JP_Xm5v0JXF06KqUVw0VZWprLUtk;qPVkZW- zbUIU*%vsGU^5u-?9LR4fXquaIjN&(o3JrS|(QruPxzb=(8Z1hKRo+|fC@E+>N&1I_ z9S?<4M{k1+7AGZ{>v0{&sjq#lq<#7gXBm{`Pw=tg}Ddwi> zp-LeVucAz%!q^9Lu<=8s0gD@TwyIty+37U0(hndn??yC!&T;kIybsecATbmpb2I9| zIDoC-Q>_en)DSS{H#q}W{F$f+1v@G7>MUqBc9KC4r0?PVvcaa**_8(DLCRAqol0HdpKqnt z{sN`WrPLKGbt@GADw5$kzfxDLRMz!2HzNbzfAmBvWqmkEe>*qR-}DdXs;Tzc~lgB^p)@gq7mADs|~fB}b-?BSRQCmC8ccW#AWZS)tUet^zVx zOe#i?THYOPAA3c;z{evB2EWjB%^!IKT>_d6$Zjjz+UumF;dF)1qh22GMWrb@Id0AVx8W-kbx#qdpFgnQ;ZQ#zix~Mb4I(a6x{x@qra( zK>Pbln;L;DwEg~xN#@TSGq`1j5hKV)3}}U%1Hmn%>7h%il@xfhxPxv?VMid60Zful zN`sF9V_pSsAqT2KjDmZX#7(JkV$4yJG|{z2gfGF&1H_wbj;F~g;q>6X#Q~OThtdnbJ+A25|;ab zU<7e$|Fc32;oc-ZLM%j>eH^~t!rq122(fU5vT&8MbhWb7uPm*F5@g=Omc1mny-9qC zxTIusps4Om;bX-AipIS~PLk6&jH8X<)QzBDplDQ18l$tfP`STc(Qsb4T3P5<7G8og zXO)KYLhN7Q1dZa1uwSLgSPhdQZdjoyW+j}N)YnMK)9i(O{bREio;>;(Byzr(WZsNx z=7c2k&A86u`WNjRsJ*JffQ8lrll*iBFw`3SSU8udaE*S=JZ@~3d3%fUMAWSgV^vK{ z=0>MieG3UNI@J=mZA0y(b)GTf&u^2r1}o3@==4E1#ca}{>hH=;d7`qNE1m7c$KZBS zJ;CkRbArFvE~INp?P;f9y*If1clcGdlUh=?ck;h~;(xpFx2OF%{MGlg_s~ypI|ZB9 z^tSJ(C%QSvZ`ApGf-XeH4DMgR7>HofI;&p?Ea~)AOwG|$tCB*o5=a}H#&UnAk=+MN z46$rhccchT2+Y#LOK+z9(iLn5dhJ})h=s1G_r+_iR;EWF?$k%-j~t+xRa?fx;s$HAAE6&HWU*s)VS$m56GKM3$8W#VWFDPnrB-w~ z(Vlc_*=GA+kR2?+*GQY*yC*cNoH58exn~a|D}F z>Bh;3OUXRXa(7q5BgX9|R~`FeM;b+*U=RB!cEdKGn=5^}V`A%p!28UV%iP%V>B=f) z?hO3e@e4=3D;>YIJK63j^`e;;&bExI?&kURfrCVIxeEdS)@pCYTw)wwGi>&ywG5WD zC4Ouoe$xA#1HHQJ$;2sPC;t)M{Kt5f|Ck?31N*q44FJ8)y6hPyWyotm~E&?)Js$Q zG3cHa2h#0j>N>DMg3@GEKaf zGFbpKNt%kPuPhA}6{4=c)pM9g7o_F=?T@0geA+p%!k*XP{xBYJm)+m~kam~R-@aA5 zv-P)c*6ytRT+<<+xxc+tOB4Iso9T{_ULa8gg{-{`Dd?g1u-&A*LdNEhvX;>|hCJZmCC8Z|8{fnLMqT7RF-@#G> zJZ>8JkfoWm6Lh)P5;AUeoLl>gmfJbgF3|y+|4MUscq`PaxK~325k$#idYW_`&YZ4L zf1o*|2QAG_R~iCo{$_BsLfwHyRbYzTW@+j0;yN9;AzjO}*mAmR@{6XgvoddS$Y^dp zIC{ersQlm*)6*r>9pOfmD31!JgWbjMPzlzSD%3BmCwRmf8?mP7O1!uWwcmX|r5lm% zMEcWS3oB|YbyukGYFLpNKoF(r5QAFg^|PYYke&*)?g35_dJSon3fPvNpa|RcB>tLq zwc{`k9VBiGjV7gR8x1~g*8Vu9vMrBMBDFjd2cts-35XLwt{Z4q@yfJo+X?*0r_Eru zIM99)4`4Fd@awNoek*WoCWML_Sc$~Eb-aBqY6$Jop>L3onnOhe!1IYlDk4tU;HO$_ zs3j|BG=Fy=U^aaY=LByd^=CK)WNsn3@70rZbekPKN8?EvtFuj8HX&2aDD&nqVForm z%=E9|JbLy)__>R4=7`uUq{8MM9V|s8-$7_fL^l$Xl#A}k1-Lii-@?TIVAkhF;c(k zSrS`ch5FGKV=|tj$#~XKI7zy0C@cg%#|3>N33_td%328dG8`Ww;xNk!^(S8^QbmNE zZQ=b#XeJ@Iv^dVM{rRQl`eB-Td#xYbaIXqiPF@z z#s0u#jV)6+x5P3|Utf&CB_OaVj=*Oo8k$4loihhf#=6q@fHM|vjPO>O#37PfAbO@vOG%Qhq7Y?zELAEXe&yW(>AI= zD%1s-$i`@UxdQoB^>X zlY~2C&||=l81xAE5rUrN4qb3TN_5=93Id&IOk+$0jQB5u0TOYLX!MKPGrQkJXV3+% zZ{BSOcXa`DU#|Qh1N$KZUiBl!Wx%Vh;N4qj-hB;aG__J!8!Dx!UobvIzCLZo9vuqlibELY>H-Jyr4a`K#=b7 zs&&z1{tbmz{w^Tq^C7Fg#H+fa@7WfrulWr_^SLDHCY-MoeW6vT4@}T1Oscnf)tQ&P zG_~G^E(wKoEn3pio`JubMhR{cDP>zG{s!A8;P24ezR+$`rNQ<|_*)<k3k1Oe7p~spRsGwzAVp{@<#li(7NpeQNR*W_ zOuLS-b}Cwm5drZaLCyoCe5)>C^s09?aPh+WiriF(r6{kO$BhSJsGW=lK}v7lorfE^ zZ8QX^QlGjA=P^Oa`MhdBMhn*dC~(3v#@T6TJ8@B?Vks6GX(j{sbEjiogsTcy0M`$2 zJ%#HKE=`&u`^m5e9iFN#)1zTbS+3cybRe)GVt;D(FK3;j{RrA*l1VA~LQN8m1-VVP zCdsE({)nRnRAw=5Ea1-I9!&P@W|Ay^L*cLG-K{973w$wtn1XqzUJsqexbH}N1LT$V zW@J^iP>I1uSvw!s_>&`CjR^!F;xfZ-lpb9DsinQW?d50;{ZqGczC|`dM+g8Dh)h0L zg*UWFLL5fze*qk$5frA>Pk(@i?{iL;so$dqnFdD~Q*HFX&T82jc(xDmP+F#blV=;z zvQ_bHA8Xk>JewJ;MYcko?PJbFvd(gOPEymT_d1?a&~nb?IYm4m+hm^2sAbdfY{htB z-*owF@ylnS>;nYF6@2h>R_|mF6k=&ddB`3F3hKPOu=b#xLWLv6m3pW0K%w$Ymm(7g zt>^{B)R{lv!;HMo2_;7QkIO(*I^pScN)S6!8wOrFTf)r3b7{#<9!b4#Ar#2jSxNYW z0_XhfAm@BfJ0e$f;@}P1jd^g6c4Hf~YB$b7lXlZQm=fGVndRL?b?B=+JPh&jW@)ax zn<%bBbYVLg57fK7>W|QSly-W7?trfG zHN8HV&bDx9yl)qCXjG6xOVXe@2^#Tq9JF!{ZGJqoJ%F~2L))u|a9%{GRobZ_hi1^A zH4`)vigD1gIJDF4aky;+w78b;LZr6<7925dwq=)5Izk- z&aoV%cD!i{ z+d_{$f;b9xI=UO*)u73{sW0dP<)MOE1AWkXze7=;BRQaq3n*Ew$R` zJp#d{(+{p0D12Vmk9BI((};HJJ2+WqgpMji2jIE-y8CPG=Hr+hnV!Z1dyQgoAtAj# zd_vNS^>y=tam5JLgoU8;9fwStYcQ}4^bhpOyQ%x@_(xn#ZTM_~Zp}m@=T9*|Su+tt zq1Wnn@f2aj7D`asNl(-$`D~kZGoSH{HA+Jg+oC0{Ph#6BZ;gTt;*tCa3gYE!l=Ugm zqW7o7%8FW95FQys$VEoKI*{B2GUgmWEbmK$N&N>YAhj82o|wvsD&5zAFmh|^z#)OU z{xExr5I8Z9=-Ib#JYmL20^(v7|9bWm;YidRNa6(!jxW%+@3JD4d2qUhbpOE`r2xFt znp}Wm*^&&e$mb@SHkT5Ck5>=$RSop79O%PG7SRj%{%hG)o1_GP4_u>`oHk&@y%&^V z*QdSLE5Uu2y(e92lrNfS_1)N%>aUz-G7nCaFNzzc`0cpIc?RF%ofk=gEBqrMt51DJ zOWIA2Pe^KS+WulkD!jFMWjvb!^yms&u*oNQU8055!Ja`EGAF;1a- zl--f;Rw^E26*la>P!?}h?%1qUJggpsDN13Qh`mw*Pe`|URTW;lPUk`s4xPm65;zM9 z_Txu=sT2cL;0emxCFN)~0W`c7GZ2j9G$_+QHOMD8#vJ}NkUKukd0tH~LBW5l>}Gd7 z%qljs#al5y_NqGMV|P5xfYahfdCHb%q-=Po)ABj!s~0it&D;;OH%Zr#uAgs}3=_Py z9ad7JM-SuMm)i=RM*?s(GwAsFPr%Zevyd;mWFKM~7%i)wk> z3Xp;*aKFw5vh;Gphi=v1Z$?+=|3NIGgqj4Z@Dx4y%ySW^Prq9|6#ttG`XRa&`?m0v z5%BB@e81)S>3r;yciWIl zhsdmUJ8mFvgB@IbAQXeADD9M?0$-qbAI2DZx*fesJDCO^UTKzBJ&&y)6^O(=M(+`* z55?X~FtsRJYQA~6n;cABb@^z*@@0(}6hH)29^v8c;!wAZ-eqdJ}*1KYqo@3Bb@ol<*h+T0nw`gvrEHuX-y_G`1dJj~w5L6#;fsq(w^@ z>K5tgcahgiL|rr9o7sb8c44+QUvv2Z(IfA~)|Fx+0Rn45n&<~ykl-T&&7mz+J@%5I zD@Hk`6_HO@MxFhIcG~)aFKD&=lVqC6<0r|gQ(!}{orq4+U_q*=7P z#>&-%8=8PZ-@WPwjYN@%o1aYWu+a2exjiEe|7_rIp?4hRCZOC@tCj&N4a-QvLL|^h!Y*Eq zNBt^o<=Je199)D~8E#!5nmdMQgoF6Vp`eql0ncbEJPYkI(wQ4~AvRQTSJklFMA;?U zY82O3H9jH(;@3>AH)73?3pBaNYplxcdI``pJP4yjogshYbfp_x&}J zYZ+vy?`7n8jpwMsWB>C}Jb)>@RfK7VR`CK;E8Ot9{zI`xnH~?u9_d);{ug48nC|NO z5A>agRQ3=(9`4_UF2tMPzr9tvv-NMMIb{FA{_UITciUF_i<}S9@1g!}4{L9?J&Ipg z)o8(qgPJvZqPzc)D%_r;(enUIcvRBYt-iOEC)xUtL>?9-y{08)P?D%69YWHH=lh?B zHA@M5)juKu%{#2Ln<*iz{*n?7^c_;#En33EJmIy2O1l*auZ7i3NRUfJ#ImF#p{jeJ z&mRPW11CHKCtzRG|2}ms_bXu%H87yPJ?=sJs{?&_=Z(FKl#F{fKlZLa2K9KXWO{

yPxriCSV-OvZ;Hk|><5^+fcLH?@RZttTSk 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℞s5p?NbW3ek-$6TA|dPKm*2I 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�Yi!)asja44mU>uMI#?5n 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 G1pWenze;le literal 0 HcmV?d00001 diff --git a/dotnet/extlibs/csfml-window.dll b/dotnet/extlibs/csfml-window.dll new file mode 100644 index 0000000000000000000000000000000000000000..2027a9eed76229b1958503b53c8f46efee8dc238 GIT binary patch literal 40960 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 Dk$bQ2 literal 0 HcmV?d00001 diff --git a/dotnet/extlibs/libsndfile-1.dll b/dotnet/extlibs/libsndfile-1.dll new file mode 100644 index 0000000000000000000000000000000000000000..f112de2bcfca7b50b69e91a51c5a74980c714d34 GIT binary patch literal 325120 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Μ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 BXH@_I literal 0 HcmV?d00001 diff --git a/dotnet/samples/bin/datas/opengl/background.jpg b/dotnet/samples/bin/datas/opengl/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b2247d4ec162bb4ba22ceff751262d642a7c2e1 GIT binary patch literal 133447 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%0D5uok{P{?k%CB7Jy2HW`^RWIvs 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�^)hyYDbWuq>x9b?bp(p=W`mEz7>dWr6I(Ia)RmUpKg>K+oi$z zB@(5$3f(^t`)(YqCj;~U02-Jv&vk+mP~l0VX{T;*)|JAT{lPK|d@$p!-P5}B+dKz9 zFM6414S5?v+3pTQfZfxUO4*RwNLUL&>(Go84xY6cv-q7Z)oqy)0VrIeTQ8wS3U#bt zap3jXQEY04?3#C)^j4%ykd?BfB>5X8XV2@@=M?3|ltAC;mWnsANVQ_V>Zw<|z0yNv zw-|BA(vaq3mpA|b_Xit%`qka5bZxIf_dA4r2r7?oMRwkZ1vu* z9~ZSn$5L6YwrQ@$g$=AY@?#v~2myRyeeu&Cy{pY|^>MW+$1e;SA(lgJBP&>wzQhC2 z?efh!+_h}E%olCpYko^;=J6aLlz>Pe`V&x$yoh5l$FQ}39ni+%G?ZQHto>Qy-PY3d zn`82n;5NiF9}aLJ5uO4{I+7L#p%|rp(zIVR#-4V4-c-5zX(B@`a!MRozzfDs2+GIH zY+}6Z{-Sc=rrnh%FQ!74T0(M#jNu0-=4nTD&=Ff`I5IHHXh(5Y875qtxY~?lN7OG3 z9QrRsuKT9$kYh@dsTmU0hYTXh_}e3VWb9ABdScZ+E?O*%+uN};%(o-DACP3VyS;Yn z(C0r&qJN}O%Y!U@Ly8#UUvfMAs5uw%?3I9n_&qi&9e+Bq9V14{X|taopnt!TwJv|O z74~$HyL3pf8beD*2y6~M`91c=)dtj_DeAl1LAS0Cw!UKA0zcjEa!JUhlv~_dM;iHi z=Z`y*cE%~pz%k-292~Kp0&ofNz!BMA~lOd(Jw;o&WjHOCD^!KJ!SZ*&e z#q{Jg z=N%Q;QK<0ZQXzu$hFf)Kjoh5@0aKaMTV(*Dve@N$Q_w8>A4+R#{SBG!7o2U>a@K_> z89~o)pYo^c$W4VPfDOuTw&}|?iZ?NBn~c&3;8J!wZ@0_6IYfR$H&BSs8;sM0ehds` zbu~)qH3VnWYze0NNLEIX@MvPy6lPd;b8hT5}@-;SQH~*dbxru9sVK z45_NkSJ2OOK%LmzR!%BO~iV#$C;E zoLqUK#kj15tw;nPN~-A(ZIje({6#riVmPU8yAg~y*+=%EApx`4eDVD1TW!<#72R5G za&Z{B!c>OFLVY{$kDpqF#FH`0i*ZPCx7r7qgkuZrI@IpeC+{r|?>0ulLDL~I3 zuHWNOB~4jc_!dCN385R1{{Y0Jmg2HU1`v0s#y7fyU6o~~L$j2_330Wy=5kfk;NTCg zK&QysVb!-1GM@|wIho@lgJZHY+iGFb)~8Vcg|C|899JF^pTMEMbM&cHvg@1xAO?bd z{jxGMjFJziKjm2x-P2JuhC-Yzu%ke2ge{`!b398uc0GQepUSwEA+)SE@KFG4q~ik{ zXZ-01%}0oY2BbZ~Bzd^OD`@BO{IWkIT6qVJYQu$uB@N-E+{V4E!QVab+^Hd93&F*)#O6TGF!)O&%Fr^93m}f9484kDE5aNnz-&yC{S@R zn?H<$*B*y(di1GhhgUdPT~`s`v)gsIa9ddblmnk2$EM${L1DUyH;lBln{Q^?bpwwB z9SuE3ySZz`%VX$`HZPISD){)Zupo9mxv2x08+}Tdy*)cCJ6*MN*Cp5%=(qQH$~Q4+(He<`lOh1Fmzn!#_h=j_NtaOTGU9B}z#gPTi7RrtMsI zw;T?zwDUri4p6dl^&3<6n!a3PE<<5#uHNE#CN!o&ZFn4EXFH> )d_(LPbrvEt9Q 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 V(;nWnm6cjwyZkB^`CKV~|JmL>LjeE) literal 0 HcmV?d00001 diff --git a/dotnet/samples/bin/datas/opengl/texture.jpg b/dotnet/samples/bin/datas/opengl/texture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..455a99fb1281978b47d96ff7037b1c7974a912a2 GIT binary patch literal 5922 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ⅈ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�-qQa7Z z7WurMEu!=o{yd5`d<1nuA{kj%x!o*~ujy5N5vKhr#;X;lVRqb#z7e4%>5ZJ!v+